<?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>232387</bug_id>
          
          <creation_ts>2021-10-27 10:11:07 -0700</creation_ts>
          <short_desc>Callback functions / interfaces use incorrect global object for liveness and reporting errors</short_desc>
          <delta_ts>2023-08-27 05:46:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=235153</see_also>
    
    <see_also>https://github.com/web-platform-tests/wpt/pull/32449</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=235368</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=235529</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=237912</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BrowserCompat, InRadar, WPTImpact</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>240280</dependson>
    
    <dependson>233043</dependson>
    
    <dependson>233065</dependson>
    
    <dependson>248161</dependson>
          <blocked>163412</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>jenner</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1809303</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-10-27 10:11:07 -0700</bug_when>
    <thetext>JSCallbackData should use lexical global object for errors and lifecycle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809305</commentid>
    <comment_count>1</comment_count>
      <attachid>442603</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-10-27 10:12:07 -0700</bug_when>
    <thetext>Created attachment 442603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809307</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-10-27 10:13:27 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809321</commentid>
    <comment_count>3</comment_count>
      <attachid>442603</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-10-27 10:46:14 -0700</bug_when>
    <thetext>Comment on attachment 442603
Patch

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

r=me -- but please fix the visit issue before landing.

&gt; Source/WebCore/Modules/webaudio/AudioWorkletProcessor.h:75
&gt; +    JSValueInWrappedObject m_processCallback;

We need to visit this value inside JSAudioWorkletProcessor::visitAdditionalChildren().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811506</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-03 10:12:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/84979685&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814051</commentid>
    <comment_count>5</comment_count>
      <attachid>443952</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-11-11 08:54:04 -0800</bug_when>
    <thetext>Created attachment 443952
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814052</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-11-11 08:54:20 -0800</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #5)
&gt; Created attachment 443952 [details]
&gt; Patch for landing

1. Account Geoff&apos;s feedback on visitAdditionalChildren().
2. Add [SkipCallbackInvokeCheck] to Geolocation&apos;s error callback as it&apos;s run for inactive contexts and revert erroneous test changes.
3. Add a test that ensures NodeFilter with disconnected incumbent object no longer crashes.
4. Adjust bindings tests for [SkipCallbackInvokeCheck] and reset expectations.
5. Revert resolving _incumbent_ in @whenSignalAborted as its `abort` callback can&apos;t invoke userland code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814105</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-11-11 10:29:20 -0800</bug_when>
    <thetext>Committed r285639 (244140@main): &lt;https://commits.webkit.org/244140@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814449</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-12 08:13:45 -0800</bug_when>
    <thetext>This caused https://bugs.webkit.org/show_bug.cgi?id=233043.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814590</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-11-12 13:19:45 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 233065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814619</commentid>
    <comment_count>10</comment_count>
      <attachid>444108</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-11-12 13:47:18 -0800</bug_when>
    <thetext>Created attachment 444108
Patch

Don&apos;t pass testRunner.setGeolocationPermission directly as geo error callback to test if that caused crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830391</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-12 15:58:15 -0800</bug_when>
    <thetext>Any update on this?

It looks like this was landed, then reverted then never re-landed?
However, the test did make it upstream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830441</commentid>
    <comment_count>12</comment_count>
      <attachid>449018</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-12 18:50:33 -0800</bug_when>
    <thetext>Created attachment 449018
Patch

Add a null check to setGeolocationPermissionCallback().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830442</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-12 18:51:22 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #11)
&gt; Any update on this?
&gt; 
&gt; It looks like this was landed, then reverted then never re-landed?
&gt; However, the test did make it upstream.

That&apos;s correct, sorry, will re-land once the updated patch passes the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830616</commentid>
    <comment_count>14</comment_count>
      <attachid>449018</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-01-13 10:30:23 -0800</bug_when>
    <thetext>Comment on attachment 449018
Patch

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

&gt; Source/WebCore/Modules/geolocation/PositionErrorCallback.idl:27
&gt; +    SkipCallbackInvokeCheck,

I think this is wrong. We shouldn&apos;t be adding new Webkit-specific IDL attributes to get a different Web-facing behavior for one specific API. This doesn&apos;t make sense. Either the behavior of SkipCallbackInvokeCheck is the correct one and what we want everywhere, or it is not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830729</commentid>
    <comment_count>15</comment_count>
      <attachid>449115</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-13 14:43:29 -0800</bug_when>
    <thetext>Created attachment 449115
Patch

Check if a promise, returned from WebLockGrantedCallback, is suspended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830733</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-13 14:54:02 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; Comment on attachment 449018 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=449018&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/geolocation/PositionErrorCallback.idl:27
&gt; &gt; +    SkipCallbackInvokeCheck,
&gt; 
&gt; I think this is wrong. We shouldn&apos;t be adding new Webkit-specific IDL
&gt; attributes to get a different Web-facing behavior for one specific API. This
&gt; doesn&apos;t make sense. Either the behavior of SkipCallbackInvokeCheck is the
&gt; correct one and what we want everywhere, or it is not.

Looking at https://wpt.fyi/results/dom/traversal/TreeWalker-acceptNode-filter-cross-realm-null-browsing-context.html, there might be way we can drop this attribute rather than spreading it to Geolocation.

I&apos;m compiling a coverage like dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html for all popular callbacks so we could see the whole web-compat picture. Should not take too long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831940</commentid>
    <comment_count>17</comment_count>
      <attachid>449463</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-18 20:53:50 -0800</bug_when>
    <thetext>Created attachment 449463
Patch

Use global object of _value_, remove [SkipCallbackInvokeCheck] extended attribute, and add thorough test coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831996</commentid>
    <comment_count>18</comment_count>
      <attachid>449463</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-19 05:28:31 -0800</bug_when>
    <thetext>Comment on attachment 449463
Patch

Putting r+ on my own patch, already reviewed by Geoff on 2021-10-27, so the WPT GitHub bot would let me land the tests PR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832002</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-19 05:52:43 -0800</bug_when>
    <thetext>Committed r288197 (?): &lt;https://commits.webkit.org/r288197&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832146</commentid>
    <comment_count>20</comment_count>
    <who name="Robert Jenner">jenner</who>
    <bug_when>2022-01-19 12:22:05 -0800</bug_when>
    <thetext>Reverted r288197 for reason:

Broke a test, slowing down EWS

Committed r288229 (246187@trunk): &lt;https://commits.webkit.org/246187@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832326</commentid>
    <comment_count>21</comment_count>
      <attachid>449543</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-19 19:20:10 -0800</bug_when>
    <thetext>Created attachment 449543
Patch

Fix IntersectionObserver not to rely on m_callback&apos;s context for timestamp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832488</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-20 10:43:35 -0800</bug_when>
    <thetext>Committed r288307 (?): &lt;https://commits.webkit.org/r288307&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835090</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-28 12:00:51 -0800</bug_when>
    <thetext>AudioWorklet changes (storing callback w/o a JSC::Strong) caused a regression: https://bugs.webkit.org/show_bug.cgi?id=235529.
Thank you Chris for taking care of it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868029</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-05-10 15:46:14 -0700</bug_when>
    <thetext>Reopening since this got reverted in https://commits.webkit.org/250452@main.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973816</commentid>
    <comment_count>25</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2023-08-27 05:46:17 -0700</bug_when>
    <thetext>We are failing two WPT Tests:

Only failing in Safari - http://wpt.live/dom/traversal/TreeWalker-acceptNode-filter-cross-realm-null-browsing-context.html

Failing in Firefox &amp; WebKit - http://wpt.live/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442603</attachid>
            <date>2021-10-27 10:12:07 -0700</date>
            <delta_ts>2021-11-11 08:53:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232387-20211027181206.patch</filename>
            <type>text/plain</type>
            <size>41868</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDkyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDIxLTEwLTI3ICBBbGV4ZXkg
U2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBKU0NhbGxiYWNrRGF0YSBz
aG91bGQgdXNlIGxleGljYWwgZ2xvYmFsIG9iamVjdCBmb3IgZXJyb3JzIGFuZCBsaWZlY3ljbGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlZm9yZSB0
aGlzIHBhdGNoLCBKU0NhbGxiYWNrRGF0YSB1c2VkICppbmN1bWJlbnQqIFsxXSByZWFsbSB0byBn
ZXQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBmcm9tCisgICAgICAgIGFuZCB0byBjb25zdHJ1Y3Qg
VHlwZUVycm9ycyBpbi4gQXBhcnQgZnJvbSB0aHJvd2luZyBlcnJvcnMgb2YgaW5jb3JyZWN0IHJl
YWxtLCB0aGF0IGFsc28gYmxvY2tlZAorICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBiYWNrdXAg
aW5jdW1iZW50IHN0YWNrIGFzIGl0IG5lZWRzIHRvIGNvbnN1bHQgdGhlIGNvcnJlY3QgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC4KKworICAgICAgICBUbyBhY2NvbW9kYXRlIE5vZGVGaWx0ZXIgYW5k
IFhQYXRoTlNSZXNvbHZlciBvZiBkZXRhY2hlZCBmcmFtZXMgd2l0aG91dCBncm93aW5nIGFsbCBv
dGhlciBjYWxsYmFja3MnCisgICAgICAgIGBzaXplb2ZgLCBhIGNvbmRpdGlvbmFsIG1fZ2xvYmFs
T2JqZWN0IG1lbWJlciBpcyBpbnRyb2R1Y2VkLgorCisgICAgICAgIEFsc28sIGZpeGVzIEF1ZGlv
V29ya2xldCB0byB1c2UgKmN1cnJlbnQqIGdsb2JhbCBvYmplY3QgYXMgcGVyIHNwZWMgWzJdIHJh
dGhlciB0aGFuIHRoZSBjYWxsYmFjaydzCisgICAgICAgIG9yIGFuICppbmN1bWJlbnQqLgorCisg
ICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBh
cGlzLmh0bWwjaW5jdW1iZW50CisgICAgICAgIFsyXSBodHRwczovL3dlYmF1ZGlvLmdpdGh1Yi5p
by93ZWItYXVkaW8tYXBpLyNyZWYtZm9yLXByZXBhcmUtdG8tcnVuLWEtY2FsbGJhY2sKKworICAg
ICAgICBUZXN0OiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwv
VHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS5odG1sCisKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclByb2Nlc3Nvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlUHJvY2Vzc29y
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OkF1ZGlvV29ya2xldFByb2Nlc3Nv
cik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnByb2Nlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpzZXRQcm9jZXNzQ2FsbGJh
Y2spOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTQ2FsbGJhY2tEYXRhOjpKU0NhbGxiYWNrRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpK
U0NhbGxiYWNrRGF0YTo6fkpTQ2FsbGJhY2tEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2Fs
bGJhY2tEYXRhU3Ryb25nOjpKU0NhbGxiYWNrRGF0YVN0cm9uZyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0NhbGxiYWNrRGF0YVN0cm9uZzo6aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDYWxsYmFja0RhdGFXZWFrOjpKU0NhbGxiYWNrRGF0YVdlYWspOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDYWxsYmFja0RhdGFXZWFrOjppbnZva2VDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpKU0NhbGxiYWNrRGF0YTo6Z2xvYmFsT2JqZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRDYWxsYmFja3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnZlcnRlcjxJRExDYWxsYmFja0Z1bmN0aW9uPFQ+Pjo6Y29udmVydCk6CisgICAgICAgIChXZWJD
b3JlOjpDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8VD4+Ojpjb252ZXJ0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnZlcnRlcjxJRExJbnRlcmZhY2U8WFBhdGhOU1Jlc29sdmVyPj46OmNvbnZl
cnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5k
b3dJbnN0YW5jZUZ1bmN0aW9uX29wZW5EYXRhYmFzZUJvZHkpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0hl
YWRlckNvbnRlbnQpOgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uQ29u
dGVudCk6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmVET01Db252ZXJ0TmVlZHNHbG9iYWxPYmpl
Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uOgorICAg
ICAgICAqIGRvbS9Ob2RlRmlsdGVyLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJl
Z2lzdGVyUGFpbnQpOgorICAgICAgICAqIHhtbC9DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaWRsOgor
CiAyMDIxLTEwLTI3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBFbGltaW5hdGUgZHVwbGljYXRlZCBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGluIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcAkocmV2aXNp
b24gMjg0OTI1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcAogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJBIHByb2Nlc3NvciB3YXMgYWxyZWFkeSByZWdpc3Rl
cmVkIHdpdGggdGhpcyBuYW1lIl9zIH07CiAKICAgICBKU0M6OkpTT2JqZWN0KiBqc0NvbnN0cnVj
dG9yID0gcHJvY2Vzc29yQ29udHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7Ci0g
ICAgYXV0byogZ2xvYmFsT2JqZWN0ID0ganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxP
YmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBSZWZQ
dHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPiBBdWRpb1dvcmtsCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgSlNDOjpKU09iamVjdCoganNDb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yLT5j
YWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBjb25z
dHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8qIGdsb2Jh
bE9iamVjdCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAg
SlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sgeyBnbG9iYWxP
YmplY3QgfTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29y
PiBBdWRpb1dvcmtsCiAgICAgaWYgKCFqc1Byb2Nlc3NvcikKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBqc1Byb2Nlc3Nvci0+d3JhcHBlZCgpLnNldFByb2Nlc3NDYWxsYmFjayhtYWtl
VW5pcXVlPEpTQ2FsbGJhY2tEYXRhU3Ryb25nPihqc1Byb2Nlc3NvciwgZ2xvYmFsT2JqZWN0KSk7
CisgICAganNQcm9jZXNzb3ItPndyYXBwZWQoKS5zZXRQcm9jZXNzQ2FsbGJhY2soanNQcm9jZXNz
b3IpOwogCiAgICAgcmV0dXJuICZqc1Byb2Nlc3Nvci0+d3JhcHBlZCgpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
UHJvY2Vzc29yLmNwcAkocmV2aXNpb24gMjg0OTI1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDEsMTMgKzIwMSwxNCBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPj4g
CiAgICAgaWYgKCFjb25zdHJ1Y3Rpb25EYXRhKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
VHlwZUVycm9yLCAiTm8gcGVuZGluZyBjb25zdHJ1Y3Rpb24gZGF0YSBmb3IgdGhpcyB3b3JrbGV0
IHByb2Nlc3NvciJfcyB9OwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9Xb3JrbGV0
UHJvY2Vzc29yKCpjb25zdHJ1Y3Rpb25EYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yKGNvbnRleHQsICpjb25zdHJ1Y3Rpb25EYXRhKSk7CiB9CiAK
IEF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6fkF1ZGlvV29ya2xldFByb2Nlc3NvcigpID0gZGVmYXVs
dDsKIAotQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3IoY29uc3Qg
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YSYgY29uc3RydWN0aW9uRGF0YSkK
LSAgICA6IG1fbmFtZShjb25zdHJ1Y3Rpb25EYXRhLm5hbWUoKSkKK0F1ZGlvV29ya2xldFByb2Nl
c3Nvcjo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEmIGNvbnN0cnVj
dGlvbkRhdGEpCisgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAs
IG1fbmFtZShjb25zdHJ1Y3Rpb25EYXRhLm5hbWUoKSkKICAgICAsIG1fcG9ydChjb25zdHJ1Y3Rp
b25EYXRhLnBvcnQoKSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTIzNiw3
ICsyMzcsNyBAQCBib29sIEF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6cHJvY2Vzcyhjb25zCiAgICAg
RGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBkaXNhYmxlTWFs
bG9jUmVzdHJpY3Rpb25zOwogCiAgICAgQVNTRVJUKG1fcHJvY2Vzc0NhbGxiYWNrKTsKLSAgICBh
dXRvJiBnbG9iYWxPYmplY3QgPSAqbV9wcm9jZXNzQ2FsbGJhY2stPmdsb2JhbE9iamVjdCgpOwor
ICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2xvYmFsT2JqZWN0KCkpOwogICAgIEFTU0VSVChnbG9iYWxP
YmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwogCkBAIC0yNDcs
NyArMjQ4LDcgQEAgYm9vbCBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnByb2Nlc3MoY29ucwogICAg
IGJ1aWxkSlNBcmd1bWVudHModm0sIGdsb2JhbE9iamVjdCwgYXJncywgaW5wdXRzLCBvdXRwdXRz
LCBwYXJhbVZhbHVlc01hcCk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJu
ZWRFeGNlcHRpb247Ci0gICAgYXV0byByZXN1bHQgPSBtX3Byb2Nlc3NDYWxsYmFjay0+aW52b2tl
Q2FsbGJhY2soanNVbmRlZmluZWQoKSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlw
ZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvY2VzcyIpLCByZXR1cm5l
ZEV4Y2VwdGlvbik7CisgICAgYXV0byByZXN1bHQgPSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2Fs
bGJhY2soZ2xvYmFsT2JqZWN0LCBhc09iamVjdChtX3Byb2Nlc3NDYWxsYmFjayksIGpzVW5kZWZp
bmVkKCksIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInByb2Nlc3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAg
IGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmdsb2Jh
bE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRy
dWU7CkBAIC0yNTksOSArMjYwLDkgQEAgYm9vbCBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnByb2Nl
c3MoY29ucwogICAgIHJldHVybiByZXN1bHQudG9Cb29sZWFuKCZnbG9iYWxPYmplY3QpOwogfQog
Ci12b2lkIEF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6c2V0UHJvY2Vzc0NhbGxiYWNrKHN0ZDo6dW5p
cXVlX3B0cjxKU0NhbGxiYWNrRGF0YVN0cm9uZz4mJiBwcm9jZXNzQ2FsbGJhY2spCit2b2lkIEF1
ZGlvV29ya2xldFByb2Nlc3Nvcjo6c2V0UHJvY2Vzc0NhbGxiYWNrKEpTT2JqZWN0KiBwcm9jZXNz
Q2FsbGJhY2spCiB7Ci0gICAgbV9wcm9jZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHByb2Nlc3NDYWxs
YmFjayk7CisgICAgbV9wcm9jZXNzQ2FsbGJhY2sgPSB7IHByb2Nlc3NDYWxsYmFjayB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgJKHJldmlzaW9uIDI4
NDkyNSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDE5ICs1OSwyMCBAQCBwdWJsaWM6CiAKICAg
ICBib29sIHByb2Nlc3MoY29uc3QgVmVjdG9yPFJlZlB0cjxBdWRpb0J1cz4+JiBpbnB1dHMsIFZl
Y3RvcjxSZWY8QXVkaW9CdXM+PiYgb3V0cHV0cywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6
dW5pcXVlX3B0cjxBdWRpb0Zsb2F0QXJyYXk+PiYgcGFyYW1WYWx1ZXNNYXAsIGJvb2wmIHRocmV3
RXhjZXB0aW9uKTsKIAotICAgIHZvaWQgc2V0UHJvY2Vzc0NhbGxiYWNrKHN0ZDo6dW5pcXVlX3B0
cjxKU0NhbGxiYWNrRGF0YVN0cm9uZz4mJik7CisgICAgdm9pZCBzZXRQcm9jZXNzQ2FsbGJhY2so
SlNDOjpKU09iamVjdCopOwogCiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYganNJbnB1dHNX
cmFwcGVyKCkgeyByZXR1cm4gbV9qc0lucHV0czsgfQogICAgIEpTVmFsdWVJbldyYXBwZWRPYmpl
Y3QmIGpzT3V0cHV0c1dyYXBwZXIoKSB7IHJldHVybiBtX2pzT3V0cHV0czsgfQogICAgIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QmIGpzUGFyYW1WYWx1ZXNXcmFwcGVyKCkgeyByZXR1cm4gbV9qc1Bh
cmFtVmFsdWVzOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yKGNvbnN0IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEmKTsKKyAgICBl
eHBsaWNpdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEmKTsKICAgICB2b2lkIGJ1
aWxkSlNBcmd1bWVudHMoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6Ok1hcmtl
ZEFyZ3VtZW50QnVmZmVyQmFzZSYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8QXVkaW9CdXM+PiYgaW5w
dXRzLCBWZWN0b3I8UmVmPEF1ZGlvQnVzPj4mIG91dHB1dHMsIGNvbnN0IEhhc2hNYXA8U3RyaW5n
LCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GbG9hdEFycmF5Pj4mIHBhcmFtVmFsdWVzTWFwKTsKIAor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAg
ICBTdHJpbmcgbV9uYW1lOwogICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxKU0NhbGxiYWNrRGF0YVN0cm9uZz4gbV9wcm9jZXNzQ2FsbGJhY2s7CisgICAg
SlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX3Byb2Nlc3NDYWxsYmFjazsKICAgICBKU1ZhbHVlSW5X
cmFwcGVkT2JqZWN0IG1fanNJbnB1dHM7CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX2pz
T3V0cHV0czsKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0IG1fanNQYXJhbVZhbHVlczsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAkocmV2aXNp
b24gMjg0OTI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTEgKzQ3LDExIEBAIGNsYXNzIEpTQ2FsbGJhY2tEYXRh
IHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIENhbGxiYWNrVHlwZSB7IEZ1bmN0aW9uLCBPYmpl
Y3QsIEZ1bmN0aW9uT3JPYmplY3QgfTsKIAotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QoKSB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQorICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlNET01HbG9iYWxPYmplY3Qm
LCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlciYsIENhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVu
Y3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsK
IAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEpTQ2FsbGJhY2tEYXRhKEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
KQorICAgIGV4cGxpY2l0IEpTQ2FsbGJhY2tEYXRhKEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJl
bnRHbG9iYWxPYmplY3QpCisgICAgICAgIDogbV9pbmN1bWJlbnRHbG9iYWxPYmplY3QoaW5jdW1i
ZW50R2xvYmFsT2JqZWN0KQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MSwxMSArNjEsOSBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIEFTU0VSVChtX3RocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogI2VuZGlmCiAgICAgfQotICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBK
U0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTT2Jq
ZWN0KiBjYWxsYmFjaywgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVu
dEJ1ZmZlciYsIENhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIAogcHJpdmF0ZToK
LSAgICBKU0M6OldlYWs8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0OworICAgIEpT
Qzo6V2VhazxKU0RPTUdsb2JhbE9iamVjdD4gbV9pbmN1bWJlbnRHbG9iYWxPYmplY3Q7CiAjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBSZWY8VGhyZWFkPiBtX3RocmVhZCB7IFRocmVhZDo6Y3VycmVu
dCgpIH07CiAjZW5kaWYKQEAgLTczLDIxICs3MSwxNyBAQCBwcml2YXRlOgogCiBjbGFzcyBKU0Nh
bGxiYWNrRGF0YVN0cm9uZyA6IHB1YmxpYyBKU0NhbGxiYWNrRGF0YSB7CiBwdWJsaWM6Ci0gICAg
SlNDYWxsYmFja0RhdGFTdHJvbmcoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIHZvaWQqID0gbnVsbHB0cikKLSAgICAgICAgOiBKU0NhbGxi
YWNrRGF0YShnbG9iYWxPYmplY3QpCi0gICAgICAgICwgbV9jYWxsYmFjayhnbG9iYWxPYmplY3Qt
PnZtKCksIGNhbGxiYWNrKQorICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKEpTQzo6SlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB2b2lk
KiA9IG51bGxwdHIpCisgICAgICAgIDogSlNDYWxsYmFja0RhdGEoaW5jdW1iZW50R2xvYmFsT2Jq
ZWN0KQorICAgICAgICAsIG1fY2FsbGJhY2soaW5jdW1iZW50R2xvYmFsT2JqZWN0LT52bSgpLCBj
YWxsYmFjaykKICAgICB7CiAgICAgfQogCiAgICAgSlNDOjpKU09iamVjdCogY2FsbGJhY2soKSB7
IHJldHVybiBtX2NhbGxiYWNrLmdldCgpOyB9CiAKLSAgICBKU0M6OkpTVmFsdWUgaW52b2tlQ2Fs
bGJhY2soSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYg
YXJncywgQ2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rp
b25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQorICAg
IEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1
ZmZlciYgYXJncywgQ2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUg
ZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9u
KQogICAgIHsKLSAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0
KCk7Ci0gICAgICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsK
LQotICAgICAgICByZXR1cm4gSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKCpnbG9iYWxP
YmplY3QsIGNhbGxiYWNrKCksIHRoaXNWYWx1ZSwgYXJncywgY2FsbGJhY2tUeXBlLCBmdW5jdGlv
bk5hbWUsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tEYXRh
OjppbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFjaygpLCB0aGlzVmFs
dWUsIGFyZ3MsIGNhbGxiYWNrVHlwZSwgZnVuY3Rpb25OYW1lLCByZXR1cm5lZEV4Y2VwdGlvbik7
CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTYsMjEgKzkwLDE3IEBAIHByaXZhdGU6CiAKIGNsYXNz
IEpTQ2FsbGJhY2tEYXRhV2VhayA6IHB1YmxpYyBKU0NhbGxiYWNrRGF0YSB7CiBwdWJsaWM6Ci0g
ICAgSlNDYWxsYmFja0RhdGFXZWFrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB2b2lkKiBvd25lcikKLSAgICAgICAgOiBKU0NhbGxiYWNr
RGF0YShnbG9iYWxPYmplY3QpCisgICAgSlNDYWxsYmFja0RhdGFXZWFrKEpTQzo6SlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB2b2lk
KiBvd25lcikKKyAgICAgICAgOiBKU0NhbGxiYWNrRGF0YShpbmN1bWJlbnRHbG9iYWxPYmplY3Qp
CiAgICAgICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaywgJm1fd2Vha093bmVyLCBvd25lcikKICAg
ICB7CiAgICAgfQogCiAgICAgSlNDOjpKU09iamVjdCogY2FsbGJhY2soKSB7IHJldHVybiBtX2Nh
bGxiYWNrLmdldCgpOyB9CiAKLSAgICBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlNDOjpK
U1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJh
Y2tUeXBlIGNhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQorICAgIEpTQzo6SlNWYWx1
ZSBpbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywg
Q2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1l
LCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKLSAg
ICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAg
IGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICBy
ZXR1cm4gSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKCpnbG9iYWxPYmplY3QsIGNhbGxi
YWNrKCksIHRoaXNWYWx1ZSwgYXJncywgY2FsbGJhY2tUeXBlLCBmdW5jdGlvbk5hbWUsIHJldHVy
bmVkRXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxs
YmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFjaygpLCB0aGlzVmFsdWUsIGFyZ3MsIGNh
bGxiYWNrVHlwZSwgZnVuY3Rpb25OYW1lLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9pZCB2aXNpdEpTRnVuY3Rpb24oVmlzaXRv
ciYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0Q2FsbGJh
Y2tzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0Q2FsbGJhY2tzLmgJKHJldmlzaW9uIDI4NDkyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydENhbGxiYWNrcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SUQKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgY29udmVyc2lvbkhhc1NpZGVFZmZlY3RzID0gZmFsc2U7CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRo
cm93ZXI+Ci0gICAgc3RhdGljIFJlZlB0cjxUPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBF
eGNlcHRpb25UaHJvd2VyKCkpCisgICAgc3RhdGljIFJlZlB0cjxUPiBjb252ZXJ0KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhj
ZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAg
ICAgewogICAgICAgICBKU0M6OlZNJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC00
NSw3ICs0NSw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SUQKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIFQ6
OmNyZWF0ZShKU0M6OmFzT2JqZWN0KHZhbHVlKSwgJmNhbGxlckdsb2JhbE9iamVjdChnbG9iYWxP
YmplY3QsIHZtLnRvcENhbGxGcmFtZSkpOworICAgICAgICBhdXRvJiBqc0RPTUdsb2JhbE9iamVj
dCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgcmV0dXJuIFQ6OmNyZWF0ZShqc0RPTUdsb2JhbE9iamVjdCwgSlNDOjphc09i
amVjdCh2YWx1ZSksICZjYWxsZXJHbG9iYWxPYmplY3QoanNET01HbG9iYWxPYmplY3QsIHZtLnRv
cENhbGxGcmFtZSkpOwogICAgIH0KIH07CiAKQEAgLTY5LDcgKzcwLDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IEpTQ29udmVydGVyPAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgQ29udmVydGVyPElETENhbGxiYWNrSW50ZXJmYWNlPFQ+PiA6IERlZmF1bHRDb252ZXJ0ZXI8
SURMQ2FsbGJhY2tJbnRlcmZhY2U8VD4+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRp
b25UaHJvd2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+Ci0gICAgc3RhdGljIFJlZlB0cjxU
PiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9u
VGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCisgICAgc3Rh
dGljIFJlZlB0cjxUPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRo
cm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewogICAgICAgICBKU0M6OlZNJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC03OSw3ICs4MCw4IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8SUQKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIFQ6OmNyZWF0ZShKU0M6OmFzT2JqZWN0KHZhbHVl
KSwgJmNhbGxlckdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QsIHZtLnRvcENhbGxGcmFtZSkpOwor
ICAgICAgICBhdXRvJiBqc0RPTUdsb2JhbE9iamVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFQ6OmNyZWF0
ZShqc0RPTUdsb2JhbE9iamVjdCwgSlNDOjphc09iamVjdCh2YWx1ZSksICZjYWxsZXJHbG9iYWxP
YmplY3QoanNET01HbG9iYWxPYmplY3QsIHZtLnRvcENhbGxGcmFtZSkpOwogICAgIH0KIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFhQYXRoTlNSZXNv
bHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29u
dmVydFhQYXRoTlNSZXNvbHZlci5oCShyZXZpc2lvbiAyODQ5MjUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8SURMSW50ZXJm
YWNlCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTWFBhdGhOU1Jlc29sdmVyPih2bSkp
CiAgICAgICAgICAgICByZXR1cm4gJkpTQzo6anNDYXN0PEpTWFBhdGhOU1Jlc29sdmVyKj4ob2Jq
ZWN0KS0+d3JhcHBlZCgpOwogCi0gICAgICAgIHJldHVybiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZl
cjo6Y3JlYXRlKG9iamVjdCwgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNh
bEdsb2JhbE9iamVjdCkpOworICAgICAgICBhdXRvJiBqc0RPTUdsb2JhbE9iamVjdCA9ICpKU0M6
OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgcmV0dXJuIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUoanNET01HbG9iYWxPYmpl
Y3QsIG9iamVjdCwgJmNhbGxlckdsb2JhbE9iamVjdChqc0RPTUdsb2JhbE9iamVjdCwgdm0udG9w
Q2FsbEZyYW1lKSk7CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjg0OTI1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTQsOCArMTk0LDggQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdoZW5TaWdu
YWxBYm9ydAogICAgIGlmIChVTkxJS0VMWSghYWJvcnRTaWduYWwpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoSlNDOjpKU1ZhbHVlOjpKU0ZhbHNlKSk7CiAKLSAgICBh
dXRvKiBqc0RPTUdsb2JhbE9iamVjdCA9IEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KTsKLSAgICBSZWY8QWJvcnRBbGdvcml0aG0+IGFib3J0QWxnb3JpdGhtID0g
SlNBYm9ydEFsZ29yaXRobTo6Y3JlYXRlKGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSku
Z2V0T2JqZWN0KCksIGpzRE9NR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvJiBqc0RPTUdsb2JhbE9i
amVjdCA9ICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCk7Cisg
ICAgUmVmPEFib3J0QWxnb3JpdGhtPiBhYm9ydEFsZ29yaXRobSA9IEpTQWJvcnRBbGdvcml0aG06
OmNyZWF0ZShqc0RPTUdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgx
KS5nZXRPYmplY3QoKSwgJmNhbGxlckdsb2JhbE9iamVjdChqc0RPTUdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lKSk7CiAKICAgICBib29sIHJlc3VsdCA9IEFib3J0U2lnbmFsOjp3aGVuU2lnbmFsQWJv
cnRlZChhYm9ydFNpZ25hbC0+d3JhcHBlZCgpLCBXVEZNb3ZlKGFib3J0QWxnb3JpdGhtKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyBKU1ZhbHVlKEpTQzo6SlNWYWx1ZTo6
SlNUcnVlKSA6IEpTVmFsdWUoSlNDOjpKU1ZhbHVlOjpKU0ZhbHNlKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lv
biAyODQ5MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNiw3ICs2MDYsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNET01XCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y29uc3RydWN0RW1wdHlPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSk7CiAgICAgfQogCi0gICAgYXV0byBjcmVh
dGlvbkNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpT
RGF0YWJhc2VDYWxsYmFjaz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1
bWVudCg0KSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7CisgICAg
YXV0byBjcmVhdGlvbkNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1
bmN0aW9uPEpTRGF0YWJhc2VDYWxsYmFjaz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCg0KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgewogICAgICAgICB0aHJvd0FyZ3VtZW50TXVz
dEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgNCwgImNyZWF0aW9u
Q2FsbGJhY2siLCAiV2luZG93IiwgIm9wZW5EYXRhYmFzZSIpOwogICAgIH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
cmV2aXNpb24gMjg0OTI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTYzNDcsMTMgKzYzNDcsMTEgQEAgc3Vi
IEdlbmVyYXRlQ2FsbGJhY2tIZWFkZXJDb250ZW50CiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJw
dWJsaWM6XG4iKTsKIAogICAgICMgVGhlIHN0YXRpYyBjcmVhdGUoKSBtZXRob2QuCi0gICAgcHVz
aChAJGNvbnRlbnRSZWYsICIgICAgc3RhdGljIFJlZjwkY2xhc3NOYW1lPiBjcmVhdGUoSlNDOjpK
U09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsK
KyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBzdGF0aWMgUmVmPCRjbGFzc05hbWU+IGNyZWF0
ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFj
aywgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdClcbiIpOwogICAgIHB1
c2goQCRjb250ZW50UmVmLCAiICAgIHtcbiIpOwotICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAke2NsYXNzTmFtZX0oY2FsbGJhY2ssIGdsb2JhbE9i
amVjdCkpO1xuIik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3ICR7Y2xhc3NOYW1lfShnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBpbmN1bWJlbnRH
bG9iYWxPYmplY3QpKTtcbiIpOwogICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIH1cblxuIik7
CiAKLSAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfVxuXG4iKTsKLQogICAgIHB1c2go
QCRjb250ZW50UmVmLCAiICAgIH4kY2xhc3NOYW1lKCkgZmluYWw7XG4iKTsKIAogICAgIHB1c2go
QCRjb250ZW50UmVmLCAiICAgICR7Y2FsbGJhY2tEYXRhVHlwZX0qIGNhbGxiYWNrRGF0YSgpIHsg
cmV0dXJuIG1fZGF0YTsgfVxuIik7CkBAIC02MzkwLDcgKzYzODgsNyBAQCBzdWIgR2VuZXJhdGVD
YWxsYmFja0hlYWRlckNvbnRlbnQKIAogICAgIHB1c2goQCRjb250ZW50UmVmLCAiXG5wcml2YXRl
OlxuIik7CiAKLSAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAke2NsYXNzTmFtZX0oSlNDOjpK
U09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0Kik7XG5cbiIpOworICAgIHB1c2goQCRjb250ZW50
UmVmLCAiICAgICR7Y2xhc3NOYW1lfShKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6SlNPYmplY3Qq
LCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KTtcblxuIik7CiAKICAg
ICBpZiAoJGludGVyZmFjZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e0lzV2Vha0Nh
bGxiYWNrfSkgewogICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBib29sIGhhc0NhbGxi
YWNrKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kYXRhICYmIG1fZGF0YS0+Y2FsbGJhY2soKTsg
fVxuXG4iKTsKQEAgLTYzOTksNiArNjM5NywxMyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0hlYWRl
ckNvbnRlbnQKICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICB2b2lkIHZpc2l0SlNGdW5jdGlv
bihKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImKSBvdmVycmlkZTtcblxuIikgaWYgJGludGVyZmFj
ZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e0lzV2Vha0NhbGxiYWNrfTsKICAgICBw
dXNoKEAkY29udGVudFJlZiwgIiAgICB2b2lkIHZpc2l0SlNGdW5jdGlvbihKU0M6OlNsb3RWaXNp
dG9yJikgb3ZlcnJpZGU7XG5cbiIpIGlmICRpbnRlcmZhY2VPckNhbGxiYWNrLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntJc1dlYWtDYWxsYmFja307CiAKKyAgICBpZiAoJGludGVyZmFjZU9yQ2FsbGJh
Y2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NraXBDYWxsYmFja0ludm9rZUNoZWNrfSkgeworICAg
ICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH1cblxuIik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7IH1cblxu
Iik7CisgICAgfQorCisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgSlNDOjpTdHJvbmc8SlNE
T01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0O1xuIikgaWYgJGludGVyZmFjZU9yQ2FsbGJh
Y2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NraXBDYWxsYmFja0ludm9rZUNoZWNrfTsKICAgICBw
dXNoKEAkY29udGVudFJlZiwgIiAgICAke2NhbGxiYWNrRGF0YVR5cGV9KiBtX2RhdGE7XG4iKTsK
ICAgICBwdXNoKEAkY29udGVudFJlZiwgIn07XG5cbiIpOwogCkBAIC02NDE5LDkgKzY0MjQsMTAg
QEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgogICAgICRpbmNsdWRl
c1JlZi0+eyJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgifSA9IDE7CiAKICAgICAjIENvbnN0cnVj
dG9yCi0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIke2NsYXNzTmFtZX06OiR7Y2xhc3NOYW1lfShK
U09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsK
LSAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICA6ICR7bmFtZX0oZ2xvYmFsT2JqZWN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpXG4iKTsKLSAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAs
IG1fZGF0YShuZXcgJHtjYWxsYmFja0RhdGFUeXBlfShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0LCB0
aGlzKSlcbiIpOworICAgIHB1c2goQCRjb250ZW50UmVmLCAiJHtjbGFzc05hbWV9Ojoke2NsYXNz
TmFtZX0oSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxiYWNr
LCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KVxuIik7CisgICAgcHVz
aChAJGNvbnRlbnRSZWYsICIgICAgOiAke25hbWV9KGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpXG4iKTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAsIG1fZ2xvYmFs
T2JqZWN0KGdsb2JhbE9iamVjdC52bSgpLCAmZ2xvYmFsT2JqZWN0KVxuIikgaWYgJGludGVyZmFj
ZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NraXBDYWxsYmFja0ludm9rZUNoZWNr
fTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAsIG1fZGF0YShuZXcgJHtjYWxsYmFja0Rh
dGFUeXBlfShjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB0aGlzKSlcbiIpOwogICAg
IHB1c2goQCRjb250ZW50UmVmLCAie1xuIik7CiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJ9XG5c
biIpOwogCkBAIC02NTI0LDE1ICs2NTMwLDE4IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVt
ZW50YXRpb25Db250ZW4KICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiJHtuYXRpdmVS
ZXR1cm5UeXBlfSAke2NsYXNzTmFtZX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9KCIg
LiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIilcbiIpOwogICAgICAgICAgICAgcHVzaChAJGNv
bnRlbnRSZWYsICJ7XG4iKTsKIAorICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAg
aWYgKFVOTElLRUxZKCFnbG9iYWxPYmplY3QoKSkpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRj
b250ZW50UmVmLCAiICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpVbmFibGVUb0V4
ZWN1dGU7XG5cbiIpOworCiAgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIG5lZWRlZCBmb3Ig
Tm9kZUZpbHRlciwgd2hpY2ggd29ya3MgZXZlbiBmb3IgZGlzY29ubmVjdGVkIGlmcmFtZXMuIFdl
IHNob3VsZCBpbnZlc3RpZ2F0ZQogICAgICAgICAgICAgIyBpZiB0aGF0IGJlaGF2aW9yIGlzIG5l
ZWRlZCBmb3Igb3RoZXIgY2FsbGJhY2tzLgotICAgICAgICAgICAgaWYgKCEkb3BlcmF0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntTa2lwQ2FsbGJhY2tJbnZva2VDaGVja30pIHsKKyAgICAgICAg
ICAgIGlmICghJGludGVyZmFjZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NraXBD
YWxsYmFja0ludm9rZUNoZWNrfSkgewogICAgICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVm
LCAiICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSlcbiIpOwogICAgICAgICAgICAgICAgIHB1
c2goQCRjb250ZW50UmVmLCAiICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpVbmFi
bGVUb0V4ZWN1dGU7XG5cbiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEAk
Y29udGVudFJlZiwgIiAgICBSZWY8JGNsYXNzTmFtZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7XG5c
biIpOwotICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgYXV0byYgZ2xvYmFsT2Jq
ZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRj
b250ZW50UmVmLCAiICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICp0aGlzLT5nbG9iYWxPYmplY3Qo
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgYXV0byYgdm0gPSBn
bG9iYWxPYmplY3Qudm0oKTtcblxuIik7CiAgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwg
IiAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7XG4iKTsKIApAQCAtNjU1MCwxMCArNjU1OSwxMCBA
QCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uQ29udGVuCiAKICAgICAgICAgICAg
IG15ICRjYWxsYmFja0ludm9jYXRpb247CiAgICAgICAgICAgICBpZiAocmVmKCRpbnRlcmZhY2VP
ckNhbGxiYWNrKSBlcSAiSURMQ2FsbGJhY2tGdW5jdGlvbiIpIHsKLSAgICAgICAgICAgICAgICAk
Y2FsbGJhY2tJbnZvY2F0aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBh
cmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigp
LCByZXR1cm5lZEV4Y2VwdGlvbikiOworICAgICAgICAgICAgICAgICRjYWxsYmFja0ludm9jYXRp
b24gPSAibV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFs
dWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlm
aWVyKCksIHJldHVybmVkRXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIG15ICRjYWxsYmFja1R5cGUgPSAkbnVtT3BlcmF0aW9ucyA+IDEgPyAiT2JqZWN0
IiA6ICJGdW5jdGlvbk9yT2JqZWN0IjsKLSAgICAgICAgICAgICAgICAkY2FsbGJhY2tJbnZvY2F0
aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNr
RGF0YTo6Q2FsbGJhY2tUeXBlOjoke2NhbGxiYWNrVHlwZX0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sIFwiJHtmdW5jdGlvbk5hbWV9XCIpLCByZXR1cm5lZEV4Y2VwdGlvbikiOworICAgICAg
ICAgICAgICAgICRjYWxsYmFja0ludm9jYXRpb24gPSAibV9kYXRhLT5pbnZva2VDYWxsYmFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxs
YmFja1R5cGU6OiR7Y2FsbGJhY2tUeXBlfSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIk
e2Z1bmN0aW9uTmFtZX1cIiksIHJldHVybmVkRXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmICgkb3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJ1bmRlZmluZWQiKSB7
CkBAIC03MDA0LDggKzcwMTMsNiBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlRE9NQ29udmVydE5lZWRz
R2xvYmFsCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgIHJldHVybiAxIGlmICRjb2Rl
R2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKTsKLSAgICByZXR1cm4gMSBpZiAk
Y29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0Z1bmN0aW9uKCR0eXBlKTsKICAgICByZXR1cm4gSlNW
YWx1ZVRvTmF0aXZlRE9NQ29udmVydE5lZWRzR2xvYmFsT2JqZWN0KEB7JHR5cGUtPnN1YnR5cGVz
fVsxXSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzUmVjb3JkVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJu
IDEgaWYgJHR5cGUtPm5hbWUgZXEgIlNjaGVkdWxlZEFjdGlvbiI7CiAgICAgcmV0dXJuIDA7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbgkocmV2aXNpb24gMjg0OTI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTQ3OCw3ICs0NzgsNyBA
QAogICAgICAgICAgICAgInN1cHBvcnRzQ29uanVuY3Rpb24iOiB0cnVlCiAgICAgICAgIH0sCiAg
ICAgICAgICJTa2lwQ2FsbGJhY2tJbnZva2VDaGVjayI6IHsKLSAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbIm9wZXJhdGlvbiIsICJjYWxsYmFjay1mdW5jdGlvbiJdCisgICAgICAgICAg
ICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQogICAgICAgICB9LAogICAgICAgICAi
U2tpcFZUYWJsZVZhbGlkYXRpb24iOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjog
WyJpbnRlcmZhY2UiXQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmlkbAkocmV2aXNpb24g
Mjg0OTI1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yMCw2ICsyMCw3IEBACiAKIFsKICAgICBJc1dlYWtDYWxsYmFjaywKKyAgICBTa2lw
Q2FsbGJhY2tJbnZva2VDaGVjaywKICAgICBFeHBvc2VkPVdpbmRvdwogXSBjYWxsYmFjayBpbnRl
cmZhY2UgTm9kZUZpbHRlciB7CiAgICAgLy8gQ29uc3RhbnRzIGZvciBhY2NlcHROb2RlKCkuCkBA
IC00Miw1ICs0Myw1IEBACiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBTSE9XX0RPQ1VNRU5UX0ZS
QUdNRU5UID0gMHgwMDAwMDQwMDsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIFNIT1dfTk9UQVRJ
T04gPSAweDAwMDAwODAwOyAvLyBIaXN0b3JpY2FsLgogCi0gICAgW1NraXBDYWxsYmFja0ludm9r
ZUNoZWNrLCBSZXRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBzaG9ydCBhY2NlcHROb2RlKE5vZGUg
bm9kZSk7CisgICAgW1JldGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIHNob3J0IGFjY2VwdE5vZGUo
Tm9kZSBub2RlKTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODQ5MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc4LDYgKzc4LDcgQEAgcHJvdGVjdGVkOgogICAgIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKFdvcmtlclRocmVhZFR5cGUsIFJlZjxKU0M6OlZNPiYmLCBXb3JrZXJPcldvcmtsZXRU
aHJlYWQqKTsKIAogICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGNvbnN0X2Nhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqPih0aGlzKTsgfQogICAg
IGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBt
YXJrQXNDbG9zaW5nKCkgeyBtX2lzQ2xvc2luZyA9IHRydWU7IH0KQEAgLTkwLDcgKzkxLDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsg
ZGVyZWYoKTsgfQogCiAgICAgLy8gRXZlbnRUYXJnZXQuCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0
X2Nhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqPih0aGlzKTsgfQogICAgIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93
b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4NDkyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29y
a2xldEdsb2JhbFNjb3AKICAgICAgICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKICAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgY2xhc3MgbXVzdCBo
YXZlIGEgcGFpbnQgbWV0aG9kIiB9OwogCi0gICAgICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJh
Y2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFj
az4+KGdsb2JhbE9iamVjdCwgcGFpbnRWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KCZnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFp
bnQgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oZ2xv
YmFsT2JqZWN0LCBwYWludFZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAogICAgICAgICBhdXRv
IHBhaW50RGVmaW5pdGlvbiA9IG1ha2VVbmlxdWU8UGFpbnREZWZpbml0aW9uPihuYW1lLCBwYWlu
dENvbnN0cnVjdG9yLmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0
UHJvcGVydGllcyksIFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3htbC9DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3htbC9DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaWRsCShyZXZpc2lvbiAyODQ5MjUpCisr
KyBTb3VyY2UvV2ViQ29yZS94bWwvQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjQsNiArMjQsOCBAQAogICovCiAKIC8vIE5vdCB1c2luZyBbSXNXZWFrQ2FsbGJh
Y2tdIGhlcmUgYXMgWFBhdGhOU1Jlc29sdmVyIHdyYXBwZXJzIGFsd2F5cyB0ZW1wb3JhcnkgKG5v
IHJlZmVyZW5jZSBpcyBrZXB0KQotY2FsbGJhY2sgaW50ZXJmYWNlIEN1c3RvbVhQYXRoTlNSZXNv
bHZlciB7Ci0gICAgW0ltcGxlbWVudGVkQXM9bG9va3VwTmFtZXNwYWNlVVJJRm9yQmluZGluZ3Ms
IFNraXBDYWxsYmFja0ludm9rZUNoZWNrXSBET01TdHJpbmc/IGxvb2t1cE5hbWVzcGFjZVVSSShE
T01TdHJpbmc/IHByZWZpeCk7CitbCisgICAgU2tpcENhbGxiYWNrSW52b2tlQ2hlY2ssCitdIGNh
bGxiYWNrIGludGVyZmFjZSBDdXN0b21YUGF0aE5TUmVzb2x2ZXIgeworICAgIFtJbXBsZW1lbnRl
ZEFzPWxvb2t1cE5hbWVzcGFjZVVSSUZvckJpbmRpbmdzXSBET01TdHJpbmc/IGxvb2t1cE5hbWVz
cGFjZVVSSShET01TdHJpbmc/IHByZWZpeCk7CiB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjg0OTI1
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMjEtMTAtMjcgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29tPgorCisg
ICAgICAgIEpTQ2FsbGJhY2tEYXRhIHNob3VsZCB1c2UgbGV4aWNhbCBnbG9iYWwgb2JqZWN0IGZv
ciBlcnJvcnMgYW5kIGxpZmVjeWNsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMyMzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVk
LWNvbnRleHQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2Nh
bGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xv
Y2F0aW9uL2Rpc2Nvbm5lY3RlZC1mcmFtZS1hbHJlYWR5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUtYWxyZWFkeS5odG1sOgor
ICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nvbm5lY3RlZC1mcmFtZS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1l
LXBlcm1pc3Npb24tZGVuaWVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9s
b2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUtcGVybWlzc2lvbi1kZW5pZWQuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvY2FsbGJhY2stdG8tZGVsZXRlZC1j
b250ZXh0LWlubmVyMS5odG1sOgorCiAyMDIxLTEwLTI3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNYXJrIHNvbWUgV1BUIHRyYW5zZm9ybXMgdGVz
dHMgYXMgcGFzc2luZwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2Fs
bGJhY2stdG8tZGVsZXRlZC1jb250ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyODQ5MjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUZXN0cyB0aGF0IHdoZW4gYSBHZW9sb2NhdGlvbiBy
ZXF1ZXN0IGlzCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBObyBjYWxsYmFj
a3MgaW52b2tlZAorUEFTUyBTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVs
ZXRlZC1jb250ZXh0Lmh0bWwJKHJldmlzaW9uIDI4NDkyNSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMyw3ICsxMyw3IEBAIGZ1bmN0aW9uIG9uRmlyc3RJZnJhbWVMb2FkZWQoKSB7
CiAKIGZ1bmN0aW9uIG9uU2Vjb25kSWZyYW1lTG9hZGVkKCkgewogICAgIHdpbmRvdy5zZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0UGFzc2VkKCdObyBjYWxsYmFja3MgaW52b2tl
ZCcpOworICAgICAgICB0ZXN0RmFpbGVkKCdObyBjYWxsYmFja3MgaW52b2tlZCcpOwogICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9LCA1MDApOwogfQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLWFscmVhZHktZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nvbm5l
Y3RlZC1mcmFtZS1hbHJlYWR5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjg0OTI1KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLWFscmVhZHkt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsOCBAQCBUZXN0cyB0aGF0IHdo
ZW4gYSByZXF1ZXN0IGlzIG1hZGUgb24gYSBHCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAK
IAotUEFTUyBFcnJvciBjYWxsYmFjayBpbnZva2VkCitNZXRob2QgY2FsbGVkIG9uIEdlb2xvY2F0
aW9uIG9iamVjdCB3aXRoIGRpc2Nvbm5lY3RlZCBGcmFtZS4KK1BBU1MgTm8gY2FsbGJhY2tzIGlu
dm9rZWQKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1l
LWFscmVhZHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUtYWxyZWFkeS5odG1sCShyZXZpc2lvbiAyODQ5MjUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUtYWxy
ZWFkeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBAIGZ1bmN0aW9uIG9uU2Vj
b25kSWZyYW1lTG9hZGVkKCkgewogICAgICAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNr
IGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0s
IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tl
ZCcpOworICAgICAgICB0ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0
ZWRseScpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9KTsKICAgICBzZXRUaW1lb3V0
KGZpbmlzaFRlc3QsIDEwMDApOwpAQCAtMzEsNiArMzEsNyBAQCBmdW5jdGlvbiBvblNlY29uZElm
cmFtZUxvYWRlZCgpIHsKIAogZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKICAgICBkZWJ1ZygnTWV0
aG9kIGNhbGxlZCBvbiBHZW9sb2NhdGlvbiBvYmplY3Qgd2l0aCBkaXNjb25uZWN0ZWQgRnJhbWUu
Jyk7CisgICAgdGVzdFBhc3NlZCgnTm8gY2FsbGJhY2tzIGludm9rZWQnKTsKICAgICBmaW5pc2hK
U1Rlc3QoKTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGlz
Y29ubmVjdGVkLWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAyODQ5MjUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25u
ZWN0ZWQtZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBU
ZXN0cyB0aGF0IHdoZW4gYSByZXF1ZXN0IGlzIG1hZGUgb24gYSBHCiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIAotUEFTUyBFcnJvciBjYWxsYmFjayBpbnZva2VkCitQQVNTIE5vIGNhbGxi
YWNrcyBpbnZva2VkCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nvbm5lY3Rl
ZC1mcmFtZS1wZXJtaXNzaW9uLWRlbmllZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLXBlcm1pc3Np
b24tZGVuaWVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjg0OTI1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLXBlcm1pc3Npb24tZGVuaWVk
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAgT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBF
Uk1JU1NJT05fREVOSUVECiBQQVNTIGVycm9yLm1lc3NhZ2UgaXMgIlVzZXIgZGVuaWVkIEdlb2xv
Y2F0aW9uIgogCi1QQVNTIEVycm9yIGNhbGxiYWNrIGludm9rZWQKK1BBU1MgTm8gY2FsbGJhY2tz
IGludm9rZWQKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZy
YW1lLXBlcm1pc3Npb24tZGVuaWVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLXBlcm1pc3Npb24tZGVuaWVkLmh0
bWwJKHJldmlzaW9uIDI4NDkyNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L2Rpc2Nvbm5lY3RlZC1mcmFtZS1wZXJtaXNzaW9uLWRlbmllZC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiwxMSArMzYsMTEgQEAgZnVuY3Rpb24gb25JZnJhbWVVbmxvYWRlZCgpIHsKICAgICAg
ICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwog
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9LCBmdW5jdGlvbihlKSB7Ci0gICAgICAgIHRl
c3RQYXNzZWQoJ0Vycm9yIGNhbGxiYWNrIGludm9rZWQnKTsKKyAgICAgICAgdGVzdEZhaWxlZCgn
RXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CiAgICAgfSk7CiAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgnTm8gY2FsbGJhY2tzIGludm9rZWQnKTsKKyAgICAgICAgdGVzdFBhc3NlZCgnTm8g
Y2FsbGJhY2tzIGludm9rZWQnKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfSwgMTAw
MCk7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0
ZWQtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUuaHRtbAkocmV2aXNpb24gMjg0OTI1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDExICsyMywxMSBAQCBmdW5jdGlvbiBvbklmcmFtZVVubG9hZGVkKCkg
ewogICAgICAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3Rl
ZGx5Jyk7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0sIGZ1bmN0aW9uKGUpIHsKLSAg
ICAgICAgdGVzdFBhc3NlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCcpOworICAgICAgICB0ZXN0
RmFpbGVkKCdFcnJvciBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwogICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKICAgICB9KTsKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAg
ICAgICB0ZXN0RmFpbGVkKCdObyBjYWxsYmFja3MgaW52b2tlZCcpOworICAgICAgICB0ZXN0UGFz
c2VkKCdObyBjYWxsYmFja3MgaW52b2tlZCcpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAg
ICB9LCAxMDAwKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Jl
c291cmNlcy9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtaW5uZXIxLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhbGxiYWNr
LXRvLWRlbGV0ZWQtY29udGV4dC1pbm5lcjEuaHRtbAkocmV2aXNpb24gMjg0OTI1KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhbGxiYWNrLXRvLWRlbGV0
ZWQtY29udGV4dC1pbm5lcjEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsNyArMTMsNyBAQAog
ICAgICAgICAgIC8vIE1ha2UgcmVxdWVzdCBmcm9tIHJlbW90ZSBmcmFtZSwgdGhpcyBmcmFtZSB3
aWxsIGJlIGdvbmUgYnkgdGhlIHRpbWUgdGhlIEdlb2xvY2F0aW9uCiAgICAgICAgICAgLy8gb2Jq
ZWN0IGF0dGVtcHRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2suCiAgICAgICAgICAgd2luZG93LnBh
cmVudC5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICBwYXJlbnQudGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZv
a2VkIHVuZXhwZWN0ZWRseScpOworICAgICAgICAgICAgICBwYXJlbnQudGVzdFBhc3NlZCgnU3Vj
Y2VzcyBjYWxsYmFjayBpbnZva2VkJyk7CiAgICAgICAgICAgICAgIHBhcmVudC5maW5pc2hKU1Rl
c3QoKTsKICAgICAgICAgICB9LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgcGFyZW50LnRl
c3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NDkyNSkKKysrIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBA
QAorMjAyMS0xMC0yNyAgQWxleGV5IFNodmF5a2EgIDxhc2h2YXlrYUBhcHBsZS5jb20+CisKKyAg
ICAgICAgSlNDYWxsYmFja0RhdGEgc2hvdWxkIHVzZSBsZXhpY2FsIGdsb2JhbCBvYmplY3QgZm9y
IGVycm9ycyBhbmQgbGlmZWN5Y2xlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzIzODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxr
ZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2Vw
dE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL3N1cHBvcnQvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZp
bHRlci1jcm9zcy1yZWFsbS1zdWJmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAyMS0xMC0yNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5naW5nIHRoZSBzcmMg
YXR0cmlidXRlIG9mIHRoZSA8aW1nPiBlbGVtZW50IGluc2lkZSBhbiBJbWFnZURvY3VtZW50IGRv
ZXMgbm90IHRyaWdnZXIgYSBsb2FkCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRl
ci1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNj
ZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNh
bC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKworCitQQVNTIHBhcmVudCdzIHx0aGlzfCwg
cGFyZW50J3MgbWV0aG9kLCBwYXJlbnQncyBmaWx0ZXIsIHBhcmVudCdzIHJvb3QKK1BBU1MgcGFy
ZW50J3MgfHRoaXN8LCBwYXJlbnQncyBtZXRob2QsIHBhcmVudCdzIGZpbHRlciwgaWZyYW1lJ3Mg
cm9vdAorUEFTUyBwYXJlbnQncyB8dGhpc3wsIHBhcmVudCdzIG1ldGhvZCwgaWZyYW1lJ3MgZmls
dGVyLCBpZnJhbWUncyByb290CitQQVNTIHBhcmVudCdzIHx0aGlzfCwgaWZyYW1lcydzIG1ldGhv
ZCwgaWZyYW1lJ3MgZmlsdGVyLCBpZnJhbWUncyByb290CisKSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFj
Y2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxr
ZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0uaHRtbAkobm9uZXhpc3RlbnQpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwv
VHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPlRyZWVXYWxrZXI6
IGNyb3NzLXJlYWxtIE5vZGVGaWx0ZXIgdGhyb3dzIFR5cGVFcnJvciBvZiBjdXJyZW50IHJlYWxt
PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3Jn
LyNjYWxsLWEtdXNlci1vYmplY3RzLW9wZXJhdGlvbiI+CisKKzxib2R5IGlkPSJ0cmVlV2Fsa2Vy
Um9vdCI+Cis8ZGl2PjwvZGl2PgorCis8c2NyaXB0PgorY29uc3QgaWZyYW1lID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CitpZnJhbWUuc3JjID0gInN1cHBvcnQvVHJlZVdhbGtl
ci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1zdWJmcmFtZS5odG1sIjsKK2lmcmFtZS5v
bmxvYWQgPSAoKSA9PiB7CisgICAgZm9yIChjb25zdCB0ZXN0Q2FzZSBvZiBpZnJhbWUuY29udGVu
dFdpbmRvdy50ZXN0Q2FzZXMpIHsKKyAgICAgICAgdGVzdCh0ID0+IHsKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHModGVzdENhc2UuYWN0dWFsLmNvbnN0cnVjdG9yLCB0ZXN0Q2FzZS5leHBlY3Rl
ZCk7CisgICAgICAgIH0sIHRlc3RDYXNlLmRlc2NyaXB0aW9uKTsKKyAgICB9Cit9OworZG9jdW1l
bnQuYm9keS5hcHBlbmQoaWZyYW1lKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL3N1cHBvcnQvVHJlZVdh
bGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1zdWJmcmFtZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3Ry
YXZlcnNhbC9zdXBwb3J0L1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0t
c3ViZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvc3VwcG9ydC9UcmVlV2Fsa2VyLWFjY2Vw
dE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLXN1YmZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxib2R5IGlkPSJ0cmVlV2Fsa2VyUm9v
dCI+Cis8ZGl2PjwvZGl2PgorCis8c2NyaXB0Pgord2luZG93LnRlc3RDYXNlcyA9IFtdOworCiso
ZnVuY3Rpb24oKSB7CisgICAgbGV0IHdhbGtlciA9IHBhcmVudC5kb2N1bWVudC5jcmVhdGVUcmVl
V2Fsa2VyKHBhcmVudC50cmVlV2Fsa2VyUm9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIG5l
dyBwYXJlbnQuT2JqZWN0KTsKKyAgICB0cnkgeyB3YWxrZXIuZmlyc3RDaGlsZCgpOyB9IGNhdGNo
IChlcnIpIHsgdGVzdENhc2VzLnB1c2goeyBhY3R1YWw6IGVyciwgZXhwZWN0ZWQ6IHBhcmVudC5U
eXBlRXJyb3IsIGRlc2NyaXB0aW9uOiAicGFyZW50J3MgfHRoaXN8LCBwYXJlbnQncyBtZXRob2Qs
IHBhcmVudCdzIGZpbHRlciwgcGFyZW50J3Mgcm9vdCIgfSk7IH0KKworICAgIHdhbGtlciA9IHBh
cmVudC5kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHRyZWVXYWxrZXJSb290LCBOb2RlRmlsdGVy
LlNIT1dfRUxFTUVOVCwgbmV3IHBhcmVudC5PYmplY3QpOworICAgIHRyeSB7IHdhbGtlci5maXJz
dENoaWxkKCk7IH0gY2F0Y2ggKGVycikgeyB0ZXN0Q2FzZXMucHVzaCh7IGFjdHVhbDogZXJyLCBl
eHBlY3RlZDogcGFyZW50LlR5cGVFcnJvciwgZGVzY3JpcHRpb246ICJwYXJlbnQncyB8dGhpc3ws
IHBhcmVudCdzIG1ldGhvZCwgcGFyZW50J3MgZmlsdGVyLCBpZnJhbWUncyByb290IiB9KTsgfQor
CisgICAgd2Fsa2VyID0gcGFyZW50LmRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodHJlZVdhbGtl
clJvb3QsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCB7fSk7CisgICAgdHJ5IHsgd2Fsa2VyLmZp
cnN0Q2hpbGQoKTsgfSBjYXRjaCAoZXJyKSB7IHRlc3RDYXNlcy5wdXNoKHsgYWN0dWFsOiBlcnIs
IGV4cGVjdGVkOiBwYXJlbnQuVHlwZUVycm9yLCBkZXNjcmlwdGlvbjogInBhcmVudCdzIHx0aGlz
fCwgcGFyZW50J3MgbWV0aG9kLCBpZnJhbWUncyBmaWx0ZXIsIGlmcmFtZSdzIHJvb3QiIH0pOyB9
CisKKyAgICB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyLmNhbGwocGFyZW50LmRv
Y3VtZW50LCB0cmVlV2Fsa2VyUm9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIHt9KTsKKyAg
ICB0cnkgeyB3YWxrZXIuZmlyc3RDaGlsZCgpOyB9IGNhdGNoIChlcnIpIHsgdGVzdENhc2VzLnB1
c2goeyBhY3R1YWw6IGVyciwgZXhwZWN0ZWQ6IFR5cGVFcnJvciwgZGVzY3JpcHRpb246ICJwYXJl
bnQncyB8dGhpc3wsIGlmcmFtZXMncyBtZXRob2QsIGlmcmFtZSdzIGZpbHRlciwgaWZyYW1lJ3Mg
cm9vdCIgfSk7IH0KK30pKCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443952</attachid>
            <date>2021-11-11 08:54:04 -0800</date>
            <delta_ts>2021-11-12 13:47:11 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-232387-20211111165402.patch</filename>
            <type>text/plain</type>
            <size>107835</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBACisyMDIxLTExLTExICBBbGV4ZXkg
U2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBKU0NhbGxiYWNrRGF0YSBz
aG91bGQgdXNlIGxleGljYWwgZ2xvYmFsIG9iamVjdCBmb3IgZXJyb3JzIGFuZCBsaWZlY3ljbGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEN1cnJlbnRseSwg
SlNDYWxsYmFja0RhdGEgdXNlcyBpbmN1bWJlbnQgWzFdIGdsb2JhbCBvYmplY3QgcHJldHR5IG11
Y2ggZm9yIGV2ZXJ5dGhpbmcsCisgICAgICAgIHdoaWNoIGNhdXNlcyBhIGZldyBpc3N1ZXM6CisK
KyAgICAgICAgICAxKSBUeXBlRXJyb3JzIGFyZSBjb25zdHJ1Y3RlZCBpbiBpbmNvcnJlY3QgcmVh
bG07CisgICAgICAgICAgMikgTm9kZUZpbHRlciAvIFhQYXRoTlNSZXNvbHZlciBjcmFzaCBpZiB0
aGVpciBpbmN1bWJlbnQgd2luZG93IGdldHMgZGlzY29ubmVjdGVkOworICAgICAgICAgIDMpIG90
aGVyIGNhbGxiYWNrcywgb3JpZ2luYXRlZCBpbiBkZXRhY2hlZCBmcmFtZSwgd2VyZSBub3QgaW52
b2tlZCBhdCBhbGwuCisKKyAgICAgICAgU2luY2Ugbm90IGFsbCBoYW5kbGVFdmVudCgpIGNhbGxl
cnMgaGF2ZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBhbmQgdG8gYXZvaWQgYSBsYXJnZQorICAg
ICAgICBjb2RlIGRpZmYsIHRoaXMgcGF0Y2ggdXRpbGl6ZXMgY2FsbGJhY2sgd3JhcHBlcidzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgdG8gZml4IGFsbAorICAgICAgICBhYm92ZS1tZW50aW9uZWQg
cHJvYmxlbS4KKworICAgICAgICBUbyBhY2NvbW9kYXRlIE5vZGVGaWx0ZXIgYW5kIFhQYXRoTlNS
ZXNvbHZlciBvZiBkZXRhY2hlZCBmcmFtZXMgd2l0aG91dCBncm93aW5nIGBzaXplb2ZgCisgICAg
ICAgIG9mIGFsbCBvdGhlciBvdGhlciBjYWxsYmFja3MsIG1fZ2xvYmFsT2JqZWN0IG1lbWJlciBp
cyBpbnRyb2R1Y2VkIG9ubHkgZm9yIHRoZW0uCisKKyAgICAgICAgQXVkaW9Xb3JrbGV0IGNoYW5n
ZXMgYXJlIHVub2JzZXJ2YWJsZSBhcyB3b3JrbGV0cyBjYW4ndCBhY3F1aXJlIGEgY3Jvc3MtcmVh
bG0gbWV0aG9kLgorCisgICAgICAgIFsxXSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjaW5jdW1iZW50CisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC5odG1sCisgICAgICAg
ICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJl
ZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dzaW5nLWNvbnRl
eHQuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9k
b20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0uaHRt
bAorCisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2su
aWRsOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVy
UHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpj
cmVhdGVQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
UHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6QXVkaW9X
b3JrbGV0UHJvY2Vzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nv
cjo6cHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnNl
dFByb2Nlc3NDYWxsYmFjayk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXRQcm9jZXNzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6
cHJvY2Vzc0NhbGxiYWNrV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb1dv
cmtsZXRQcm9jZXNzb3JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1dvcmts
ZXRQcm9jZXNzb3I6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0NhbGxiYWNrRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0
YTo6aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6SlNDYWxsYmFja0RhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6On5KU0NhbGxiYWNrRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YVN0cm9uZzo6SlNDYWxsYmFja0RhdGFTdHJvbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGFTdHJvbmc6Omludm9rZUNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhV2Vhazo6SlNDYWxsYmFja0RhdGFX
ZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhV2Vhazo6aW52b2tlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6Omdsb2JhbE9iamVjdCk6IERl
bGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Q2FsbGJhY2tzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMQ2FsbGJhY2tGdW5jdGlvbjxUPj46OmNvbnZl
cnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETENhbGxiYWNrSW50ZXJmYWNlPFQ+
Pjo6Y29udmVydCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0WFBhdGhOU1Jl
c29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFhQYXRo
TlNSZXNvbHZlcj4+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9vcGVuRGF0YWJhc2VCb2R5KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAg
KEdlbmVyYXRlQ2FsbGJhY2tIZWFkZXJDb250ZW50KToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJh
Y2tJbXBsZW1lbnRhdGlvbkNvbnRlbnQpOgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlRE9NQ29u
dmVydE5lZWRzR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvKjogVXBk
YXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrRnVuY3Rp
b25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tJbnRlcmZhY2UuaWRsOgorICAgICAgICAqIGRvbS9O
b2RlRmlsdGVyLmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmg6CisgICAgICAgICogd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQp
OgorICAgICAgICAqIHhtbC9DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaWRsOgorCiAyMDIxLTExLTEx
ICBUeWxlciBXaWxjb2NrICA8dHlsZXJfd0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEltcGxl
bWVudCBBWENvcmVPYmplY3Q6OnZhbHVlIGZvciBBWElzb2xhdGVkT2JqZWN0CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlv
bkVycm9yQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDQgKzI0LDUgQEAKIAogWwogICAgIENvbmRpdGlvbmFsPUdFT0xPQ0FUSU9OLAor
ICAgIFNraXBDYWxsYmFja0ludm9rZUNoZWNrLAogXSBjYWxsYmFjayBQb3NpdGlvbkVycm9yQ2Fs
bGJhY2sgPSB1bmRlZmluZWQgKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvciBlcnJvcik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3Bl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldEdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDcgKzc3LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Xb3JrbGV0R2xv
YmFsU2NvcAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJB
IHByb2Nlc3NvciB3YXMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lIl9zIH07CiAK
ICAgICBKU0M6OkpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gcHJvY2Vzc29yQ29udHJ1Y3Rvci0+
Y2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0ganND
b25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPiBB
dWRpb1dvcmtsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSlNDOjpKU09iamVjdCog
anNDb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yLT5jYWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTsK
LSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBjb25zdHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmds
b2JhbE9iamVjdCgpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2sgeyBnbG9iYWxPYmplY3QgfTsKQEAgLTE1NCw3ICsxNTQsNyBA
QCBSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPiBBdWRpb1dvcmtsCiAgICAgaWYgKCFqc1By
b2Nlc3NvcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBqc1Byb2Nlc3Nvci0+d3Jh
cHBlZCgpLnNldFByb2Nlc3NDYWxsYmFjayhtYWtlVW5pcXVlPEpTQ2FsbGJhY2tEYXRhU3Ryb25n
Pihqc1Byb2Nlc3NvciwgZ2xvYmFsT2JqZWN0KSk7CisgICAganNQcm9jZXNzb3ItPndyYXBwZWQo
KS5zZXRQcm9jZXNzQ2FsbGJhY2soanNQcm9jZXNzb3IpOwogCiAgICAgcmV0dXJuICZqc1Byb2Nl
c3Nvci0+d3JhcHBlZCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAkocmV2aXNpb24gMjg1
NjMzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9j
ZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTMgKzIwMSwxNCBAQCBFeGNlcHRpb25P
cjxSZWY8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPj4gCiAgICAgaWYgKCFjb25zdHJ1Y3Rpb25EYXRh
KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiTm8gcGVuZGluZyBjb25z
dHJ1Y3Rpb24gZGF0YSBmb3IgdGhpcyB3b3JrbGV0IHByb2Nlc3NvciJfcyB9OwogCi0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCpjb25zdHJ1Y3Rpb25EYXRh
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKGNvbnRl
eHQsICpjb25zdHJ1Y3Rpb25EYXRhKSk7CiB9CiAKIEF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6fkF1
ZGlvV29ya2xldFByb2Nlc3NvcigpID0gZGVmYXVsdDsKIAotQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
OjpBdWRpb1dvcmtsZXRQcm9jZXNzb3IoY29uc3QgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3Ry
dWN0aW9uRGF0YSYgY29uc3RydWN0aW9uRGF0YSkKLSAgICA6IG1fbmFtZShjb25zdHJ1Y3Rpb25E
YXRhLm5hbWUoKSkKK0F1ZGlvV29ya2xldFByb2Nlc3Nvcjo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEF1ZGlvV29ya2xldFByb2Nl
c3NvckNvbnN0cnVjdGlvbkRhdGEmIGNvbnN0cnVjdGlvbkRhdGEpCisgICAgOiBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAsIG1fbmFtZShjb25zdHJ1Y3Rpb25EYXRhLm5h
bWUoKSkKICAgICAsIG1fcG9ydChjb25zdHJ1Y3Rpb25EYXRhLnBvcnQoKSkKIHsKICAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTIzNiw3ICsyMzcsNyBAQCBib29sIEF1ZGlvV29ya2xl
dFByb2Nlc3Nvcjo6cHJvY2Vzcyhjb25zCiAgICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0Zv
ckN1cnJlbnRUaHJlYWRTY29wZSBkaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zOwogCiAgICAgQVNT
RVJUKG1fcHJvY2Vzc0NhbGxiYWNrKTsKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9wcm9j
ZXNzQ2FsbGJhY2stPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2xvYmFs
T2JqZWN0KCkpOwogICAgIEFTU0VSVChnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNDb250ZXh0VGhyZWFkKCkpOwogCkBAIC0yNDcsNyArMjQ4LDcgQEAgYm9vbCBBdWRpb1dvcmts
ZXRQcm9jZXNzb3I6OnByb2Nlc3MoY29ucwogICAgIGJ1aWxkSlNBcmd1bWVudHModm0sIGdsb2Jh
bE9iamVjdCwgYXJncywgaW5wdXRzLCBvdXRwdXRzLCBwYXJhbVZhbHVlc01hcCk7CiAKICAgICBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0byByZXN1
bHQgPSBtX3Byb2Nlc3NDYWxsYmFjay0+aW52b2tlQ2FsbGJhY2soanNVbmRlZmluZWQoKSwgYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAicHJvY2VzcyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgYXV0byByZXN1
bHQgPSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soZ2xvYmFsT2JqZWN0LCBudWxscHRy
LCBhc09iamVjdChtX3Byb2Nlc3NDYWxsYmFjayksIGpzVW5kZWZpbmVkKCksIGFyZ3MsIEpTQ2Fs
bGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInByb2Nlc3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2Vw
dGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgcmV0dXJuZWRF
eGNlcHRpb24pOwogICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CkBAIC0yNTksOSArMjYw
LDkgQEAgYm9vbCBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnByb2Nlc3MoY29ucwogICAgIHJldHVy
biByZXN1bHQudG9Cb29sZWFuKCZnbG9iYWxPYmplY3QpOwogfQogCi12b2lkIEF1ZGlvV29ya2xl
dFByb2Nlc3Nvcjo6c2V0UHJvY2Vzc0NhbGxiYWNrKHN0ZDo6dW5pcXVlX3B0cjxKU0NhbGxiYWNr
RGF0YVN0cm9uZz4mJiBwcm9jZXNzQ2FsbGJhY2spCit2b2lkIEF1ZGlvV29ya2xldFByb2Nlc3Nv
cjo6c2V0UHJvY2Vzc0NhbGxiYWNrKEpTT2JqZWN0KiBwcm9jZXNzQ2FsbGJhY2spCiB7Ci0gICAg
bV9wcm9jZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHByb2Nlc3NDYWxsYmFjayk7CisgICAgbV9wcm9j
ZXNzQ2FsbGJhY2sgPSB7IHByb2Nlc3NDYWxsYmFjayB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFByb2Nlc3Nvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDE5ICs1OSwyMSBAQCBwdWJsaWM6CiAKICAgICBib29sIHByb2Nlc3MoY29u
c3QgVmVjdG9yPFJlZlB0cjxBdWRpb0J1cz4+JiBpbnB1dHMsIFZlY3RvcjxSZWY8QXVkaW9CdXM+
PiYgb3V0cHV0cywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Zs
b2F0QXJyYXk+PiYgcGFyYW1WYWx1ZXNNYXAsIGJvb2wmIHRocmV3RXhjZXB0aW9uKTsKIAotICAg
IHZvaWQgc2V0UHJvY2Vzc0NhbGxiYWNrKHN0ZDo6dW5pcXVlX3B0cjxKU0NhbGxiYWNrRGF0YVN0
cm9uZz4mJik7CisgICAgdm9pZCBzZXRQcm9jZXNzQ2FsbGJhY2soSlNDOjpKU09iamVjdCopOwog
CisgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgcHJvY2Vzc0NhbGxiYWNrV3JhcHBlcigpIHsg
cmV0dXJuIG1fcHJvY2Vzc0NhbGxiYWNrOyB9CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYg
anNJbnB1dHNXcmFwcGVyKCkgeyByZXR1cm4gbV9qc0lucHV0czsgfQogICAgIEpTVmFsdWVJbldy
YXBwZWRPYmplY3QmIGpzT3V0cHV0c1dyYXBwZXIoKSB7IHJldHVybiBtX2pzT3V0cHV0czsgfQog
ICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGpzUGFyYW1WYWx1ZXNXcmFwcGVyKCkgeyByZXR1
cm4gbV9qc1BhcmFtVmFsdWVzOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yKGNvbnN0IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEm
KTsKKyAgICBleHBsaWNpdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEmKTsKICAg
ICB2b2lkIGJ1aWxkSlNBcmd1bWVudHMoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyQmFzZSYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8QXVkaW9C
dXM+PiYgaW5wdXRzLCBWZWN0b3I8UmVmPEF1ZGlvQnVzPj4mIG91dHB1dHMsIGNvbnN0IEhhc2hN
YXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GbG9hdEFycmF5Pj4mIHBhcmFtVmFsdWVz
TWFwKTsKIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0Owot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxKU0NhbGxiYWNrRGF0YVN0cm9uZz4gbV9wcm9jZXNzQ2FsbGJh
Y2s7CisgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX3Byb2Nlc3NDYWxsYmFjazsKICAgICBK
U1ZhbHVlSW5XcmFwcGVkT2JqZWN0IG1fanNJbnB1dHM7CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9i
amVjdCBtX2pzT3V0cHV0czsKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0IG1fanNQYXJhbVZh
bHVlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5jcHAJKHJldmlzaW9uIDI4NTYzMykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBW
aXNpdG9yPgogdm9pZCBKU0F1ZGlvV29ya2xldFByb2Nlc3Nvcjo6dmlzaXRBZGRpdGlvbmFsQ2hp
bGRyZW4oVmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvJiBwcm9jZXNzb3IgPSB3cmFwcGVk
KCk7CisgICAgcHJvY2Vzc29yLnByb2Nlc3NDYWxsYmFja1dyYXBwZXIoKS52aXNpdCh2aXNpdG9y
KTsKICAgICBwcm9jZXNzb3IuanNJbnB1dHNXcmFwcGVyKCkudmlzaXQodmlzaXRvcik7CiAgICAg
cHJvY2Vzc29yLmpzT3V0cHV0c1dyYXBwZXIoKS52aXNpdCh2aXNpdG9yKTsKICAgICBwcm9jZXNz
b3IuanNQYXJhbVZhbHVlc1dyYXBwZXIoKS52aXNpdCh2aXNpdG9yKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAJKHJldmlzaW9uIDI4NTYz
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiAvLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2NhbGwt
YS11c2VyLW9iamVjdHMtb3BlcmF0aW9uCi1KU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VD
YWxsYmFjayhKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGJh
Y2ssIEpTVmFsdWUgdGhpc1ZhbHVlLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJh
Y2tUeXBlIG1ldGhvZCwgUHJvcGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKK0pTVmFsdWUgSlNDYWxsYmFja0RhdGE6Omlu
dm9rZUNhbGxiYWNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFs
T2JqZWN0KiwgSlNPYmplY3QqIGNhbGxiYWNrLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTWFya2VkQXJn
dW1lbnRCdWZmZXImIGFyZ3MsIENhbGxiYWNrVHlwZSBtZXRob2QsIFByb3BlcnR5TmFtZSBmdW5j
dGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiB7
CiAgICAgQVNTRVJUKGNhbGxiYWNrKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYWxsYmFja0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NhbGxiYWNrRGF0YS5oCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMSAr
NDcsMTAgQEAgY2xhc3MgSlNDYWxsYmFja0RhdGEgewogcHVibGljOgogICAgIGVudW0gY2xhc3Mg
Q2FsbGJhY2tUeXBlIHsgRnVuY3Rpb24sIE9iamVjdCwgRnVuY3Rpb25Pck9iamVjdCB9OwogCi0g
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0dXJuIG1fZ2xvYmFsT2Jq
ZWN0LmdldCgpOyB9Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGlu
dm9rZUNhbGxiYWNrKEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmplY3QqIGluY3Vt
YmVudEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTQzo6SlNWYWx1ZSB0
aGlzVmFsdWUsIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImLCBDYWxsYmFja1R5cGUsIEpTQzo6
UHJvcGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1
cm5lZEV4Y2VwdGlvbik7CiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgSlNDYWxsYmFja0RhdGEo
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICAgICAgOiBtX2dsb2JhbE9iamVj
dChnbG9iYWxPYmplY3QpCisgICAgZXhwbGljaXQgSlNDYWxsYmFja0RhdGEoSlNET01HbG9iYWxP
YmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICAgICAgOiBtX2luY3VtYmVudEdsb2Jh
bE9iamVjdChpbmN1bWJlbnRHbG9iYWxPYmplY3QpCiAgICAgewogICAgIH0KICAgICAKQEAgLTYx
LDExICs2MCw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgQVNTRVJUKG1fdGhyZWFkLnB0cigpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKICAgICB9Ci0gICAgCi0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9iamVj
dCYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6
Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiwgQ2FsbGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5TmFtZSBm
dW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24p
OwogCisgICAgSlNDOjpXZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2luY3VtYmVudEdsb2JhbE9i
amVjdDsKIHByaXZhdGU6Ci0gICAgSlNDOjpXZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2Jh
bE9iamVjdDsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsg
VGhyZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgpAQCAtNzMsMjEgKzcwLDE3IEBAIHByaXZhdGU6
CiAKIGNsYXNzIEpTQ2FsbGJhY2tEYXRhU3Ryb25nIDogcHVibGljIEpTQ2FsbGJhY2tEYXRhIHsK
IHB1YmxpYzoKLSAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyhKU0M6OkpTT2JqZWN0KiBjYWxsYmFj
aywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdm9pZCogPSBudWxscHRyKQotICAg
ICAgICA6IEpTQ2FsbGJhY2tEYXRhKGdsb2JhbE9iamVjdCkKLSAgICAgICAgLCBtX2NhbGxiYWNr
KGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbGJhY2spCisgICAgSlNDYWxsYmFja0RhdGFTdHJvbmco
SlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9i
YWxPYmplY3QsIHZvaWQqID0gbnVsbHB0cikKKyAgICAgICAgOiBKU0NhbGxiYWNrRGF0YShpbmN1
bWJlbnRHbG9iYWxPYmplY3QpCisgICAgICAgICwgbV9jYWxsYmFjayhpbmN1bWJlbnRHbG9iYWxP
YmplY3QtPnZtKCksIGNhbGxiYWNrKQogICAgIHsKICAgICB9CiAKICAgICBKU0M6OkpTT2JqZWN0
KiBjYWxsYmFjaygpIHsgcmV0dXJuIG1fY2FsbGJhY2suZ2V0KCk7IH0KIAotICAgIEpTQzo6SlNW
YWx1ZSBpbnZva2VDYWxsYmFjayhKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6Ok1hcmtlZEFy
Z3VtZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFja1R5cGUgY2FsbGJhY2tUeXBlLCBKU0M6OlByb3Bl
cnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRF
eGNlcHRpb24pCisgICAgSlNDOjpKU1ZhbHVlIGludm9rZUNhbGxiYWNrKEpTRE9NR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6Ok1h
cmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFja1R5cGUgY2FsbGJhY2tUeXBlLCBKU0M6
OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0
dXJuZWRFeGNlcHRpb24pCiAgICAgewotICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0aGlz
LT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgICAg
ICByZXR1cm4geyB9OwotCi0gICAgICAgIHJldHVybiBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2Fs
bGJhY2soKmdsb2JhbE9iamVjdCwgY2FsbGJhY2soKSwgdGhpc1ZhbHVlLCBhcmdzLCBjYWxsYmFj
a1R5cGUsIGZ1bmN0aW9uTmFtZSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgICAgICByZXR1cm4g
SlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIG1faW5j
dW1iZW50R2xvYmFsT2JqZWN0LmdldCgpLCBjYWxsYmFjaygpLCB0aGlzVmFsdWUsIGFyZ3MsIGNh
bGxiYWNrVHlwZSwgZnVuY3Rpb25OYW1lLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtOTYsMjEgKzg5LDE3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTQ2FsbGJhY2tE
YXRhV2VhayA6IHB1YmxpYyBKU0NhbGxiYWNrRGF0YSB7CiBwdWJsaWM6Ci0gICAgSlNDYWxsYmFj
a0RhdGFXZWFrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCB2b2lkKiBvd25lcikKLSAgICAgICAgOiBKU0NhbGxiYWNrRGF0YShnbG9iYWxP
YmplY3QpCisgICAgSlNDYWxsYmFja0RhdGFXZWFrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBK
U0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB2b2lkKiBvd25lcikKKyAg
ICAgICAgOiBKU0NhbGxiYWNrRGF0YShpbmN1bWJlbnRHbG9iYWxPYmplY3QpCiAgICAgICAgICwg
bV9jYWxsYmFjayhjYWxsYmFjaywgJm1fd2Vha093bmVyLCBvd25lcikKICAgICB7CiAgICAgfQog
CiAgICAgSlNDOjpKU09iamVjdCogY2FsbGJhY2soKSB7IHJldHVybiBtX2NhbGxiYWNrLmdldCgp
OyB9CiAKLSAgICBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlNDOjpKU1ZhbHVlIHRoaXNW
YWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJhY2tUeXBlIGNhbGxi
YWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQorICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxs
YmFjayhKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJhY2tUeXBl
IGNhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKLSAgICAgICAgYXV0byog
Z2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGlmICghZ2xvYmFs
T2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICByZXR1cm4gSlNDYWxs
YmFja0RhdGE6Omludm9rZUNhbGxiYWNrKCpnbG9iYWxPYmplY3QsIGNhbGxiYWNrKCksIHRoaXNW
YWx1ZSwgYXJncywgY2FsbGJhY2tUeXBlLCBmdW5jdGlvbk5hbWUsIHJldHVybmVkRXhjZXB0aW9u
KTsKKyAgICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBtX2luY3VtYmVudEdsb2JhbE9iamVjdC5nZXQoKSwgY2FsbGJhY2soKSwg
dGhpc1ZhbHVlLCBhcmdzLCBjYWxsYmFja1R5cGUsIGZ1bmN0aW9uTmFtZSwgcmV0dXJuZWRFeGNl
cHRpb24pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZvaWQgdmlz
aXRKU0Z1bmN0aW9uKFZpc2l0b3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29udmVydENhbGxiYWNrcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29udmVydENhbGxiYWNrcy5oCShyZXZpc2lvbiAyODU2MzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRDYWxsYmFja3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29u
dmVydGVyPElECiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNvbnZlcnNpb25IYXNTaWRlRWZm
ZWN0cyA9IGZhbHNlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9
IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgotICAgIHN0YXRpYyBSZWZQdHI8VD4gY29udmVydChK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFs
dWUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvblRocm93ZXImJiBl
eGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQorICAgIHN0YXRpYyBSZWZQdHI8
VD4gY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhj
ZXB0aW9uVGhyb3dlcigpKQogICAgIHsKICAgICAgICAgSlNDOjpWTSYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwpAQCAtNDUsNyArNDUsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgQ29udmVydGVyPElECiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQog
Ci0gICAgICAgIHJldHVybiBUOjpjcmVhdGUoSlNDOjphc09iamVjdCh2YWx1ZSksICZjYWxsZXJH
bG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCB2bS50b3BDYWxsRnJhbWUpKTsKKyAgICAgICAgYXV0
byYganNET01HbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBUOjpjcmVhdGUoanNET01HbG9i
YWxPYmplY3QsIEpTQzo6YXNPYmplY3QodmFsdWUpLCAmY2FsbGVyR2xvYmFsT2JqZWN0KGpzRE9N
R2xvYmFsT2JqZWN0LCB2bS50b3BDYWxsRnJhbWUpKTsKICAgICB9CiB9OwogCkBAIC02OSw3ICs3
MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBKU0NvbnZlcnRlcjwKIAogdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJRExDYWxsYmFja0ludGVyZmFjZTxUPj4g
OiBEZWZhdWx0Q29udmVydGVyPElETENhbGxiYWNrSW50ZXJmYWNlPFQ+PiB7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgot
ICAgIHN0YXRpYyBSZWZQdHI8VD4gY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9u
VGhyb3dlcigpKQorICAgIHN0YXRpYyBSZWZQdHI8VD4gY29udmVydChKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRo
cm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsKICAg
ICAgICAgSlNDOjpWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtNzksNyArODAs
OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElECiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBUOjpjcmVhdGUo
SlNDOjphc09iamVjdCh2YWx1ZSksICZjYWxsZXJHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCB2
bS50b3BDYWxsRnJhbWUpKTsKKyAgICAgICAgYXV0byYganNET01HbG9iYWxPYmplY3QgPSAqSlND
Ojpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAg
ICAgIHJldHVybiBUOjpjcmVhdGUoanNET01HbG9iYWxPYmplY3QsIEpTQzo6YXNPYmplY3QodmFs
dWUpLCAmY2FsbGVyR2xvYmFsT2JqZWN0KGpzRE9NR2xvYmFsT2JqZWN0LCB2bS50b3BDYWxsRnJh
bWUpKTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIuaAkocmV2aXNpb24gMjg1NjMz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0WFBhdGhOU1Jlc29s
dmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
Q29udmVydGVyPElETEludGVyZmFjZQogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1hQ
YXRoTlNSZXNvbHZlcj4odm0pKQogICAgICAgICAgICAgcmV0dXJuICZKU0M6OmpzQ2FzdDxKU1hQ
YXRoTlNSZXNvbHZlcio+KG9iamVjdCktPndyYXBwZWQoKTsKIAotICAgICAgICByZXR1cm4gSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXI6OmNyZWF0ZShvYmplY3QsIEpTQzo6anNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgYXV0byYganNET01H
bG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3Jl
YXRlKGpzRE9NR2xvYmFsT2JqZWN0LCBvYmplY3QsICZjYWxsZXJHbG9iYWxPYmplY3QoanNET01H
bG9iYWxPYmplY3QsIHZtLnRvcENhbGxGcmFtZSkpOwogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJldmlz
aW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTih3aGVuU2lnbmFsQWJvcnQKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKEpTQzo6SlNWYWx1ZTo6SlNGYWxzZSkpOwogCiAgICAgYXV0byoganNET01HbG9i
YWxPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCk7
Ci0gICAgUmVmPEFib3J0QWxnb3JpdGhtPiBhYm9ydEFsZ29yaXRobSA9IEpTQWJvcnRBbGdvcml0
aG06OmNyZWF0ZShjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdldE9iamVjdCgpLCBq
c0RPTUdsb2JhbE9iamVjdCk7CisgICAgUmVmPEFib3J0QWxnb3JpdGhtPiBhYm9ydEFsZ29yaXRo
bSA9IEpTQWJvcnRBbGdvcml0aG06OmNyZWF0ZSgqanNET01HbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+dW5jaGVja2VkQXJndW1lbnQoMSkuZ2V0T2JqZWN0KCksIGpzRE9NR2xvYmFsT2JqZWN0KTsK
IAogICAgIGJvb2wgcmVzdWx0ID0gQWJvcnRTaWduYWw6OndoZW5TaWduYWxBYm9ydGVkKGFib3J0
U2lnbmFsLT53cmFwcGVkKCksIFdURk1vdmUoYWJvcnRBbGdvcml0aG0pKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCA/IEpTVmFsdWUoSlNDOjpKU1ZhbHVlOjpKU1RydWUpIDog
SlNWYWx1ZShKU0M6OkpTVmFsdWU6OkpTRmFsc2UpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDI4NTYzMykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjA2LDcgKzYwNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc0RPTVcKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RF
bXB0eU9iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KS0+b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICB9CiAKLSAgICBhdXRvIGNyZWF0aW9uQ2FsbGJh
Y2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNEYXRhYmFzZUNh
bGxiYWNrPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDQpLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsKKyAgICBhdXRvIGNyZWF0
aW9uQ2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNE
YXRhYmFzZUNhbGxiYWNrPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDQpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7CiAgICAgICAgIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlv
bkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCA0LCAiY3JlYXRpb25DYWxsYmFjayIs
ICJXaW5kb3ciLCAib3BlbkRhdGFiYXNlIik7CiAgICAgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAy
ODU2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQkod29ya2luZyBjb3B5KQpAQCAtNjM0NCwxMyArNjM0NCwxMSBAQCBzdWIgR2VuZXJhdGVD
YWxsYmFja0hlYWRlckNvbnRlbnQKICAgICBwdXNoKEAkY29udGVudFJlZiwgInB1YmxpYzpcbiIp
OwogCiAgICAgIyBUaGUgc3RhdGljIGNyZWF0ZSgpIG1ldGhvZC4KLSAgICBwdXNoKEAkY29udGVu
dFJlZiwgIiAgICBzdGF0aWMgUmVmPCRjbGFzc05hbWU+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBj
YWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOworICAgIHB1c2go
QCRjb250ZW50UmVmLCAiICAgIHN0YXRpYyBSZWY8JGNsYXNzTmFtZT4gY3JlYXRlKEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUds
b2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVzaChAJGNvbnRl
bnRSZWYsICIgICAge1xuIik7Ci0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3ICR7Y2xhc3NOYW1lfShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7XG4i
KTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
JHtjbGFzc05hbWV9KGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVj
dCkpO1xuIik7CiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgfVxuXG4iKTsKIAotICAgIHB1
c2goQCRjb250ZW50UmVmLCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9XG5cbiIpOwotCiAgICAgcHVzaChAJGNvbnRlbnRS
ZWYsICIgICAgfiRjbGFzc05hbWUoKSBmaW5hbDtcbiIpOwogCiAgICAgcHVzaChAJGNvbnRlbnRS
ZWYsICIgICAgJHtjYWxsYmFja0RhdGFUeXBlfSogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9k
YXRhOyB9XG4iKTsKQEAgLTYzODcsNyArNjM4NSw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSGVh
ZGVyQ29udGVudAogCiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJcbnByaXZhdGU6XG4iKTsKIAot
ICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICR7Y2xhc3NOYW1lfShKU0M6OkpTT2JqZWN0Kiwg
SlNET01HbG9iYWxPYmplY3QqKTtcblxuIik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAg
JHtjbGFzc05hbWV9KEpTRE9NR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCk7XG5c
biIpOwogCiAgICAgaWYgKCRpbnRlcmZhY2VPckNhbGxiYWNrLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntJc1dlYWtDYWxsYmFja30pIHsKICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgYm9v
bCBoYXNDYWxsYmFjaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGF0YSAmJiBtX2RhdGEtPmNh
bGxiYWNrKCk7IH1cblxuIik7CkBAIC02Mzk2LDYgKzYzOTQsMTMgQEAgc3ViIEdlbmVyYXRlQ2Fs
bGJhY2tIZWFkZXJDb250ZW50CiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgdm9pZCB2aXNp
dEpTRnVuY3Rpb24oSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7XG5cbiIpIGlm
ICRpbnRlcmZhY2VPckNhbGxiYWNrLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc1dlYWtDYWxsYmFj
a307CiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgdm9pZCB2aXNpdEpTRnVuY3Rpb24oSlND
OjpTbG90VmlzaXRvciYpIG92ZXJyaWRlO1xuXG4iKSBpZiAkaW50ZXJmYWNlT3JDYWxsYmFjay0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SXNXZWFrQ2FsbGJhY2t9OwogCisgICAgaWYgKCRpbnRlcmZh
Y2VPckNhbGxiYWNrLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTa2lwQ2FsbGJhY2tJbnZva2VDaGVj
a30pIHsKKyAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICptX2dsb2JhbE9iamVjdC5nZXQoKTsgfVxu
XG4iKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gKkpTQzo6anNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmpl
Y3QoKSk7IH1cblxuIik7CisgICAgfQorCisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgSlND
OjpTdHJvbmc8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0O1xuIikgaWYgJGludGVy
ZmFjZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NraXBDYWxsYmFja0ludm9rZUNo
ZWNrfTsKICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAke2NhbGxiYWNrRGF0YVR5cGV9KiBt
X2RhdGE7XG4iKTsKICAgICBwdXNoKEAkY29udGVudFJlZiwgIn07XG5cbiIpOwogCkBAIC02NDE2
LDkgKzY0MjEsMTAgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgog
ICAgICRpbmNsdWRlc1JlZi0+eyJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgifSA9IDE7CiAKICAg
ICAjIENvbnN0cnVjdG9yCi0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIke2NsYXNzTmFtZX06OiR7
Y2xhc3NOYW1lfShKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpXG4iKTsKLSAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICA6ICR7bmFtZX0oZ2xvYmFs
T2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpXG4iKTsKLSAgICBwdXNoKEAkY29udGVu
dFJlZiwgIiAgICAsIG1fZGF0YShuZXcgJHtjYWxsYmFja0RhdGFUeXBlfShjYWxsYmFjaywgZ2xv
YmFsT2JqZWN0LCB0aGlzKSlcbiIpOworICAgIHB1c2goQCRjb250ZW50UmVmLCAiJHtjbGFzc05h
bWV9Ojoke2NsYXNzTmFtZX0oSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KVxu
Iik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgOiAke25hbWV9KGdsb2JhbE9iamVjdC5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpXG4iKTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAg
ICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC52bSgpLCAmZ2xvYmFsT2JqZWN0KVxuIikg
aWYgJGludGVyZmFjZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NraXBDYWxsYmFj
a0ludm9rZUNoZWNrfTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAsIG1fZGF0YShuZXcg
JHtjYWxsYmFja0RhdGFUeXBlfShjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB0aGlz
KSlcbiIpOwogICAgIHB1c2goQCRjb250ZW50UmVmLCAie1xuIik7CiAgICAgcHVzaChAJGNvbnRl
bnRSZWYsICJ9XG5cbiIpOwogCkBAIC02NTIzLDEzICs2NTI5LDEzIEBAIHN1YiBHZW5lcmF0ZUNh
bGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW4KIAogICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBp
cyBuZWVkZWQgZm9yIE5vZGVGaWx0ZXIsIHdoaWNoIHdvcmtzIGV2ZW4gZm9yIGRpc2Nvbm5lY3Rl
ZCBpZnJhbWVzLiBXZSBzaG91bGQgaW52ZXN0aWdhdGUKICAgICAgICAgICAgICMgaWYgdGhhdCBi
ZWhhdmlvciBpcyBuZWVkZWQgZm9yIG90aGVyIGNhbGxiYWNrcy4KLSAgICAgICAgICAgIGlmICgh
JG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2tpcENhbGxiYWNrSW52b2tlQ2hlY2t9
KSB7CisgICAgICAgICAgICBpZiAoISRpbnRlcmZhY2VPckNhbGxiYWNrLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntTa2lwQ2FsbGJhY2tJbnZva2VDaGVja30pIHsKICAgICAgICAgICAgICAgICBwdXNo
KEAkY29udGVudFJlZiwgIiAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpXG4iKTsKICAgICAg
ICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVz
dWx0VHlwZTo6VW5hYmxlVG9FeGVjdXRlO1xuXG4iKTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgUmVmPCRjbGFzc05hbWU+IHByb3RlY3RlZFRo
aXMoKnRoaXMpO1xuXG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGF1
dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5n
bG9iYWxPYmplY3QoKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAg
YXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTtcblxuIik7CiAgICAgICAgICAgICBwdXNoKEAk
Y29udGVudFJlZiwgIiAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7XG4iKTsKIApAQCAtNjU0Nywx
MCArNjU1MywxMCBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uQ29udGVuCiAK
ICAgICAgICAgICAgIG15ICRjYWxsYmFja0ludm9jYXRpb247CiAgICAgICAgICAgICBpZiAocmVm
KCRpbnRlcmZhY2VPckNhbGxiYWNrKSBlcSAiSURMQ2FsbGJhY2tGdW5jdGlvbiIpIHsKLSAgICAg
ICAgICAgICAgICAkY2FsbGJhY2tJbnZvY2F0aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2so
dGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwg
SWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbikiOworICAgICAgICAgICAgICAgICRjYWxs
YmFja0ludm9jYXRpb24gPSAibV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0
aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIG15ICRjYWxsYmFja1R5cGUgPSAkbnVtT3BlcmF0aW9ucyA+
IDEgPyAiT2JqZWN0IiA6ICJGdW5jdGlvbk9yT2JqZWN0IjsKLSAgICAgICAgICAgICAgICAkY2Fs
bGJhY2tJbnZvY2F0aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdz
LCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjoke2NhbGxiYWNrVHlwZX0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sIFwiJHtmdW5jdGlvbk5hbWV9XCIpLCByZXR1cm5lZEV4Y2VwdGlv
bikiOworICAgICAgICAgICAgICAgICRjYWxsYmFja0ludm9jYXRpb24gPSAibV9kYXRhLT5pbnZv
a2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJh
Y2tEYXRhOjpDYWxsYmFja1R5cGU6OiR7Y2FsbGJhY2tUeXBlfSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgXCIke2Z1bmN0aW9uTmFtZX1cIiksIHJldHVybmVkRXhjZXB0aW9uKSI7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgkb3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJ1
bmRlZmluZWQiKSB7CkBAIC03MDAxLDggKzcwMDcsNiBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlRE9N
Q29udmVydE5lZWRzR2xvYmFsCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgIHJldHVy
biAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKTsKLSAgICBy
ZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0Z1bmN0aW9uKCR0eXBlKTsKICAg
ICByZXR1cm4gSlNWYWx1ZVRvTmF0aXZlRE9NQ29udmVydE5lZWRzR2xvYmFsT2JqZWN0KEB7JHR5
cGUtPnN1YnR5cGVzfVsxXSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzUmVjb3JkVHlwZSgkdHlwZSk7
CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIlNjaGVkdWxlZEFjdGlvbiI7CiAgICAg
cmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJp
YnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTQ3
OCw3ICs0NzgsNyBAQAogICAgICAgICAgICAgInN1cHBvcnRzQ29uanVuY3Rpb24iOiB0cnVlCiAg
ICAgICAgIH0sCiAgICAgICAgICJTa2lwQ2FsbGJhY2tJbnZva2VDaGVjayI6IHsKLSAgICAgICAg
ICAgICJjb250ZXh0c0FsbG93ZWQiOiBbIm9wZXJhdGlvbiIsICJjYWxsYmFjay1mdW5jdGlvbiJd
CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiY2FsbGJhY2st
ZnVuY3Rpb24iXQogICAgICAgICB9LAogICAgICAgICAiU2tpcFZUYWJsZVZhbGlkYXRpb24iOiB7
CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2ll
cy5kZXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMu
ZGVwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw5IEBAIFdlYkRPTVRlc3RDYWxsYmFja0Z1
bmN0aW9uLmg6IAogSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuaDogCiBET01UZXN0Q2Fs
bGJhY2tGdW5jdGlvblJldGhyb3cuaDogCiBXZWJET01UZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhy
b3cuaDogCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2suaDog
CitET01UZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmg6IAorV2Vi
RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5oOiAKIEpTVGVz
dENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5oOiAKIERPTVRlc3RDYWxsYmFja0Z1bmN0
aW9uV2l0aFRoaXNPYmplY3QuaDogCiBXZWJET01UZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlz
T2JqZWN0Lmg6IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2suaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tGdW5j
dGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2Fs
bGJhY2tJbnZva2VDaGVjay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1sKKyAgICBTa2lwQ2FsbGJhY2tJbnZva2VDaGVjaworXSBjYWxsYmFjayBUZXN0
Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrID0gdW5zaWduZWQgc2hvcnQg
KERPTVN0cmluZyBhcmd1bWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdENhbGxiYWNrSW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrSW50ZXJmYWNlLmlkbAko
cmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RDYWxsYmFja0ludGVyZmFjZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDUg
QEAgZGljdGlvbmFyeSBUZXN0Q2FsbGJhY2tJbnRlcmZhY2VEaWN0aW9uYQogICAgIHVuZGVmaW5l
ZCBjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhsb25nIGxvbmdQYXJhbSwgVGVzdE5vZGUgdGVz
dE5vZGVQYXJhbSk7CiAgICAgRE9NU3RyaW5nIGNhbGxiYWNrV2l0aEFSZXR1cm5WYWx1ZSgpOwog
ICAgIFtSZXRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgY2FsbGJhY2tUaGF0UmV0aHJvd3NFeGNl
cHRpb25zKFRlc3RDYWxsYmFja0ludGVyZmFjZUVudW0gZW51bVBhcmFtKTsKLSAgICBbU2tpcENh
bGxiYWNrSW52b2tlQ2hlY2tdIERPTVN0cmluZyBjYWxsYmFja1RoYXRTa2lwc0ludm9rZUNoZWNr
KFRlc3RDYWxsYmFja0ludGVyZmFjZURpY3Rpb25hcnkgZGljdGlvbmFyeVBhcmFtKTsKICAgICBb
Q2FsbGJhY2tUaGlzT2JqZWN0PVRlc3ROb2RlXSBET01TdHJpbmcgY2FsbGJhY2tXaXRoVGhpc09i
amVjdChUZXN0T2JqIHRlc3RPYmpQYXJhbSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw5ICszMCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCi1KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uKEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
LSAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQotICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFj
aywgZ2xvYmFsT2JqZWN0LCB0aGlzKSkKK0pTVGVzdENhbGxiYWNrRnVuY3Rpb246OkpTVGVzdENh
bGxiYWNrRnVuY3Rpb24oSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQorICAg
IDogVGVzdENhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkKKyAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGlu
Y3VtYmVudEdsb2JhbE9iamVjdCwgdGhpcykpCiB7CiB9CiAKQEAgLTU3LDcgKzU3LDcgQEAgQ2Fs
bGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQogCiAgICAgUmVmPEpTVGVzdENh
bGxiYWNrRnVuY3Rpb24+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFs
T2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0
ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0o
KTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTY4LDcgKzY4LDcgQEAgQ2FsbGJh
Y2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNP
dmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhj
ZXB0aW9uOwotICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNW
YWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50
aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEt
Pmludm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJncywgSlND
YWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJu
ZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBv
cnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAg
ICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVu
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIFRlc3RDYWxs
YmFja0Z1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb24+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+IGNy
ZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiBjYWxs
YmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rpb24oY2FsbGJh
Y2ssIGdsb2JhbE9iamVjdCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9i
amVjdCkpOwogICAgIH0KIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9Ci0KICAgICB+SlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bigpIGZpbmFsOwogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBjYWxsYmFja0RhdGEoKSB7IHJl
dHVybiBtX2RhdGE7IH0KIApAQCAtNDMsNyArNDEsOSBAQCBwdWJsaWM6CiAgICAgQ2FsbGJhY2tS
ZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IGhhbmRsZUV2
ZW50KHR5cGVuYW1lIElETExvbmc6OlBhcmFtZXRlclR5cGUgYXJndW1lbnQpIG92ZXJyaWRlOwog
CiBwcml2YXRlOgotICAgIEpTVGVzdENhbGxiYWNrRnVuY3Rpb24oSlNDOjpKU09iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbihKU0RPTUdsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFs
T2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpOworCisgICAgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9CiAKICAg
ICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93LmNwcAkocmV2aXNpb24gMjg1NjMzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVu
Y3Rpb25SZXRocm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvblJldGhyb3c6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KEpTT2JqZWN0KiBjYWxs
YmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IFRlc3RDYWxsYmFj
a0Z1bmN0aW9uUmV0aHJvdyhnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
LSAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGdsb2JhbE9i
amVjdCwgdGhpcykpCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdzo6SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvblJldGhyb3coSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQor
ICAgIDogVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KGdsb2JhbE9iamVjdC5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCisgICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNh
bGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QsIHRoaXMpKQogewogfQogCkBAIC02MCw3ICs2
MCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW0KIAogICAgIFJl
ZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
LSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKKyAgICBh
dXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9
IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtNzEs
NyArNzEsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltCiAgICAg
QVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52
b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBl
OjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgYXV0byBq
c1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhp
c1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRl
bnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9u
KSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgICAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
cmV0dXJuZWRFeGNlcHRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVu
Y3Rpb25SZXRocm93LmgJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdyBmaW5hbCA6IHB1YmxpYyBUZXN0Q2FsbGJh
Y2tGdW5jdGlvblJldGhyb3cgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvblJldGhyb3c+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNr
RnVuY3Rpb25SZXRocm93PiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
SlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9i
YWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uUmV0aHJvdyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KGdsb2JhbE9i
amVjdCwgY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCkpOwogICAgIH0KIAotICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OyB9Ci0KICAgICB+SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3coKSBmaW5hbDsKICAgICBK
U0NhbGxiYWNrRGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAK
QEAgLTQzLDcgKzQxLDkgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElE
TERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExT
ZXF1ZW5jZTxJRExMb25nPjo6UGFyYW1ldGVyVHlwZSBhcmd1bWVudCkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3coSlNDOjpKU09iamVjdCos
IEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3co
SlNET01HbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqLCBK
U0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KTsKKworICAgIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiAqSlNDOjpqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgp
KTsgfQogCiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIG1fZGF0YTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bldpdGhUaGlzT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmNw
cAkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDkgKzM0LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKLUpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdDo6SlNUZXN0
Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0KEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uV2l0
aFRoaXNPYmplY3QoZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAg
LCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBnbG9iYWxPYmplY3Qs
IHRoaXMpKQorSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0OjpKU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFs
T2JqZWN0KQorICAgIDogVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdChnbG9iYWxP
YmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9kYXRhKG5ldyBKU0NhbGxi
YWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB0aGlzKSkKIHsK
IH0KIApAQCAtNjEsNyArNjEsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmlu
ZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0PiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEt
Pmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9i
amVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7CkBAIC03Miw3ICs3Miw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETFVuZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAog
ICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2Rh
dGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxi
YWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAg
IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBh
cmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigp
LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRp
b24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhp
c09iamVjdC5oCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdCBmaW5hbCA6IHB1YmxpYyBU
ZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdD4gY3JlYXRlKEpTQzo6SlNP
YmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0
YXRpYyBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0PiBjcmVhdGUoSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpT
RE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3Qo
Y2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoZ2xvYmFsT2JqZWN0LCBjYWxsYmFj
aywgaW5jdW1iZW50R2xvYmFsT2JqZWN0KSk7CiAgICAgfQogCi0gICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLQogICAgIH5K
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoKSBmaW5hbDsKICAgICBKU0NhbGxi
YWNrRGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAgLTQz
LDcgKzQxLDkgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVm
aW5lZDo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExJbnRlcmZh
Y2U8VGVzdE5vZGU+OjpQYXJhbWV0ZXJUeXBlIHRoaXNPYmplY3QsIHR5cGVuYW1lIElETFNlcXVl
bmNlPElETEludGVyZmFjZTxUZXN0Tm9kZT4+OjpQYXJhbWV0ZXJUeXBlIHBhcmFtZXRlcikgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2Jq
ZWN0KEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdENhbGxi
YWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdChKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9i
YWxPYmplY3QpOworCisgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0
IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9CiAKICAgICBKU0NhbGxiYWNrRGF0YVN0cm9u
ZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbldpdGhUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5
cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldp
dGhUeXBlZGVmczo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhKU09iamVjdCog
Y2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBUZXN0Q2Fs
bGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKLSAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ss
IGdsb2JhbE9iamVjdCwgdGhpcykpCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZz
OjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzKEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3Vt
YmVudEdsb2JhbE9iamVjdCkKKyAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZz
KGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX2RhdGEobmV3
IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QsIHRo
aXMpKQogewogfQogCkBAIC02MSw3ICs2MSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElE
TFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVk
ZWZzPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpt
X2RhdGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmds
b2JhbE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC03Myw3ICs3Myw3IEBAIENhbGxiYWNrUmVzdWx0PHR5
cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgp
KTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAg
ICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24p
OworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRp
ZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7
CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRF
eGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25U
aHJvd247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0
aFR5cGVkZWZzLmgJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMgZmluYWwgOiBwdWJsaWMgVGVz
dENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcz4gY3JlYXRlKEpTQzo6SlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBS
ZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcz4gY3JlYXRlKEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2Jh
bE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhjYWxsYmFjaywg
Z2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxi
YWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMoZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaywgaW5jdW1iZW50
R2xvYmFsT2JqZWN0KSk7CiAgICAgfQogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLQogICAgIH5KU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uV2l0aFR5cGVkZWZzKCkgZmluYWw7CiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcq
IGNhbGxiYWNrRGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC00Myw3ICs0MSw5IEBAIHB1
YmxpYzoKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVu
dGF0aW9uVHlwZT4gaGFuZGxlRXZlbnQodHlwZW5hbWUgSURMU2VxdWVuY2U8SURMTnVsbGFibGU8
SURMTG9uZz4+OjpQYXJhbWV0ZXJUeXBlIHNlcXVlbmNlQXJnLCB0eXBlbmFtZSBJRExMb25nOjpQ
YXJhbWV0ZXJUeXBlIGxvbmdBcmcpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEpTVGVzdENh
bGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMoSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2Jq
ZWN0Kik7CisgICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhKU0RPTUdsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFs
T2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpOworCisgICAgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9CiAKICAg
ICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENhbGxiYWNrSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIwLDkgKzEyMCw5IEBAIHRlbXBsYXRlPD4gVGVzdENhbGxiYWNr
SW50ZXJmYWNlOjpEaWN0aW8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU1Rlc3RDYWxsYmFj
a0ludGVyZmFjZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoSlNPYmplY3QqIGNhbGxiYWNrLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogVGVzdENhbGxiYWNrSW50ZXJm
YWNlKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9kYXRh
KG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0LCB0aGlzKSkK
K0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpKU1Rlc3RDYWxsYmFja0ludGVyZmFjZShKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFs
T2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCisgICAgOiBUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2UoZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1fZGF0YShu
ZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCwg
dGhpcykpCiB7CiB9CiAKQEAgLTE4Myw3ICsxODMsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExVbmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+
Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2Jq
ZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAK
ICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9k
YXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxs
YmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0
aE5vUGFyYW0iKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6
Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFj
a1dpdGhOb1BhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNl
cHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4
Y2VwdGlvblRocm93bjsKQEAgLTIwOSw3ICsyMDksNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExVbmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+
Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2Jq
ZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAK
ICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9k
YXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxs
YmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0
aEFycmF5UGFyYW0iKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2Fs
bGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0
YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxs
YmFja1dpdGhBcnJheVBhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJu
ZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5
cGU6OkV4Y2VwdGlvblRocm93bjsKQEAgLTIzNiw3ICsyMzYsNyBAQCBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1f
ZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQo
KSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0g
ICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxi
YWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsK
KyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1
ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0i
KSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAg
ICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0
aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3du
OwpAQCAtMjY0LDcgKzI2NCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5l
ZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3Qo
KTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKICAgICBh
dXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwpAQCAtMjc1LDcgKzI3NSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5l
ZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRy
PEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNh
bGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoU3RyaW5nTGlzdCIp
LCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5
cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aFN0cmlu
Z0xpc3QiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikg
ewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVk
RXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9u
VGhyb3duOwpAQCAtMjkxLDcgKzI5MSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVu
ZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxP
YmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsK
ICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwpAQCAtMzAyLDcgKzMwMiw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVu
ZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmlu
dm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlw
ZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoQm9vbGVh
biIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFj
a1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aEJv
b2xlYW4iKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikg
ewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVk
RXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9u
VGhyb3duOwpAQCAtMzE4LDcgKzMxOCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVu
ZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxP
YmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsK
ICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwpAQCAtMzMwLDcgKzMzMCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVu
ZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmlu
dm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlw
ZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tSZXF1aXJlc1Ro
aXNUb1Bhc3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJh
Y2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6
Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFj
a1JlcXVpcmVzVGhpc1RvUGFzcyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVy
bmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9i
amVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRU
eXBlOjpFeGNlcHRpb25UaHJvd247CkBAIC0zNDYsNyArMzQ2LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8
dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJm
YWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpt
X2RhdGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmds
b2JhbE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC0zNTYsNyArMzU2LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8
dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2Vk
KCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwot
ICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoQVJldHVyblZhbHVlIiksIHJldHVybmVkRXhjZXB0aW9u
KTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6
Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aEFSZXR1cm5W
YWx1ZSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7
CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRF
eGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25U
aHJvd247CkBAIC0zNzUsNyArMzc1LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9N
U3RyaW5nOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9i
amVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwog
ICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7CkBAIC0zODYsNyArMzg2LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9N
U3RyaW5nOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFr
ZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8ganNSZXN1
bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0Rh
dGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2Fs
bGJhY2tUaGF0UmV0aHJvd3NFeGNlcHRpb25zIiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBh
dXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0aW9u
cyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAg
ICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAg
ICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgcmV0dXJu
ZWRFeGNlcHRpb24pOwpAQCAtMzk5LDMzICszOTksNiBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExET01TdHJpbmc6OkltCiAgICAgcmV0dXJuIHsgV1RGTW92ZShyZXR1cm5WYWx1ZSkgfTsK
IH0KIAotQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlv
blR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpjYWxsYmFja1RoYXRTa2lwc0ludm9rZUNo
ZWNrKHR5cGVuYW1lIElETERpY3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9u
YXJ5Pjo6UGFyYW1ldGVyVHlwZSBkaWN0aW9uYXJ5UGFyYW0pCi17Ci0gICAgUmVmPEpTVGVzdENh
bGxiYWNrSW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIGF1dG8mIGdsb2Jh
bE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpOwotICAgIGF1dG8mIHZtID0gZ2xvYmFs
T2JqZWN0LnZtKCk7Ci0KLSAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgYXV0byYgbGV4
aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGpzVW5kZWZpbmVkKCk7Ci0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBhcmdz
LmFwcGVuZCh0b0pTPElETERpY3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9u
YXJ5Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBkaWN0aW9uYXJ5UGFyYW0p
KTsKLSAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKLQotICAgIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0ID0gbV9k
YXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxs
YmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrVGhh
dFNraXBzSW52b2tlQ2hlY2siKSwgcmV0dXJuZWRFeGNlcHRpb24pOwotICAgIGlmIChyZXR1cm5l
ZEV4Y2VwdGlvbikgewotICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmpl
Y3QsIHJldHVybmVkRXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlw
ZTo6RXhjZXB0aW9uVGhyb3duOwotICAgICB9Ci0KLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvIHJldHVyblZhbHVlID0gY29udmVydDxJRExE
T01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIGpzUmVzdWx0KTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3du
KTsKLSAgICByZXR1cm4geyBXVEZNb3ZlKHJldHVyblZhbHVlKSB9OwotfQotCiBDYWxsYmFja1Jl
c3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aFRoaXNPYmplY3QodHlwZW5hbWUgSURMSW50ZXJm
YWNlPFRlc3ROb2RlPjo6UGFyYW1ldGVyVHlwZSB0aGlzT2JqZWN0LCB0eXBlbmFtZSBJRExJbnRl
cmZhY2U8VGVzdE9iaj46OlBhcmFtZXRlclR5cGUgdGVzdE9ialBhcmFtKQogewogICAgIGlmICgh
Y2FuSW52b2tlQ2FsbGJhY2soKSkKQEAgLTQzMyw3ICs0MDYsNyBAQCBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExET01TdHJpbmc6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1f
ZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTQ0NCw3ICs0MTcsNyBAQCBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExET01TdHJpbmc6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQo
KSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0g
ICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdz
LCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjYWxsYmFja1dpdGhUaGlzT2JqZWN0IiksIHJldHVybmVkRXhjZXB0aW9uKTsK
KyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aFRoaXNPYmplY3Qi
KSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAg
ICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0
aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3du
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmgJKHJldmlzaW9uIDI4NTYz
MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxs
YmFja0ludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyArMzMsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZSBmaW5hbCA6IHB1
YmxpYyBUZXN0Q2FsbGJhY2tJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxi
YWNrSW50ZXJmYWNlPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlND
OjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxP
YmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFj
a0ludGVyZmFjZShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlKGdsb2JhbE9iamVjdCwgY2FsbGJhY2ss
IGluY3VtYmVudEdsb2JhbE9iamVjdCkpOwogICAgIH0KIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9Ci0KICAgICB+SlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2UoKSBmaW5hbDsKICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyog
Y2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpA
QCAtNTQsMTEgKzUyLDEyIEBAIHB1YmxpYzoKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJ
RExVbmRlZmluZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bh
c3ModHlwZW5hbWUgSURMTG9uZzo6UGFyYW1ldGVyVHlwZSBsb25nUGFyYW0sIHR5cGVuYW1lIElE
TEludGVyZmFjZTxUZXN0Tm9kZT46OlBhcmFtZXRlclR5cGUgdGVzdE5vZGVQYXJhbSkgb3ZlcnJp
ZGU7CiAgICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRh
dGlvblR5cGU+IGNhbGxiYWNrV2l0aEFSZXR1cm5WYWx1ZSgpIG92ZXJyaWRlOwogICAgIENhbGxi
YWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBjYWxs
YmFja1RoYXRSZXRocm93c0V4Y2VwdGlvbnModHlwZW5hbWUgSURMRW51bWVyYXRpb248VGVzdENh
bGxiYWNrSW50ZXJmYWNlOjpFbnVtPjo6UGFyYW1ldGVyVHlwZSBlbnVtUGFyYW0pIG92ZXJyaWRl
OwotICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRp
b25UeXBlPiBjYWxsYmFja1RoYXRTa2lwc0ludm9rZUNoZWNrKHR5cGVuYW1lIElETERpY3Rpb25h
cnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5Pjo6UGFyYW1ldGVyVHlwZSBkaWN0
aW9uYXJ5UGFyYW0pIG92ZXJyaWRlOwogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERP
TVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBjYWxsYmFja1dpdGhUaGlzT2JqZWN0KHR5cGVu
YW1lIElETEludGVyZmFjZTxUZXN0Tm9kZT46OlBhcmFtZXRlclR5cGUgdGhpc09iamVjdCwgdHlw
ZW5hbWUgSURMSW50ZXJmYWNlPFRlc3RPYmo+OjpQYXJhbWV0ZXJUeXBlIHRlc3RPYmpQYXJhbSkg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoSlNDOjpK
U09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2UoSlNET01HbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3Qq
LCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KTsKKworICAgIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiAqSlNDOjpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVj
dCgpKTsgfQogCiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIG1fZGF0YTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rp
b25hcnkyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNwcAkocmV2aXNpb24gMjg1NjMzKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWRE
aWN0aW9uYXJ5Mi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgdGVtcGxhdGU8
PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkyIGNvbnZlcgogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1
ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZl
cnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4
aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252
ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjYWxsYmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHN0cmluZ01lbWJlclZhbHVlOwpA
QCAtMTUzLDcgKzE1Myw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGlj
dGkKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0K
ICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBy
ZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lk
Q2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCAqanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAg
cmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9p
ZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAg
SlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlOwpAQCAtMTg4LDcgKzE4OCw3IEBAIHRl
bXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGkKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxDYWxs
YmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LnBhcnRpYWxD
YWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFj
az4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLCAqanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAg
cmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlv
bjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01l
bWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwogICAgIH0KICAgICBKU1ZhbHVlIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVk
RGljdGlvbmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMjg1NjMz
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2
ZWREaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB0ZW1wbGF0
ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeSBjb252ZXJ0CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjYWxsYmFja01lbWJlclZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29u
dmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNv
bnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgcGFydGlhbEJvb2xlYW5NZW1i
ZXJWYWx1ZTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlv
bmFyeSBjb252ZXJ0CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKICAgICB9CiAgICAgaWYgKCFwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElE
TENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBw
YXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1i
ZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBwYXJ0
aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhl
cml0ZWREaWN0aW9uYXJ5Mi5jcHAJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgdGVtcGxhdGU8PiBUZXN0SW5oZXJpdGVk
RGljdGlvbmFyeTIgY29udgogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tG
dW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNrTWVt
YmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVj
dCkpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNr
RnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01l
bWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwogICAgIH0KICAgICBKU1ZhbHVlIHN0cmluZ01lbWJlclZhbHVlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMjg1NjMzKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rp
b25hcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHRlbXBsYXRlPD4gVGVz
dEluaGVyaXRlZERpY3Rpb25hcnkgY29udmUKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNV
bmRlZmluZWQoKSkgewotICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElE
TENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
YWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxH
bG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
Y2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVl
OwpAQCAtMTAwLDcgKzEwMCw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkg
Y29udmUKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBpZiAoIXBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsK
LSAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxD
YWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxH
bG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNv
bnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHBhcnRpYWxSZXF1
aXJlZExvbmdNZW1iZXJWYWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyODU2MzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAwOSwxMCArMjAwOSwxMCBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTExfCiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7
CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwotICAgIGF1dG8gdGVzdENhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0lu
dGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
KSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgMCwgInRlc3RDYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgbnVsbHB0cik7IH0pOworICAg
IGF1dG8gdGVzdENhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RD
YWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9iamVjdCIsIG51bGxw
dHIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBj
b252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVz
dE9iamVjdCIsIG51bGxwdHIpOyB9KTsKKyAgICBhdXRvIHRlc3RDYWxsYmFja0Z1bmN0aW9uID0g
Y29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEs
ICJ0ZXN0Q2FsbGJhY2tGdW5jdGlvbiIsICJUZXN0T2JqZWN0IiwgbnVsbHB0cik7IH0pOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
YXV0byBvYmplY3QgPSBUZXN0T2JqOjpjcmVhdGUoZG9jdW1lbnQsIHRlc3RDYWxsYmFjay5yZWxl
YXNlTm9uTnVsbCgpLCB0ZXN0Q2FsbGJhY2tGdW5jdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICBzdGF0aWNfYXNzZXJ0KFR5cGVPckV4Y2VwdGlvbk9yVW5kZXJseWluZ1R5cGU8ZGVjbHR5cGUo
b2JqZWN0KT46OmlzUmVmKTsKQEAgLTM0NDMsNyArMzQ0Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RPYmpfc3RyaW5nVm8KICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGlj
YWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJRExDYWxsYmFj
a0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCAq
dGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZl
cnQ8SURMUmVjb3JkPElETERPTVN0cmluZywgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxs
YmFjaz4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhj
ZXB0aW9uSWZOZWNlc3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsK
ICAgICAgICAgcmV0dXJuIGltcGwuc2V0U3RyaW5nVm9pZENhbGxiYWNrUmVjb3JkQXR0cihXVEZN
b3ZlKG5hdGl2ZVZhbHVlKSk7CkBAIC02OTU5LDcgKzY5NTksNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBj
b252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJt
ZXRob2RXaXRoQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhy
b3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAw
LCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tJbnRlcmZhY2VB
cmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tJ
bnRlcmZhY2VBcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkBAIC02OTc5
LDcgKzY5NzksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxi
YWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE51bGxh
YmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZl
cnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
KSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE51bGxhYmxlQ2Fs
bGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0p
KSk7CiB9CkBAIC03MDAyLDcgKzcwMDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgYXV0byBub25DYWxsYmFjayA9IGNvbnZlcnQ8SURMTG9uZz4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxp
dmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAg
IGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxi
YWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11
c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2si
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxs
YmFja0ludGVyZmFjZUFyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExD
YWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVz
dEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJjYWxsYmFjayIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0ludGVyZmFjZUFyZ0FuZENhbGxi
YWNrSW50ZXJmYWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUs
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9k
V2l0aE5vbkNhbGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmcoV1RGTW92
ZShub25DYWxsYmFjayksIGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkpOwogfQpAQCAt
NzAyMCw3ICs3MDIwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGFyZ3VtZW50MC52YWx1
ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U+Pjo6UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0lu
dGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
KSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQ2Fs
bGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGFyZ3VtZW50MC52
YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pjo6UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxsYmFj
a0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2Jq
ZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRl
cmZhY2VBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzAzOCw3ICs3MDM4LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJh
Y2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sg
PSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNr
SW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJn
KFdURk1vdmUoY2FsbGJhY2spKTsgfSkpKTsKIH0KQEAgLTcwNTgsNyArNzA1OCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBpZiAoVU5MSUtFTFkoY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3Bl
IGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBj
YWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0
aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAgIGF1dG8g
Y2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNr
RnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRo
Q2FsbGJhY2tGdW5jdGlvbkFyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkpKTsKIH0K
QEAgLTcwNzgsNyArNzA3OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8
SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sg
PSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOdWxs
YWJsZUNhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5tZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2sp
KTsgfSkpKTsKIH0KQEAgLTcxMDEsNyArNzEwMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIG5vbkNhbGxiYWNrID0gY29udmVydDxJRExMb25n
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3Rp
bGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7
Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgp
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVu
dE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJjYWxs
YmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNr
RnVuY3Rpb25BcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5j
dGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJn
Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5vbkNhbGxiYWNr
QXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKG5vbkNhbGxiYWNrKSwgY2FsbGJhY2su
cmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkBAIC03MTE5LDcgKzcxMTksNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAg
ICBhdXRvIGNhbGxiYWNrID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IENvbnZl
cnRlcjxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pjo6UmV0dXJu
VHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rp
b24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKKyAg
ICBhdXRvIGNhbGxiYWNrID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IENvbnZl
cnRlcjxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pjo6UmV0dXJu
VHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rp
b24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUp
IHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
c2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbENh
bGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoT3B0aW9uYWxDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2spKTsgfSkp
KTsKIH0KQEAgLTcxMzcsNyArNzEzNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252
ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rp
b25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7
IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNr
RnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0
aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyIp
OyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxh
YmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CkBAIC03
MTU0LDcgKzcxNTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENh
bGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxl
eGljYWxHbG9iYWxPYmplY3QpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmpl
Y3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RP
YmplY3QiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsgfSk7Cisg
ICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZh
Y2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3Qi
LCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsgfSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZp
bmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUo
YXV0bykgeyByZXR1cm4gVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9u
YWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzE3Myw3ICs3MTczLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlmIChVTkxJS0VM
WShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBh
dXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFj
a0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCBbXShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
KSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAic3RhdGljTWV0aG9kV2l0aENhbGxi
YWNrQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50
ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmpl
Y3QiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsg
cmV0dXJuIFRlc3RPYmo6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyhjYWxsYmFjay5yZWxl
YXNlTm9uTnVsbCgpKTsgfSkpKTsKIH0KQEAgLTczMDMsNyArNzMwMyw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1l
KTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
OwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVz
dENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2Fs
bGJhY2siLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7IH0pOworICAgIGF1dG8g
Y2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50
ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIp
OyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoY2FsbGJh
Y2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
dGFuZGFsb25lRGljdGlvbmFyeS5jcHAJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5
SW1wbE5hbWUgY29udmVydERpYwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNr
TWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9i
amVjdCkpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxi
YWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFj
a01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIGVudW1NZW1iZXJWYWx1ZTsKQEAgLTEzNiw3ICsxMzYs
NyBAQCB0ZW1wbGF0ZTw+IERpY3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGljCiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFwYXJ0
aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5w
YXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lk
Q2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1
ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7Cisg
ICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNr
RnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQ2Fs
bGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNp
b24gMjg1NjMzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDEwICsxNjgsMTAgQEAgdGVt
cGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMXwogICAgIGF1dG8gaGVsbG8gPSBj
b252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBjb252
ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVzdFR5
cGVkZWZzIiwgbnVsbHB0cik7IH0pOworICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBj
b252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0Fy
Z3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwg
InRlc3RDYWxsYmFja0Z1bmN0aW9uIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDIpOwotICAgIGF1dG8gdGVzdENhbGxiYWNrSW50ZXJmYWNlID0gY29udmVydDxJRExD
YWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDIudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBb
XShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2Nv
cGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBzY29wZSwgMiwgInRlc3RDYWxsYmFja0ludGVyZmFjZSIsICJUZXN0VHlwZWRlZnMi
LCBudWxscHRyKTsgfSk7CisgICAgYXV0byB0ZXN0Q2FsbGJhY2tJbnRlcmZhY2UgPSBjb252ZXJ0
PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxH
bG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1l
bnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMiwgInRlc3RD
YWxsYmFja0ludGVyZmFjZSIsICJUZXN0VHlwZWRlZnMiLCBudWxscHRyKTsgfSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRv
IG9iamVjdCA9IFRlc3RUeXBlZGVmczo6Y3JlYXRlKFdURk1vdmUoaGVsbG8pLCB0ZXN0Q2FsbGJh
Y2tGdW5jdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCB0ZXN0Q2FsbGJhY2tJbnRlcmZhY2UucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgc3RhdGljX2Fzc2VydChUeXBlT3JFeGNlcHRpb25PclVuZGVybHlp
bmdUeXBlPGRlY2x0eXBlKG9iamVjdCk+Ojppc1JlZik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLUpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uOjpK
U1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbihKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oZ2xv
YmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2RhdGEobmV3IEpT
Q2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QsIHRoaXMpKQorSlNUZXN0
Vm9pZENhbGxiYWNrRnVuY3Rpb246OkpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uKEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxP
YmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICA6IFRlc3RWb2lkQ2FsbGJhY2tGdW5j
dGlvbihnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9kYXRh
KG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2JqZWN0
LCB0aGlzKSkKIHsKIH0KIApAQCAtNjgsNyArNjgsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExVbmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0
YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFs
T2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKQEAgLTg0LDcgKzg0LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5h
bWUgSURMVW5kZWZpbmVkOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwog
CiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1f
ZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2Fs
bGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7Cisg
ICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUs
IGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVy
KCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAg
ICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2Vw
dGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93
bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RW
b2lkQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lv
biAyODU2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rp
b24gZmluYWwgOiBwdWJsaWMgVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPEpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uPiBjcmVhdGUoSlNDOjpKU09i
amVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3Rh
dGljIFJlZjxKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbj4gY3JlYXRlKEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9i
amVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oY2FsbGJhY2ssIGdsb2JhbE9iamVj
dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5j
dGlvbihnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QpKTsKICAg
ICB9CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQotCiAgICAgfkpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uKCkgZmlu
YWw7CiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIGNhbGxiYWNrRGF0YSgpIHsgcmV0dXJuIG1f
ZGF0YTsgfQogCkBAIC00NSw3ICs0Myw5IEBAIHB1YmxpYzoKICAgICBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gaGFuZGxlRXZlbnQodHlw
ZW5hbWUgSURMRmxvYXQzMkFycmF5OjpQYXJhbWV0ZXJUeXBlIGFycmF5UGFyYW0sIHR5cGVuYW1l
IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+OjpQYXJhbWV0
ZXJUeXBlIHNyelBhcmFtLCB0eXBlbmFtZSBJRExET01TdHJpbmc6OlBhcmFtZXRlclR5cGUgc3Ry
QXJnLCB0eXBlbmFtZSBJRExCb29sZWFuOjpQYXJhbWV0ZXJUeXBlIGJvb2xQYXJhbSwgdHlwZW5h
bWUgSURMTG9uZzo6UGFyYW1ldGVyVHlwZSBsb25nUGFyYW0sIHR5cGVuYW1lIElETEludGVyZmFj
ZTxUZXN0Tm9kZT46OlBhcmFtZXRlclR5cGUgdGVzdE5vZGVQYXJhbSkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6Ci0gICAgSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oSlNDOjpKU09iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oSlNET01H
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqLCBKU0RPTUds
b2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KTsKKworICAgIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiAqSlNDOjpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsgfQog
CiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIG1fZGF0YTsKIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZUZpbHRlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L05vZGVGaWx0ZXIuaWRsCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZUZpbHRlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAKIAogWwogICAg
IElzV2Vha0NhbGxiYWNrLAorICAgIFNraXBDYWxsYmFja0ludm9rZUNoZWNrLAogICAgIEV4cG9z
ZWQ9V2luZG93CiBdIGNhbGxiYWNrIGludGVyZmFjZSBOb2RlRmlsdGVyIHsKICAgICAvLyBDb25z
dGFudHMgZm9yIGFjY2VwdE5vZGUoKS4KQEAgLTQyLDUgKzQzLDUgQEAKICAgICBjb25zdCB1bnNp
Z25lZCBsb25nIFNIT1dfRE9DVU1FTlRfRlJBR01FTlQgPSAweDAwMDAwNDAwOwogICAgIGNvbnN0
IHVuc2lnbmVkIGxvbmcgU0hPV19OT1RBVElPTiA9IDB4MDAwMDA4MDA7IC8vIEhpc3RvcmljYWwu
CiAKLSAgICBbU2tpcENhbGxiYWNrSW52b2tlQ2hlY2ssIFJldGhyb3dFeGNlcHRpb25dIHVuc2ln
bmVkIHNob3J0IGFjY2VwdE5vZGUoTm9kZSBub2RlKTsKKyAgICBbUmV0aHJvd0V4Y2VwdGlvbl0g
dW5zaWduZWQgc2hvcnQgYWNjZXB0Tm9kZShOb2RlIG5vZGUpOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgJKHJl
dmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSwgUmVmPEpT
Qzo6Vk0+JiYsIFdvcmtlck9yV29ya2xldFRocmVhZCopOwogCiAgICAgLy8gU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC4KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gY29uc3RfY2FzdDxXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSo+KHRoaXMpOyB9CiAgICAgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkg
Y29uc3QgZmluYWw7CiAKICAgICB2b2lkIG1hcmtBc0Nsb3NpbmcoKSB7IG1faXNDbG9zaW5nID0g
dHJ1ZTsgfQpAQCAtOTAsNyArOTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVyZWZTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKICAgICAvLyBFdmVudFRhcmdl
dC4KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gY29uc3RfY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSo+KHRoaXMpOyB9CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0K
ICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmNwcAkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMzLDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcAogICAgICAgICBpZiAocGFp
bnRWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5
cGVFcnJvciwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRob2QiIH07CiAKLSAgICAg
ICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElETENhbGxiYWNr
RnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oZ2xvYmFsT2JqZWN0LCBwYWludFZhbHVlLCAq
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCkpOworICAgICAgICBSZWZQ
dHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlv
bjxKU0NTU1BhaW50Q2FsbGJhY2s+PihnbG9iYWxPYmplY3QsIHBhaW50VmFsdWUpOwogICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4Y2VwdGlv
bkVycm9yIH0pOwogCiAgICAgICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gbWFrZVVuaXF1ZTxQ
YWludERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50LnJlbGVh
c2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1dEFyZ3Vt
ZW50cykpOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL0N1c3RvbVhQYXRoTlNSZXNvbHZlci5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL0N1c3RvbVhQYXRoTlNSZXNvbHZl
ci5pZGwJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9DdXN0b21YUGF0
aE5TUmVzb2x2ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAgKi8KIAog
Ly8gTm90IHVzaW5nIFtJc1dlYWtDYWxsYmFja10gaGVyZSBhcyBYUGF0aE5TUmVzb2x2ZXIgd3Jh
cHBlcnMgYWx3YXlzIHRlbXBvcmFyeSAobm8gcmVmZXJlbmNlIGlzIGtlcHQpCi1jYWxsYmFjayBp
bnRlcmZhY2UgQ3VzdG9tWFBhdGhOU1Jlc29sdmVyIHsKLSAgICBbSW1wbGVtZW50ZWRBcz1sb29r
dXBOYW1lc3BhY2VVUklGb3JCaW5kaW5ncywgU2tpcENhbGxiYWNrSW52b2tlQ2hlY2tdIERPTVN0
cmluZz8gbG9va3VwTmFtZXNwYWNlVVJJKERPTVN0cmluZz8gcHJlZml4KTsKK1sKKyAgICBTa2lw
Q2FsbGJhY2tJbnZva2VDaGVjaywKK10gY2FsbGJhY2sgaW50ZXJmYWNlIEN1c3RvbVhQYXRoTlNS
ZXNvbHZlciB7CisgICAgW0ltcGxlbWVudGVkQXM9bG9va3VwTmFtZXNwYWNlVVJJRm9yQmluZGlu
Z3NdIERPTVN0cmluZz8gbG9va3VwTmFtZXNwYWNlVVJJKERPTVN0cmluZz8gcHJlZml4KTsKIH07
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyODU2MzMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMS0xMSAgQWxleGV5IFNodmF5a2Eg
IDxhc2h2YXlrYUBhcHBsZS5jb20+CisKKyAgICAgICAgSlNDYWxsYmFja0RhdGEgc2hvdWxkIHVz
ZSBsZXhpY2FsIGdsb2JhbCBvYmplY3QgZm9yIGVycm9ycyBhbmQgbGlmZWN5Y2xlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIzODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0
aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0Lmh0bWw6Cisg
ICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhbGxiYWNrLXRvLWRlbGV0
ZWQtY29udGV4dC1pbm5lcjEuaHRtbDoKKwogMjAyMS0xMS0xMSAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBDYXNjYWRlIExheWVyc10gU3VwcG9ydCAn
cmV2ZXJ0LWxheWVyJyB2YWx1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNv
bnRleHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyODU2MzMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBACiBmcmFtZSAiPCEtLWZyYW1lMS0tPiIg
LSBoYXMgMSBvbnVubG9hZCBoYW5kbGVyKHMpCi1UZXN0cyB0aGF0IHdoZW4gYSBHZW9sb2NhdGlv
biByZXF1ZXN0IGlzIG1hZGUgZnJvbSBhIHJlbW90ZSBmcmFtZSwgYW5kIHRoYXQgZnJhbWUncyBz
Y3JpcHQgY29udGV4dCBnb2VzIGF3YXkgYmVmb3JlIHRoZSBHZW9sb2NhdGlvbiBjYWxsYmFjayBp
cyBtYWRlLCB0aGUgY2FsbGJhY2sgaXMgbm90IG1hZGUuIElmIHRoZSBjYWxsYmFjayBpcyBhdHRl
bXB0ZWQsIGEgY3Jhc2ggd2lsbCBvY2N1ci4KK1Rlc3RzIHRoYXQgd2hlbiBhIEdlb2xvY2F0aW9u
IHJlcXVlc3QgaXMgbWFkZSBmcm9tIGEgcmVtb3RlIGZyYW1lLCBjYWxsYmFja3MgYXJlIG1hZGUg
YXMgdXN1YWwgZXZlbiBpZiB0aGF0IGZyYW1lJ3MgYnJvd3NpbmcgY29udGV4dCBpcyBhbHJlYWR5
IG51bGwuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIE5vIGNhbGxiYWNr
cyBpbnZva2VkCitQQVNTIFN1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZAogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxl
dGVkLWNvbnRleHQuaHRtbAkocmV2aXNpb24gMjg1NjMzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTUsNyArNSw3IEBACiA8L2hlYWQ+CiA8Ym9keT4KIDxzY3JpcHQ+Ci1kZXNjcmlw
dGlvbigiVGVzdHMgdGhhdCB3aGVuIGEgR2VvbG9jYXRpb24gcmVxdWVzdCBpcyBtYWRlIGZyb20g
YSByZW1vdGUgZnJhbWUsIGFuZCB0aGF0IGZyYW1lJ3Mgc2NyaXB0IGNvbnRleHQgZ29lcyBhd2F5
IGJlZm9yZSB0aGUgR2VvbG9jYXRpb24gY2FsbGJhY2sgaXMgbWFkZSwgdGhlIGNhbGxiYWNrIGlz
IG5vdCBtYWRlLiBJZiB0aGUgY2FsbGJhY2sgaXMgYXR0ZW1wdGVkLCBhIGNyYXNoIHdpbGwgb2Nj
dXIuIik7CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3aGVuIGEgR2VvbG9jYXRpb24gcmVxdWVz
dCBpcyBtYWRlIGZyb20gYSByZW1vdGUgZnJhbWUsIGNhbGxiYWNrcyBhcmUgbWFkZSBhcyB1c3Vh
bCBldmVuIGlmIHRoYXQgZnJhbWUncyBicm93c2luZyBjb250ZXh0IGlzIGFscmVhZHkgbnVsbC4i
KTsKIAogZnVuY3Rpb24gb25GaXJzdElmcmFtZUxvYWRlZCgpIHsKICAgICBpZnJhbWUuc3JjID0g
J3Jlc291cmNlcy9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtaW5uZXIyLmh0bWwnOwpAQCAt
MTMsNyArMTMsNyBAQCBmdW5jdGlvbiBvbkZpcnN0SWZyYW1lTG9hZGVkKCkgewogCiBmdW5jdGlv
biBvblNlY29uZElmcmFtZUxvYWRlZCgpIHsKICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlv
bigpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgnTm8gY2FsbGJhY2tzIGludm9rZWQnKTsKKyAgICAg
ICAgdGVzdEZhaWxlZCgnTm8gY2FsbGJhY2tzIGludm9rZWQnKTsKICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CiAgICAgfSwgNTAwKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL3Jlc291cmNlcy9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtaW5uZXIxLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2Vz
L2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1pbm5lcjEuaHRtbAkocmV2aXNpb24gMjg1NjMz
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhbGxiYWNr
LXRvLWRlbGV0ZWQtY29udGV4dC1pbm5lcjEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsNyAr
MTMsNyBAQAogICAgICAgICAgIC8vIE1ha2UgcmVxdWVzdCBmcm9tIHJlbW90ZSBmcmFtZSwgdGhp
cyBmcmFtZSB3aWxsIGJlIGdvbmUgYnkgdGhlIHRpbWUgdGhlIEdlb2xvY2F0aW9uCiAgICAgICAg
ICAgLy8gb2JqZWN0IGF0dGVtcHRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2suCiAgICAgICAgICAg
d2luZG93LnBhcmVudC5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICBwYXJlbnQudGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxs
YmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAgICAgICAgICAgICBwYXJlbnQudGVzdFBh
c3NlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkJyk7CiAgICAgICAgICAgICAgIHBhcmVudC5m
aW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICB9LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg
cGFyZW50LnRlc3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7
CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTYzMykKKysr
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0xMS0xMSAgQWxleGV5IFNodmF5a2EgIDxhc2h2YXlrYUBhcHBsZS5j
b20+CisKKyAgICAgICAgSlNDYWxsYmFja0RhdGEgc2hvdWxkIHVzZSBsZXhpY2FsIGdsb2JhbCBv
YmplY3QgZm9yIGVycm9ycyBhbmQgbGlmZWN5Y2xlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIzODcKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZiBHYXJlbi4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1Ry
ZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2Vy
LWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3NpbmctY29udGV4dC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVy
c2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tbnVsbC1icm93c2lu
Zy1jb250ZXh0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
dHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0uaHRtbDog
QWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvc3VwcG9y
dC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3Npbmct
Y29udGV4dC1zdWJmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvZG9tL3RyYXZlcnNhbC9zdXBwb3J0L1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jv
c3MtcmVhbG0tc3ViZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMjEtMTEtMTEgIEFudG9pbmUgUXVp
bnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW1wcm92ZSBhZGRpdGl2aXR5IHN1
cHBvcnQgd2hlbiBhbmltYXRpbmcgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eQpJbmRleDogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVX
YWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3Ry
YXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9z
cy1yZWFsbS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3IEBACisKKwor
UEFTUyBwYXJlbnQncyB8dGhpc3wsIHBhcmVudCdzIG1ldGhvZCwgcGFyZW50J3MgZmlsdGVyLCBw
YXJlbnQncyByb290CitQQVNTIHBhcmVudCdzIHx0aGlzfCwgcGFyZW50J3MgbWV0aG9kLCBwYXJl
bnQncyBmaWx0ZXIsIGlmcmFtZSdzIHJvb3QKK1BBU1MgcGFyZW50J3MgfHRoaXN8LCBwYXJlbnQn
cyBtZXRob2QsIGlmcmFtZSdzIGZpbHRlciwgaWZyYW1lJ3Mgcm9vdAorUEFTUyBwYXJlbnQncyB8
dGhpc3wsIGlmcmFtZXMncyBtZXRob2QsIGlmcmFtZSdzIGZpbHRlciwgaWZyYW1lJ3Mgcm9vdAor
CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90
cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJy
b3dzaW5nLWNvbnRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFj
Y2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3NpbmctY29udGV4dC1leHBlY3Rl
ZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jv
c3MtcmVhbG0tbnVsbC1icm93c2luZy1jb250ZXh0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDMgQEAKKworUEFTUyBUcmVlV2Fsa2VyOiBOb2RlRmlsdGVyIGZyb20gZGV0
YWNoZWQgaWZyYW1lIHdvcmtzIGFzIGV4cGVjdGVkCisKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2Vw
dE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3NpbmctY29udGV4dC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9t
L3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwt
YnJvd3NpbmctY29udGV4dC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2Vw
dE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3NpbmctY29udGV4dC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNl
dD0idXRmLTgiPgorPHRpdGxlPlRyZWVXYWxrZXI6IE5vZGVGaWx0ZXIgZnJvbSBkZXRhY2hlZCBp
ZnJhbWUgd29ya3MgYXMgZXhwZWN0ZWQ8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI3JlZi1mb3ItY2FsbC1hLXVzZXItb2JqZWN0cy1v
cGVyYXRpb24lRTIlOTElQTAiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorCis8Ym9keT4KKzxzY3JpcHQ+Citjb25zdCB0ID0gYXN5bmNfdGVzdCgp
OworCitjb25zdCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKK2lm
cmFtZS5zcmMgPSAic3VwcG9ydC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJl
YWxtLW51bGwtYnJvd3NpbmctY29udGV4dC1zdWJmcmFtZS5odG1sIjsKK2lmcmFtZS5vbmxvYWQg
PSB0LnN0ZXBfZnVuY19kb25lKCgpID0+IHsKKyAgICBjb25zdCBub2RlSXRlcmF0b3IgPSBpZnJh
bWUuY29udGVudFdpbmRvdy5jcmVhdGVOb2RlSXRlcmF0b3IoKTsKKyAgICBpZnJhbWUucmVtb3Zl
KCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGlmcmFtZS5jb250ZW50V2luZG93LCBudWxsKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKG5vZGVJdGVyYXRvci5uZXh0Tm9kZSgpLCBkb2N1bWVudC5ib2R5KTsK
KyAgICBhc3NlcnRfdHJ1ZShub2RlSXRlcmF0b3IuZHVtbXlGaWx0ZXJDYWxsZWQpOworfSk7CisK
K2RvY3VtZW50LmJvZHkuYXBwZW5kKGlmcmFtZSk7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fs
a2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1Ry
ZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0uaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2
ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPlRyZWVX
YWxrZXI6IGNyb3NzLXJlYWxtIE5vZGVGaWx0ZXIgdGhyb3dzIFR5cGVFcnJvciBvZiBjdXJyZW50
IHJlYWxtPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0
d2cub3JnLyNjYWxsLWEtdXNlci1vYmplY3RzLW9wZXJhdGlvbiI+CisKKzxib2R5IGlkPSJ0cmVl
V2Fsa2VyUm9vdCI+Cis8ZGl2PjwvZGl2PgorCis8c2NyaXB0PgorY29uc3QgaWZyYW1lID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CitpZnJhbWUuc3JjID0gInN1cHBvcnQvVHJl
ZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1zdWJmcmFtZS5odG1sIjsKK2lm
cmFtZS5vbmxvYWQgPSAoKSA9PiB7CisgICAgZm9yIChjb25zdCB0ZXN0Q2FzZSBvZiBpZnJhbWUu
Y29udGVudFdpbmRvdy50ZXN0Q2FzZXMpIHsKKyAgICAgICAgdGVzdCh0ID0+IHsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHModGVzdENhc2UuYWN0dWFsLmNvbnN0cnVjdG9yLCB0ZXN0Q2FzZS5l
eHBlY3RlZCk7CisgICAgICAgIH0sIHRlc3RDYXNlLmRlc2NyaXB0aW9uKTsKKyAgICB9Cit9Owor
ZG9jdW1lbnQuYm9keS5hcHBlbmQoaWZyYW1lKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL3N1cHBvcnQv
VHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dzaW5nLWNv
bnRleHQtc3ViZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvc3VwcG9ydC9UcmVlV2Fsa2VyLWFj
Y2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3NpbmctY29udGV4dC1zdWJmcmFt
ZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9zdXBwb3J0L1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1m
aWx0ZXItY3Jvc3MtcmVhbG0tbnVsbC1icm93c2luZy1jb250ZXh0LXN1YmZyYW1lLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxzY3JpcHQ+
CitmdW5jdGlvbiBjcmVhdGVOb2RlSXRlcmF0b3IoKSB7CisgICAgZnVuY3Rpb24gZmlsdGVyKCkg
eworICAgICAgICBub2RlSXRlcmF0b3IuZHVtbXlGaWx0ZXJDYWxsZWQgPSB0cnVlOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY29uc3Qgbm9kZUl0ZXJhdG9yID0gcGFyZW50LmRv
Y3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihwYXJlbnQuZG9jdW1lbnQuYm9keSwgTm9kZUZpbHRl
ci5TSE9XX0VMRU1FTlQsIGZpbHRlcik7CisgICAgbm9kZUl0ZXJhdG9yLmR1bW15RmlsdGVyQ2Fs
bGVkID0gZmFsc2U7CisgICAgcmV0dXJuIG5vZGVJdGVyYXRvcjsKK30KKzwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVy
c2FsL3N1cHBvcnQvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1zdWJm
cmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9zdXBwb3J0L1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1m
aWx0ZXItY3Jvc3MtcmVhbG0tc3ViZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvc3VwcG9y
dC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLXN1YmZyYW1lLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxib2R5
IGlkPSJ0cmVlV2Fsa2VyUm9vdCI+Cis8ZGl2PjwvZGl2PgorCis8c2NyaXB0Pgord2luZG93LnRl
c3RDYXNlcyA9IFtdOworCisoZnVuY3Rpb24oKSB7CisgICAgbGV0IHdhbGtlciA9IHBhcmVudC5k
b2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHBhcmVudC50cmVlV2Fsa2VyUm9vdCwgTm9kZUZpbHRl
ci5TSE9XX0VMRU1FTlQsIG5ldyBwYXJlbnQuT2JqZWN0KTsKKyAgICB0cnkgeyB3YWxrZXIuZmly
c3RDaGlsZCgpOyB9IGNhdGNoIChlcnIpIHsgdGVzdENhc2VzLnB1c2goeyBhY3R1YWw6IGVyciwg
ZXhwZWN0ZWQ6IHBhcmVudC5UeXBlRXJyb3IsIGRlc2NyaXB0aW9uOiAicGFyZW50J3MgfHRoaXN8
LCBwYXJlbnQncyBtZXRob2QsIHBhcmVudCdzIGZpbHRlciwgcGFyZW50J3Mgcm9vdCIgfSk7IH0K
KworICAgIHdhbGtlciA9IHBhcmVudC5kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHRyZWVXYWxr
ZXJSb290LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgbmV3IHBhcmVudC5PYmplY3QpOworICAg
IHRyeSB7IHdhbGtlci5maXJzdENoaWxkKCk7IH0gY2F0Y2ggKGVycikgeyB0ZXN0Q2FzZXMucHVz
aCh7IGFjdHVhbDogZXJyLCBleHBlY3RlZDogcGFyZW50LlR5cGVFcnJvciwgZGVzY3JpcHRpb246
ICJwYXJlbnQncyB8dGhpc3wsIHBhcmVudCdzIG1ldGhvZCwgcGFyZW50J3MgZmlsdGVyLCBpZnJh
bWUncyByb290IiB9KTsgfQorCisgICAgd2Fsa2VyID0gcGFyZW50LmRvY3VtZW50LmNyZWF0ZVRy
ZWVXYWxrZXIodHJlZVdhbGtlclJvb3QsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCB7fSk7Cisg
ICAgdHJ5IHsgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsgfSBjYXRjaCAoZXJyKSB7IHRlc3RDYXNlcy5w
dXNoKHsgYWN0dWFsOiBlcnIsIGV4cGVjdGVkOiBwYXJlbnQuVHlwZUVycm9yLCBkZXNjcmlwdGlv
bjogInBhcmVudCdzIHx0aGlzfCwgcGFyZW50J3MgbWV0aG9kLCBpZnJhbWUncyBmaWx0ZXIsIGlm
cmFtZSdzIHJvb3QiIH0pOyB9CisKKyAgICB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fs
a2VyLmNhbGwocGFyZW50LmRvY3VtZW50LCB0cmVlV2Fsa2VyUm9vdCwgTm9kZUZpbHRlci5TSE9X
X0VMRU1FTlQsIHt9KTsKKyAgICB0cnkgeyB3YWxrZXIuZmlyc3RDaGlsZCgpOyB9IGNhdGNoIChl
cnIpIHsgdGVzdENhc2VzLnB1c2goeyBhY3R1YWw6IGVyciwgZXhwZWN0ZWQ6IFR5cGVFcnJvciwg
ZGVzY3JpcHRpb246ICJwYXJlbnQncyB8dGhpc3wsIGlmcmFtZXMncyBtZXRob2QsIGlmcmFtZSdz
IGZpbHRlciwgaWZyYW1lJ3Mgcm9vdCIgfSk7IH0KK30pKCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444108</attachid>
            <date>2021-11-12 13:47:18 -0800</date>
            <delta_ts>2022-01-12 18:50:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232387-20211112214716.patch</filename>
            <type>text/plain</type>
            <size>117786</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBACisyMDIxLTExLTEyICBBbGV4ZXkg
U2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBKU0NhbGxiYWNrRGF0YSBz
aG91bGQgdXNlIGxleGljYWwgZ2xvYmFsIG9iamVjdCBmb3IgZXJyb3JzIGFuZCBsaWZlY3ljbGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEN1cnJlbnRseSwg
SlNDYWxsYmFja0RhdGEgdXNlcyBpbmN1bWJlbnQgWzFdIGdsb2JhbCBvYmplY3QgcHJldHR5IG11
Y2ggZm9yIGV2ZXJ5dGhpbmcsCisgICAgICAgIHdoaWNoIGNhdXNlcyBhIGZldyBpc3N1ZXM6CisK
KyAgICAgICAgICAxKSBUeXBlRXJyb3JzIGFyZSBjb25zdHJ1Y3RlZCBpbiBpbmNvcnJlY3QgcmVh
bG07CisgICAgICAgICAgMikgTm9kZUZpbHRlciAvIFhQYXRoTlNSZXNvbHZlciBjcmFzaCBpZiB0
aGVpciBpbmN1bWJlbnQgd2luZG93IGdldHMgZGlzY29ubmVjdGVkOworICAgICAgICAgIDMpIG90
aGVyIGNhbGxiYWNrcywgb3JpZ2luYXRlZCBpbiBkZXRhY2hlZCBmcmFtZSwgd2VyZSBub3QgaW52
b2tlZCBhdCBhbGwuCisKKyAgICAgICAgU2luY2Ugbm90IGFsbCBoYW5kbGVFdmVudCgpIGNhbGxl
cnMgaGF2ZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBhbmQgdG8gYXZvaWQgYSBsYXJnZQorICAg
ICAgICBjb2RlIGRpZmYsIHRoaXMgcGF0Y2ggdXRpbGl6ZXMgY2FsbGJhY2sgd3JhcHBlcidzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgdG8gZml4IGFsbAorICAgICAgICB0aGUgYWJvdmUtbWVudGlv
bmVkIHByb2JsZW1zLgorCisgICAgICAgIFRvIGFjY29tb2RhdGUgTm9kZUZpbHRlciBhbmQgWFBh
dGhOU1Jlc29sdmVyIG9mIGRldGFjaGVkIGZyYW1lcyB3aXRob3V0IGdyb3dpbmcgYHNpemVvZmAK
KyAgICAgICAgb2YgYWxsIG90aGVyIG90aGVyIGNhbGxiYWNrcywgbV9nbG9iYWxPYmplY3QgbWVt
YmVyIGlzIGludHJvZHVjZWQgb25seSBmb3IgdGhlbS4KKworICAgICAgICBBdWRpb1dvcmtsZXQg
Y2hhbmdlcyBhcmUgdW5vYnNlcnZhYmxlIGFzIHdvcmtsZXRzIGNhbid0IGFjcXVpcmUgYSBjcm9z
cy1yZWFsbSBtZXRob2QuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNpbmN1bWJlbnQKKworICAgICAgICBUZXN0czog
ZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0Lmh0bWwKKyAg
ICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNh
bC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3Npbmct
Y29udGV4dC5odG1sCisgICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFs
bS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JDYWxs
YmFjay5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cmVn
aXN0ZXJQcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2Nv
cGU6OmNyZWF0ZVByb2Nlc3Nvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vz
c29yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpB
dWRpb1dvcmtsZXRQcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yOjpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nv
cjo6c2V0UHJvY2Vzc0NhbGxiYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFByb2Nlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vz
c29yOjpwcm9jZXNzQ2FsbGJhY2tXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1
ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlv
V29ya2xldFByb2Nlc3Nvcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJh
Y2tEYXRhOjppbnZva2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFj
a0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjpKU0NhbGxiYWNrRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6fkpTQ2FsbGJhY2tEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhU3Ryb25nOjpKU0NhbGxiYWNrRGF0YVN0
cm9uZyk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YVN0cm9uZzo6aW52b2tlQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGFXZWFrOjpKU0NhbGxiYWNr
RGF0YVdlYWspOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGFXZWFrOjppbnZva2VD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6Z2xvYmFsT2JqZWN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRDYWxsYmFja3Mu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExDYWxsYmFja0Z1bmN0aW9uPFQ+Pjo6
Y29udmVydCk6CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZh
Y2U8VD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRYUGF0
aE5TUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExJbnRlcmZhY2U8
WFBhdGhOU1Jlc29sdmVyPj46OmNvbnZlcnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX29wZW5EYXRhYmFzZUJv
ZHkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVDYWxsYmFja0hlYWRlckNvbnRlbnQpOgorICAgICAgICAoR2VuZXJhdGVD
YWxsYmFja0ltcGxlbWVudGF0aW9uQ29udGVudCk6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmVE
T01Db252ZXJ0TmVlZHNHbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
SURMQXR0cmlidXRlcy5qc29uOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy8q
OiBVcGRhdGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tG
dW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmlkbDogQWRkZWQuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFja0ludGVyZmFjZS5pZGw6CisgICAgICAgICog
ZG9tL05vZGVGaWx0ZXIuaWRsOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQ
YWludCk6CisgICAgICAgICogeG1sL0N1c3RvbVhQYXRoTlNSZXNvbHZlci5pZGw6CisKIDIwMjEt
MTEtMTIgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJldmVydGluZyByMjg1NjM5LgpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvckNhbGxiYWNr
LmlkbAkocmV2aXNpb24gMjg1NzM5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw0ICsy
NCw1IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1HRU9MT0NBVElPTiwKKyAgICBTa2lwQ2FsbGJh
Y2tJbnZva2VDaGVjaywKIF0gY2FsbGJhY2sgUG9zaXRpb25FcnJvckNhbGxiYWNrID0gdW5kZWZp
bmVkIChHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3IgZXJyb3IpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxT
Y29wZS5jcHAJKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3
ICs3Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvV29ya2xldEdsb2JhbFNjb3AKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiQSBwcm9jZXNzb3Igd2Fz
IGFscmVhZHkgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgbmFtZSJfcyB9OwogCiAgICAgSlNDOjpKU09i
amVjdCoganNDb25zdHJ1Y3RvciA9IHByb2Nlc3NvckNvbnRydWN0b3ItPmNhbGxiYWNrRGF0YSgp
LT5jYWxsYmFjaygpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmds
b2JhbE9iamVjdCgpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0xMzMs
NyArMTMzLDcgQEAgUmVmUHRyPEF1ZGlvV29ya2xldFByb2Nlc3Nvcj4gQXVkaW9Xb3JrbAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEpTQzo6SlNPYmplY3QqIGpzQ29uc3RydWN0b3Ig
PSBjb25zdHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7Ci0gICAgYXV0byogZ2xv
YmFsT2JqZWN0ID0gY29uc3RydWN0b3ItPmNhbGxiYWNrRGF0YSgpLT5nbG9iYWxPYmplY3QoKTsK
KyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2Jh
bE9iamVjdCgpOwogICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrIHsgZ2xvYmFsT2JqZWN0IH07CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEF1ZGlv
V29ya2xldFByb2Nlc3Nvcj4gQXVkaW9Xb3JrbAogICAgIGlmICghanNQcm9jZXNzb3IpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAganNQcm9jZXNzb3ItPndyYXBwZWQoKS5zZXRQcm9j
ZXNzQ2FsbGJhY2sobWFrZVVuaXF1ZTxKU0NhbGxiYWNrRGF0YVN0cm9uZz4oanNQcm9jZXNzb3Is
IGdsb2JhbE9iamVjdCkpOworICAgIGpzUHJvY2Vzc29yLT53cmFwcGVkKCkuc2V0UHJvY2Vzc0Nh
bGxiYWNrKGpzUHJvY2Vzc29yKTsKIAogICAgIHJldHVybiAmanNQcm9jZXNzb3ItPndyYXBwZWQo
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
UHJvY2Vzc29yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHAJKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjAxLDEzICsyMDEsMTQgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvV29y
a2xldFByb2Nlc3Nvcj4+IAogICAgIGlmICghY29uc3RydWN0aW9uRGF0YSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIk5vIHBlbmRpbmcgY29uc3RydWN0aW9uIGRhdGEg
Zm9yIHRoaXMgd29ya2xldCBwcm9jZXNzb3IiX3MgfTsKIAotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEF1ZGlvV29ya2xldFByb2Nlc3NvcigqY29uc3RydWN0aW9uRGF0YSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEF1ZGlvV29ya2xldFByb2Nlc3Nvcihjb250ZXh0LCAqY29uc3RydWN0
aW9uRGF0YSkpOwogfQogCiBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6On5BdWRpb1dvcmtsZXRQcm9j
ZXNzb3IoKSA9IGRlZmF1bHQ7CiAKLUF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6QXVkaW9Xb3JrbGV0
UHJvY2Vzc29yKGNvbnN0IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEmIGNv
bnN0cnVjdGlvbkRhdGEpCi0gICAgOiBtX25hbWUoY29uc3RydWN0aW9uRGF0YS5uYW1lKCkpCitB
dWRpb1dvcmtsZXRQcm9jZXNzb3I6OkF1ZGlvV29ya2xldFByb2Nlc3NvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rp
b25EYXRhJiBjb25zdHJ1Y3Rpb25EYXRhKQorICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KGNvbnRleHQpCisgICAgLCBtX25hbWUoY29uc3RydWN0aW9uRGF0YS5uYW1lKCkpCiAgICAgLCBt
X3BvcnQoY29uc3RydWN0aW9uRGF0YS5wb3J0KCkpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CkBAIC0yMzYsNyArMjM3LDcgQEAgYm9vbCBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnBy
b2Nlc3MoY29ucwogICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFk
U2NvcGUgZGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uczsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3ND
YWxsYmFjayk7Ci0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fcHJvY2Vzc0NhbGxiYWNrLT5n
bG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKICAg
ICBBU1NFUlQoZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNT
RVJUKGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVh
ZCgpKTsKIApAQCAtMjQ3LDcgKzI0OCw3IEBAIGJvb2wgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpw
cm9jZXNzKGNvbnMKICAgICBidWlsZEpTQXJndW1lbnRzKHZtLCBnbG9iYWxPYmplY3QsIGFyZ3Ms
IGlucHV0cywgb3V0cHV0cywgcGFyYW1WYWx1ZXNNYXApOwogCiAgICAgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNz
Q2FsbGJhY2stPmludm9rZUNhbGxiYWNrKGpzVW5kZWZpbmVkKCksIGFyZ3MsIEpTQ2FsbGJhY2tE
YXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBy
b2Nlc3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIGF1dG8gcmVzdWx0ID0gSlNDYWxsYmFj
a0RhdGE6Omludm9rZUNhbGxiYWNrKGdsb2JhbE9iamVjdCwgbnVsbHB0ciwgYXNPYmplY3QobV9w
cm9jZXNzQ2FsbGJhY2spLCBqc1VuZGVmaW5lZCgpLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2Fs
bGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm9jZXNzIiks
IHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAg
ICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAg
ICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOwpAQCAtMjU5LDkgKzI2MCw5IEBAIGJvb2wgQXVk
aW9Xb3JrbGV0UHJvY2Vzc29yOjpwcm9jZXNzKGNvbnMKICAgICByZXR1cm4gcmVzdWx0LnRvQm9v
bGVhbigmZ2xvYmFsT2JqZWN0KTsKIH0KIAotdm9pZCBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnNl
dFByb2Nlc3NDYWxsYmFjayhzdGQ6OnVuaXF1ZV9wdHI8SlNDYWxsYmFja0RhdGFTdHJvbmc+JiYg
cHJvY2Vzc0NhbGxiYWNrKQordm9pZCBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnNldFByb2Nlc3ND
YWxsYmFjayhKU09iamVjdCogcHJvY2Vzc0NhbGxiYWNrKQogewotICAgIG1fcHJvY2Vzc0NhbGxi
YWNrID0gV1RGTW92ZShwcm9jZXNzQ2FsbGJhY2spOworICAgIG1fcHJvY2Vzc0NhbGxiYWNrID0g
eyBwcm9jZXNzQ2FsbGJhY2sgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dFByb2Nlc3Nvci5oCShyZXZpc2lvbiAyODU3MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwx
OSArNTksMjEgQEAgcHVibGljOgogCiAgICAgYm9vbCBwcm9jZXNzKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8QXVkaW9CdXM+PiYgaW5wdXRzLCBWZWN0b3I8UmVmPEF1ZGlvQnVzPj4mIG91dHB1dHMsIGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GbG9hdEFycmF5Pj4mIHBh
cmFtVmFsdWVzTWFwLCBib29sJiB0aHJld0V4Y2VwdGlvbik7CiAKLSAgICB2b2lkIHNldFByb2Nl
c3NDYWxsYmFjayhzdGQ6OnVuaXF1ZV9wdHI8SlNDYWxsYmFja0RhdGFTdHJvbmc+JiYpOworICAg
IHZvaWQgc2V0UHJvY2Vzc0NhbGxiYWNrKEpTQzo6SlNPYmplY3QqKTsKIAorICAgIEpTVmFsdWVJ
bldyYXBwZWRPYmplY3QmIHByb2Nlc3NDYWxsYmFja1dyYXBwZXIoKSB7IHJldHVybiBtX3Byb2Nl
c3NDYWxsYmFjazsgfQogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGpzSW5wdXRzV3JhcHBl
cigpIHsgcmV0dXJuIG1fanNJbnB1dHM7IH0KICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBq
c091dHB1dHNXcmFwcGVyKCkgeyByZXR1cm4gbV9qc091dHB1dHM7IH0KICAgICBKU1ZhbHVlSW5X
cmFwcGVkT2JqZWN0JiBqc1BhcmFtVmFsdWVzV3JhcHBlcigpIHsgcmV0dXJuIG1fanNQYXJhbVZh
bHVlczsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEF1ZGlvV29ya2xldFByb2Nlc3Nvcihj
b25zdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhJik7CisgICAgZXhwbGlj
aXQgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBB
dWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhJik7CiAgICAgdm9pZCBidWlsZEpT
QXJndW1lbnRzKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpNYXJrZWRBcmd1
bWVudEJ1ZmZlckJhc2UmLCBjb25zdCBWZWN0b3I8UmVmUHRyPEF1ZGlvQnVzPj4mIGlucHV0cywg
VmVjdG9yPFJlZjxBdWRpb0J1cz4+JiBvdXRwdXRzLCBjb25zdCBIYXNoTWFwPFN0cmluZywgc3Rk
Ojp1bmlxdWVfcHRyPEF1ZGlvRmxvYXRBcnJheT4+JiBwYXJhbVZhbHVlc01hcCk7CiAKKyAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgU3Ry
aW5nIG1fbmFtZTsKICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SlNDYWxsYmFja0RhdGFTdHJvbmc+IG1fcHJvY2Vzc0NhbGxiYWNrOworICAgIEpTVmFs
dWVJbldyYXBwZWRPYmplY3QgbV9wcm9jZXNzQ2FsbGJhY2s7CiAgICAgSlNWYWx1ZUluV3JhcHBl
ZE9iamVjdCBtX2pzSW5wdXRzOwogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9qc091dHB1
dHM7CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX2pzUGFyYW1WYWx1ZXM7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1dvcmts
ZXRQcm9jZXNzb3JDdXN0b20uY3BwCShyZXZpc2lvbiAyODU3MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0F1ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDYgKzM1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQg
SlNBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFZpc2l0b3Im
IHZpc2l0b3IpCiB7CiAgICAgYXV0byYgcHJvY2Vzc29yID0gd3JhcHBlZCgpOworICAgIHByb2Nl
c3Nvci5wcm9jZXNzQ2FsbGJhY2tXcmFwcGVyKCkudmlzaXQodmlzaXRvcik7CiAgICAgcHJvY2Vz
c29yLmpzSW5wdXRzV3JhcHBlcigpLnZpc2l0KHZpc2l0b3IpOwogICAgIHByb2Nlc3Nvci5qc091
dHB1dHNXcmFwcGVyKCkudmlzaXQodmlzaXRvcik7CiAgICAgcHJvY2Vzc29yLmpzUGFyYW1WYWx1
ZXNXcmFwcGVyKCkudmlzaXQodmlzaXRvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCShyZXZpc2lvbiAyODU3MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNjYWxsLWEtdXNlci1vYmplY3Rz
LW9wZXJhdGlvbgotSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxiYWNrLCBKU1ZhbHVlIHRo
aXNWYWx1ZSwgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIENhbGxiYWNrVHlwZSBtZXRob2Qs
IFByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0
dXJuZWRFeGNlcHRpb24pCitKU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCosIEpTT2Jq
ZWN0KiBjYWxsYmFjaywgSlNWYWx1ZSB0aGlzVmFsdWUsIE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBh
cmdzLCBDYWxsYmFja1R5cGUgbWV0aG9kLCBQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogewogICAgIEFTU0VSVChj
YWxsYmFjayk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFj
a0RhdGEuaAkocmV2aXNpb24gMjg1NzM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDYWxsYmFja0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTEgKzQ3LDEwIEBAIGNsYXNz
IEpTQ2FsbGJhY2tEYXRhIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIENhbGxiYWNrVHlwZSB7
IEZ1bmN0aW9uLCBPYmplY3QsIEZ1bmN0aW9uT3JPYmplY3QgfTsKIAotICAgIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQot
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhK
U0RPTUdsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmpl
Y3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6
Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiwgQ2FsbGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5TmFtZSBm
dW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24p
OwogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEpTQ2FsbGJhY2tEYXRhKEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0
KQorICAgIGV4cGxpY2l0IEpTQ2FsbGJhY2tEYXRhKEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJl
bnRHbG9iYWxPYmplY3QpCisgICAgICAgIDogbV9pbmN1bWJlbnRHbG9iYWxPYmplY3QoaW5jdW1i
ZW50R2xvYmFsT2JqZWN0KQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MSwxMSArNjAsOSBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIEFTU0VSVChtX3RocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwogI2VuZGlmCiAgICAgfQotICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBK
U0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTT2Jq
ZWN0KiBjYWxsYmFjaywgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVu
dEJ1ZmZlciYsIENhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIAorICAgIEpTQzo6
V2VhazxKU0RPTUdsb2JhbE9iamVjdD4gbV9pbmN1bWJlbnRHbG9iYWxPYmplY3Q7CiBwcml2YXRl
OgotICAgIEpTQzo6V2VhazxKU0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAjaWYg
QVNTRVJUX0VOQUJMRUQKICAgICBSZWY8VGhyZWFkPiBtX3RocmVhZCB7IFRocmVhZDo6Y3VycmVu
dCgpIH07CiAjZW5kaWYKQEAgLTczLDIxICs3MCwxNyBAQCBwcml2YXRlOgogCiBjbGFzcyBKU0Nh
bGxiYWNrRGF0YVN0cm9uZyA6IHB1YmxpYyBKU0NhbGxiYWNrRGF0YSB7CiBwdWJsaWM6Ci0gICAg
SlNDYWxsYmFja0RhdGFTdHJvbmcoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIHZvaWQqID0gbnVsbHB0cikKLSAgICAgICAgOiBKU0NhbGxi
YWNrRGF0YShnbG9iYWxPYmplY3QpCi0gICAgICAgICwgbV9jYWxsYmFjayhnbG9iYWxPYmplY3Qt
PnZtKCksIGNhbGxiYWNrKQorICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKEpTQzo6SlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB2b2lk
KiA9IG51bGxwdHIpCisgICAgICAgIDogSlNDYWxsYmFja0RhdGEoaW5jdW1iZW50R2xvYmFsT2Jq
ZWN0KQorICAgICAgICAsIG1fY2FsbGJhY2soaW5jdW1iZW50R2xvYmFsT2JqZWN0LT52bSgpLCBj
YWxsYmFjaykKICAgICB7CiAgICAgfQogCiAgICAgSlNDOjpKU09iamVjdCogY2FsbGJhY2soKSB7
IHJldHVybiBtX2NhbGxiYWNrLmdldCgpOyB9CiAKLSAgICBKU0M6OkpTVmFsdWUgaW52b2tlQ2Fs
bGJhY2soSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYg
YXJncywgQ2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rp
b25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQorICAg
IEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1
ZmZlciYgYXJncywgQ2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUg
ZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9u
KQogICAgIHsKLSAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0
KCk7Ci0gICAgICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsK
LQotICAgICAgICByZXR1cm4gSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKCpnbG9iYWxP
YmplY3QsIGNhbGxiYWNrKCksIHRoaXNWYWx1ZSwgYXJncywgY2FsbGJhY2tUeXBlLCBmdW5jdGlv
bk5hbWUsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tEYXRh
OjppbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX2luY3VtYmVudEdsb2JhbE9i
amVjdC5nZXQoKSwgY2FsbGJhY2soKSwgdGhpc1ZhbHVlLCBhcmdzLCBjYWxsYmFja1R5cGUsIGZ1
bmN0aW9uTmFtZSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTk2
LDIxICs4OSwxNyBAQCBwcml2YXRlOgogCiBjbGFzcyBKU0NhbGxiYWNrRGF0YVdlYWsgOiBwdWJs
aWMgSlNDYWxsYmFja0RhdGEgewogcHVibGljOgotICAgIEpTQ2FsbGJhY2tEYXRhV2VhayhKU0M6
OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdm9p
ZCogb3duZXIpCi0gICAgICAgIDogSlNDYWxsYmFja0RhdGEoZ2xvYmFsT2JqZWN0KQorICAgIEpT
Q2FsbGJhY2tEYXRhV2VhayhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmpl
Y3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCwgdm9pZCogb3duZXIpCisgICAgICAgIDogSlNDYWxs
YmFja0RhdGEoaW5jdW1iZW50R2xvYmFsT2JqZWN0KQogICAgICAgICAsIG1fY2FsbGJhY2soY2Fs
bGJhY2ssICZtX3dlYWtPd25lciwgb3duZXIpCiAgICAgewogICAgIH0KIAogICAgIEpTQzo6SlNP
YmplY3QqIGNhbGxiYWNrKCkgeyByZXR1cm4gbV9jYWxsYmFjay5nZXQoKTsgfQogCi0gICAgSlND
OjpKU1ZhbHVlIGludm9rZUNhbGxiYWNrKEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6TWFy
a2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIENhbGxiYWNrVHlwZSBjYWxsYmFja1R5cGUsIEpTQzo6
UHJvcGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1
cm5lZEV4Y2VwdGlvbikKKyAgICBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlNET01HbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpT
Qzo6TWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIENhbGxiYWNrVHlwZSBjYWxsYmFja1R5cGUs
IEpTQzo6UHJvcGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
JiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7Ci0gICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IHRoaXMtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkKLSAgICAg
ICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tEYXRhOjppbnZv
a2VDYWxsYmFjaygqZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaygpLCB0aGlzVmFsdWUsIGFyZ3MsIGNh
bGxiYWNrVHlwZSwgZnVuY3Rpb25OYW1lLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgICAgIHJl
dHVybiBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwg
bV9pbmN1bWJlbnRHbG9iYWxPYmplY3QuZ2V0KCksIGNhbGxiYWNrKCksIHRoaXNWYWx1ZSwgYXJn
cywgY2FsbGJhY2tUeXBlLCBmdW5jdGlvbk5hbWUsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICB9
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPiB2b2lkIHZpc2l0SlNGdW5jdGlvbihW
aXNpdG9yJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRD
YWxsYmFja3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUNvbnZlcnRDYWxsYmFja3MuaAkocmV2aXNpb24gMjg1NzM5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJRAogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBjb252ZXJzaW9uSGFzU2lkZUVmZmVjdHMgPSBmYWxzZTsK
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0
aW9uVGhyb3dlcj4KLSAgICBzdGF0aWMgUmVmUHRyPFQ+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dl
ciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKKyAgICBzdGF0aWMgUmVmUHRyPFQ+IGNvbnZlcnQoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVl
LCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIo
KSkKICAgICB7CiAgICAgICAgIEpTQzo6Vk0mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
QEAgLTQ1LDcgKzQ1LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJ
RAogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1
cm4gVDo6Y3JlYXRlKEpTQzo6YXNPYmplY3QodmFsdWUpLCAmY2FsbGVyR2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdCwgdm0udG9wQ2FsbEZyYW1lKSk7CisgICAgICAgIGF1dG8mIGpzRE9NR2xvYmFs
T2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxP
YmplY3QpOworICAgICAgICByZXR1cm4gVDo6Y3JlYXRlKGpzRE9NR2xvYmFsT2JqZWN0LCBKU0M6
OmFzT2JqZWN0KHZhbHVlKSwgJmNhbGxlckdsb2JhbE9iamVjdChqc0RPTUdsb2JhbE9iamVjdCwg
dm0udG9wQ2FsbEZyYW1lKSk7CiAgICAgfQogfTsKIApAQCAtNjksNyArNzAsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8VD4+IDogRGVmYXVsdENvbnZl
cnRlcjxJRExDYWxsYmFja0ludGVyZmFjZTxUPj4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4
Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KLSAgICBzdGF0aWMgUmVm
UHRyPFQ+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHZhbHVlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBFeGNl
cHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKKyAg
ICBzdGF0aWMgUmVmUHRyPFQ+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0
aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7CiAgICAgICAgIEpTQzo6Vk0m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTc5LDcgKzgwLDggQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJRAogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gVDo6Y3JlYXRlKEpTQzo6YXNPYmplY3Qo
dmFsdWUpLCAmY2FsbGVyR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwgdm0udG9wQ2FsbEZyYW1l
KSk7CisgICAgICAgIGF1dG8mIGpzRE9NR2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gVDo6
Y3JlYXRlKGpzRE9NR2xvYmFsT2JqZWN0LCBKU0M6OmFzT2JqZWN0KHZhbHVlKSwgJmNhbGxlckds
b2JhbE9iamVjdChqc0RPTUdsb2JhbE9iamVjdCwgdm0udG9wQ2FsbEZyYW1lKSk7CiAgICAgfQog
fTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0WFBhdGhO
U1Jlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmgJKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExJ
bnRlcmZhY2UKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8SlNYUGF0aE5TUmVzb2x2ZXI+
KHZtKSkKICAgICAgICAgICAgIHJldHVybiAmSlNDOjpqc0Nhc3Q8SlNYUGF0aE5TUmVzb2x2ZXIq
PihvYmplY3QpLT53cmFwcGVkKCk7CiAKLSAgICAgICAgcmV0dXJuIEpTQ3VzdG9tWFBhdGhOU1Jl
c29sdmVyOjpjcmVhdGUob2JqZWN0LCBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIGF1dG8mIGpzRE9NR2xvYmFsT2JqZWN0ID0g
KkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOwor
ICAgICAgICByZXR1cm4gSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6OmNyZWF0ZShqc0RPTUdsb2Jh
bE9iamVjdCwgb2JqZWN0LCAmY2FsbGVyR2xvYmFsT2JqZWN0KGpzRE9NR2xvYmFsT2JqZWN0LCB2
bS50b3BDYWxsRnJhbWUpKTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyODU3MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5NSw3ICsxOTUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2hl
blNpZ25hbEFib3J0CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU0M6
OkpTVmFsdWU6OkpTRmFsc2UpKTsKIAogICAgIGF1dG8qIGpzRE9NR2xvYmFsT2JqZWN0ID0gSlND
Ojpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpOwotICAgIFJlZjxBYm9y
dEFsZ29yaXRobT4gYWJvcnRBbGdvcml0aG0gPSBKU0Fib3J0QWxnb3JpdGhtOjpjcmVhdGUoY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS5nZXRPYmplY3QoKSwganNET01HbG9iYWxPYmpl
Y3QpOworICAgIFJlZjxBYm9ydEFsZ29yaXRobT4gYWJvcnRBbGdvcml0aG0gPSBKU0Fib3J0QWxn
b3JpdGhtOjpjcmVhdGUoKmpzRE9NR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpLmdldE9iamVjdCgpLCBqc0RPTUdsb2JhbE9iamVjdCk7CiAKICAgICBib29sIHJl
c3VsdCA9IEFib3J0U2lnbmFsOjp3aGVuU2lnbmFsQWJvcnRlZChhYm9ydFNpZ25hbC0+d3JhcHBl
ZCgpLCBXVEZNb3ZlKGFib3J0QWxnb3JpdGhtKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQgPyBKU1ZhbHVlKEpTQzo6SlNWYWx1ZTo6SlNUcnVlKSA6IEpTVmFsdWUoSlNDOjpK
U1ZhbHVlOjpKU0ZhbHNlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAyODU3MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYwNiw3ICs2MDYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNET01X
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlPYmplY3QobGV4
aWNhbEdsb2JhbE9iamVjdCwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3Rv
dHlwZSgpKSk7CiAgICAgfQogCi0gICAgYXV0byBjcmVhdGlvbkNhbGxiYWNrID0gY29udmVydDxJ
RExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTRGF0YWJhc2VDYWxsYmFjaz4+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCg0KSwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7CisgICAgYXV0byBjcmVhdGlvbkNhbGxiYWNrID0g
Y29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTRGF0YWJhc2VDYWxsYmFj
az4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCg0KSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgewogICAgICAgICB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzY29wZSwgNCwgImNyZWF0aW9uQ2FsbGJhY2siLCAiV2luZG93IiwgIm9w
ZW5EYXRhYmFzZSIpOwogICAgIH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjg1NzM5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcg
Y29weSkKQEAgLTYzNDQsMTMgKzYzNDQsMTEgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tIZWFkZXJD
b250ZW50CiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJwdWJsaWM6XG4iKTsKIAogICAgICMgVGhl
IHN0YXRpYyBjcmVhdGUoKSBtZXRob2QuCi0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgc3Rh
dGljIFJlZjwkY2xhc3NOYW1lPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwg
IiAgICBzdGF0aWMgUmVmPCRjbGFzc05hbWU+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGlu
Y3VtYmVudEdsb2JhbE9iamVjdClcbiIpOwogICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIHtc
biIpOwotICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyAke2NsYXNzTmFtZX0oY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpO1xuIik7CisgICAgcHVzaChA
JGNvbnRlbnRSZWYsICIgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3ICR7Y2xhc3NOYW1lfShn
bG9iYWxPYmplY3QsIGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QpKTtcbiIpOwogICAg
IHB1c2goQCRjb250ZW50UmVmLCAiICAgIH1cblxuIik7CiAKLSAgICBwdXNoKEAkY29udGVudFJl
ZiwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfVxuXG4iKTsKLQogICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIH4kY2xh
c3NOYW1lKCkgZmluYWw7XG4iKTsKIAogICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICR7Y2Fs
bGJhY2tEYXRhVHlwZX0qIGNhbGxiYWNrRGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfVxuIik7CkBA
IC02Mzg3LDcgKzYzODUsNyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0hlYWRlckNvbnRlbnQKIAog
ICAgIHB1c2goQCRjb250ZW50UmVmLCAiXG5wcml2YXRlOlxuIik7CiAKLSAgICBwdXNoKEAkY29u
dGVudFJlZiwgIiAgICAke2NsYXNzTmFtZX0oSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2Jq
ZWN0Kik7XG5cbiIpOworICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICR7Y2xhc3NOYW1lfShK
U0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpO1xuXG4iKTsKIAogICAgIGlm
ICgkaW50ZXJmYWNlT3JDYWxsYmFjay0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SXNXZWFrQ2FsbGJh
Y2t9KSB7CiAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGJvb2wgaGFzQ2FsbGJhY2so
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2RhdGEgJiYgbV9kYXRhLT5jYWxsYmFjaygpOyB9XG5c
biIpOwpAQCAtNjM5Niw2ICs2Mzk0LDEzIEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSGVhZGVyQ29u
dGVudAogICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIHZvaWQgdmlzaXRKU0Z1bmN0aW9uKEpT
Qzo6QWJzdHJhY3RTbG90VmlzaXRvciYpIG92ZXJyaWRlO1xuXG4iKSBpZiAkaW50ZXJmYWNlT3JD
YWxsYmFjay0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SXNXZWFrQ2FsbGJhY2t9OwogICAgIHB1c2go
QCRjb250ZW50UmVmLCAiICAgIHZvaWQgdmlzaXRKU0Z1bmN0aW9uKEpTQzo6U2xvdFZpc2l0b3Im
KSBvdmVycmlkZTtcblxuIikgaWYgJGludGVyZmFjZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0lzV2Vha0NhbGxiYWNrfTsKIAorICAgIGlmICgkaW50ZXJmYWNlT3JDYWxsYmFjay0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2tpcENhbGxiYWNrSW52b2tlQ2hlY2t9KSB7CisgICAgICAg
IHB1c2goQCRjb250ZW50UmVmLCAiICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qo
KSBjb25zdCB7IHJldHVybiAqbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH1cblxuIik7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9XG5cbiIp
OworICAgIH0KKworICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIEpTQzo6U3Ryb25nPEpTRE9N
R2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDtcbiIpIGlmICRpbnRlcmZhY2VPckNhbGxiYWNr
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTa2lwQ2FsbGJhY2tJbnZva2VDaGVja307CiAgICAgcHVz
aChAJGNvbnRlbnRSZWYsICIgICAgJHtjYWxsYmFja0RhdGFUeXBlfSogbV9kYXRhO1xuIik7CiAg
ICAgcHVzaChAJGNvbnRlbnRSZWYsICJ9O1xuXG4iKTsKIApAQCAtNjQxNiw5ICs2NDIxLDEwIEBA
IHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW4KICAgICAkaW5jbHVkZXNS
ZWYtPnsiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIn0gPSAxOwogCiAgICAgIyBDb25zdHJ1Y3Rv
cgotICAgIHB1c2goQCRjb250ZW50UmVmLCAiJHtjbGFzc05hbWV9Ojoke2NsYXNzTmFtZX0oSlNP
YmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7Ci0g
ICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgOiAke25hbWV9KGdsb2JhbE9iamVjdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKVxuIik7Ci0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgLCBt
X2RhdGEobmV3ICR7Y2FsbGJhY2tEYXRhVHlwZX0oY2FsbGJhY2ssIGdsb2JhbE9iamVjdCwgdGhp
cykpXG4iKTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwgIiR7Y2xhc3NOYW1lfTo6JHtjbGFzc05h
bWV9KEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywg
SlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdClcbiIpOworICAgIHB1c2go
QCRjb250ZW50UmVmLCAiICAgIDogJHtuYW1lfShnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKVxuIik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgLCBtX2dsb2JhbE9i
amVjdChnbG9iYWxPYmplY3Qudm0oKSwgJmdsb2JhbE9iamVjdClcbiIpIGlmICRpbnRlcmZhY2VP
ckNhbGxiYWNrLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTa2lwQ2FsbGJhY2tJbnZva2VDaGVja307
CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgLCBtX2RhdGEobmV3ICR7Y2FsbGJhY2tEYXRh
VHlwZX0oY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCwgdGhpcykpXG4iKTsKICAgICBw
dXNoKEAkY29udGVudFJlZiwgIntcbiIpOwogICAgIHB1c2goQCRjb250ZW50UmVmLCAifVxuXG4i
KTsKIApAQCAtNjUyMywxMyArNjUyOSwxMyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVu
dGF0aW9uQ29udGVuCiAKICAgICAgICAgICAgICMgRklYTUU6IFRoaXMgaXMgbmVlZGVkIGZvciBO
b2RlRmlsdGVyLCB3aGljaCB3b3JrcyBldmVuIGZvciBkaXNjb25uZWN0ZWQgaWZyYW1lcy4gV2Ug
c2hvdWxkIGludmVzdGlnYXRlCiAgICAgICAgICAgICAjIGlmIHRoYXQgYmVoYXZpb3IgaXMgbmVl
ZGVkIGZvciBvdGhlciBjYWxsYmFja3MuCi0gICAgICAgICAgICBpZiAoISRvcGVyYXRpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+e1NraXBDYWxsYmFja0ludm9rZUNoZWNrfSkgeworICAgICAgICAg
ICAgaWYgKCEkaW50ZXJmYWNlT3JDYWxsYmFjay0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2tpcENh
bGxiYWNrSW52b2tlQ2hlY2t9KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYs
ICIgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAJGNvbnRlbnRSZWYsICIgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OlVuYWJs
ZVRvRXhlY3V0ZTtcblxuIik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQCRj
b250ZW50UmVmLCAiICAgIFJlZjwkY2xhc3NOYW1lPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTtcblxu
Iik7Ci0gICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBhdXRvJiBnbG9iYWxPYmpl
Y3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJGNv
bnRlbnRSZWYsICIgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7
XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGF1dG8mIHZtID0gZ2xv
YmFsT2JqZWN0LnZtKCk7XG5cbiIpOwogICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pO1xuIik7CiAKQEAgLTY1NDcsMTAgKzY1NTMsMTAgQEAg
c3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgogCiAgICAgICAgICAgICBt
eSAkY2FsbGJhY2tJbnZvY2F0aW9uOwogICAgICAgICAgICAgaWYgKHJlZigkaW50ZXJmYWNlT3JD
YWxsYmFjaykgZXEgIklETENhbGxiYWNrRnVuY3Rpb24iKSB7Ci0gICAgICAgICAgICAgICAgJGNh
bGxiYWNrSW52b2NhdGlvbiA9ICJtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwg
cmV0dXJuZWRFeGNlcHRpb24pIjsKKyAgICAgICAgICAgICAgICAkY2FsbGJhY2tJbnZvY2F0aW9u
ID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVl
LCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmll
cigpLCByZXR1cm5lZEV4Y2VwdGlvbikiOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBteSAkY2FsbGJhY2tUeXBlID0gJG51bU9wZXJhdGlvbnMgPiAxID8gIk9iamVjdCIg
OiAiRnVuY3Rpb25Pck9iamVjdCI7Ci0gICAgICAgICAgICAgICAgJGNhbGxiYWNrSW52b2NhdGlv
biA9ICJtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0Rh
dGE6OkNhbGxiYWNrVHlwZTo6JHtjYWxsYmFja1R5cGV9LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCBcIiR7ZnVuY3Rpb25OYW1lfVwiKSwgcmV0dXJuZWRFeGNlcHRpb24pIjsKKyAgICAgICAg
ICAgICAgICAkY2FsbGJhY2tJbnZvY2F0aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJh
Y2tUeXBlOjoke2NhbGxiYWNrVHlwZX0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFwiJHtm
dW5jdGlvbk5hbWV9XCIpLCByZXR1cm5lZEV4Y2VwdGlvbikiOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+dHlwZS0+bmFtZSBlcSAidW5kZWZpbmVkIikgewpA
QCAtNzAwMSw4ICs3MDA3LDYgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZURPTUNvbnZlcnROZWVkc0ds
b2JhbAogewogICAgIG15ICR0eXBlID0gc2hpZnQ7CiAKLSAgICByZXR1cm4gMSBpZiAkY29kZUdl
bmVyYXRvci0+SXNDYWxsYmFja0ludGVyZmFjZSgkdHlwZSk7Ci0gICAgcmV0dXJuIDEgaWYgJGNv
ZGVHZW5lcmF0b3ItPklzQ2FsbGJhY2tGdW5jdGlvbigkdHlwZSk7CiAgICAgcmV0dXJuIEpTVmFs
dWVUb05hdGl2ZURPTUNvbnZlcnROZWVkc0dsb2JhbE9iamVjdChAeyR0eXBlLT5zdWJ0eXBlc31b
MV0pIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1JlY29yZFR5cGUoJHR5cGUpOwogICAgIHJldHVybiAx
IGlmICR0eXBlLT5uYW1lIGVxICJTY2hlZHVsZWRBY3Rpb24iOwogICAgIHJldHVybiAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVz
Lmpzb24JKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMQXR0cmlidXRlcy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC00NzgsNyArNDc4LDcgQEAK
ICAgICAgICAgICAgICJzdXBwb3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQogICAgICAgICB9LAogICAg
ICAgICAiU2tpcENhbGxiYWNrSW52b2tlQ2hlY2siOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJvcGVyYXRpb24iLCAiY2FsbGJhY2stZnVuY3Rpb24iXQorICAgICAgICAgICAg
ImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIiwgImNhbGxiYWNrLWZ1bmN0aW9uIl0KICAg
ICAgICAgfSwKICAgICAgICAgIlNraXBWVGFibGVWYWxpZGF0aW9uIjogewogICAgICAgICAgICAg
ImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxE
ZXBlbmRlbmNpZXMuZGVwCShyZXZpc2lvbiAyODU3MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNiArNDAsOSBAQCBXZWJET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5oOiAKIEpT
VGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93Lmg6IAogRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25S
ZXRocm93Lmg6IAogV2ViRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93Lmg6IAorSlNUZXN0
Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmg6IAorRE9NVGVzdENhbGxi
YWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5oOiAKK1dlYkRPTVRlc3RDYWxsYmFj
a0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2suaDogCiBKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uV2l0aFRoaXNPYmplY3QuaDogCiBET01UZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2Jq
ZWN0Lmg6IAogV2ViRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5oOiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tGdW5j
dGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJh
Y2tJbnZva2VDaGVjay5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hl
Y2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisg
ICAgU2tpcENhbGxiYWNrSW52b2tlQ2hlY2sKK10gY2FsbGJhY2sgVGVzdENhbGxiYWNrRnVuY3Rp
b25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjayA9IHVuc2lnbmVkIHNob3J0IChET01TdHJpbmcgYXJn
dW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RD
YWxsYmFja0ludGVyZmFjZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFja0ludGVyZmFjZS5pZGwJKHJldmlzaW9uIDI4NTcz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tJ
bnRlcmZhY2UuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw1IEBAIGRpY3Rpb25hcnkg
VGVzdENhbGxiYWNrSW50ZXJmYWNlRGljdGlvbmEKICAgICB1bmRlZmluZWQgY2FsbGJhY2tSZXF1
aXJlc1RoaXNUb1Bhc3MobG9uZyBsb25nUGFyYW0sIFRlc3ROb2RlIHRlc3ROb2RlUGFyYW0pOwog
ICAgIERPTVN0cmluZyBjYWxsYmFja1dpdGhBUmV0dXJuVmFsdWUoKTsKICAgICBbUmV0aHJvd0V4
Y2VwdGlvbl0gRE9NU3RyaW5nIGNhbGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0aW9ucyhUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2VFbnVtIGVudW1QYXJhbSk7Ci0gICAgW1NraXBDYWxsYmFja0ludm9rZUNo
ZWNrXSBET01TdHJpbmcgY2FsbGJhY2tUaGF0U2tpcHNJbnZva2VDaGVjayhUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2VEaWN0aW9uYXJ5IGRpY3Rpb25hcnlQYXJhbSk7CiAgICAgW0NhbGxiYWNrVGhpc09i
amVjdD1UZXN0Tm9kZV0gRE9NU3RyaW5nIGNhbGxiYWNrV2l0aFRoaXNPYmplY3QoVGVzdE9iaiB0
ZXN0T2JqUGFyYW0pOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5j
cHAJKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
OSArMzAsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAot
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbihKU09iamVjdCog
Y2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBUZXN0Q2Fs
bGJhY2tGdW5jdGlvbihnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAg
ICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGdsb2JhbE9iamVj
dCwgdGhpcykpCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
KEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywgSlNE
T01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICA6IFRlc3RDYWxsYmFj
a0Z1bmN0aW9uKGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBt
X2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxP
YmplY3QsIHRoaXMpKQogewogfQogCkBAIC01Nyw3ICs1Nyw3IEBAIENhbGxiYWNrUmVzdWx0PHR5
cGVuYW1lIElETERPTVN0cmluZzo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2Rh
dGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2Jh
bE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CkBAIC02OCw3ICs2OCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVu
YW1lIElETERPTVN0cmluZzo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsK
IAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBh
dXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpT
Q2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVy
bmVkRXhjZXB0aW9uKTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpD
YWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsK
ICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBD
YWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjg1NzM5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMjksMTMgKzI5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBUZXN0Q2FsbGJhY2tGdW5jdGlvbiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPiBjcmVhdGUo
SlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CisgICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPiBjcmVhdGUoSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xv
YmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uKGNhbGxiYWNrLCBnbG9iYWxPYmpl
Y3QpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bihnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QpKTsKICAgICB9
CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQotCiAgICAgfkpTVGVzdENhbGxiYWNrRnVuY3Rpb24oKSBmaW5hbDsKICAg
ICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9
CiAKQEAgLTQzLDcgKzQxLDkgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJ
RExMb25nOjpQYXJhbWV0ZXJUeXBlIGFyZ3VtZW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uKEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVj
dCopOworICAgIEpTVGVzdENhbGxiYWNrRnVuY3Rpb24oSlNET01HbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1i
ZW50R2xvYmFsT2JqZWN0KTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qo
KSBjb25zdCB7IHJldHVybiAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsgfQogCiAgICAgSlNDYWxsYmFja0Rh
dGFTdHJvbmcqIG1fZGF0YTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uUmV0aHJvdy5jcHAJKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLUpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93OjpK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdyhKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhy
b3coZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2RhdGEo
bmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QsIHRoaXMpKQor
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3c6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRo
cm93KEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywg
SlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICA6IFRlc3RDYWxs
YmFja0Z1bmN0aW9uUmV0aHJvdyhnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KQorICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgaW5jdW1i
ZW50R2xvYmFsT2JqZWN0LCB0aGlzKSkKIHsKIH0KIApAQCAtNjAsNyArNjAsNyBAQCBDYWxsYmFj
a1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvblJldGhyb3c+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xv
YmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2Jq
ZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qu
dm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTcxLDcgKzcxLDcgQEAgQ2Fs
bGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQogICAgIEFTU0VSVCghYXJncy5o
YXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVk
RXhjZXB0aW9uOwotICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRo
aXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElk
ZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIGF1dG8ganNSZXN1bHQgPSBtX2Rh
dGEtPmludm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJncywg
SlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0
dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgdGhyb3dF
eGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHJldHVybmVkRXhjZXB0
aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5o
CShyZXZpc2lvbiAyODU3MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTMgKzI5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvblJldGhyb3cgZmluYWwgOiBwdWJsaWMgVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRo
cm93IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRo
cm93PiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCisgICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJv
dz4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJl
dGhyb3coY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdyhnbG9iYWxPYmplY3QsIGNhbGxiYWNr
LCBpbmN1bWJlbnRHbG9iYWxPYmplY3QpKTsKICAgICB9CiAKLSAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQotCiAgICAgfkpT
VGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KCkgZmluYWw7CiAgICAgSlNDYWxsYmFja0RhdGFT
dHJvbmcqIGNhbGxiYWNrRGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC00Myw3ICs0MSw5
IEBAIHB1YmxpYzoKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6Oklt
cGxlbWVudGF0aW9uVHlwZT4gaGFuZGxlRXZlbnQodHlwZW5hbWUgSURMU2VxdWVuY2U8SURMTG9u
Zz46OlBhcmFtZXRlclR5cGUgYXJndW1lbnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEpT
VGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9i
amVjdCopOworICAgIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KEpTRE9NR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmpl
Y3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCk7CisKKyAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7IH0KIAogICAgIEpT
Q2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJ
bnZva2VDaGVjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVj
ay5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNr
aXBDYWxsYmFja0ludm9rZUNoZWNrLmgiCisKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJz
LmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisK
KworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworSlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrOjpKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2soSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFs
T2JqZWN0KQorICAgIDogVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVj
ayhnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9nbG9iYWxP
YmplY3QoZ2xvYmFsT2JqZWN0LnZtKCksICZnbG9iYWxPYmplY3QpCisgICAgLCBtX2RhdGEobmV3
IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QsIHRo
aXMpKQoreworfQorCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hl
Y2s6On5KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2soKQorewor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgLy8gV2hlbiB0aGUgY29udGV4dCBpcyBkZXN0cm95ZWQsIGFsbCB0YXNrcyB3
aXRoIGEgcmVmZXJlbmNlIHRvIGEgY2FsbGJhY2sKKyAgICAvLyBzaG91bGQgYmUgZGVsZXRlZC4g
U28gaWYgdGhlIGNvbnRleHQgaXMgMCwgd2UgYXJlIG9uIHRoZSBjb250ZXh0IHRocmVhZC4KKyAg
ICBpZiAoIWNvbnRleHQgfHwgY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpCisgICAgICAgIGRl
bGV0ZSBtX2RhdGE7CisgICAgZWxzZQorICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhEZWxldGVD
YWxsYmFja0RhdGFUYXNrKG1fZGF0YSkpOworI2lmbmRlZiBOREVCVUcKKyAgICBtX2RhdGEgPSBu
dWxscHRyOworI2VuZGlmCit9CisKK0NhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuc2lnbmVk
U2hvcnQ6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxs
YmFja0ludm9rZUNoZWNrOjpoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExET01TdHJpbmc6OlBhcmFt
ZXRlclR5cGUgYXJndW1lbnQpCit7CisgICAgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lw
Q2FsbGJhY2tJbnZva2VDaGVjaz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisKKyAgICBhdXRvJiBn
bG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiB2bSA9IGdsb2Jh
bE9iamVjdC52bSgpOworCisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8mIGxl
eGljYWxHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBqc1VuZGVmaW5lZCgpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJn
cy5hcHBlbmQodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
KSk7CisgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICBOYWtlZFB0cjxK
U0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgYXV0byBqc1Jlc3VsdCA9IG1f
ZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdz
LCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CisgICAgICAg
IHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24p
OworICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247Cisg
ICAgIH0KKworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBjb252ZXJ0PElETFVuc2lnbmVkU2hvcnQ+KGxleGljYWxH
bG9iYWxPYmplY3QsIGpzUmVzdWx0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duKTsKKyAgICByZXR1cm4geyBX
VEZNb3ZlKHJldHVyblZhbHVlKSB9OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhUZXN0Q2FsbGJh
Y2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrJiBpbXBsKQoreworICAgIGlmICghc3Rh
dGljX2Nhc3Q8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrJj4o
aW1wbCkuY2FsbGJhY2tEYXRhKCkpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tl
Q2hlY2smPihpbXBsKS5jYWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2suaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tG
dW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1NSBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0RhdGEuaCIKKyNpbmNsdWRlICJU
ZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmgiCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2sgZmluYWwgOiBwdWJsaWMgVGVzdENh
bGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjayB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2s+IGNy
ZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiBjYWxs
YmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2Fs
bGJhY2tJbnZva2VDaGVjayhnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxP
YmplY3QpKTsKKyAgICB9CisKKyAgICB+SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFj
a0ludm9rZUNoZWNrKCkgZmluYWw7CisgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIGNhbGxiYWNr
RGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQorCisgICAgLy8gRnVuY3Rpb25zCisgICAgQ2FsbGJh
Y2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5zaWduZWRTaG9ydDo6SW1wbGVtZW50YXRpb25UeXBlPiBo
YW5kbGVFdmVudCh0eXBlbmFtZSBJRExET01TdHJpbmc6OlBhcmFtZXRlclR5cGUgYXJndW1lbnQp
IG92ZXJyaWRlOworCitwcml2YXRlOgorICAgIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2Fs
bGJhY2tJbnZva2VDaGVjayhKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3Qp
OworCisgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
ICptX2dsb2JhbE9iamVjdC5nZXQoKTsgfQorCisgICAgSlNDOjpTdHJvbmc8SlNET01HbG9iYWxP
YmplY3Q+IG1fZ2xvYmFsT2JqZWN0OworICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7
Cit9OworCitKU0M6OkpTVmFsdWUgdG9KUyhUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFj
a0ludm9rZUNoZWNrJik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoVGVzdENhbGxiYWNrRnVu
Y3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjayogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMo
KmltcGwpIDogSlNDOjpqc051bGwoKTsgfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbldpdGhUaGlzT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMjg1NzM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDkgKzM0LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKLUpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdDo6
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0KEpTT2JqZWN0KiBjYWxsYmFjaywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IFRlc3RDYWxsYmFja0Z1bmN0
aW9uV2l0aFRoaXNPYmplY3QoZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
Ci0gICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBnbG9iYWxP
YmplY3QsIHRoaXMpKQorSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0OjpKU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50
R2xvYmFsT2JqZWN0KQorICAgIDogVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdChn
bG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9kYXRhKG5ldyBK
U0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB0aGlz
KSkKIHsKIH0KIApAQCAtNjEsNyArNjEsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExV
bmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2Jq
ZWN0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpt
X2RhdGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmds
b2JhbE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBK
U0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC03Miw3ICs3Miw3IEBAIENhbGxiYWNrUmVzdWx0PHR5
cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgp
KTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAg
ICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24p
OworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRp
ZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7
CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRF
eGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25U
aHJvd247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25X
aXRoVGhpc09iamVjdC5oCShyZXZpc2lvbiAyODU3MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdCBmaW5hbCA6IHB1
YmxpYyBUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdD4gY3JlYXRlKEpT
Qzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
ICAgIHN0YXRpYyBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0PiBjcmVh
dGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCogY2FsbGJh
Y2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNP
YmplY3QoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoZ2xvYmFsT2JqZWN0LCBj
YWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2JqZWN0KSk7CiAgICAgfQogCi0gICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLQog
ICAgIH5KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoKSBmaW5hbDsKICAgICBK
U0NhbGxiYWNrRGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAK
QEAgLTQzLDcgKzQxLDkgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElE
TFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExJ
bnRlcmZhY2U8VGVzdE5vZGU+OjpQYXJhbWV0ZXJUeXBlIHRoaXNPYmplY3QsIHR5cGVuYW1lIElE
TFNlcXVlbmNlPElETEludGVyZmFjZTxUZXN0Tm9kZT4+OjpQYXJhbWV0ZXJUeXBlIHBhcmFtZXRl
cikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhU
aGlzT2JqZWN0KEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVz
dENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdChKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJl
bnRHbG9iYWxPYmplY3QpOworCisgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgp
IGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9CiAKICAgICBKU0NhbGxiYWNrRGF0
YVN0cm9uZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
V2l0aFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbldpdGhUeXBlZGVmczo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhKU09i
amVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBU
ZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2Fs
bGJhY2ssIGdsb2JhbE9iamVjdCwgdGhpcykpCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5
cGVkZWZzOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzKEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3Qq
IGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5
cGVkZWZzKGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX2Rh
dGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmpl
Y3QsIHRoaXMpKQogewogfQogCkBAIC02MSw3ICs2MSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVu
YW1lIElETFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0
aFR5cGVkZWZzPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVj
dCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRo
aXMtPmdsb2JhbE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC03Myw3ICs3Myw3IEBAIENhbGxiYWNrUmVz
dWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZs
b3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlv
bjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFj
a0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNl
cHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwg
SWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0
aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0
dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNl
cHRpb25UaHJvd247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uV2l0aFR5cGVkZWZzLmgJKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMgZmluYWwgOiBwdWJs
aWMgVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcz4gY3JlYXRlKEpTQzo6SlNP
YmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0
YXRpYyBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcz4gY3JlYXRlKEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RP
TUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhjYWxs
YmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVz
dENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMoZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaywgaW5j
dW1iZW50R2xvYmFsT2JqZWN0KSk7CiAgICAgfQogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLQogICAgIH5KU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzKCkgZmluYWw7CiAgICAgSlNDYWxsYmFja0RhdGFT
dHJvbmcqIGNhbGxiYWNrRGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC00Myw3ICs0MSw5
IEBAIHB1YmxpYzoKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6Oklt
cGxlbWVudGF0aW9uVHlwZT4gaGFuZGxlRXZlbnQodHlwZW5hbWUgSURMU2VxdWVuY2U8SURMTnVs
bGFibGU8SURMTG9uZz4+OjpQYXJhbWV0ZXJUeXBlIHNlcXVlbmNlQXJnLCB0eXBlbmFtZSBJRExM
b25nOjpQYXJhbWV0ZXJUeXBlIGxvbmdBcmcpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEpT
VGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMoSlNDOjpKU09iamVjdCosIEpTRE9NR2xv
YmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhKU0RP
TUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpOworCisgICAgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9
CiAKICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg1NzM5KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDkgKzEyMCw5IEBAIHRlbXBsYXRlPD4gVGVzdENh
bGxiYWNrSW50ZXJmYWNlOjpEaWN0aW8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU1Rlc3RD
YWxsYmFja0ludGVyZmFjZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoSlNPYmplY3QqIGNhbGxi
YWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogVGVzdENhbGxiYWNr
SW50ZXJmYWNlKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwg
bV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0LCB0
aGlzKSkKK0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpKU1Rlc3RDYWxsYmFja0ludGVyZmFjZShK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGJhY2ssIEpTRE9N
R2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCisgICAgOiBUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2UoZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1f
ZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9i
amVjdCwgdGhpcykpCiB7CiB9CiAKQEAgLTE4Myw3ICsxODMsNyBAQCBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1f
ZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQo
KSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0g
ICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxi
YWNrV2l0aE5vUGFyYW0iKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tl
Q2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNr
RGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJj
YWxsYmFja1dpdGhOb1BhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJu
ZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5
cGU6OkV4Y2VwdGlvblRocm93bjsKQEAgLTIwOSw3ICsyMDksNyBAQCBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1f
ZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQo
KSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0g
ICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxi
YWNrV2l0aEFycmF5UGFyYW0iKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52
b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxi
YWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJjYWxsYmFja1dpdGhBcnJheVBhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAo
cmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jl
c3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsKQEAgLTIzNiw3ICsyMzYsNyBAQCBDYWxsYmFja1Jl
c3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0
ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhp
cy0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCBDYWxsYmFja1Jl
c3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJm
bG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRp
b247Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJh
Y2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
ImNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtIiksIHJldHVybmVkRXhjZXB0
aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
aXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVl
UGFyYW0iKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikg
ewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVk
RXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9u
VGhyb3duOwpAQCAtMjY0LDcgKzI2NCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVu
ZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxP
YmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsK
ICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwpAQCAtMjc1LDcgKzI3NSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVu
ZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmlu
dm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlw
ZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoU3RyaW5n
TGlzdCIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxs
YmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0
aFN0cmluZ0xpc3QiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2Vw
dGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJl
dHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhj
ZXB0aW9uVGhyb3duOwpAQCAtMjkxLDcgKzI5MSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5n
bG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmpl
Y3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwpAQCAtMzAyLDcgKzMwMiw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETFVuZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAog
ICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2Rh
dGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxi
YWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRo
Qm9vbGVhbiIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFj
ayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpD
YWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNr
V2l0aEJvb2xlYW4iKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2Vw
dGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJl
dHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhj
ZXB0aW9uVGhyb3duOwpAQCAtMzE4LDcgKzMxOCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5n
bG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmpl
Y3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwpAQCAtMzMwLDcgKzMzMCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETFVuZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAog
ICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2Rh
dGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxi
YWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tSZXF1
aXJlc1RoaXNUb1Bhc3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tl
Q2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNr
RGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJj
YWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYg
KHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEds
b2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tS
ZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CkBAIC0zNDYsNyArMzQ2LDcgQEAgQ2FsbGJhY2tS
ZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNr
SW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVj
dCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRo
aXMtPmdsb2JhbE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC0zNTYsNyArMzU2LDcgQEAgQ2FsbGJhY2tS
ZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVy
Zmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0
aW9uOwotICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1
ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoQVJldHVyblZhbHVlIiksIHJldHVybmVkRXhj
ZXB0aW9uKTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFj
a1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aEFS
ZXR1cm5WYWx1ZSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0
aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0
dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNl
cHRpb25UaHJvd247CkBAIC0zNzUsNyArMzc1LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUg
SURMRE9NU3RyaW5nOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmds
b2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVj
dCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xk
ZXIgbG9jayh2bSk7CkBAIC0zODYsNyArMzg2LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUg
SURMRE9NU3RyaW5nOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAg
ICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8g
anNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxs
YmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiY2FsbGJhY2tUaGF0UmV0aHJvd3NFeGNlcHRpb25zIiksIHJldHVybmVkRXhjZXB0aW9uKTsK
KyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrVGhhdFJldGhyb3dzRXhj
ZXB0aW9ucyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9u
KSB7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgICAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
cmV0dXJuZWRFeGNlcHRpb24pOwpAQCAtMzk5LDMzICszOTksNiBAQCBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExET01TdHJpbmc6OkltCiAgICAgcmV0dXJuIHsgV1RGTW92ZShyZXR1cm5WYWx1
ZSkgfTsKIH0KIAotQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1l
bnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpjYWxsYmFja1RoYXRTa2lwc0lu
dm9rZUNoZWNrKHR5cGVuYW1lIElETERpY3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpE
aWN0aW9uYXJ5Pjo6UGFyYW1ldGVyVHlwZSBkaWN0aW9uYXJ5UGFyYW0pCi17Ci0gICAgUmVmPEpT
VGVzdENhbGxiYWNrSW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIGF1dG8m
IGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpOwotICAgIGF1dG8mIHZtID0g
Z2xvYmFsT2JqZWN0LnZtKCk7Ci0KLSAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgYXV0
byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKLSAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGpzVW5kZWZpbmVkKCk7Ci0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAg
ICBhcmdzLmFwcGVuZCh0b0pTPElETERpY3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpE
aWN0aW9uYXJ5Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBkaWN0aW9uYXJ5
UGFyYW0pKTsKLSAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKLQotICAgIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0
ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxi
YWNrVGhhdFNraXBzSW52b2tlQ2hlY2siKSwgcmV0dXJuZWRFeGNlcHRpb24pOwotICAgIGlmIChy
ZXR1cm5lZEV4Y2VwdGlvbikgewotICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9i
YWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVz
dWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwotICAgICB9Ci0KLSAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvIHJldHVyblZhbHVlID0gY29udmVy
dDxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIGpzUmVzdWx0KTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9u
VGhyb3duKTsKLSAgICByZXR1cm4geyBXVEZNb3ZlKHJldHVyblZhbHVlKSB9OwotfQotCiBDYWxs
YmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrV2l0aFRoaXNPYmplY3QodHlwZW5hbWUgSURM
SW50ZXJmYWNlPFRlc3ROb2RlPjo6UGFyYW1ldGVyVHlwZSB0aGlzT2JqZWN0LCB0eXBlbmFtZSBJ
RExJbnRlcmZhY2U8VGVzdE9iaj46OlBhcmFtZXRlclR5cGUgdGVzdE9ialBhcmFtKQogewogICAg
IGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKQEAgLTQzMyw3ICs0MDYsNyBAQCBDYWxsYmFja1Jl
c3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0
ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhp
cy0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTQ0NCw3ICs0MTcsNyBAQCBDYWxsYmFja1Jl
c3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJm
bG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRp
b247Ci0gICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVl
LCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhUaGlzT2JqZWN0IiksIHJldHVybmVkRXhjZXB0
aW9uKTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5
cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aFRoaXNP
YmplY3QiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikg
ewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVk
RXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9u
VGhyb3duOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrSW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmgJKHJldmlzaW9u
IDI4NTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFja0ludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyArMzMsMTEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZSBmaW5h
bCA6IHB1YmxpYyBUZXN0Q2FsbGJhY2tJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFj
aywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgUmVmPEpTVGVz
dENhbGxiYWNrSW50ZXJmYWNlPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRH
bG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RD
YWxsYmFja0ludGVyZmFjZShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlKGdsb2JhbE9iamVjdCwgY2Fs
bGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCkpOwogICAgIH0KIAotICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9Ci0KICAg
ICB+SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoKSBmaW5hbDsKICAgICBKU0NhbGxiYWNrRGF0YVN0
cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVj
dCopOwpAQCAtNTQsMTEgKzUyLDEyIEBAIHB1YmxpYzoKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBl
bmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gY2FsbGJhY2tSZXF1aXJlc1Ro
aXNUb1Bhc3ModHlwZW5hbWUgSURMTG9uZzo6UGFyYW1ldGVyVHlwZSBsb25nUGFyYW0sIHR5cGVu
YW1lIElETEludGVyZmFjZTxUZXN0Tm9kZT46OlBhcmFtZXRlclR5cGUgdGVzdE5vZGVQYXJhbSkg
b3ZlcnJpZGU7CiAgICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBs
ZW1lbnRhdGlvblR5cGU+IGNhbGxiYWNrV2l0aEFSZXR1cm5WYWx1ZSgpIG92ZXJyaWRlOwogICAg
IENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBl
PiBjYWxsYmFja1RoYXRSZXRocm93c0V4Y2VwdGlvbnModHlwZW5hbWUgSURMRW51bWVyYXRpb248
VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPjo6UGFyYW1ldGVyVHlwZSBlbnVtUGFyYW0pIG92
ZXJyaWRlOwotICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVt
ZW50YXRpb25UeXBlPiBjYWxsYmFja1RoYXRTa2lwc0ludm9rZUNoZWNrKHR5cGVuYW1lIElETERp
Y3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5Pjo6UGFyYW1ldGVyVHlw
ZSBkaWN0aW9uYXJ5UGFyYW0pIG92ZXJyaWRlOwogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBjYWxsYmFja1dpdGhUaGlzT2JqZWN0
KHR5cGVuYW1lIElETEludGVyZmFjZTxUZXN0Tm9kZT46OlBhcmFtZXRlclR5cGUgdGhpc09iamVj
dCwgdHlwZW5hbWUgSURMSW50ZXJmYWNlPFRlc3RPYmo+OjpQYXJhbWV0ZXJUeXBlIHRlc3RPYmpQ
YXJhbSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2Uo
SlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2UoSlNET01HbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNP
YmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KTsKKworICAg
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiAqSlNDOjpq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2Jh
bE9iamVjdCgpKTsgfQogCiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIG1fZGF0YTsKIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZl
ZERpY3Rpb25hcnkyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNwcAkocmV2aXNpb24gMjg1
NzM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
cml2ZWREaWN0aW9uYXJ5Mi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgdGVt
cGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkyIGNvbnZlcgogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1i
ZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PigmbGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIg
PSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHN0cmluZ01lbWJlclZh
bHVlOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5
Mjo6RGljdGkKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwog
ICAgIH0KICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAg
ICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248
SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVl
LCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAg
ICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9u
PEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1
ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9
CiAgICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlOwpAQCAtMTg4LDcgKzE4OCw3
IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGkKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRp
YWxDYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LnBh
cnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRD
YWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVl
LCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAg
ICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tG
dW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxs
YmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RE
ZXJpdmVkRGljdGlvbmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcAkocmV2aXNpb24g
Mjg1NzM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlcml2ZWREaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB0
ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeSBjb252ZXJ0CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjYWxsYmFja01l
bWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVy
ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEds
b2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJl
ciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgcGFydGlhbEJvb2xl
YW5NZW1iZXJWYWx1ZTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVk
RGljdGlvbmFyeSBjb252ZXJ0CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBjb252
ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJh
Y2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1
ZSBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5jcHAJKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5
Mi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgdGVtcGxhdGU8PiBUZXN0SW5o
ZXJpdGVkRGljdGlvbmFyeTIgY29udgogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2Fs
bGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxi
YWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2Jh
bE9iamVjdCkpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENh
bGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxs
YmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHN0cmluZ01lbWJlclZhbHVlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rp
b25hcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMjg1NzM5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRl
ZERpY3Rpb25hcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHRlbXBsYXRl
PD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkgY29udmUKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFs
dWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252
ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxl
eGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29u
dmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJl
clZhbHVlOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rp
b25hcnkgY29udmUKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0p
OwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKLSAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURM
Q2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBh
cnRpYWxDYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxl
eGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJl
ciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHBhcnRp
YWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyODU3
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwOSwxMCArMjAwOSwxMCBAQCB0ZW1wbGF0ZTw+IEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfCiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1l
bnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQp
OwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gdGVzdENhbGxiYWNrID0gY29udmVydDxJRExDYWxs
YmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgMCwgInRlc3RDYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgbnVsbHB0cik7IH0p
OworICAgIGF1dG8gdGVzdENhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9iamVjdCIs
IG51bGxwdHIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rp
b24gPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24i
LCAiVGVzdE9iamVjdCIsIG51bGxwdHIpOyB9KTsKKyAgICBhdXRvIHRlc3RDYWxsYmFja0Z1bmN0
aW9uID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsg
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIDEsICJ0ZXN0Q2FsbGJhY2tGdW5jdGlvbiIsICJUZXN0T2JqZWN0IiwgbnVsbHB0cik7IH0p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgYXV0byBvYmplY3QgPSBUZXN0T2JqOjpjcmVhdGUoZG9jdW1lbnQsIHRlc3RDYWxsYmFj
ay5yZWxlYXNlTm9uTnVsbCgpLCB0ZXN0Q2FsbGJhY2tGdW5jdGlvbi5yZWxlYXNlTm9uTnVsbCgp
KTsKICAgICBzdGF0aWNfYXNzZXJ0KFR5cGVPckV4Y2VwdGlvbk9yVW5kZXJseWluZ1R5cGU8ZGVj
bHR5cGUob2JqZWN0KT46OmlzUmVmKTsKQEAgLTM0NDMsNyArMzQ0Myw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RPYmpfc3RyaW5nVm8KICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJRExD
YWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZh
bHVlLCAqdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMUmVjb3JkPElETERPTVN0cmluZywgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Zv
aWRDYWxsYmFjaz4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CiAgICAgaW52b2tlRnVuY3RvclByb3BhZ2F0
aW5nRXhjZXB0aW9uSWZOZWNlc3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdIHsKICAgICAgICAgcmV0dXJuIGltcGwuc2V0U3RyaW5nVm9pZENhbGxiYWNrUmVjb3JkQXR0
cihXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CkBAIC02OTU5LDcgKzY5NTksNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJh
Y2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNl
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CisgICAgYXV0byBjYWxs
YmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUp
IHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tJbnRl
cmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ2Fs
bGJhY2tJbnRlcmZhY2VBcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkBA
IC02OTc5LDcgKzY5NzksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElE
TENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE51bGxh
YmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5tZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNr
KSk7IH0pKSk7CiB9CkBAIC03MDAyLDcgKzcwMDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byBub25DYWxsYmFjayA9IGNvbnZlcnQ8SURMTG9u
Zz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
OwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVz
dENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1
ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2Fs
bGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdB
bmRDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVy
dDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3Vt
ZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJjYWxs
YmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0ludGVyZmFjZUFyZ0Fu
ZENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93
U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwu
bWV0aG9kV2l0aE5vbkNhbGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmco
V1RGTW92ZShub25DYWxsYmFjayksIGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkpOwog
fQpAQCAtNzAyMCw3ICs3MDIwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGFyZ3VtZW50
MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8
SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pjo6UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxs
YmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlv
bmFsQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGFyZ3Vt
ZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZh
Y2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pjo6UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExD
YWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVz
dEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnIik7
IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgp
IC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJh
Y2tJbnRlcmZhY2VBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzAzOCw3ICs3
MDM4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURM
Q2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dT
Y29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
T3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOworICAgIGF1dG8gY2Fs
bGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENh
bGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVk
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0
bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJm
YWNlQXJnKFdURk1vdmUoY2FsbGJhY2spKTsgfSkpKTsKIH0KQEAgLTcwNTgsNyArNzA1OCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBpZiAoVU5MSUtF
TFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAg
YXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAg
IGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENh
bGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkp
KTsKIH0KQEAgLTcwNzgsNyArNzA3OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVs
bGFibGU8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJt
ZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAgIGF1dG8gY2Fs
bGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvbj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCks
IFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dT
Y29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1
cm4gaW1wbC5tZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2Fs
bGJhY2spKTsgfSkpKTsKIH0KQEAgLTcxMDEsNyArNzEwMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIG5vbkNhbGxiYWNrID0gY29udmVydDxJ
RExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMSk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52
YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEs
ICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENh
bGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURM
Q2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0
QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2si
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0
aW9uQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5vbkNh
bGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKG5vbkNhbGxiYWNrKSwgY2Fs
bGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkBAIC03MTE5LDcgKzcxMTksNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgw
KTsKLSAgICBhdXRvIGNhbGxiYWNrID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/
IENvbnZlcnRlcjxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pjo6
UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNr
RnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9
KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/
IENvbnZlcnRlcjxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pjo6
UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNr
RnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRp
b25hbENhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2sp
KTsgfSkpKTsKIH0KQEAgLTcxMzcsNyArNzEzNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29w
ZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sg
PSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwg
IlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9u
QXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENh
bGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlv
bkFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25h
bE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9
CkBAIC03MTU0LDcgKzcxNTQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShj
YWxsRnJhbWUpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxl
PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0
QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwg
IlRlc3RPYmplY3QiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsg
fSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJ
bnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmpl
Y3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RP
YmplY3QiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsgfSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5k
T3B0aW9uYWxBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzE3Myw3ICs3MTcz
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlmIChV
TkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
LSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RD
YWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUo
KSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAic3RhdGljTWV0aG9kV2l0
aENhbGxiYWNrQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxi
YWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVP
YmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRl
c3RPYmplY3QiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIik7IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIFRlc3RPYmo6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyhjYWxsYmFj
ay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkpKTsKIH0KQEAgLTczMDMsNyArNzMwMyw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNl
PEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhy
b3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAw
LCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7IH0pOworICAg
IGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxi
YWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBb
XShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2Nv
cGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1l
dGhvZCIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
LCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2Qo
Y2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAJKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlv
bmFyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgdGVtcGxhdGU8PiBEaWN0
aW9uYXJ5SW1wbE5hbWUgY29udmVydERpYwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURM
Q2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNh
bGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEds
b2JhbE9iamVjdCkpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElE
TENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
YWxsYmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIGVudW1NZW1iZXJWYWx1ZTsKQEAgLTEzNiw3
ICsxMzYsNyBAQCB0ZW1wbGF0ZTw+IERpY3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGljCiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYg
KCFwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJl
c3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248
SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQ2FsbGJhY2tNZW1i
ZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENh
bGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0
aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAko
cmV2aXNpb24gMjg1NzM5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDEwICsxNjgsMTAg
QEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMXwogICAgIGF1dG8gaGVs
bG8gPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24g
PSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAi
VGVzdFR5cGVkZWZzIiwgbnVsbHB0cik7IH0pOworICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rp
b24gPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0
aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgMSwgInRlc3RDYWxsYmFja0Z1bmN0aW9uIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOyB9
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDIpOwotICAgIGF1dG8gdGVzdENhbGxiYWNrSW50ZXJmYWNlID0gY29udmVy
dDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDIudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzY29wZSwgMiwgInRlc3RDYWxsYmFja0ludGVyZmFjZSIsICJUZXN0VHlw
ZWRlZnMiLCBudWxscHRyKTsgfSk7CisgICAgYXV0byB0ZXN0Q2FsbGJhY2tJbnRlcmZhY2UgPSBj
b252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMiwg
InRlc3RDYWxsYmFja0ludGVyZmFjZSIsICJUZXN0VHlwZWRlZnMiLCBudWxscHRyKTsgfSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBhdXRvIG9iamVjdCA9IFRlc3RUeXBlZGVmczo6Y3JlYXRlKFdURk1vdmUoaGVsbG8pLCB0ZXN0
Q2FsbGJhY2tGdW5jdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCB0ZXN0Q2FsbGJhY2tJbnRlcmZhY2Uu
cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgc3RhdGljX2Fzc2VydChUeXBlT3JFeGNlcHRpb25PclVu
ZGVybHlpbmdUeXBlPGRlY2x0eXBlKG9iamVjdCk+Ojppc1JlZik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4NTczOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tG
dW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDkgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLUpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0
aW9uOjpKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbihKU09iamVjdCogY2FsbGJhY2ssIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBUZXN0Vm9pZENhbGxiYWNrRnVuY3Rp
b24oZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2RhdGEo
bmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QsIHRoaXMpKQor
SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb246OkpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uKEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01H
bG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICA6IFRlc3RWb2lkQ2FsbGJh
Y2tGdW5jdGlvbihnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwg
bV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFs
T2JqZWN0LCB0aGlzKSkKIHsKIH0KIApAQCAtNjgsNyArNjgsNyBAQCBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Vm9pZENhbGxiYWNrRnVu
Y3Rpb24+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0g
Km1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+
Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTg0LDcgKzg0LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8
dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2Vk
KCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwot
ICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0
YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlv
bik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVu
dGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24p
IHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5l
ZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlv
blRocm93bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5oCShy
ZXZpc2lvbiAyODU3MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMg
KzMxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNUZXN0Vm9pZENhbGxiYWNr
RnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uPiBjcmVhdGUoSlND
OjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisg
ICAgc3RhdGljIFJlZjxKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbj4gY3JlYXRlKEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUds
b2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oY2FsbGJhY2ssIGdsb2Jh
bE9iamVjdCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RWb2lkQ2FsbGJh
Y2tGdW5jdGlvbihnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3Qp
KTsKICAgICB9CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsgfQotCiAgICAgfkpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9u
KCkgZmluYWw7CiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIGNhbGxiYWNrRGF0YSgpIHsgcmV0
dXJuIG1fZGF0YTsgfQogCkBAIC00NSw3ICs0Myw5IEBAIHB1YmxpYzoKICAgICBDYWxsYmFja1Jl
c3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gaGFuZGxlRXZl
bnQodHlwZW5hbWUgSURMRmxvYXQzMkFycmF5OjpQYXJhbWV0ZXJUeXBlIGFycmF5UGFyYW0sIHR5
cGVuYW1lIElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+OjpQ
YXJhbWV0ZXJUeXBlIHNyelBhcmFtLCB0eXBlbmFtZSBJRExET01TdHJpbmc6OlBhcmFtZXRlclR5
cGUgc3RyQXJnLCB0eXBlbmFtZSBJRExCb29sZWFuOjpQYXJhbWV0ZXJUeXBlIGJvb2xQYXJhbSwg
dHlwZW5hbWUgSURMTG9uZzo6UGFyYW1ldGVyVHlwZSBsb25nUGFyYW0sIHR5cGVuYW1lIElETElu
dGVyZmFjZTxUZXN0Tm9kZT46OlBhcmFtZXRlclR5cGUgdGVzdE5vZGVQYXJhbSkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oSlNDOjpKU09iamVj
dCosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24o
SlNET01HbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqLCBK
U0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KTsKKworICAgIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiAqSlNDOjpqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgp
KTsgfQogCiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIG1fZGF0YTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZUZpbHRlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL05vZGVGaWx0ZXIuaWRsCShyZXZpc2lvbiAyODU3MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZUZpbHRlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAKIAog
WwogICAgIElzV2Vha0NhbGxiYWNrLAorICAgIFNraXBDYWxsYmFja0ludm9rZUNoZWNrLAogICAg
IEV4cG9zZWQ9V2luZG93CiBdIGNhbGxiYWNrIGludGVyZmFjZSBOb2RlRmlsdGVyIHsKICAgICAv
LyBDb25zdGFudHMgZm9yIGFjY2VwdE5vZGUoKS4KQEAgLTQyLDUgKzQzLDUgQEAKICAgICBjb25z
dCB1bnNpZ25lZCBsb25nIFNIT1dfRE9DVU1FTlRfRlJBR01FTlQgPSAweDAwMDAwNDAwOwogICAg
IGNvbnN0IHVuc2lnbmVkIGxvbmcgU0hPV19OT1RBVElPTiA9IDB4MDAwMDA4MDA7IC8vIEhpc3Rv
cmljYWwuCiAKLSAgICBbU2tpcENhbGxiYWNrSW52b2tlQ2hlY2ssIFJldGhyb3dFeGNlcHRpb25d
IHVuc2lnbmVkIHNob3J0IGFjY2VwdE5vZGUoTm9kZSBub2RlKTsKKyAgICBbUmV0aHJvd0V4Y2Vw
dGlvbl0gdW5zaWduZWQgc2hvcnQgYWNjZXB0Tm9kZShOb2RlIG5vZGUpOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
LmgJKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSwg
UmVmPEpTQzo6Vk0+JiYsIFdvcmtlck9yV29ya2xldFRocmVhZCopOwogCiAgICAgLy8gU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC4KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gY29uc3RfY2FzdDxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSo+KHRoaXMpOyB9CiAgICAgYm9vbCBpc0pTRXhlY3V0aW9uRm9yYmlk
ZGVuKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIG1hcmtBc0Nsb3NpbmcoKSB7IG1faXNDbG9z
aW5nID0gdHJ1ZTsgfQpAQCAtOTAsNyArOTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVyZWZT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKICAgICAvLyBFdmVu
dFRhcmdldC4KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gY29uc3RfY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSo+KHRoaXMpOyB9CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVm
KCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2Jh
bFNjb3BlLmNwcAkocmV2aXNpb24gMjg1NzM5KQorKysgU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNyArMTMz
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0R2xvYmFsU2NvcAogICAgICAgICBp
ZiAocGFpbnRWYWx1ZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgIlRoZSBjbGFzcyBtdXN0IGhhdmUgYSBwYWludCBtZXRob2QiIH07CiAK
LSAgICAgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252ZXJ0PElETENh
bGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oZ2xvYmFsT2JqZWN0LCBwYWludFZh
bHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCkpOworICAgICAg
ICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tG
dW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihnbG9iYWxPYmplY3QsIHBhaW50VmFsdWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBFeGlzdGluZ0V4
Y2VwdGlvbkVycm9yIH0pOwogCiAgICAgICAgIGF1dG8gcGFpbnREZWZpbml0aW9uID0gbWFrZVVu
aXF1ZTxQYWludERlZmluaXRpb24+KG5hbWUsIHBhaW50Q29uc3RydWN0b3IuZ2V0KCksIHBhaW50
LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoaW5wdXRQcm9wZXJ0aWVzKSwgV1RGTW92ZShpbnB1
dEFyZ3VtZW50cykpOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL0N1c3RvbVhQYXRoTlNS
ZXNvbHZlci5pZGwJKHJldmlzaW9uIDI4NTczOSkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9DdXN0
b21YUGF0aE5TUmVzb2x2ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAg
Ki8KIAogLy8gTm90IHVzaW5nIFtJc1dlYWtDYWxsYmFja10gaGVyZSBhcyBYUGF0aE5TUmVzb2x2
ZXIgd3JhcHBlcnMgYWx3YXlzIHRlbXBvcmFyeSAobm8gcmVmZXJlbmNlIGlzIGtlcHQpCi1jYWxs
YmFjayBpbnRlcmZhY2UgQ3VzdG9tWFBhdGhOU1Jlc29sdmVyIHsKLSAgICBbSW1wbGVtZW50ZWRB
cz1sb29rdXBOYW1lc3BhY2VVUklGb3JCaW5kaW5ncywgU2tpcENhbGxiYWNrSW52b2tlQ2hlY2td
IERPTVN0cmluZz8gbG9va3VwTmFtZXNwYWNlVVJJKERPTVN0cmluZz8gcHJlZml4KTsKK1sKKyAg
ICBTa2lwQ2FsbGJhY2tJbnZva2VDaGVjaywKK10gY2FsbGJhY2sgaW50ZXJmYWNlIEN1c3RvbVhQ
YXRoTlNSZXNvbHZlciB7CisgICAgW0ltcGxlbWVudGVkQXM9bG9va3VwTmFtZXNwYWNlVVJJRm9y
QmluZGluZ3NdIERPTVN0cmluZz8gbG9va3VwTmFtZXNwYWNlVVJJKERPTVN0cmluZz8gcHJlZml4
KTsKIH07CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU3MzkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMS0xMiAgQWxleGV5IFNo
dmF5a2EgIDxhc2h2YXlrYUBhcHBsZS5jb20+CisKKyAgICAgICAgSlNDYWxsYmFja0RhdGEgc2hv
dWxkIHVzZSBsZXhpY2FsIGdsb2JhbCBvYmplY3QgZm9yIGVycm9ycyBhbmQgbGlmZWN5Y2xlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIzODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICAqIGZhc3QvZG9tL0dl
b2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0Lmh0
bWw6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhbGxiYWNrLXRv
LWRlbGV0ZWQtY29udGV4dC1pbm5lcjEuaHRtbDoKKwogMjAyMS0xMS0xMiAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0
aW5nIHIyODU2MzkuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9hcmd1
bWVudC10eXBlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL2FyZ3VtZW50LXR5cGVzLmh0bWwJKHJldmlzaW9uIDI4NTczOSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2FyZ3VtZW50LXR5cGVzLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDcgKzQ4LDcgQEAgdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQbwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihvYmpl
Y3RUaHJvd2luZ0V4Y2VwdGlvbiknLCB0cnVlLCAiVHlwZUVycm9yOiBBcmd1bWVudCAxICgnc3Vj
Y2Vzc0NhbGxiYWNrJykgdG8gR2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uIG11c3QgYmUg
YSBmdW5jdGlvbiIpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3Np
dGlvbihlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24oTWF0aC5hYnMpJywgZmFsc2UpOwotdGVzdCgnbmF2aWdhdG9y
Lmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbih0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9u
UGVybWlzc2lvbiknLCBmYWxzZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvc2l0aW9uKCgpID0+IHRlc3RSdW5uZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKCkp
JywgZmFsc2UpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bih0cnVlKScsIHRydWUsICJUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdzdWNjZXNzQ2FsbGJhY2sn
KSB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBhIGZ1bmN0aW9uIik7
CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKDQyKScsIHRy
dWUsICJUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdzdWNjZXNzQ2FsbGJhY2snKSB0byBHZW9sb2Nh
dGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBhIGZ1bmN0aW9uIik7CiB0ZXN0KCduYXZp
Z2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKEluZmluaXR5KScsIHRydWUsICJU
eXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdzdWNjZXNzQ2FsbGJhY2snKSB0byBHZW9sb2NhdGlvbi5n
ZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBhIGZ1bmN0aW9uIik7CkBAIC02MSw3ICs2MSw3IEBA
IHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG8KIHRlc3QoJ25hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgb2JqZWN0VGhy
b3dpbmdFeGNlcHRpb24pJywgdHJ1ZSwgIlR5cGVFcnJvcjogQXJndW1lbnQgMiAoJ2Vycm9yQ2Fs
bGJhY2snKSB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBhIGZ1bmN0
aW9uIik7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVt
cHR5RnVuY3Rpb24sIGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwogdGVzdCgnbmF2aWdhdG9yLmdl
b2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCBNYXRoLmFicyknLCBm
YWxzZSk7Ci10ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVt
cHR5RnVuY3Rpb24sIHRlc3RSdW5uZXIuc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKScsIGZhbHNl
KTsKK3Rlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlG
dW5jdGlvbiwgKCkgPT4gdGVzdFJ1bm5lci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oKSknLCBm
YWxzZSk7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVt
cHR5RnVuY3Rpb24sIHRydWUpJywgdHJ1ZSwgIlR5cGVFcnJvcjogQXJndW1lbnQgMiAoJ2Vycm9y
Q2FsbGJhY2snKSB0byBHZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24gbXVzdCBiZSBhIGZ1
bmN0aW9uIik7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGVtcHR5RnVuY3Rpb24sIDQyKScsIHRydWUsICJUeXBlRXJyb3I6IEFyZ3VtZW50IDIgKCdlcnJv
ckNhbGxiYWNrJykgdG8gR2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uIG11c3QgYmUgYSBm
dW5jdGlvbiIpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bihlbXB0eUZ1bmN0aW9uLCBJbmZpbml0eSknLCB0cnVlLCAiVHlwZUVycm9yOiBBcmd1bWVudCAy
ICgnZXJyb3JDYWxsYmFjaycpIHRvIEdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbiBtdXN0
IGJlIGEgZnVuY3Rpb24iKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250
ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjg1NzM5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwxMCBAQAogZnJhbWUgIjwhLS1mcmFtZTEtLT4iIC0g
aGFzIDEgb251bmxvYWQgaGFuZGxlcihzKQotVGVzdHMgdGhhdCB3aGVuIGEgR2VvbG9jYXRpb24g
cmVxdWVzdCBpcyBtYWRlIGZyb20gYSByZW1vdGUgZnJhbWUsIGFuZCB0aGF0IGZyYW1lJ3Mgc2Ny
aXB0IGNvbnRleHQgZ29lcyBhd2F5IGJlZm9yZSB0aGUgR2VvbG9jYXRpb24gY2FsbGJhY2sgaXMg
bWFkZSwgdGhlIGNhbGxiYWNrIGlzIG5vdCBtYWRlLiBJZiB0aGUgY2FsbGJhY2sgaXMgYXR0ZW1w
dGVkLCBhIGNyYXNoIHdpbGwgb2NjdXIuCitUZXN0cyB0aGF0IHdoZW4gYSBHZW9sb2NhdGlvbiBy
ZXF1ZXN0IGlzIG1hZGUgZnJvbSBhIHJlbW90ZSBmcmFtZSwgY2FsbGJhY2tzIGFyZSBtYWRlIGFz
IHVzdWFsIGV2ZW4gaWYgdGhhdCBmcmFtZSdzIGJyb3dzaW5nIGNvbnRleHQgaXMgYWxyZWFkeSBu
dWxsLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBObyBjYWxsYmFja3Mg
aW52b2tlZAorUEFTUyBTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRl
ZC1jb250ZXh0Lmh0bWwJKHJldmlzaW9uIDI4NTczOSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC01LDcgKzUsNyBAQAogPC9oZWFkPgogPGJvZHk+CiA8c2NyaXB0PgotZGVzY3JpcHRp
b24oIlRlc3RzIHRoYXQgd2hlbiBhIEdlb2xvY2F0aW9uIHJlcXVlc3QgaXMgbWFkZSBmcm9tIGEg
cmVtb3RlIGZyYW1lLCBhbmQgdGhhdCBmcmFtZSdzIHNjcmlwdCBjb250ZXh0IGdvZXMgYXdheSBi
ZWZvcmUgdGhlIEdlb2xvY2F0aW9uIGNhbGxiYWNrIGlzIG1hZGUsIHRoZSBjYWxsYmFjayBpcyBu
b3QgbWFkZS4gSWYgdGhlIGNhbGxiYWNrIGlzIGF0dGVtcHRlZCwgYSBjcmFzaCB3aWxsIG9jY3Vy
LiIpOworZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2hlbiBhIEdlb2xvY2F0aW9uIHJlcXVlc3Qg
aXMgbWFkZSBmcm9tIGEgcmVtb3RlIGZyYW1lLCBjYWxsYmFja3MgYXJlIG1hZGUgYXMgdXN1YWwg
ZXZlbiBpZiB0aGF0IGZyYW1lJ3MgYnJvd3NpbmcgY29udGV4dCBpcyBhbHJlYWR5IG51bGwuIik7
CiAKIGZ1bmN0aW9uIG9uRmlyc3RJZnJhbWVMb2FkZWQoKSB7CiAgICAgaWZyYW1lLnNyYyA9ICdy
ZXNvdXJjZXMvY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0LWlubmVyMi5odG1sJzsKQEAgLTEz
LDcgKzEzLDcgQEAgZnVuY3Rpb24gb25GaXJzdElmcmFtZUxvYWRlZCgpIHsKIAogZnVuY3Rpb24g
b25TZWNvbmRJZnJhbWVMb2FkZWQoKSB7CiAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoJ05vIGNhbGxiYWNrcyBpbnZva2VkJyk7CisgICAgICAg
IHRlc3RGYWlsZWQoJ05vIGNhbGxiYWNrcyBpbnZva2VkJyk7CiAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOwogICAgIH0sIDUwMCk7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9yZXNvdXJjZXMvY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0LWlubmVyMS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy9j
YWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtaW5uZXIxLmh0bWwJKHJldmlzaW9uIDI4NTczOSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy9jYWxsYmFjay10
by1kZWxldGVkLWNvbnRleHQtaW5uZXIxLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDcgKzEz
LDcgQEAKICAgICAgICAgICAvLyBNYWtlIHJlcXVlc3QgZnJvbSByZW1vdGUgZnJhbWUsIHRoaXMg
ZnJhbWUgd2lsbCBiZSBnb25lIGJ5IHRoZSB0aW1lIHRoZSBHZW9sb2NhdGlvbgogICAgICAgICAg
IC8vIG9iamVjdCBhdHRlbXB0cyB0byBpbnZva2UgdGhlIGNhbGxiYWNrLgogICAgICAgICAgIHdp
bmRvdy5wYXJlbnQubmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgcGFyZW50LnRlc3RGYWlsZWQoJ1N1Y2Nlc3MgY2FsbGJh
Y2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKKyAgICAgICAgICAgICAgcGFyZW50LnRlc3RQYXNz
ZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCcpOwogICAgICAgICAgICAgICBwYXJlbnQuZmlu
aXNoSlNUZXN0KCk7CiAgICAgICAgICAgfSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgIHBh
cmVudC50ZXN0RmFpbGVkKCdFcnJvciBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwpJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU3MzkpCisrKyBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMjEtMTEtMTIgIEFsZXhleSBTaHZheWthICA8YXNodmF5a2FAYXBwbGUuY29t
PgorCisgICAgICAgIEpTQ2FsbGJhY2tEYXRhIHNob3VsZCB1c2UgbGV4aWNhbCBnbG9iYWwgb2Jq
ZWN0IGZvciBlcnJvcnMgYW5kIGxpZmVjeWNsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMzg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYg
R2FyZW4uCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVl
V2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1h
Y2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dzaW5nLWNvbnRleHQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNh
bC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3Npbmct
Y29udGV4dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3Ry
YXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL3N1cHBvcnQv
VHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dzaW5nLWNv
bnRleHQtc3ViZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2RvbS90cmF2ZXJzYWwvc3VwcG9ydC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3Nz
LXJlYWxtLXN1YmZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIxLTExLTEyICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRp
bmcgcjI4NTYzOS4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJl
YWxtLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZp
bHRlci1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxr
ZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNyBAQAorCisKK1BBU1MgcGFyZW50J3MgfHRoaXN8LCBwYXJlbnQncyBt
ZXRob2QsIHBhcmVudCdzIGZpbHRlciwgcGFyZW50J3Mgcm9vdAorUEFTUyBwYXJlbnQncyB8dGhp
c3wsIHBhcmVudCdzIG1ldGhvZCwgcGFyZW50J3MgZmlsdGVyLCBpZnJhbWUncyByb290CitQQVNT
IHBhcmVudCdzIHx0aGlzfCwgcGFyZW50J3MgbWV0aG9kLCBpZnJhbWUncyBmaWx0ZXIsIGlmcmFt
ZSdzIHJvb3QKK1BBU1MgcGFyZW50J3MgfHRoaXN8LCBpZnJhbWVzJ3MgbWV0aG9kLCBpZnJhbWUn
cyBmaWx0ZXIsIGlmcmFtZSdzIHJvb3QKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1m
aWx0ZXItY3Jvc3MtcmVhbG0tbnVsbC1icm93c2luZy1jb250ZXh0LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Rv
bS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxs
LWJyb3dzaW5nLWNvbnRleHQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fs
a2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3NpbmctY29udGV4dC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgVHJlZVdh
bGtlcjogTm9kZUZpbHRlciBmcm9tIGRldGFjaGVkIGlmcmFtZSB3b3JrcyBhcyBleHBlY3RlZAor
CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90
cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJy
b3dzaW5nLWNvbnRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2Rl
LWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dzaW5nLWNvbnRleHQuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90
cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJy
b3dzaW5nLWNvbnRleHQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5UcmVlV2Fsa2VyOiBO
b2RlRmlsdGVyIGZyb20gZGV0YWNoZWQgaWZyYW1lIHdvcmtzIGFzIGV4cGVjdGVkPC90aXRsZT4K
KzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNyZWYt
Zm9yLWNhbGwtYS11c2VyLW9iamVjdHMtb3BlcmF0aW9uJUUyJTkxJUEwIj4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKworPGJvZHk+Cis8c2NyaXB0
PgorY29uc3QgdCA9IGFzeW5jX3Rlc3QoKTsKKworY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaWZyYW1lIik7CitpZnJhbWUuc3JjID0gInN1cHBvcnQvVHJlZVdhbGtlci1h
Y2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dzaW5nLWNvbnRleHQtc3ViZnJh
bWUuaHRtbCI7CitpZnJhbWUub25sb2FkID0gdC5zdGVwX2Z1bmNfZG9uZSgoKSA9PiB7CisgICAg
Y29uc3Qgbm9kZUl0ZXJhdG9yID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY3JlYXRlTm9kZUl0ZXJh
dG9yKCk7CisgICAgaWZyYW1lLnJlbW92ZSgpOworCisgICAgYXNzZXJ0X2VxdWFscyhpZnJhbWUu
Y29udGVudFdpbmRvdywgbnVsbCk7CisgICAgYXNzZXJ0X2VxdWFscyhub2RlSXRlcmF0b3IubmV4
dE5vZGUoKSwgZG9jdW1lbnQuYm9keSk7CisgICAgYXNzZXJ0X3RydWUobm9kZUl0ZXJhdG9yLmR1
bW15RmlsdGVyQ2FsbGVkKTsKK30pOworCitkb2N1bWVudC5ib2R5LmFwcGVuZChpZnJhbWUpOwor
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFs
bS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3Nz
LXJlYWxtLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0
ZXItY3Jvc3MtcmVhbG0uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIxIEBACis8IURP
Q1RZUEUgaHRtbD4KKzx0aXRsZT5UcmVlV2Fsa2VyOiBjcm9zcy1yZWFsbSBOb2RlRmlsdGVyIHRo
cm93cyBUeXBlRXJyb3Igb2YgY3VycmVudCByZWFsbTwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9
Imh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jY2FsbC1hLXVzZXItb2JqZWN0cy1vcGVy
YXRpb24iPgorCis8Ym9keSBpZD0idHJlZVdhbGtlclJvb3QiPgorPGRpdj48L2Rpdj4KKworPHNj
cmlwdD4KK2NvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwor
aWZyYW1lLnNyYyA9ICJzdXBwb3J0L1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3Mt
cmVhbG0tc3ViZnJhbWUuaHRtbCI7CitpZnJhbWUub25sb2FkID0gKCkgPT4geworICAgIGZvciAo
Y29uc3QgdGVzdENhc2Ugb2YgaWZyYW1lLmNvbnRlbnRXaW5kb3cudGVzdENhc2VzKSB7CisgICAg
ICAgIHRlc3QodCA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRlc3RDYXNlLmFjdHVh
bC5jb25zdHJ1Y3RvciwgdGVzdENhc2UuZXhwZWN0ZWQpOworICAgICAgICB9LCB0ZXN0Q2FzZS5k
ZXNjcmlwdGlvbik7CisgICAgfQorfTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kKGlmcmFtZSk7Cis8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZG9tL3RyYXZlcnNhbC9zdXBwb3J0L1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jv
c3MtcmVhbG0tbnVsbC1icm93c2luZy1jb250ZXh0LXN1YmZyYW1lLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVy
c2FsL3N1cHBvcnQvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxs
LWJyb3dzaW5nLWNvbnRleHQtc3ViZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvc3VwcG9y
dC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3Npbmct
Y29udGV4dC1zdWJmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwh
RE9DVFlQRSBodG1sPgorCis8c2NyaXB0PgorZnVuY3Rpb24gY3JlYXRlTm9kZUl0ZXJhdG9yKCkg
eworICAgIGZ1bmN0aW9uIGZpbHRlcigpIHsKKyAgICAgICAgbm9kZUl0ZXJhdG9yLmR1bW15Rmls
dGVyQ2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGNvbnN0
IG5vZGVJdGVyYXRvciA9IHBhcmVudC5kb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IocGFyZW50
LmRvY3VtZW50LmJvZHksIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCBmaWx0ZXIpOworICAgIG5v
ZGVJdGVyYXRvci5kdW1teUZpbHRlckNhbGxlZCA9IGZhbHNlOworICAgIHJldHVybiBub2RlSXRl
cmF0b3I7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9zdXBwb3J0L1RyZWVXYWxrZXItYWNjZXB0Tm9k
ZS1maWx0ZXItY3Jvc3MtcmVhbG0tc3ViZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvc3VwcG9y
dC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLXN1YmZyYW1lLmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9kb20vdHJhdmVyc2FsL3N1cHBvcnQvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1j
cm9zcy1yZWFsbS1zdWJmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjIgQEAK
KzwhRE9DVFlQRSBodG1sPgorCis8Ym9keSBpZD0idHJlZVdhbGtlclJvb3QiPgorPGRpdj48L2Rp
dj4KKworPHNjcmlwdD4KK3dpbmRvdy50ZXN0Q2FzZXMgPSBbXTsKKworKGZ1bmN0aW9uKCkgewor
ICAgIGxldCB3YWxrZXIgPSBwYXJlbnQuZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihwYXJlbnQu
dHJlZVdhbGtlclJvb3QsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCBuZXcgcGFyZW50Lk9iamVj
dCk7CisgICAgdHJ5IHsgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsgfSBjYXRjaCAoZXJyKSB7IHRlc3RD
YXNlcy5wdXNoKHsgYWN0dWFsOiBlcnIsIGV4cGVjdGVkOiBwYXJlbnQuVHlwZUVycm9yLCBkZXNj
cmlwdGlvbjogInBhcmVudCdzIHx0aGlzfCwgcGFyZW50J3MgbWV0aG9kLCBwYXJlbnQncyBmaWx0
ZXIsIHBhcmVudCdzIHJvb3QiIH0pOyB9CisKKyAgICB3YWxrZXIgPSBwYXJlbnQuZG9jdW1lbnQu
Y3JlYXRlVHJlZVdhbGtlcih0cmVlV2Fsa2VyUm9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQs
IG5ldyBwYXJlbnQuT2JqZWN0KTsKKyAgICB0cnkgeyB3YWxrZXIuZmlyc3RDaGlsZCgpOyB9IGNh
dGNoIChlcnIpIHsgdGVzdENhc2VzLnB1c2goeyBhY3R1YWw6IGVyciwgZXhwZWN0ZWQ6IHBhcmVu
dC5UeXBlRXJyb3IsIGRlc2NyaXB0aW9uOiAicGFyZW50J3MgfHRoaXN8LCBwYXJlbnQncyBtZXRo
b2QsIHBhcmVudCdzIGZpbHRlciwgaWZyYW1lJ3Mgcm9vdCIgfSk7IH0KKworICAgIHdhbGtlciA9
IHBhcmVudC5kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHRyZWVXYWxrZXJSb290LCBOb2RlRmls
dGVyLlNIT1dfRUxFTUVOVCwge30pOworICAgIHRyeSB7IHdhbGtlci5maXJzdENoaWxkKCk7IH0g
Y2F0Y2ggKGVycikgeyB0ZXN0Q2FzZXMucHVzaCh7IGFjdHVhbDogZXJyLCBleHBlY3RlZDogcGFy
ZW50LlR5cGVFcnJvciwgZGVzY3JpcHRpb246ICJwYXJlbnQncyB8dGhpc3wsIHBhcmVudCdzIG1l
dGhvZCwgaWZyYW1lJ3MgZmlsdGVyLCBpZnJhbWUncyByb290IiB9KTsgfQorCisgICAgd2Fsa2Vy
ID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlci5jYWxsKHBhcmVudC5kb2N1bWVudCwgdHJlZVdh
bGtlclJvb3QsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCB7fSk7CisgICAgdHJ5IHsgd2Fsa2Vy
LmZpcnN0Q2hpbGQoKTsgfSBjYXRjaCAoZXJyKSB7IHRlc3RDYXNlcy5wdXNoKHsgYWN0dWFsOiBl
cnIsIGV4cGVjdGVkOiBUeXBlRXJyb3IsIGRlc2NyaXB0aW9uOiAicGFyZW50J3MgfHRoaXN8LCBp
ZnJhbWVzJ3MgbWV0aG9kLCBpZnJhbWUncyBmaWx0ZXIsIGlmcmFtZSdzIHJvb3QiIH0pOyB9Cit9
KSgpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RF
eHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9U
ZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyODU3MzkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTE1MTgsNyArMTUx
OCw1IEBAIHdlYmtpdC5vcmcvYi8yMzI1ODUgWyBDYXRhbGluYSBEZWJ1ZyBdIG0KIAogd2Via2l0
Lm9yZy9iLzIzMzAwOCBbIERlYnVnIF0gaHR0cC90ZXN0cy9jc3MvZmlsdGVycy1vbi1pZnJhbWVz
LXRyYW5zZm9ybS5odG1sIFsgU2tpcCBdCiAKLXdlYmtpdC5vcmcvYi8yMzMwNDMgZmFzdC9kb20v
R2VvbG9jYXRpb24vY2FjaGVkLXBvc2l0aW9uLWlmcmFtZS5odG1sIFsgU2tpcCBdCi0KICMgRHVt
cFJlbmRlclRyZWUgZG9lc24ndCBpbnZva2UgaW5zcGVjdG9yIGluc3RydW1lbnRhdGlvbiB3aGVu
IHJlcGFpbnRpbmcuCiB3ZWJraXQub3JnL2IvMjMyODUyIGluc3BlY3Rvci9wYWdlL3NldFNob3dQ
YWludFJlY3RzLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449018</attachid>
            <date>2022-01-12 18:50:33 -0800</date>
            <delta_ts>2022-01-13 14:43:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232387-20220113025031.patch</filename>
            <type>text/plain</type>
            <size>110583</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBACisyMDIyLTAxLTEyICBBbGV4ZXkg
U2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBKU0NhbGxiYWNrRGF0YSBz
aG91bGQgdXNlIGxleGljYWwgZ2xvYmFsIG9iamVjdCBmb3IgZXJyb3JzIGFuZCBsaWZlY3ljbGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIFRoaXMgaXMgYSBy
ZS1sYW5kIG9mIHIyODU2Mzkgd2l0aCBhIFRlc3RSdW5uZXIgZml4IHRoYXQgcHJldmVudHMgZmFz
dC9kb20vR2VvbG9jYXRpb24KKyAgICAgICAgdGVzdHMgZnJvbSBjcmFzaGluZyBkdWUgdG8gdW5l
eHBlY3RlZCB8dGhpc3wgdmFsdWUKKworICAgICAgICBDdXJyZW50bHksIEpTQ2FsbGJhY2tEYXRh
IHVzZXMgaW5jdW1iZW50IFsxXSBnbG9iYWwgb2JqZWN0IHByZXR0eSBtdWNoIGZvciBldmVyeXRo
aW5nLAorICAgICAgICB3aGljaCBjYXVzZXMgYSBmZXcgaXNzdWVzOgorCisgICAgICAgICAgMSkg
VHlwZUVycm9ycyBhcmUgY29uc3RydWN0ZWQgaW4gaW5jb3JyZWN0IHJlYWxtOworICAgICAgICAg
IDIpIE5vZGVGaWx0ZXIgLyBYUGF0aE5TUmVzb2x2ZXIgY3Jhc2ggaWYgdGhlaXIgaW5jdW1iZW50
IHdpbmRvdyBnZXRzIGRpc2Nvbm5lY3RlZDsKKyAgICAgICAgICAzKSBvdGhlciBjYWxsYmFja3Ms
IG9yaWdpbmF0ZWQgaW4gZGV0YWNoZWQgZnJhbWUsIHdlcmUgbm90IGludm9rZWQgYXQgYWxsLgor
CisgICAgICAgIFNpbmNlIG5vdCBhbGwgaGFuZGxlRXZlbnQoKSBjYWxsZXJzIGhhdmUgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgYW5kIHRvIGF2b2lkIGEgbGFyZ2UKKyAgICAgICAgY29kZSBkaWZm
LCB0aGlzIHBhdGNoIHV0aWxpemVzIGNhbGxiYWNrIHdyYXBwZXIncyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0IHRvIGZpeCBhbGwKKyAgICAgICAgdGhlIGFib3ZlLW1lbnRpb25lZCBwcm9ibGVtcy4K
KworICAgICAgICBUbyBhY2NvbW9kYXRlIE5vZGVGaWx0ZXIgYW5kIFhQYXRoTlNSZXNvbHZlciBv
ZiBkZXRhY2hlZCBmcmFtZXMgd2l0aG91dCBncm93aW5nIHRoZQorICAgICAgICBgc2l6ZW9mYCBv
ZiBhbGwgb3RoZXIgY2FsbGJhY2tzLCBtX2dsb2JhbE9iamVjdCBtZW1iZXIgaXMgaW50cm9kdWNl
ZCBvbmx5IGZvciB0aGVtLgorCisgICAgICAgIEF1ZGlvV29ya2xldCBjaGFuZ2VzIGFyZSB1bm9i
c2VydmFibGUgYXMgd29ya2xldHMgY2FuJ3QgYWNxdWlyZSBhIGNyb3NzLXJlYWxtIG1ldGhvZC4K
KworICAgICAgICBbMV0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2Vi
YXBwYXBpcy5odG1sI2luY3VtYmVudAorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9HZW9sb2Nh
dGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQuaHRtbAorICAgICAgICAgICAgICAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNj
ZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tbnVsbC1icm93c2luZy1jb250ZXh0Lmh0bWwKKyAg
ICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNh
bC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLmh0bWwKKworICAgICAg
ICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclByb2Nlc3Nvcik6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlUHJvY2Vz
c29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OkF1ZGlvV29ya2xldFByb2Nl
c3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnByb2Nlc3Mp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpzZXRQcm9jZXNzQ2Fs
bGJhY2spOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnByb2Nlc3NDYWxs
YmFja1dyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYWxs
YmFja0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6Omludm9rZUNh
bGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6OkpTQ2FsbGJhY2tEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjp+SlNDYWxsYmFja0RhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDYWxsYmFja0RhdGFTdHJvbmc6OkpTQ2FsbGJhY2tEYXRhU3Ryb25nKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhU3Ryb25nOjppbnZva2VDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YVdlYWs6OkpTQ2FsbGJhY2tEYXRhV2Vhayk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YVdlYWs6Omludm9rZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjpnbG9iYWxPYmplY3QpOiBEZWxldGVkLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydENhbGxiYWNrcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udmVydGVyPElETENhbGxiYWNrRnVuY3Rpb248VD4+Ojpjb252ZXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExDYWxsYmFja0ludGVyZmFjZTxUPj46OmNvbnZlcnQp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETEludGVyZmFjZTxYUGF0aE5TUmVzb2x2ZXI+
Pjo6Y29udmVydCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25fb3BlbkRhdGFiYXNlQm9keSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUNh
bGxiYWNrSGVhZGVyQ29udGVudCk6CisgICAgICAgIChHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50
YXRpb25Db250ZW50KToKKyAgICAgICAgKEpTVmFsdWVUb05hdGl2ZURPTUNvbnZlcnROZWVkc0ds
b2JhbE9iamVjdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpz
b246CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTLyo6IFVwZGF0ZWQuCisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxi
YWNrSW52b2tlQ2hlY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdENhbGxiYWNrSW50ZXJmYWNlLmlkbDoKKyAgICAgICAgKiBkb20vTm9kZUZpbHRlci5p
ZGw6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oOgorICAg
ICAgICAqIHdvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KToKKyAgICAgICAg
KiB4bWwvQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmlkbDoKKwogMjAyMi0wMS0xMiAgRnVqaWkgSGly
b25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIFRp
bGluZyBzY3JvbGwgc3VwcG9ydApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbAkocmV2aXNp
b24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlv
bkVycm9yQ2FsbGJhY2suaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw0ICsyNCw1IEBACiAKIFsK
ICAgICBDb25kaXRpb25hbD1HRU9MT0NBVElPTiwKKyAgICBTa2lwQ2FsbGJhY2tJbnZva2VDaGVj
aywKIF0gY2FsbGJhY2sgUG9zaXRpb25FcnJvckNhbGxiYWNrID0gdW5kZWZpbmVkIChHZW9sb2Nh
dGlvblBvc2l0aW9uRXJyb3IgZXJyb3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJl
dmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvV29ya2xldEdsb2JhbFNjb3AKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiQSBwcm9jZXNzb3Igd2FzIGFscmVhZHkgcmVn
aXN0ZXJlZCB3aXRoIHRoaXMgbmFtZSJfcyB9OwogCiAgICAgSlNDOjpKU09iamVjdCoganNDb25z
dHJ1Y3RvciA9IHByb2Nlc3NvckNvbnRydWN0b3ItPmNhbGxiYWNrRGF0YSgpLT5jYWxsYmFjaygp
OwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgp
OworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xv
YmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCkBAIC0xMzMsNyArMTMzLDcgQEAg
UmVmUHRyPEF1ZGlvV29ya2xldFByb2Nlc3Nvcj4gQXVkaW9Xb3JrbAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIEpTQzo6SlNPYmplY3QqIGpzQ29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rv
ci0+Y2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0g
Y29uc3RydWN0b3ItPmNhbGxiYWNrRGF0YSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvKiBn
bG9iYWxPYmplY3QgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpOwog
ICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrIHsgZ2xv
YmFsT2JqZWN0IH07CkBAIC0xNTQsNyArMTU0LDcgQEAgUmVmUHRyPEF1ZGlvV29ya2xldFByb2Nl
c3Nvcj4gQXVkaW9Xb3JrbAogICAgIGlmICghanNQcm9jZXNzb3IpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAganNQcm9jZXNzb3ItPndyYXBwZWQoKS5zZXRQcm9jZXNzQ2FsbGJhY2so
bWFrZVVuaXF1ZTxKU0NhbGxiYWNrRGF0YVN0cm9uZz4oanNQcm9jZXNzb3IsIGdsb2JhbE9iamVj
dCkpOworICAgIGpzUHJvY2Vzc29yLT53cmFwcGVkKCkuc2V0UHJvY2Vzc0NhbGxiYWNrKGpzUHJv
Y2Vzc29yKTsKIAogICAgIHJldHVybiAmanNQcm9jZXNzb3ItPndyYXBwZWQoKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldFByb2Nlc3Nvci5jcHAJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjAxLDEzICsyMDEsMTQgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvV29ya2xldFByb2Nlc3Nv
cj4+IAogICAgIGlmICghY29uc3RydWN0aW9uRGF0YSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciwgIk5vIHBlbmRpbmcgY29uc3RydWN0aW9uIGRhdGEgZm9yIHRoaXMgd29y
a2xldCBwcm9jZXNzb3IiX3MgfTsKIAotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvV29y
a2xldFByb2Nlc3NvcigqY29uc3RydWN0aW9uRGF0YSkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEF1ZGlvV29ya2xldFByb2Nlc3Nvcihjb250ZXh0LCAqY29uc3RydWN0aW9uRGF0YSkpOwog
fQogCiBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6On5BdWRpb1dvcmtsZXRQcm9jZXNzb3IoKSA9IGRl
ZmF1bHQ7CiAKLUF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yKGNv
bnN0IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEmIGNvbnN0cnVjdGlvbkRh
dGEpCi0gICAgOiBtX25hbWUoY29uc3RydWN0aW9uRGF0YS5uYW1lKCkpCitBdWRpb1dvcmtsZXRQ
cm9jZXNzb3I6OkF1ZGlvV29ya2xldFByb2Nlc3NvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhJiBjb25z
dHJ1Y3Rpb25EYXRhKQorICAgIDogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisg
ICAgLCBtX25hbWUoY29uc3RydWN0aW9uRGF0YS5uYW1lKCkpCiAgICAgLCBtX3BvcnQoY29uc3Ry
dWN0aW9uRGF0YS5wb3J0KCkpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CkBAIC0y
MzYsNyArMjM3LDcgQEAgYm9vbCBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnByb2Nlc3MoY29ucwog
ICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUgZGlzYWJs
ZU1hbGxvY1Jlc3RyaWN0aW9uczsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3NDYWxsYmFjayk7Ci0g
ICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fcHJvY2Vzc0NhbGxiYWNrLT5nbG9iYWxPYmplY3Qo
KTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0Lmdsb2JhbE9iamVjdCgpKTsKICAgICBBU1NFUlQoZ2xv
YmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKGdsb2JhbE9i
amVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKIApAQCAt
MjQ3LDcgKzI0OCw3IEBAIGJvb2wgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpwcm9jZXNzKGNvbnMK
ICAgICBidWlsZEpTQXJndW1lbnRzKHZtLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGlucHV0cywgb3V0
cHV0cywgcGFyYW1WYWx1ZXNNYXApOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJl
dHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8gcmVzdWx0ID0gbV9wcm9jZXNzQ2FsbGJhY2stPmlu
dm9rZUNhbGxiYWNrKGpzVW5kZWZpbmVkKCksIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFj
a1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInByb2Nlc3MiKSwgcmV0
dXJuZWRFeGNlcHRpb24pOworICAgIGF1dG8gcmVzdWx0ID0gSlNDYWxsYmFja0RhdGE6Omludm9r
ZUNhbGxiYWNrKGdsb2JhbE9iamVjdCwgbnVsbHB0ciwgYXNPYmplY3QobV9wcm9jZXNzQ2FsbGJh
Y2spLCBqc1VuZGVmaW5lZCgpLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm9jZXNzIiksIHJldHVybmVkRXhj
ZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhj
ZXB0aW9uKCZnbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgdGhyZXdF
eGNlcHRpb24gPSB0cnVlOwpAQCAtMjU5LDkgKzI2MCw5IEBAIGJvb2wgQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yOjpwcm9jZXNzKGNvbnMKICAgICByZXR1cm4gcmVzdWx0LnRvQm9vbGVhbigmZ2xvYmFs
T2JqZWN0KTsKIH0KIAotdm9pZCBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnNldFByb2Nlc3NDYWxs
YmFjayhzdGQ6OnVuaXF1ZV9wdHI8SlNDYWxsYmFja0RhdGFTdHJvbmc+JiYgcHJvY2Vzc0NhbGxi
YWNrKQordm9pZCBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnNldFByb2Nlc3NDYWxsYmFjayhKU09i
amVjdCogcHJvY2Vzc0NhbGxiYWNrKQogewotICAgIG1fcHJvY2Vzc0NhbGxiYWNrID0gV1RGTW92
ZShwcm9jZXNzQ2FsbGJhY2spOworICAgIG1fcHJvY2Vzc0NhbGxiYWNrID0geyBwcm9jZXNzQ2Fs
bGJhY2sgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5o
CShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldFByb2Nlc3Nvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxOSArNTksMjEgQEAg
cHVibGljOgogCiAgICAgYm9vbCBwcm9jZXNzKGNvbnN0IFZlY3RvcjxSZWZQdHI8QXVkaW9CdXM+
PiYgaW5wdXRzLCBWZWN0b3I8UmVmPEF1ZGlvQnVzPj4mIG91dHB1dHMsIGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GbG9hdEFycmF5Pj4mIHBhcmFtVmFsdWVzTWFw
LCBib29sJiB0aHJld0V4Y2VwdGlvbik7CiAKLSAgICB2b2lkIHNldFByb2Nlc3NDYWxsYmFjayhz
dGQ6OnVuaXF1ZV9wdHI8SlNDYWxsYmFja0RhdGFTdHJvbmc+JiYpOworICAgIHZvaWQgc2V0UHJv
Y2Vzc0NhbGxiYWNrKEpTQzo6SlNPYmplY3QqKTsKIAorICAgIEpTVmFsdWVJbldyYXBwZWRPYmpl
Y3QmIHByb2Nlc3NDYWxsYmFja1dyYXBwZXIoKSB7IHJldHVybiBtX3Byb2Nlc3NDYWxsYmFjazsg
fQogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGpzSW5wdXRzV3JhcHBlcigpIHsgcmV0dXJu
IG1fanNJbnB1dHM7IH0KICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBqc091dHB1dHNXcmFw
cGVyKCkgeyByZXR1cm4gbV9qc091dHB1dHM7IH0KICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0
JiBqc1BhcmFtVmFsdWVzV3JhcHBlcigpIHsgcmV0dXJuIG1fanNQYXJhbVZhbHVlczsgfQogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IEF1ZGlvV29ya2xldFByb2Nlc3Nvcihjb25zdCBBdWRpb1dv
cmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhJik7CisgICAgZXhwbGljaXQgQXVkaW9Xb3Jr
bGV0UHJvY2Vzc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBBdWRpb1dvcmtsZXRQ
cm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhJik7CiAgICAgdm9pZCBidWlsZEpTQXJndW1lbnRzKEpT
Qzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlckJh
c2UmLCBjb25zdCBWZWN0b3I8UmVmUHRyPEF1ZGlvQnVzPj4mIGlucHV0cywgVmVjdG9yPFJlZjxB
dWRpb0J1cz4+JiBvdXRwdXRzLCBjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRy
PEF1ZGlvRmxvYXRBcnJheT4+JiBwYXJhbVZhbHVlc01hcCk7CiAKKyAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgU3RyaW5nIG1fbmFtZTsK
ICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SlNDYWxs
YmFja0RhdGFTdHJvbmc+IG1fcHJvY2Vzc0NhbGxiYWNrOworICAgIEpTVmFsdWVJbldyYXBwZWRP
YmplY3QgbV9wcm9jZXNzQ2FsbGJhY2s7CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX2pz
SW5wdXRzOwogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9qc091dHB1dHM7CiAgICAgSlNW
YWx1ZUluV3JhcHBlZE9iamVjdCBtX2pzUGFyYW1WYWx1ZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0F1ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JD
dXN0b20uY3BwCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDYgKzM1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KIHZvaWQgSlNBdWRpb1dvcmts
ZXRQcm9jZXNzb3I6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFZpc2l0b3ImIHZpc2l0b3IpCiB7
CiAgICAgYXV0byYgcHJvY2Vzc29yID0gd3JhcHBlZCgpOworICAgIHByb2Nlc3Nvci5wcm9jZXNz
Q2FsbGJhY2tXcmFwcGVyKCkudmlzaXQodmlzaXRvcik7CiAgICAgcHJvY2Vzc29yLmpzSW5wdXRz
V3JhcHBlcigpLnZpc2l0KHZpc2l0b3IpOwogICAgIHByb2Nlc3Nvci5qc091dHB1dHNXcmFwcGVy
KCkudmlzaXQodmlzaXRvcik7CiAgICAgcHJvY2Vzc29yLmpzUGFyYW1WYWx1ZXNXcmFwcGVyKCku
dmlzaXQodmlzaXRvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxi
YWNrRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuY3BwCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogLy8gaHR0cHM6
Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNjYWxsLWEtdXNlci1vYmplY3RzLW9wZXJhdGlvbgot
SlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxiYWNrLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTWFy
a2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIENhbGxiYWNrVHlwZSBtZXRob2QsIFByb3BlcnR5TmFt
ZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRp
b24pCitKU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBjYWxsYmFj
aywgSlNWYWx1ZSB0aGlzVmFsdWUsIE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFj
a1R5cGUgbWV0aG9kLCBQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogewogICAgIEFTU0VSVChjYWxsYmFjayk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAkocmV2
aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0Rh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTEgKzQ3LDEwIEBAIGNsYXNzIEpTQ2FsbGJhY2tE
YXRhIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIENhbGxiYWNrVHlwZSB7IEZ1bmN0aW9uLCBP
YmplY3QsIEZ1bmN0aW9uT3JPYmplY3QgfTsKIAotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QoKSB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQoKTsgfQotCisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9i
amVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QsIEpTQzo6SlNP
YmplY3QqIGNhbGxiYWNrLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6Ok1hcmtlZEFyZ3Vt
ZW50QnVmZmVyJiwgQ2FsbGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUs
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogcHJvdGVjdGVk
OgotICAgIGV4cGxpY2l0IEpTQ2FsbGJhY2tEYXRhKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCi0gICAgICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQorICAgIGV4cGxp
Y2l0IEpTQ2FsbGJhY2tEYXRhKEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmpl
Y3QpCisgICAgICAgIDogbV9pbmN1bWJlbnRHbG9iYWxPYmplY3QoaW5jdW1iZW50R2xvYmFsT2Jq
ZWN0KQogICAgIHsKICAgICB9CiAgICAgCkBAIC02MSwxMSArNjAsOSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIEFTU0VSVChtX3RocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2Vu
ZGlmCiAgICAgfQotICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBKU0M6OkpTVmFsdWUg
aW52b2tlQ2FsbGJhY2soSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFj
aywgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYsIENh
bGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6
OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIAorICAgIEpTQzo6V2VhazxKU0RPTUds
b2JhbE9iamVjdD4gbV9pbmN1bWJlbnRHbG9iYWxPYmplY3Q7CiBwcml2YXRlOgotICAgIEpTQzo6
V2VhazxKU0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBSZWY8VGhyZWFkPiBtX3RocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5k
aWYKQEAgLTczLDIxICs3MCwxNyBAQCBwcml2YXRlOgogCiBjbGFzcyBKU0NhbGxiYWNrRGF0YVN0
cm9uZyA6IHB1YmxpYyBKU0NhbGxiYWNrRGF0YSB7CiBwdWJsaWM6Ci0gICAgSlNDYWxsYmFja0Rh
dGFTdHJvbmcoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIHZvaWQqID0gbnVsbHB0cikKLSAgICAgICAgOiBKU0NhbGxiYWNrRGF0YShnbG9i
YWxPYmplY3QpCi0gICAgICAgICwgbV9jYWxsYmFjayhnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxi
YWNrKQorICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBK
U0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB2b2lkKiA9IG51bGxwdHIp
CisgICAgICAgIDogSlNDYWxsYmFja0RhdGEoaW5jdW1iZW50R2xvYmFsT2JqZWN0KQorICAgICAg
ICAsIG1fY2FsbGJhY2soaW5jdW1iZW50R2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsYmFjaykKICAg
ICB7CiAgICAgfQogCiAgICAgSlNDOjpKU09iamVjdCogY2FsbGJhY2soKSB7IHJldHVybiBtX2Nh
bGxiYWNrLmdldCgpOyB9CiAKLSAgICBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlNDOjpK
U1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJh
Y2tUeXBlIGNhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQorICAgIEpTQzo6SlNWYWx1
ZSBpbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywg
Q2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1l
LCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKLSAg
ICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAg
IGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICBy
ZXR1cm4gSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKCpnbG9iYWxPYmplY3QsIGNhbGxi
YWNrKCksIHRoaXNWYWx1ZSwgYXJncywgY2FsbGJhY2tUeXBlLCBmdW5jdGlvbk5hbWUsIHJldHVy
bmVkRXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxs
YmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCBtX2luY3VtYmVudEdsb2JhbE9iamVjdC5nZXQoKSwg
Y2FsbGJhY2soKSwgdGhpc1ZhbHVlLCBhcmdzLCBjYWxsYmFja1R5cGUsIGZ1bmN0aW9uTmFtZSwg
cmV0dXJuZWRFeGNlcHRpb24pOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTk2LDIxICs4OSwxNyBA
QCBwcml2YXRlOgogCiBjbGFzcyBKU0NhbGxiYWNrRGF0YVdlYWsgOiBwdWJsaWMgSlNDYWxsYmFj
a0RhdGEgewogcHVibGljOgotICAgIEpTQ2FsbGJhY2tEYXRhV2VhayhKU0M6OkpTT2JqZWN0KiBj
YWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdm9pZCogb3duZXIpCi0g
ICAgICAgIDogSlNDYWxsYmFja0RhdGEoZ2xvYmFsT2JqZWN0KQorICAgIEpTQ2FsbGJhY2tEYXRh
V2VhayhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVu
dEdsb2JhbE9iamVjdCwgdm9pZCogb3duZXIpCisgICAgICAgIDogSlNDYWxsYmFja0RhdGEoaW5j
dW1iZW50R2xvYmFsT2JqZWN0KQogICAgICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2ssICZtX3dl
YWtPd25lciwgb3duZXIpCiAgICAgewogICAgIH0KIAogICAgIEpTQzo6SlNPYmplY3QqIGNhbGxi
YWNrKCkgeyByZXR1cm4gbV9jYWxsYmFjay5nZXQoKTsgfQogCi0gICAgSlNDOjpKU1ZhbHVlIGlu
dm9rZUNhbGxiYWNrKEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6TWFya2VkQXJndW1lbnRC
dWZmZXImIGFyZ3MsIENhbGxiYWNrVHlwZSBjYWxsYmFja1R5cGUsIEpTQzo6UHJvcGVydHlOYW1l
IGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlv
bikKKyAgICBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlNET01HbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIEpTQzo6TWFya2VkQXJn
dW1lbnRCdWZmZXImIGFyZ3MsIENhbGxiYWNrVHlwZSBjYWxsYmFja1R5cGUsIEpTQzo6UHJvcGVy
dHlOYW1lIGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4
Y2VwdGlvbikKICAgICB7Ci0gICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2Jh
bE9iamVjdCgpOwotICAgICAgICBpZiAoIWdsb2JhbE9iamVjdCkKLSAgICAgICAgICAgIHJldHVy
biB7IH07Ci0KLSAgICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjaygq
Z2xvYmFsT2JqZWN0LCBjYWxsYmFjaygpLCB0aGlzVmFsdWUsIGFyZ3MsIGNhbGxiYWNrVHlwZSwg
ZnVuY3Rpb25OYW1lLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBKU0NhbGxi
YWNrRGF0YTo6aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgbV9pbmN1bWJlbnRH
bG9iYWxPYmplY3QuZ2V0KCksIGNhbGxiYWNrKCksIHRoaXNWYWx1ZSwgYXJncywgY2FsbGJhY2tU
eXBlLCBmdW5jdGlvbk5hbWUsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBWaXNpdG9yPiB2b2lkIHZpc2l0SlNGdW5jdGlvbihWaXNpdG9yJik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRDYWxsYmFja3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRDYWxs
YmFja3MuaAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0Q2FsbGJhY2tzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJRAogICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBjb252ZXJzaW9uSGFzU2lkZUVmZmVjdHMgPSBmYWxzZTsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4K
LSAgICBzdGF0aWMgUmVmUHRyPFQ+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlv
blRocm93ZXIoKSkKKyAgICBzdGF0aWMgUmVmUHRyPFQ+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25U
aHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7CiAg
ICAgICAgIEpTQzo6Vk0mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTQ2LDcgKzQ2
LDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJRAogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gVDo6Y3JlYXRl
KEpTQzo6YXNPYmplY3QodmFsdWUpLCAmY2FsbGVyR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwg
dm0udG9wQ2FsbEZyYW1lKSk7CisgICAgICAgIGF1dG8mIGpzRE9NR2xvYmFsT2JqZWN0ID0gKkpT
Qzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAg
ICAgICByZXR1cm4gVDo6Y3JlYXRlKGpzRE9NR2xvYmFsT2JqZWN0LCBKU0M6OmFzT2JqZWN0KHZh
bHVlKSwgJmNhbGxlckdsb2JhbE9iamVjdChqc0RPTUdsb2JhbE9iamVjdCwgdm0udG9wQ2FsbEZy
YW1lKSk7CiAgICAgfQogfTsKIApAQCAtNzAsNyArNzEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252
ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExDYWxs
YmFja0ludGVyZmFjZTxUPj4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93
ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KLSAgICBzdGF0aWMgUmVmUHRyPFQ+IGNvbnZl
cnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb25UaHJvd2Vy
JiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKKyAgICBzdGF0aWMgUmVm
UHRyPFQ+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9
IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7CiAgICAgICAgIEpTQzo6Vk0mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKQEAgLTgwLDcgKzgxLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IENvbnZlcnRlcjxJRAogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IH0KIAotICAgICAgICByZXR1cm4gVDo6Y3JlYXRlKEpTQzo6YXNPYmplY3QodmFsdWUpLCAmY2Fs
bGVyR2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCwgdm0udG9wQ2FsbEZyYW1lKSk7CisgICAgICAg
IGF1dG8mIGpzRE9NR2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gVDo6Y3JlYXRlKGpzRE9N
R2xvYmFsT2JqZWN0LCBKU0M6OmFzT2JqZWN0KHZhbHVlKSwgJmNhbGxlckdsb2JhbE9iamVjdChq
c0RPTUdsb2JhbE9iamVjdCwgdm0udG9wQ2FsbEZyYW1lKSk7CiAgICAgfQogfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0WFBh
dGhOU1Jlc29sdmVyLmgJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw3ICs0OCw4IEBAIHRlbXBsYXRlPD4gc3RydWN0IENvbnZlcnRlcjxJRExJbnRlcmZhY2UKICAg
ICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8SlNYUGF0aE5TUmVzb2x2ZXI+KHZtKSkKICAgICAg
ICAgICAgIHJldHVybiAmSlNDOjpqc0Nhc3Q8SlNYUGF0aE5TUmVzb2x2ZXIqPihvYmplY3QpLT53
cmFwcGVkKCk7CiAKLSAgICAgICAgcmV0dXJuIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpjcmVh
dGUob2JqZWN0LCBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7CisgICAgICAgIGF1dG8mIGpzRE9NR2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgICAgICByZXR1
cm4gSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6OmNyZWF0ZShqc0RPTUdsb2JhbE9iamVjdCwgb2Jq
ZWN0LCAmY2FsbGVyR2xvYmFsT2JqZWN0KGpzRE9NR2xvYmFsT2JqZWN0LCB2bS50b3BDYWxsRnJh
bWUpKTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE5NSw3ICsxOTUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2hlblNpZ25hbEFib3J0
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU0M6OkpTVmFsdWU6OkpT
RmFsc2UpKTsKIAogICAgIGF1dG8qIGpzRE9NR2xvYmFsT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpOwotICAgIFJlZjxBYm9ydEFsZ29yaXRobT4g
YWJvcnRBbGdvcml0aG0gPSBKU0Fib3J0QWxnb3JpdGhtOjpjcmVhdGUoY2FsbEZyYW1lLT51bmNo
ZWNrZWRBcmd1bWVudCgxKS5nZXRPYmplY3QoKSwganNET01HbG9iYWxPYmplY3QpOworICAgIFJl
ZjxBYm9ydEFsZ29yaXRobT4gYWJvcnRBbGdvcml0aG0gPSBKU0Fib3J0QWxnb3JpdGhtOjpjcmVh
dGUoKmpzRE9NR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdl
dE9iamVjdCgpLCBqc0RPTUdsb2JhbE9iamVjdCk7CiAKICAgICBib29sIHJlc3VsdCA9IEFib3J0
U2lnbmFsOjp3aGVuU2lnbmFsQWJvcnRlZChhYm9ydFNpZ25hbC0+d3JhcHBlZCgpLCBXVEZNb3Zl
KGFib3J0QWxnb3JpdGhtKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyBK
U1ZhbHVlKEpTQzo6SlNWYWx1ZTo6SlNUcnVlKSA6IEpTVmFsdWUoSlNDOjpKU1ZhbHVlOjpKU0Zh
bHNlKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNiw3ICs2MDYs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNET01XCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RW1wdHlPYmplY3QobGV4aWNhbEdsb2JhbE9i
amVjdCwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSk7CiAg
ICAgfQogCi0gICAgYXV0byBjcmVhdGlvbkNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTRGF0YWJhc2VDYWxsYmFjaz4+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCg0KSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7CisgICAgYXV0byBjcmVhdGlvbkNhbGxiYWNrID0gY29udmVydDxJRExO
dWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTRGF0YWJhc2VDYWxsYmFjaz4+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCg0KSwgW10oSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgewogICAg
ICAgICB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgNCwgImNyZWF0aW9uQ2FsbGJhY2siLCAiV2luZG93IiwgIm9wZW5EYXRhYmFzZSIp
OwogICAgIH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTY0
MDIsMTMgKzY0MDIsMTEgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tIZWFkZXJDb250ZW50CiAgICAg
cHVzaChAJGNvbnRlbnRSZWYsICJwdWJsaWM6XG4iKTsKIAogICAgICMgVGhlIHN0YXRpYyBjcmVh
dGUoKSBtZXRob2QuCi0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgc3RhdGljIFJlZjwkY2xh
c3NOYW1lPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBzdGF0aWMg
UmVmPCRjbGFzc05hbWU+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2Jh
bE9iamVjdClcbiIpOwogICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIHtcbiIpOwotICAgIHB1
c2goQCRjb250ZW50UmVmLCAiICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAke2NsYXNzTmFt
ZX0oY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpO1xuIik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYs
ICIgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3ICR7Y2xhc3NOYW1lfShnbG9iYWxPYmplY3Qs
IGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QpKTtcbiIpOwogICAgIHB1c2goQCRjb250
ZW50UmVmLCAiICAgIH1cblxuIik7CiAKLSAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1
cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsg
fVxuXG4iKTsKLQogICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIH4kY2xhc3NOYW1lKCkgZmlu
YWw7XG4iKTsKIAogICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICR7Y2FsbGJhY2tEYXRhVHlw
ZX0qIGNhbGxiYWNrRGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfVxuIik7CkBAIC02NDQ1LDcgKzY0
NDMsNyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0hlYWRlckNvbnRlbnQKIAogICAgIHB1c2goQCRj
b250ZW50UmVmLCAiXG5wcml2YXRlOlxuIik7CiAKLSAgICBwdXNoKEAkY29udGVudFJlZiwgIiAg
ICAke2NsYXNzTmFtZX0oSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0Kik7XG5cbiIp
OworICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICR7Y2xhc3NOYW1lfShKU0RPTUdsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpO1xuXG4iKTsKIAogICAgIGlmICgkaW50ZXJmYWNl
T3JDYWxsYmFjay0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SXNXZWFrQ2FsbGJhY2t9KSB7CiAgICAg
ICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGJvb2wgaGFzQ2FsbGJhY2soKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2RhdGEgJiYgbV9kYXRhLT5jYWxsYmFjaygpOyB9XG5cbiIpOwpAQCAtNjQ1
NCw2ICs2NDUyLDEzIEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSGVhZGVyQ29udGVudAogICAgIHB1
c2goQCRjb250ZW50UmVmLCAiICAgIHZvaWQgdmlzaXRKU0Z1bmN0aW9uKEpTQzo6QWJzdHJhY3RT
bG90VmlzaXRvciYpIG92ZXJyaWRlO1xuXG4iKSBpZiAkaW50ZXJmYWNlT3JDYWxsYmFjay0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57SXNXZWFrQ2FsbGJhY2t9OwogICAgIHB1c2goQCRjb250ZW50UmVm
LCAiICAgIHZvaWQgdmlzaXRKU0Z1bmN0aW9uKEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTtc
blxuIikgaWYgJGludGVyZmFjZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e0lzV2Vh
a0NhbGxiYWNrfTsKIAorICAgIGlmICgkaW50ZXJmYWNlT3JDYWxsYmFjay0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57U2tpcENhbGxiYWNrSW52b2tlQ2hlY2t9KSB7CisgICAgICAgIHB1c2goQCRjb250
ZW50UmVmLCAiICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJl
dHVybiAqbV9nbG9iYWxPYmplY3QuZ2V0KCk7IH1cblxuIik7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9XG5cbiIpOworICAgIH0KKwor
ICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIEpTQzo6U3Ryb25nPEpTRE9NR2xvYmFsT2JqZWN0
PiBtX2dsb2JhbE9iamVjdDtcbiIpIGlmICRpbnRlcmZhY2VPckNhbGxiYWNrLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntTa2lwQ2FsbGJhY2tJbnZva2VDaGVja307CiAgICAgcHVzaChAJGNvbnRlbnRS
ZWYsICIgICAgJHtjYWxsYmFja0RhdGFUeXBlfSogbV9kYXRhO1xuIik7CiAgICAgcHVzaChAJGNv
bnRlbnRSZWYsICJ9O1xuXG4iKTsKIApAQCAtNjQ3NCw5ICs2NDc5LDEwIEBAIHN1YiBHZW5lcmF0
ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW4KICAgICAkaW5jbHVkZXNSZWYtPnsiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIn0gPSAxOwogCiAgICAgIyBDb25zdHJ1Y3RvcgotICAgIHB1c2go
QCRjb250ZW50UmVmLCAiJHtjbGFzc05hbWV9Ojoke2NsYXNzTmFtZX0oSlNPYmplY3QqIGNhbGxi
YWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7Ci0gICAgcHVzaChAJGNv
bnRlbnRSZWYsICIgICAgOiAke25hbWV9KGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKVxuIik7Ci0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgLCBtX2RhdGEobmV3ICR7
Y2FsbGJhY2tEYXRhVHlwZX0oY2FsbGJhY2ssIGdsb2JhbE9iamVjdCwgdGhpcykpXG4iKTsKKyAg
ICBwdXNoKEAkY29udGVudFJlZiwgIiR7Y2xhc3NOYW1lfTo6JHtjbGFzc05hbWV9KEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxP
YmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdClcbiIpOworICAgIHB1c2goQCRjb250ZW50UmVm
LCAiICAgIDogJHtuYW1lfShnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKVxu
Iik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxP
YmplY3Qudm0oKSwgJmdsb2JhbE9iamVjdClcbiIpIGlmICRpbnRlcmZhY2VPckNhbGxiYWNrLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntTa2lwQ2FsbGJhY2tJbnZva2VDaGVja307CisgICAgcHVzaChA
JGNvbnRlbnRSZWYsICIgICAgLCBtX2RhdGEobmV3ICR7Y2FsbGJhY2tEYXRhVHlwZX0oY2FsbGJh
Y2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCwgdGhpcykpXG4iKTsKICAgICBwdXNoKEAkY29udGVu
dFJlZiwgIntcbiIpOwogICAgIHB1c2goQCRjb250ZW50UmVmLCAifVxuXG4iKTsKIApAQCAtNjU4
MSwxMyArNjU4NywxMyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uQ29udGVu
CiAKICAgICAgICAgICAgICMgRklYTUU6IFRoaXMgaXMgbmVlZGVkIGZvciBOb2RlRmlsdGVyLCB3
aGljaCB3b3JrcyBldmVuIGZvciBkaXNjb25uZWN0ZWQgaWZyYW1lcy4gV2Ugc2hvdWxkIGludmVz
dGlnYXRlCiAgICAgICAgICAgICAjIGlmIHRoYXQgYmVoYXZpb3IgaXMgbmVlZGVkIGZvciBvdGhl
ciBjYWxsYmFja3MuCi0gICAgICAgICAgICBpZiAoISRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e1NraXBDYWxsYmFja0ludm9rZUNoZWNrfSkgeworICAgICAgICAgICAgaWYgKCEkaW50
ZXJmYWNlT3JDYWxsYmFjay0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2tpcENhbGxiYWNrSW52b2tl
Q2hlY2t9KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgaWYgKCFj
YW5JbnZva2VDYWxsYmFjaygpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRS
ZWYsICIgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OlVuYWJsZVRvRXhlY3V0ZTtc
blxuIik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAi
ICAgIFJlZjwkY2xhc3NOYW1lPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTtcblxuIik7Ci0gICAgICAg
ICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRh
LT5nbG9iYWxPYmplY3QoKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIg
ICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZt
KCk7XG5cbiIpOwogICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pO1xuIik7CiAKQEAgLTY2MDUsMTAgKzY2MTEsMTAgQEAgc3ViIEdlbmVyYXRl
Q2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgogCiAgICAgICAgICAgICBteSAkY2FsbGJhY2tJ
bnZvY2F0aW9uOwogICAgICAgICAgICAgaWYgKHJlZigkaW50ZXJmYWNlT3JDYWxsYmFjaykgZXEg
IklETENhbGxiYWNrRnVuY3Rpb24iKSB7Ci0gICAgICAgICAgICAgICAgJGNhbGxiYWNrSW52b2Nh
dGlvbiA9ICJtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFj
a0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNl
cHRpb24pIjsKKyAgICAgICAgICAgICAgICAkY2FsbGJhY2tJbnZvY2F0aW9uID0gIm1fZGF0YS0+
aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0Nh
bGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5l
ZEV4Y2VwdGlvbikiOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBteSAk
Y2FsbGJhY2tUeXBlID0gJG51bU9wZXJhdGlvbnMgPiAxID8gIk9iamVjdCIgOiAiRnVuY3Rpb25P
ck9iamVjdCI7Ci0gICAgICAgICAgICAgICAgJGNhbGxiYWNrSW52b2NhdGlvbiA9ICJtX2RhdGEt
Pmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNr
VHlwZTo6JHtjYWxsYmFja1R5cGV9LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBcIiR7ZnVu
Y3Rpb25OYW1lfVwiKSwgcmV0dXJuZWRFeGNlcHRpb24pIjsKKyAgICAgICAgICAgICAgICAkY2Fs
bGJhY2tJbnZvY2F0aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9i
amVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjoke2Nh
bGxiYWNrVHlwZX0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIFwiJHtmdW5jdGlvbk5hbWV9
XCIpLCByZXR1cm5lZEV4Y2VwdGlvbikiOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoJG9wZXJhdGlvbi0+dHlwZS0+bmFtZSBlcSAidW5kZWZpbmVkIikgewpAQCAtNzA1OSw4ICs3
MDY1LDYgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZURPTUNvbnZlcnROZWVkc0dsb2JhbAogewogICAg
IG15ICR0eXBlID0gc2hpZnQ7CiAKLSAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXND
YWxsYmFja0ludGVyZmFjZSgkdHlwZSk7Ci0gICAgcmV0dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3It
PklzQ2FsbGJhY2tGdW5jdGlvbigkdHlwZSk7CiAgICAgcmV0dXJuIEpTVmFsdWVUb05hdGl2ZURP
TUNvbnZlcnROZWVkc0dsb2JhbE9iamVjdChAeyR0eXBlLT5zdWJ0eXBlc31bMV0pIGlmICRjb2Rl
R2VuZXJhdG9yLT5Jc1JlY29yZFR5cGUoJHR5cGUpOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5u
YW1lIGVxICJTY2hlZHVsZWRBY3Rpb24iOwogICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHJldmlz
aW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy5qc29uCSh3b3JraW5nIGNvcHkpCkBAIC00OTEsNyArNDkxLDcgQEAKICAgICAgICAgICAg
ICJzdXBwb3J0c0Nvbmp1bmN0aW9uIjogdHJ1ZQogICAgICAgICB9LAogICAgICAgICAiU2tpcENh
bGxiYWNrSW52b2tlQ2hlY2siOiB7Ci0gICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJv
cGVyYXRpb24iLCAiY2FsbGJhY2stZnVuY3Rpb24iXQorICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiaW50ZXJmYWNlIiwgImNhbGxiYWNrLWZ1bmN0aW9uIl0KICAgICAgICAgfSwKICAg
ICAgICAgIlNraXBWVGFibGVWYWxpZGF0aW9uIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxs
b3dlZCI6IFsiaW50ZXJmYWNlIl0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMu
ZGVwCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NiArNDAsOSBAQCBXZWJET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5oOiAKIEpTVGVzdENhbGxiYWNr
RnVuY3Rpb25SZXRocm93Lmg6IAogRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93Lmg6IAog
V2ViRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93Lmg6IAorSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmg6IAorRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25T
a2lwQ2FsbGJhY2tJbnZva2VDaGVjay5oOiAKK1dlYkRPTVRlc3RDYWxsYmFja0Z1bmN0aW9uU2tp
cENhbGxiYWNrSW52b2tlQ2hlY2suaDogCiBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNP
YmplY3QuaDogCiBET01UZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0Lmg6IAogV2Vi
RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5oOiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxs
YmFja0ludm9rZUNoZWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVj
ay5pZGwJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2suaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgU2tpcENhbGxi
YWNrSW52b2tlQ2hlY2sKK10gY2FsbGJhY2sgVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJh
Y2tJbnZva2VDaGVjayA9IHVuc2lnbmVkIHNob3J0IChET01TdHJpbmcgYXJndW1lbnQpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFja0ludGVy
ZmFjZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RDYWxsYmFja0ludGVyZmFjZS5pZGwJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tJbnRlcmZhY2UuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw1IEBAIGRpY3Rpb25hcnkgVGVzdENhbGxiYWNr
SW50ZXJmYWNlRGljdGlvbmEKICAgICB1bmRlZmluZWQgY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bh
c3MobG9uZyBsb25nUGFyYW0sIFRlc3ROb2RlIHRlc3ROb2RlUGFyYW0pOwogICAgIERPTVN0cmlu
ZyBjYWxsYmFja1dpdGhBUmV0dXJuVmFsdWUoKTsKICAgICBbUmV0aHJvd0V4Y2VwdGlvbl0gRE9N
U3RyaW5nIGNhbGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0aW9ucyhUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2VFbnVtIGVudW1QYXJhbSk7Ci0gICAgW1NraXBDYWxsYmFja0ludm9rZUNoZWNrXSBET01TdHJp
bmcgY2FsbGJhY2tUaGF0U2tpcHNJbnZva2VDaGVjayhUZXN0Q2FsbGJhY2tJbnRlcmZhY2VEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlQYXJhbSk7CiAgICAgW0NhbGxiYWNrVGhpc09iamVjdD1UZXN0Tm9k
ZV0gRE9NU3RyaW5nIGNhbGxiYWNrV2l0aFRoaXNPYmplY3QoVGVzdE9iaiB0ZXN0T2JqUGFyYW0p
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9u
IDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsOSArMzAsOSBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotSlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbjo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbihKU09iamVjdCogY2FsbGJhY2ssIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBUZXN0Q2FsbGJhY2tGdW5jdGlv
bihnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fZGF0YShu
ZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCwgdGhpcykpCitK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uKEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmpl
Y3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uKGds
b2JhbE9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX2RhdGEobmV3IEpT
Q2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QsIHRoaXMp
KQogewogfQogCkBAIC01Nyw3ICs1Nyw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERP
TVN0cmluZzo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9i
amVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwog
ICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7CkBAIC02OCw3ICs2OCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0
cmluZzo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0
ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9u
KTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6
OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0
dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3Vs
dFR5cGU6OkV4Y2VwdGlvblRocm93bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rp
b24uaAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjks
MTMgKzI5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBUZXN0Q2FsbGJhY2tGdW5jdGlvbiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPiBjcmVhdGUoSlNDOjpKU09iamVj
dCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGlj
IFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBp
bmN1bWJlbnRHbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbihnbG9iYWxPYmpl
Y3QsIGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QpKTsKICAgICB9CiAKLSAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1
cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsg
fQotCiAgICAgfkpTVGVzdENhbGxiYWNrRnVuY3Rpb24oKSBmaW5hbDsKICAgICBKU0NhbGxiYWNr
RGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAgLTQzLDcg
KzQxLDkgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmlu
Zzo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExMb25nOjpQYXJh
bWV0ZXJUeXBlIGFyZ3VtZW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBKU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uKEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpT
VGVzdENhbGxiYWNrRnVuY3Rpb24oSlNET01HbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2Jq
ZWN0KTsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJl
dHVybiAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsgfQogCiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIG1f
ZGF0YTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0
aHJvdy5jcHAJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDkgKzMzLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKLUpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93OjpKU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uUmV0aHJvdyhKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCi0gICAgOiBUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3coZ2xvYmFsT2Jq
ZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJh
Y2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QsIHRoaXMpKQorSlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvblJldGhyb3c6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxP
YmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9u
UmV0aHJvdyhnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9k
YXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2Jq
ZWN0LCB0aGlzKSkKIHsKIH0KIApAQCAtNjAsNyArNjAsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBl
bmFtZSBJRExET01TdHJpbmc6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJl
dGhyb3c+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0g
Km1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+
Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTcxLDcgKzcxLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8
dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2Vk
KCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwot
ICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwg
cmV0dXJuZWRFeGNlcHRpb24pOworICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNh
bGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0Rh
dGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRp
b24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgdGhyb3dFeGNlcHRpb24oJmxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHJldHVybmVkRXhjZXB0aW9uKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1
bmN0aW9uUmV0aHJvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5oCShyZXZpc2lvbiAy
ODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJl
dGhyb3cgZmluYWwgOiBwdWJsaWMgVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93PiBjcmVhdGUo
SlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CisgICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdz4gY3JlYXRlKEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBK
U0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3coY2FsbGJh
Y2ssIGdsb2JhbE9iamVjdCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uUmV0aHJvdyhnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBpbmN1bWJlbnRH
bG9iYWxPYmplY3QpKTsKICAgICB9CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQotCiAgICAgfkpTVGVzdENhbGxiYWNr
RnVuY3Rpb25SZXRocm93KCkgZmluYWw7CiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIGNhbGxi
YWNrRGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC00Myw3ICs0MSw5IEBAIHB1YmxpYzoK
ICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9u
VHlwZT4gaGFuZGxlRXZlbnQodHlwZW5hbWUgSURMU2VxdWVuY2U8SURMTG9uZz46OlBhcmFtZXRl
clR5cGUgYXJndW1lbnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEpTVGVzdENhbGxiYWNr
RnVuY3Rpb25SZXRocm93KEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAg
IEpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KEpTRE9NR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVu
dEdsb2JhbE9iamVjdCk7CisKKyAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7IH0KIAogICAgIEpTQ2FsbGJhY2tEYXRh
U3Ryb25nKiBtX2RhdGE7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0lu
dm9rZUNoZWNrLmgiCisKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1iZXJzLmgiCisjaW5jbHVk
ZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxp
bmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKKworbmFtZXNwYWNl
IFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
blNraXBDYWxsYmFja0ludm9rZUNoZWNrOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxi
YWNrSW52b2tlQ2hlY2soSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQorICAg
IDogVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjayhnbG9iYWxPYmpl
Y3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFs
T2JqZWN0LnZtKCksICZnbG9iYWxPYmplY3QpCisgICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tE
YXRhU3Ryb25nKGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QsIHRoaXMpKQoreworfQor
CitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2s6On5KU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2soKQoreworICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAg
Ly8gV2hlbiB0aGUgY29udGV4dCBpcyBkZXN0cm95ZWQsIGFsbCB0YXNrcyB3aXRoIGEgcmVmZXJl
bmNlIHRvIGEgY2FsbGJhY2sKKyAgICAvLyBzaG91bGQgYmUgZGVsZXRlZC4gU28gaWYgdGhlIGNv
bnRleHQgaXMgMCwgd2UgYXJlIG9uIHRoZSBjb250ZXh0IHRocmVhZC4KKyAgICBpZiAoIWNvbnRl
eHQgfHwgY29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpCisgICAgICAgIGRlbGV0ZSBtX2RhdGE7
CisgICAgZWxzZQorICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhEZWxldGVDYWxsYmFja0RhdGFU
YXNrKG1fZGF0YSkpOworI2lmbmRlZiBOREVCVUcKKyAgICBtX2RhdGEgPSBudWxscHRyOworI2Vu
ZGlmCit9CisKK0NhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuc2lnbmVkU2hvcnQ6OkltcGxl
bWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNo
ZWNrOjpoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExET01TdHJpbmc6OlBhcmFtZXRlclR5cGUgYXJn
dW1lbnQpCit7CisgICAgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZv
a2VDaGVjaz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisKKyAgICBhdXRvJiBnbG9iYWxPYmplY3Qg
PSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgp
OworCisgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIGF1dG8mIGxleGljYWxHbG9iYWxP
YmplY3QgPSBnbG9iYWxPYmplY3Q7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQodG9K
UzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50KSk7CisgICAgQVNT
RVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CisKKyAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gcmV0dXJuZWRFeGNlcHRpb247CisgICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tl
Q2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNr
RGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2Vw
dGlvbik7CisgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CisgICAgICAgIHJlcG9ydEV4Y2Vw
dGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgICAgICBy
ZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CisgICAgIH0KKworICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8gcmV0
dXJuVmFsdWUgPSBjb252ZXJ0PElETFVuc2lnbmVkU2hvcnQ+KGxleGljYWxHbG9iYWxPYmplY3Qs
IGpzUmVzdWx0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIENhbGxiYWNr
UmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duKTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKHJldHVy
blZhbHVlKSB9OworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhUZXN0Q2FsbGJhY2tGdW5jdGlvblNr
aXBDYWxsYmFja0ludm9rZUNoZWNrJiBpbXBsKQoreworICAgIGlmICghc3RhdGljX2Nhc3Q8SlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrJj4oaW1wbCkuY2FsbGJh
Y2tEYXRhKCkpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2smPihpbXBs
KS5jYWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2suaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBD
YWxsYmFja0ludm9rZUNoZWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NSBAQAorLyoK
KyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3Qu
CisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5w
bC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklETFR5cGVz
LmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja0RhdGEuaCIKKyNpbmNsdWRlICJUZXN0Q2FsbGJhY2tG
dW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
U2tpcENhbGxiYWNrSW52b2tlQ2hlY2sgZmluYWwgOiBwdWJsaWMgVGVzdENhbGxiYWNrRnVuY3Rp
b25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxKU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2s+IGNyZWF0ZShKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01H
bG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VD
aGVjayhnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QpKTsKKyAg
ICB9CisKKyAgICB+SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNr
KCkgZmluYWw7CisgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIGNhbGxiYWNrRGF0YSgpIHsgcmV0
dXJuIG1fZGF0YTsgfQorCisgICAgLy8gRnVuY3Rpb25zCisgICAgQ2FsbGJhY2tSZXN1bHQ8dHlw
ZW5hbWUgSURMVW5zaWduZWRTaG9ydDo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0
eXBlbmFtZSBJRExET01TdHJpbmc6OlBhcmFtZXRlclR5cGUgYXJndW1lbnQpIG92ZXJyaWRlOwor
Citwcml2YXRlOgorICAgIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VD
aGVjayhKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVj
dCosIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpOworCisgICAgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICptX2dsb2JhbE9i
amVjdC5nZXQoKTsgfQorCisgICAgSlNDOjpTdHJvbmc8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xv
YmFsT2JqZWN0OworICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7Cit9OworCitKU0M6
OkpTVmFsdWUgdG9KUyhUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNr
Jik7CitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2Fs
bGJhY2tJbnZva2VDaGVjayogaW1wbCkgeyByZXR1cm4gaW1wbCA/IHRvSlMoKmltcGwpIDogSlND
Ojpqc051bGwoKTsgfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhU
aGlzT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmNwcAkocmV2
aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDkgKzM0LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKLUpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdDo6SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0KEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNP
YmplY3QoZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2Rh
dGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QsIHRoaXMp
KQorSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0OjpKU1Rlc3RDYWxsYmFja0Z1
bmN0aW9uV2l0aFRoaXNPYmplY3QoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0
KQorICAgIDogVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdChnbG9iYWxPYmplY3Qu
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0
YVN0cm9uZyhjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB0aGlzKSkKIHsKIH0KIApA
QCAtNjEsNyArNjEsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6Oklt
CiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0PiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2Jh
bE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgp
OwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIg
bG9jayh2bSk7CkBAIC03Miw3ICs3Miw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVu
ZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmlu
dm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlw
ZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0
YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBK
U0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1
cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJl
cG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwog
ICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbldpdGhUaGlzT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVj
dC5oCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDEzICsyOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpT
VGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdCBmaW5hbCA6IHB1YmxpYyBUZXN0Q2Fs
bGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEpT
VGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdD4gY3JlYXRlKEpTQzo6SlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBS
ZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0PiBjcmVhdGUoSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xv
YmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoY2FsbGJh
Y2ssIGdsb2JhbE9iamVjdCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaywgaW5j
dW1iZW50R2xvYmFsT2JqZWN0KSk7CiAgICAgfQogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLQogICAgIH5KU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoKSBmaW5hbDsKICAgICBKU0NhbGxiYWNrRGF0
YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAgLTQzLDcgKzQx
LDkgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6
SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVz
dE5vZGU+OjpQYXJhbWV0ZXJUeXBlIHRoaXNPYmplY3QsIHR5cGVuYW1lIElETFNlcXVlbmNlPElE
TEludGVyZmFjZTxUZXN0Tm9kZT4+OjpQYXJhbWV0ZXJUeXBlIHBhcmFtZXRlcikgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0KEpT
Qzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb25XaXRoVGhpc09iamVjdChKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmpl
Y3QpOworCisgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9CiAKICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogbV9k
YXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bldpdGhUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBl
ZGVmczo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhKU09iamVjdCogY2FsbGJh
Y2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBUZXN0Q2FsbGJhY2tG
dW5jdGlvbldpdGhUeXBlZGVmcyhnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKLSAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGdsb2Jh
bE9iamVjdCwgdGhpcykpCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzOjpKU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEds
b2JhbE9iamVjdCkKKyAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzKGdsb2Jh
bE9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX2RhdGEobmV3IEpTQ2Fs
bGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QsIHRoaXMpKQog
ewogfQogCkBAIC02MSw3ICs2MSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVm
aW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEt
Pmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9i
amVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7CkBAIC03Myw3ICs3Myw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETFVuZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAog
ICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2Rh
dGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxi
YWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAg
IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBh
cmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigp
LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRp
b24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVk
ZWZzLmgJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDEzICsyOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpT
VGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMgZmluYWwgOiBwdWJsaWMgVGVzdENhbGxi
YWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SlNUZXN0
Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcz4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxi
YWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBSZWY8SlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcz4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVj
dCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhjYWxsYmFjaywgZ2xvYmFs
T2JqZWN0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb25XaXRoVHlwZWRlZnMoZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFs
T2JqZWN0KSk7CiAgICAgfQogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLQogICAgIH5KU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uV2l0aFR5cGVkZWZzKCkgZmluYWw7CiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIGNhbGxi
YWNrRGF0YSgpIHsgcmV0dXJuIG1fZGF0YTsgfQogCkBAIC00Myw3ICs0MSw5IEBAIHB1YmxpYzoK
ICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVudGF0aW9u
VHlwZT4gaGFuZGxlRXZlbnQodHlwZW5hbWUgSURMU2VxdWVuY2U8SURMTnVsbGFibGU8SURMTG9u
Zz4+OjpQYXJhbWV0ZXJUeXBlIHNlcXVlbmNlQXJnLCB0eXBlbmFtZSBJRExMb25nOjpQYXJhbWV0
ZXJUeXBlIGxvbmdBcmcpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEpTVGVzdENhbGxiYWNr
RnVuY3Rpb25XaXRoVHlwZWRlZnMoSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0Kik7
CisgICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhKU0RPTUdsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0
KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpOworCisgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9CiAKICAgICBKU0Nh
bGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxi
YWNrSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIwLDkgKzEyMCw5IEBAIHRlbXBsYXRlPD4gVGVzdENhbGxiYWNrSW50ZXJm
YWNlOjpEaWN0aW8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU1Rlc3RDYWxsYmFja0ludGVy
ZmFjZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogVGVzdENhbGxiYWNrSW50ZXJmYWNlKGds
b2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9kYXRhKG5ldyBK
U0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0LCB0aGlzKSkKK0pTVGVz
dENhbGxiYWNrSW50ZXJmYWNlOjpKU1Rlc3RDYWxsYmFja0ludGVyZmFjZShKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0
KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCisgICAgOiBUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoZ2xv
YmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1fZGF0YShuZXcgSlND
YWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCwgdGhpcykp
CiB7CiB9CiAKQEAgLTE4Myw3ICsxODMsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExV
bmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFs
T2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7
CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBs
b2NrKHZtKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExV
bmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9kYXRhLT5p
bnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5
cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aE5vUGFy
YW0iKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJh
Y2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhO
b1BhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24p
IHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5l
ZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlv
blRocm93bjsKQEAgLTIwOSw3ICsyMDksNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExV
bmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFs
T2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7
CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBs
b2NrKHZtKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExV
bmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9kYXRhLT5p
bnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5
cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aEFycmF5
UGFyYW0iKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2so
bGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2Fs
bGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dp
dGhBcnJheVBhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNl
cHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4
Y2VwdGlvblRocm93bjsKQEAgLTIzNiw3ICsyMzYsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExVbmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+
Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2Jq
ZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKQEAgLTI0OCw3ICsyNDgsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAK
ICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9k
YXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxs
YmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0
aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBt
X2RhdGEtPmludm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0iKSwgcmV0
dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICBy
ZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsK
ICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAt
MjY0LDcgKzI2NCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0K
IAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2
bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAt
Mjc1LDcgKzI3NSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0K
ICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNr
KHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoU3RyaW5nTGlzdCIpLCByZXR1
cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFs
T2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aFN0cmluZ0xpc3Qi
KSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAg
ICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0
aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3du
OwpAQCAtMjkxLDcgKzI5MSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5l
ZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3Qo
KTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKICAgICBh
dXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwpAQCAtMzAyLDcgKzMwMiw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5l
ZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRy
PEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNh
bGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoQm9vbGVhbiIpLCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6
Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aEJvb2xlYW4i
KSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAg
ICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0
aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3du
OwpAQCAtMzE4LDcgKzMxOCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5l
ZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3Qo
KTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKICAgICBh
dXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0p
OwpAQCAtMzMwLDcgKzMzMCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5l
ZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRy
PEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNh
bGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bh
c3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJh
Y2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1JlcXVp
cmVzVGhpc1RvUGFzcyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhj
ZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwg
cmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpF
eGNlcHRpb25UaHJvd247CkBAIC0zNDYsNyArMzQ2LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5h
bWUgSURMRE9NU3RyaW5nOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEt
Pmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9i
amVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7CkBAIC0zNTYsNyArMzU2LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5h
bWUgSURMRE9NU3RyaW5nOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwog
CiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1
dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlND
YWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY2FsbGJhY2tXaXRoQVJldHVyblZhbHVlIiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAg
ICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aEFSZXR1cm5WYWx1ZSIp
LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRp
b24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247
CkBAIC0zNzUsNyArMzc1LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5n
OjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgp
OworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwogICAgIGF1
dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7
CkBAIC0zODYsNyArMzg2LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5n
OjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8
SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8ganNSZXN1bHQgPSBt
X2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNh
bGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tU
aGF0UmV0aHJvd3NFeGNlcHRpb25zIiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBhdXRvIGpz
UmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0aW9ucyIpLCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICB0aHJv
d0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgcmV0dXJuZWRFeGNl
cHRpb24pOwpAQCAtMzk5LDMzICszOTksNiBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExE
T01TdHJpbmc6OkltCiAgICAgcmV0dXJuIHsgV1RGTW92ZShyZXR1cm5WYWx1ZSkgfTsKIH0KIAot
Q2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+
IEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpjYWxsYmFja1RoYXRTa2lwc0ludm9rZUNoZWNrKHR5
cGVuYW1lIElETERpY3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5Pjo6
UGFyYW1ldGVyVHlwZSBkaWN0aW9uYXJ5UGFyYW0pCi17Ci0gICAgUmVmPEpTVGVzdENhbGxiYWNr
SW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIGF1dG8mIGdsb2JhbE9iamVj
dCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpOwotICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0
LnZtKCk7Ci0KLSAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgYXV0byYgbGV4aWNhbEds
b2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGpzVW5k
ZWZpbmVkKCk7Ci0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBhcmdzLmFwcGVu
ZCh0b0pTPElETERpY3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5Pj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBkaWN0aW9uYXJ5UGFyYW0pKTsKLSAg
ICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKLQotICAgIE5ha2VkUHRyPEpTQzo6RXhj
ZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5p
bnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5
cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrVGhhdFNraXBz
SW52b2tlQ2hlY2siKSwgcmV0dXJuZWRFeGNlcHRpb24pOwotICAgIGlmIChyZXR1cm5lZEV4Y2Vw
dGlvbikgewotICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJl
dHVybmVkRXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhj
ZXB0aW9uVGhyb3duOwotICAgICB9Ci0KLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBhdXRvIHJldHVyblZhbHVlID0gY29udmVydDxJRExET01TdHJp
bmc+KGxleGljYWxHbG9iYWxPYmplY3QsIGpzUmVzdWx0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duKTsKLSAg
ICByZXR1cm4geyBXVEZNb3ZlKHJldHVyblZhbHVlKSB9OwotfQotCiBDYWxsYmFja1Jlc3VsdDx0
eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U6OmNhbGxiYWNrV2l0aFRoaXNPYmplY3QodHlwZW5hbWUgSURMSW50ZXJmYWNlPFRl
c3ROb2RlPjo6UGFyYW1ldGVyVHlwZSB0aGlzT2JqZWN0LCB0eXBlbmFtZSBJRExJbnRlcmZhY2U8
VGVzdE9iaj46OlBhcmFtZXRlclR5cGUgdGVzdE9ialBhcmFtKQogewogICAgIGlmICghY2FuSW52
b2tlQ2FsbGJhY2soKSkKQEAgLTQzMyw3ICs0MDYsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExET01TdHJpbmc6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+
Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2Jq
ZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKQEAgLTQ0NCw3ICs0MTcsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExET01TdHJpbmc6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAK
ICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0
byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0Nh
bGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJjYWxsYmFja1dpdGhUaGlzT2JqZWN0IiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBh
dXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aFRoaXNPYmplY3QiKSwgcmV0
dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICBy
ZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsK
ICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNr
SW50ZXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmgJKHJldmlzaW9uIDI4Nzk2NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0lu
dGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMyArMzMsMTEgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZSBmaW5hbCA6IHB1YmxpYyBU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2U+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrSW50
ZXJmYWNlPiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU09i
amVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3Qp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0ludGVy
ZmFjZShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlKGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGluY3Vt
YmVudEdsb2JhbE9iamVjdCkpOwogICAgIH0KIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9Ci0KICAgICB+SlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2UoKSBmaW5hbDsKICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogY2FsbGJh
Y2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRD
b25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwpAQCAtNTQs
MTEgKzUyLDEyIEBAIHB1YmxpYzoKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRl
ZmluZWQ6OkltcGxlbWVudGF0aW9uVHlwZT4gY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3ModHlw
ZW5hbWUgSURMTG9uZzo6UGFyYW1ldGVyVHlwZSBsb25nUGFyYW0sIHR5cGVuYW1lIElETEludGVy
ZmFjZTxUZXN0Tm9kZT46OlBhcmFtZXRlclR5cGUgdGVzdE5vZGVQYXJhbSkgb3ZlcnJpZGU7CiAg
ICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5
cGU+IGNhbGxiYWNrV2l0aEFSZXR1cm5WYWx1ZSgpIG92ZXJyaWRlOwogICAgIENhbGxiYWNrUmVz
dWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBjYWxsYmFja1Ro
YXRSZXRocm93c0V4Y2VwdGlvbnModHlwZW5hbWUgSURMRW51bWVyYXRpb248VGVzdENhbGxiYWNr
SW50ZXJmYWNlOjpFbnVtPjo6UGFyYW1ldGVyVHlwZSBlbnVtUGFyYW0pIG92ZXJyaWRlOwotICAg
IENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBl
PiBjYWxsYmFja1RoYXRTa2lwc0ludm9rZUNoZWNrKHR5cGVuYW1lIElETERpY3Rpb25hcnk8VGVz
dENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5Pjo6UGFyYW1ldGVyVHlwZSBkaWN0aW9uYXJ5
UGFyYW0pIG92ZXJyaWRlOwogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmlu
Zzo6SW1wbGVtZW50YXRpb25UeXBlPiBjYWxsYmFja1dpdGhUaGlzT2JqZWN0KHR5cGVuYW1lIElE
TEludGVyZmFjZTxUZXN0Tm9kZT46OlBhcmFtZXRlclR5cGUgdGhpc09iamVjdCwgdHlwZW5hbWUg
SURMSW50ZXJmYWNlPFRlc3RPYmo+OjpQYXJhbWV0ZXJUeXBlIHRlc3RPYmpQYXJhbSkgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoSlNDOjpKU09iamVj
dCosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoSlNE
T01HbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqLCBKU0RP
TUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KTsKKworICAgIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiAqSlNDOjpqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsg
fQogCiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIG1fZGF0YTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnky
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNwcAkocmV2aXNpb24gMjg3OTY3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9u
YXJ5Mi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgdGVtcGxhdGU8PiBUZXN0
RGVyaXZlZERpY3Rpb25hcnkyIGNvbnZlcgogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURM
Q2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNh
bGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEds
b2JhbE9iamVjdCkpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElE
TENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBj
YWxsYmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHN0cmluZ01lbWJlclZhbHVlOwpAQCAtMTUz
LDcgKzE1Myw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGkKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBp
ZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICByZXN1bHQu
Y2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJh
Y2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0
LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxi
YWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1
ZSBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlOwpAQCAtMTg4LDcgKzE4OCw3IEBAIHRlbXBsYXRl
PD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGkKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxDYWxsYmFja01l
bWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFj
a01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0
LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Zv
aWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZh
bHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBKU1ZhbHVlIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlv
bmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMjg3OTY3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0
aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB0ZW1wbGF0ZTw+IFRl
c3REZXJpdmVkRGljdGlvbmFyeSBjb252ZXJ0CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjYWxsYmFja01lbWJlclZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
Y2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IGNhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1
ZTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeSBj
b252ZXJ0CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAg
ICB9CiAgICAgaWYgKCFwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
Ci0gICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxi
YWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFs
Q2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBj
b252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBwYXJ0aWFsUmVx
dWlyZWRMb25nTWVtYmVyVmFsdWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWRE
aWN0aW9uYXJ5Mi5jcHAJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgdGVtcGxhdGU8PiBUZXN0SW5oZXJpdGVkRGljdGlv
bmFyeTIgY29udgogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0g
ICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlv
bjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFs
dWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwor
ICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rp
b248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZh
bHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBKU1ZhbHVlIHN0cmluZ01lbWJlclZhbHVlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmhlcml0ZWREaWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnku
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVy
aXRlZERpY3Rpb25hcnkgY29udmUKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxi
YWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFj
a01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxP
YmplY3QpKTsKKyAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxs
YmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJh
Y2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlOwpAQCAt
MTAwLDcgKzEwMCw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkgY29udmUK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAg
ICBpZiAoIXBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAg
ICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5j
dGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFj
a01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxP
YmplY3QpKTsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHBhcnRpYWxSZXF1aXJlZExv
bmdNZW1iZXJWYWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjAxMiwxMCArMjAxMiwxMCBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTExfCiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAg
YXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwogICAgIEVuc3Vy
ZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KDApOwotICAgIGF1dG8gdGVzdENhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFj
ZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
MCwgInRlc3RDYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgbnVsbHB0cik7IH0pOworICAgIGF1dG8g
dGVzdENhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFj
a0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9iamVjdCIsIG51bGxwdHIpOyB9
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBjb252ZXJ0
PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVzdE9iamVj
dCIsIG51bGxwdHIpOyB9KTsKKyAgICBhdXRvIHRlc3RDYWxsYmFja0Z1bmN0aW9uID0gY29udmVy
dDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVu
dE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJ0ZXN0
Q2FsbGJhY2tGdW5jdGlvbiIsICJUZXN0T2JqZWN0IiwgbnVsbHB0cik7IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBv
YmplY3QgPSBUZXN0T2JqOjpjcmVhdGUoZG9jdW1lbnQsIHRlc3RDYWxsYmFjay5yZWxlYXNlTm9u
TnVsbCgpLCB0ZXN0Q2FsbGJhY2tGdW5jdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBpZiBj
b25zdGV4cHIgKElzRXhjZXB0aW9uT3I8ZGVjbHR5cGUob2JqZWN0KT4pCkBAIC0zNDUxLDcgKzM0
NTEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX3N0cmluZ1ZvCiAgICAgYXV0
byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMUmVjb3Jk
PElETERPTVN0cmluZywgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOworICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFJlY29yZDxJRExET01TdHJpbmcsIElETENh
bGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFs
dWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwogICAgIGlu
dm9rZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxP
YmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgIHJldHVybiBpbXBsLnNldFN0cmluZ1Zv
aWRDYWxsYmFja1JlY29yZEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwpAQCAtNzAyMCw3ICs3
MDIwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlm
IChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgw
KTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rl
c3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJn
dW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNh
bGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnIik7
IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpT
VGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJu
IGltcGwubWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnKGNhbGxiYWNrLnJlbGVhc2VOb25O
dWxsKCkpOyB9KSkpOwogfQpAQCAtNzA0MCw3ICs3MDQwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29u
dmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVy
ZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2Jq
ZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0
T2JqZWN0IiwgIm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwor
ICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJm
YWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VB
cmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzA2Myw3ICs3MDYzLDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8gbm9uQ2FsbGJh
Y2sgPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxs
YmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNh
bGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CisgICAgYXV0
byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTm9uQ2Fs
bGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0ludGVyZmFjZUFyZ0FuZENh
bGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBjYWxsYmFjay5yZWxlYXNl
Tm9uTnVsbCgpKTsgfSkpKTsKIH0KQEAgLTcwODEsNyArNzA4MSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8g
Y2FsbGJhY2sgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gQ29udmVydGVyPElE
TENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj46OlJldHVyblR5cGUo
KSA6IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOworICAgIGF1
dG8gY2FsbGJhY2sgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gQ29udmVydGVy
PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj46OlJldHVyblR5
cGUoKSA6IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUp
IHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxDYWxs
YmFja0ludGVyZmFjZUFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUoY2FsbGJhY2spKTsgfSkp
KTsKIH0KQEAgLTcwOTksNyArNzA5OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252
ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJm
YWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmpl
Y3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RP
YmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyIp
OyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFj
a0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9i
amVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJn
Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVs
bGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CkBA
IC03MTE5LDcgKzcxMTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29w
ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrRnVu
Y3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5j
dGlvbkFyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0Z1
bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJn
dW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9u
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcoY2FsbGJhY2sucmVs
ZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkBAIC03MTM5LDcgKzcxMzksNyBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJh
Y2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVz
dEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNr
IiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyIp
OyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFj
a0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5j
dGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tGdW5j
dGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CkBAIC03MTYyLDcgKzcxNjIsNyBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgYXV0byBub25D
YWxsYmFjayA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElE
TENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBb
XShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2Nv
cGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
Tm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAgIGF1dG8gY2Fs
bGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNr
QXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmcoV1RGTW92
ZShub25DYWxsYmFjayksIGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkpOwogfQpAQCAt
NzE4MCw3ICs3MTgwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGFyZ3VtZW50MC52YWx1
ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uPj46OlJldHVyblR5cGUoKSA6IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5j
dGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsg
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbENhbGxi
YWNrRnVuY3Rpb25BcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGFyZ3VtZW50MC52YWx1
ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uPj46OlJldHVyblR5cGUoKSA6IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5j
dGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVj
dCIsICJtZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVm
aW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBl
KGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFy
ZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CkBAIC03MTk4LDcgKzcxOTgsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBF
bnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
LSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0
aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsg
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxh
YmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVy
dDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxs
YWJsZUNhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmcoV1RGTW92ZShj
YWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzIxNSw3ICs3MjE1LDcgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
ICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNrID0g
Y29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0lu
dGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgW10oSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51
bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAs
ICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9w
dGlvbmFsQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIFRlc3RPYmo6OnN0YXRpY01l
dGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2spKTsgfSkpKTsK
IH0KQEAgLTcyMzQsNyArNzIzNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5j
aGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJh
Y2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2Fs
R2xvYmFsT2JqZWN0KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0
IiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNr
ID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+
KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0
aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUs
IDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0Fy
ZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNv
ZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBb
Jl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRo
Q2FsbGJhY2tBcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkBAIC03MzY0
LDcgKzczNjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZy
YW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJ
RExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRl
ZE1ldGhvZCIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0lu
dGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2Jq
ZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5vdmVybG9hZGVkTWV0aG9kKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5k
YWxvbmVEaWN0aW9uYXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCShyZXZpc2lv
biAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3
IEBAIHRlbXBsYXRlPD4gRGljdGlvbmFyeUltcGxOYW1lIGNvbnZlcnREaWMKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbGxi
YWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICByZXN1bHQuY2FsbGJhY2tN
ZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0LmNhbGxiYWNr
TWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4
aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBlbnVtTWVt
YmVyVmFsdWU7CkBAIC0xMzYsNyArMTM2LDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5h
bWUgY29udmVydERpYwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNrTWVtYmVyID0gY29udmVydDxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
cGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigm
bGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNrTWVt
YmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2OCwxMCArMTY4LDEwIEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTF8KICAgICBhdXRvIGhlbGxvID0gY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICBhdXRvIHRl
c3RDYWxsYmFja0Z1bmN0aW9uID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENh
bGxiYWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCks
ICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgInRlc3RD
YWxsYmFja0Z1bmN0aW9uIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOyB9KTsKKyAgICBhdXRv
IHRlc3RDYWxsYmFja0Z1bmN0aW9uID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVz
dENhbGxiYWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVl
KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhy
b3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJ0ZXN0Q2FsbGJhY2tGdW5jdGlvbiIsICJUZXN0VHlw
ZWRlZnMiLCBudWxscHRyKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQy
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKLSAgICBhdXRvIHRlc3RDYWxsYmFj
a0ludGVyZmFjZSA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQyLnZhbHVlKCksICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
T2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDIsICJ0ZXN0Q2FsbGJhY2tJ
bnRlcmZhY2UiLCAiVGVzdFR5cGVkZWZzIiwgbnVsbHB0cik7IH0pOworICAgIGF1dG8gdGVzdENh
bGxiYWNrSW50ZXJmYWNlID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxs
YmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDIudmFsdWUoKSwg
W10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Nj
b3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgc2NvcGUsIDIsICJ0ZXN0Q2FsbGJhY2tJbnRlcmZhY2UiLCAiVGVzdFR5cGVkZWZz
IiwgbnVsbHB0cik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBvYmplY3QgPSBUZXN0VHlwZWRlZnM6OmNyZWF0ZShX
VEZNb3ZlKGhlbGxvKSwgdGVzdENhbGxiYWNrRnVuY3Rpb24ucmVsZWFzZU5vbk51bGwoKSwgdGVz
dENhbGxiYWNrSW50ZXJmYWNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGlmIGNvbnN0ZXhwciAo
SXNFeGNlcHRpb25PcjxkZWNsdHlwZShvYmplY3QpPikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFZvaWRDYWxsYmFja0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb246OkpT
VGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uKEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IFRlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbihnbG9i
YWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fZGF0YShuZXcgSlND
YWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCwgdGhpcykpCitKU1Rlc3RW
b2lkQ2FsbGJhY2tGdW5jdGlvbjo6SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9i
amVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQorICAgIDogVGVzdFZvaWRDYWxsYmFja0Z1bmN0
aW9uKGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX2RhdGEo
bmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3Qs
IHRoaXMpKQogewogfQogCkBAIC02OCw3ICs2OCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRh
LT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxP
YmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwpAQCAtODQsNyArODQsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAK
ICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9k
YXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxs
YmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAg
ICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwg
YXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIo
KSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAg
ICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0
aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3du
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFZv
aWRDYWxsYmFja0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9u
IDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlv
biBmaW5hbCA6IHB1YmxpYyBUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24gewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24+IGNyZWF0ZShKU0M6OkpTT2Jq
ZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0
aWMgUmVmPEpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uPiBjcmVhdGUoSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbihjYWxsYmFjaywgZ2xvYmFsT2JqZWN0
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0
aW9uKGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCkpOwogICAg
IH0KIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOyB9Ci0KICAgICB+SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oKSBmaW5h
bDsKICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9k
YXRhOyB9CiAKQEAgLTQ1LDcgKzQzLDkgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5
cGVuYW1lIElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBl
bmFtZSBJRExGbG9hdDMyQXJyYXk6OlBhcmFtZXRlclR5cGUgYXJyYXlQYXJhbSwgdHlwZW5hbWUg
SURMU2VyaWFsaXplZFNjcmlwdFZhbHVlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT46OlBhcmFtZXRl
clR5cGUgc3J6UGFyYW0sIHR5cGVuYW1lIElETERPTVN0cmluZzo6UGFyYW1ldGVyVHlwZSBzdHJB
cmcsIHR5cGVuYW1lIElETEJvb2xlYW46OlBhcmFtZXRlclR5cGUgYm9vbFBhcmFtLCB0eXBlbmFt
ZSBJRExMb25nOjpQYXJhbWV0ZXJUeXBlIGxvbmdQYXJhbSwgdHlwZW5hbWUgSURMSW50ZXJmYWNl
PFRlc3ROb2RlPjo6UGFyYW1ldGVyVHlwZSB0ZXN0Tm9kZVBhcmFtKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKLSAgICBKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbihKU0M6OkpTT2JqZWN0KiwgSlNE
T01HbG9iYWxPYmplY3QqKTsKKyAgICBKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbihKU0RPTUds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCosIEpTRE9NR2xv
YmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpOworCisgICAgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9CiAK
ICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlRmlsdGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZUZpbHRlci5pZGwJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlRmlsdGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQAogCiBbCiAgICAg
SXNXZWFrQ2FsbGJhY2ssCisgICAgU2tpcENhbGxiYWNrSW52b2tlQ2hlY2ssCiAgICAgRXhwb3Nl
ZD1XaW5kb3cKIF0gY2FsbGJhY2sgaW50ZXJmYWNlIE5vZGVGaWx0ZXIgewogICAgIC8vIENvbnN0
YW50cyBmb3IgYWNjZXB0Tm9kZSgpLgpAQCAtNDIsNSArNDMsNSBAQAogICAgIGNvbnN0IHVuc2ln
bmVkIGxvbmcgU0hPV19ET0NVTUVOVF9GUkFHTUVOVCA9IDB4MDAwMDA0MDA7CiAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBTSE9XX05PVEFUSU9OID0gMHgwMDAwMDgwMDsgLy8gSGlzdG9yaWNhbC4K
IAotICAgIFtTa2lwQ2FsbGJhY2tJbnZva2VDaGVjaywgUmV0aHJvd0V4Y2VwdGlvbl0gdW5zaWdu
ZWQgc2hvcnQgYWNjZXB0Tm9kZShOb2RlIG5vZGUpOworICAgIFtSZXRocm93RXhjZXB0aW9uXSB1
bnNpZ25lZCBzaG9ydCBhY2NlcHROb2RlKE5vZGUgbm9kZSk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAkocmV2
aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBAIHByb3RlY3RlZDoK
ICAgICBXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShXb3JrZXJUaHJlYWRUeXBlLCBSZWY8SlND
OjpWTT4mJiwgV29ya2VyT3JXb3JrbGV0VGhyZWFkKik7CiAKICAgICAvLyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0LgorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBjb25zdF9jYXN0PFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKj4odGhpcyk7IH0KICAgICBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgbWFya0FzQ2xvc2luZygpIHsgbV9pc0Nsb3NpbmcgPSB0
cnVlOyB9CkBAIC05MCw3ICs5MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXJlZlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAogICAgIC8vIEV2ZW50VGFyZ2V0
LgotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBjb25zdF9jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
Kj4odGhpcyk7IH0KICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQog
ICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdv
cmtsZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wCiAgICAgICAgIGlmIChwYWlu
dFZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBhaW50IG1ldGhvZCIgfTsKIAotICAgICAg
ICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tG
dW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihnbG9iYWxPYmplY3QsIHBhaW50VmFsdWUsICpq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJlZlB0
cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9u
PEpTQ1NTUGFpbnRDYWxsYmFjaz4+KGdsb2JhbE9iamVjdCwgcGFpbnRWYWx1ZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9u
RXJyb3IgfSk7CiAKICAgICAgICAgYXV0byBwYWludERlZmluaXRpb24gPSBtYWtlVW5pcXVlPFBh
aW50RGVmaW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFz
ZU5vbk51bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1l
bnRzKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
LmlkbAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUveG1sL0N1c3RvbVhQYXRo
TlNSZXNvbHZlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAKICAqLwogCiAv
LyBOb3QgdXNpbmcgW0lzV2Vha0NhbGxiYWNrXSBoZXJlIGFzIFhQYXRoTlNSZXNvbHZlciB3cmFw
cGVycyBhbHdheXMgdGVtcG9yYXJ5IChubyByZWZlcmVuY2UgaXMga2VwdCkKLWNhbGxiYWNrIGlu
dGVyZmFjZSBDdXN0b21YUGF0aE5TUmVzb2x2ZXIgewotICAgIFtJbXBsZW1lbnRlZEFzPWxvb2t1
cE5hbWVzcGFjZVVSSUZvckJpbmRpbmdzLCBTa2lwQ2FsbGJhY2tJbnZva2VDaGVja10gRE9NU3Ry
aW5nPyBsb29rdXBOYW1lc3BhY2VVUkkoRE9NU3RyaW5nPyBwcmVmaXgpOworWworICAgIFNraXBD
YWxsYmFja0ludm9rZUNoZWNrLAorXSBjYWxsYmFjayBpbnRlcmZhY2UgQ3VzdG9tWFBhdGhOU1Jl
c29sdmVyIHsKKyAgICBbSW1wbGVtZW50ZWRBcz1sb29rdXBOYW1lc3BhY2VVUklGb3JCaW5kaW5n
c10gRE9NU3RyaW5nPyBsb29rdXBOYW1lc3BhY2VVUkkoRE9NU3RyaW5nPyBwcmVmaXgpOwogfTsK
SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4Nzk2NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDIyLTAxLTEyICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNv
bT4KKworICAgICAgICBKU0NhbGxiYWNrRGF0YSBzaG91bGQgdXNlIGxleGljYWwgZ2xvYmFsIG9i
amVjdCBmb3IgZXJyb3JzIGFuZCBsaWZlY3ljbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM4NworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
IEdhcmVuLgorCisgICAgICAgIFNpbmNlIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2FyZ3VtZW50LXR5
cGVzLmh0bWwgaXMgbm93IGNhbGxzIFRlc3RSdW5uZXIncworICAgICAgICBzZXRHZW9sb2NhdGlv
blBlcm1pc3Npb25DYWxsYmFjaygpIGZyb20gYW4gZXJyb3IgY2FsbGJhY2sgd2l0aCBhbiB1bmV4
cGVjdGVkIHx0aGlzfAorICAgICAgICB2YWx1ZSAoeWV0IHdpdGggYW4gYXJndW1lbnQpLCB0aGlz
IHBhdGNoIGFkZHMgYSBgbnVsbHB0cmAgY2hlY2sgdG8gYXZvaWQgY3Jhc2hlcy4KKworICAgICAg
ICBUaGlzIGlzc3VlIGlzIG5vdCB1bmlxdWUgdG8gdGhlIHBhcnRpY3VsYXIgbWV0aG9kLgorICAg
ICAgICBXZSBzaG91bGQgY29uc2lkZXIgaW50cm9kdWNpbmcgYSBtYWNybyB0aGF0IHVud3JhcHMs
IGNhc3RzLCBhbmQgbnVsbCBjaGVja3MgYSBgY29udHJvbGxlcmAuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKHNldEdlb2xvY2F0aW9uUGVybWlz
c2lvbkNhbGxiYWNrKToKKwogMjAyMi0wMS0xMiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4Nzk0NC4KSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyODc5NjcpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTc0LDYg
Kzk3NCw5IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldEdlb2xvY2F0aW9uUGVybWlzc2kKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCiAgICAgVGVzdFJ1bm5l
ciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCkpOworICAgIGlmIChVTkxJS0VMWSghY29udHJvbGxlcikpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKwogICAgIGNvbnRyb2xsZXIt
PnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3Vt
ZW50c1swXSkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMjg3OTY3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDEtMTIgIEFsZXhleSBTaHZheWthICA8
YXNodmF5a2FAYXBwbGUuY29tPgorCisgICAgICAgIEpTQ2FsbGJhY2tEYXRhIHNob3VsZCB1c2Ug
bGV4aWNhbCBnbG9iYWwgb2JqZWN0IGZvciBlcnJvcnMgYW5kIGxpZmVjeWNsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMzg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlv
bi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC5odG1sOgorICAg
ICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy9jYWxsYmFjay10by1kZWxldGVk
LWNvbnRleHQtaW5uZXIxLmh0bWw6CisKIDIwMjItMDEtMTIgIERpZWdvIFBpbm8gR2FyY2lhICA8
ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIFVucmV2aWV3ZWQgdGVzdCBn
YXJkZW5pbmcsIG1lcmdlIGNvbW1vbiBXZWJSVEMgdGVzdCBmYWlsdXJlcwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyODc5
NjcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxl
dGVkLWNvbnRleHQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDEwIEBA
CiBmcmFtZSAiPCEtLWZyYW1lMS0tPiIgLSBoYXMgMSBvbnVubG9hZCBoYW5kbGVyKHMpCi1UZXN0
cyB0aGF0IHdoZW4gYSBHZW9sb2NhdGlvbiByZXF1ZXN0IGlzIG1hZGUgZnJvbSBhIHJlbW90ZSBm
cmFtZSwgYW5kIHRoYXQgZnJhbWUncyBzY3JpcHQgY29udGV4dCBnb2VzIGF3YXkgYmVmb3JlIHRo
ZSBHZW9sb2NhdGlvbiBjYWxsYmFjayBpcyBtYWRlLCB0aGUgY2FsbGJhY2sgaXMgbm90IG1hZGUu
IElmIHRoZSBjYWxsYmFjayBpcyBhdHRlbXB0ZWQsIGEgY3Jhc2ggd2lsbCBvY2N1ci4KK1Rlc3Rz
IHRoYXQgd2hlbiBhIEdlb2xvY2F0aW9uIHJlcXVlc3QgaXMgbWFkZSBmcm9tIGEgcmVtb3RlIGZy
YW1lLCBjYWxsYmFja3MgYXJlIG1hZGUgYXMgdXN1YWwgZXZlbiBpZiB0aGF0IGZyYW1lJ3MgYnJv
d3NpbmcgY29udGV4dCBpcyBhbHJlYWR5IG51bGwuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogCi1QQVNTIE5vIGNhbGxiYWNrcyBpbnZva2VkCitQQVNTIFN1Y2Nlc3MgY2FsbGJhY2sg
aW52b2tlZAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxl
dGVkLWNvbnRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQuaHRtbAkocmV2aXNpb24gMjg3OTY3
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRl
ZC1jb250ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiA8L2hlYWQ+CiA8
Ym9keT4KIDxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3aGVuIGEgR2VvbG9jYXRp
b24gcmVxdWVzdCBpcyBtYWRlIGZyb20gYSByZW1vdGUgZnJhbWUsIGFuZCB0aGF0IGZyYW1lJ3Mg
c2NyaXB0IGNvbnRleHQgZ29lcyBhd2F5IGJlZm9yZSB0aGUgR2VvbG9jYXRpb24gY2FsbGJhY2sg
aXMgbWFkZSwgdGhlIGNhbGxiYWNrIGlzIG5vdCBtYWRlLiBJZiB0aGUgY2FsbGJhY2sgaXMgYXR0
ZW1wdGVkLCBhIGNyYXNoIHdpbGwgb2NjdXIuIik7CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB3
aGVuIGEgR2VvbG9jYXRpb24gcmVxdWVzdCBpcyBtYWRlIGZyb20gYSByZW1vdGUgZnJhbWUsIGNh
bGxiYWNrcyBhcmUgbWFkZSBhcyB1c3VhbCBldmVuIGlmIHRoYXQgZnJhbWUncyBicm93c2luZyBj
b250ZXh0IGlzIGFscmVhZHkgbnVsbC4iKTsKIAogZnVuY3Rpb24gb25GaXJzdElmcmFtZUxvYWRl
ZCgpIHsKICAgICBpZnJhbWUuc3JjID0gJ3Jlc291cmNlcy9jYWxsYmFjay10by1kZWxldGVkLWNv
bnRleHQtaW5uZXIyLmh0bWwnOwpAQCAtMTMsNyArMTMsNyBAQCBmdW5jdGlvbiBvbkZpcnN0SWZy
YW1lTG9hZGVkKCkgewogCiBmdW5jdGlvbiBvblNlY29uZElmcmFtZUxvYWRlZCgpIHsKICAgICB3
aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgnTm8gY2Fs
bGJhY2tzIGludm9rZWQnKTsKKyAgICAgICAgdGVzdEZhaWxlZCgnTm8gY2FsbGJhY2tzIGludm9r
ZWQnKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfSwgNTAwKTsKIH0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy9jYWxsYmFjay10by1kZWxl
dGVkLWNvbnRleHQtaW5uZXIxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1pbm5l
cjEuaHRtbAkocmV2aXNpb24gMjg3OTY3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vcmVzb3VyY2VzL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1pbm5lcjEuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTMsNyArMTMsNyBAQAogICAgICAgICAgIC8vIE1ha2UgcmVxdWVz
dCBmcm9tIHJlbW90ZSBmcmFtZSwgdGhpcyBmcmFtZSB3aWxsIGJlIGdvbmUgYnkgdGhlIHRpbWUg
dGhlIEdlb2xvY2F0aW9uCiAgICAgICAgICAgLy8gb2JqZWN0IGF0dGVtcHRzIHRvIGludm9rZSB0
aGUgY2FsbGJhY2suCiAgICAgICAgICAgd2luZG93LnBhcmVudC5uYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICBwYXJlbnQu
dGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOworICAg
ICAgICAgICAgICBwYXJlbnQudGVzdFBhc3NlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkJyk7
CiAgICAgICAgICAgICAgIHBhcmVudC5maW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICB9LCBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgcGFyZW50LnRlc3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNr
IGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI4Nzk2NykKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wMS0xMiAgQWxleGV5IFNo
dmF5a2EgIDxhc2h2YXlrYUBhcHBsZS5jb20+CisKKyAgICAgICAgSlNDYWxsYmFja0RhdGEgc2hv
dWxkIHVzZSBsZXhpY2FsIGdsb2JhbCBvYmplY3QgZm9yIGVycm9ycyBhbmQgbGlmZWN5Y2xlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzIzODcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3Mt
cmVhbG0tZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTEyICBTZXJnaW8gVmlsbGFyIFNlbmluICA8
c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZmxleGJveF0gSW1wb3J0IFdQVCB0
ZXN0cyAtIEphbnVhcnkgZWRpdGlvbgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0
ZXItY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFj
Y2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjg3OTY3
KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJh
dmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5ICsxLDcgQEAKIAogCi1GQUlMIHBhcmVudCdzIHx0
aGlzfCwgcGFyZW50J3MgbWV0aG9kLCBwYXJlbnQncyBmaWx0ZXIsIHBhcmVudCdzIHJvb3QgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAg
ICBbbmF0aXZlIGNvZGVdCi19IiBidXQgZ290IGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3Io
KSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIKLUZBSUwgcGFyZW50J3MgfHRoaXN8LCBwYXJlbnQn
cyBtZXRob2QsIHBhcmVudCdzIGZpbHRlciwgaWZyYW1lJ3Mgcm9vdCBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29k
ZV0KLX0iIGJ1dCBnb3QgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0
aXZlIGNvZGVdCi19IgotRkFJTCBwYXJlbnQncyB8dGhpc3wsIHBhcmVudCdzIG1ldGhvZCwgaWZy
YW1lJ3MgZmlsdGVyLCBpZnJhbWUncyByb290IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIGZ1bmN0
aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgYnV0IGdv
dCBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0i
CitQQVNTIHBhcmVudCdzIHx0aGlzfCwgcGFyZW50J3MgbWV0aG9kLCBwYXJlbnQncyBmaWx0ZXIs
IHBhcmVudCdzIHJvb3QKK1BBU1MgcGFyZW50J3MgfHRoaXN8LCBwYXJlbnQncyBtZXRob2QsIHBh
cmVudCdzIGZpbHRlciwgaWZyYW1lJ3Mgcm9vdAorUEFTUyBwYXJlbnQncyB8dGhpc3wsIHBhcmVu
dCdzIG1ldGhvZCwgaWZyYW1lJ3MgZmlsdGVyLCBpZnJhbWUncyByb290CiBQQVNTIHBhcmVudCdz
IHx0aGlzfCwgaWZyYW1lcydzIG1ldGhvZCwgaWZyYW1lJ3MgZmlsdGVyLCBpZnJhbWUncyByb290
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449115</attachid>
            <date>2022-01-13 14:43:29 -0800</date>
            <delta_ts>2022-01-18 20:53:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232387-20220113224327.patch</filename>
            <type>text/plain</type>
            <size>112661</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBACisyMDIyLTAxLTEzICBBbGV4ZXkg
U2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBKU0NhbGxiYWNrRGF0YSBz
aG91bGQgdXNlIGxleGljYWwgZ2xvYmFsIG9iamVjdCBmb3IgZXJyb3JzIGFuZCBsaWZlY3ljbGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIFRoaXMgaXMgYSBy
ZS1sYW5kIG9mIHIyODU2Mzkgd2l0aCBhIFRlc3RSdW5uZXIgZml4IHRoYXQgcHJldmVudHMgZmFz
dC9kb20vR2VvbG9jYXRpb24KKyAgICAgICAgdGVzdHMgZnJvbSBjcmFzaGluZyBkdWUgdG8gdW5l
eHBlY3RlZCB8dGhpc3wgdmFsdWUKKworICAgICAgICBDdXJyZW50bHksIEpTQ2FsbGJhY2tEYXRh
IHVzZXMgaW5jdW1iZW50IFsxXSBnbG9iYWwgb2JqZWN0IHByZXR0eSBtdWNoIGZvciBldmVyeXRo
aW5nLAorICAgICAgICB3aGljaCBjYXVzZXMgYSBmZXcgaXNzdWVzOgorCisgICAgICAgICAgMSkg
VHlwZUVycm9ycyBhcmUgY29uc3RydWN0ZWQgaW4gaW5jb3JyZWN0IHJlYWxtOworICAgICAgICAg
IDIpIE5vZGVGaWx0ZXIgLyBYUGF0aE5TUmVzb2x2ZXIgY3Jhc2ggaWYgdGhlaXIgaW5jdW1iZW50
IHdpbmRvdyBnZXRzIGRpc2Nvbm5lY3RlZDsKKyAgICAgICAgICAzKSBvdGhlciBjYWxsYmFja3Ms
IG9yaWdpbmF0ZWQgaW4gZGV0YWNoZWQgZnJhbWUsIHdlcmUgbm90IGludm9rZWQgYXQgYWxsLgor
CisgICAgICAgIFNpbmNlIG5vdCBhbGwgaGFuZGxlRXZlbnQoKSBjYWxsZXJzIGhhdmUgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgYW5kIHRvIGF2b2lkIGEgbGFyZ2UKKyAgICAgICAgY29kZSBkaWZm
LCB0aGlzIHBhdGNoIHV0aWxpemVzIGNhbGxiYWNrIHdyYXBwZXIncyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0IHRvIGZpeCBhbGwKKyAgICAgICAgdGhlIGFib3ZlLW1lbnRpb25lZCBwcm9ibGVtcy4K
KworICAgICAgICBUbyBhY2NvbW9kYXRlIE5vZGVGaWx0ZXIgYW5kIFhQYXRoTlNSZXNvbHZlciBv
ZiBkZXRhY2hlZCBmcmFtZXMgd2l0aG91dCBncm93aW5nIHRoZQorICAgICAgICBgc2l6ZW9mYCBv
ZiBhbGwgb3RoZXIgY2FsbGJhY2tzLCBtX2dsb2JhbE9iamVjdCBtZW1iZXIgaXMgaW50cm9kdWNl
ZCBvbmx5IGZvciB0aGVtLgorCisgICAgICAgIEF1ZGlvV29ya2xldCBjaGFuZ2VzIGFyZSB1bm9i
c2VydmFibGUgYXMgd29ya2xldHMgY2FuJ3QgYWNxdWlyZSBhIGNyb3NzLXJlYWxtIG1ldGhvZC4K
KworICAgICAgICBbMV0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2Vi
YXBwYXBpcy5odG1sI2luY3VtYmVudAorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9HZW9sb2Nh
dGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQuaHRtbAorICAgICAgICAgICAgICAgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNj
ZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tbnVsbC1icm93c2luZy1jb250ZXh0Lmh0bWwKKyAg
ICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNh
bC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLmh0bWwKKworICAgICAg
ICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJMb2NrTWFuYWdlcjo6ZGlkQ29tcGxldGVMb2NrUmVxdWVzdCk6CisgICAgICAgIENv
dmVyZWQgYnkgIlJlbW92ZWQgRnJhbWUgYXMgbG9jayBpcyBncmFudGVkIiB0ZXN0IGluIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2ViLWxvY2tzL2ZyYW1lcy50ZW50YXRpdmUuaHR0
cHMuaHRtbC4KKyAgICAgICAgQmVmb3JlIHRoaXMgY2hhbmdlLCBXZWJMb2NrR3JhbnRlZENhbGxi
YWNrIHdhcyB1c2luZyBpbmN1bWJlbnQgZ2xvYmFsIG9iamVjdCAobWFpbiBmcmFtZSBpbiB0ZXN0
KSB0byBjcmVhdGUgYSBwcm9taXNlIGluc3RlYWQKKyAgICAgICAgb2YgbGV4aWNhbCAocmVtb3Zl
ZCBmcmFtZSBpbiB0ZXN0KSwgY2F1c2luZyB0aGUgdGVzdCB0byBiZSBmYWxzZS1wYXNzaW5nLgor
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQcm9j
ZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0
ZVByb2Nlc3Nvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9j
ZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpBdWRpb1dvcmts
ZXRQcm9jZXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpw
cm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6c2V0UHJv
Y2Vzc0NhbGxiYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFBy
b2Nlc3Nvci5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpwcm9j
ZXNzQ2FsbGJhY2tXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvV29ya2xl
dFByb2Nlc3NvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0F1ZGlvV29ya2xldFBy
b2Nlc3Nvcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQ2FsbGJhY2tEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjpp
bnZva2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjpKU0NhbGxiYWNrRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6fkpTQ2FsbGJhY2tEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhU3Ryb25nOjpKU0NhbGxiYWNrRGF0YVN0cm9uZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YVN0cm9uZzo6aW52b2tlQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGFXZWFrOjpKU0NhbGxiYWNrRGF0YVdlYWsp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGFXZWFrOjppbnZva2VDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6Z2xvYmFsT2JqZWN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRDYWxsYmFja3MuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExDYWxsYmFja0Z1bmN0aW9uPFQ+Pjo6Y29udmVydCk6
CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8VD4+Ojpj
b252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRlcjxJRExJbnRlcmZhY2U8WFBhdGhOU1Jl
c29sdmVyPj46OmNvbnZlcnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uX29wZW5EYXRhYmFzZUJvZHkpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVDYWxsYmFja0hlYWRlckNvbnRlbnQpOgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0lt
cGxlbWVudGF0aW9uQ29udGVudCk6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmVET01Db252ZXJ0
TmVlZHNHbG9iYWxPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy5qc29uOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy8qOiBVcGRhdGVk
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNp
ZXMuZGVwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tGdW5j
dGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFja0ludGVyZmFjZS5pZGw6CisgICAgICAgICogZG9t
L05vZGVGaWx0ZXIuaWRsOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFs
U2NvcGUuaDoKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWlu
dCk6CisgICAgICAgICogeG1sL0N1c3RvbVhQYXRoTlNSZXNvbHZlci5pZGw6CisKIDIwMjItMDEt
MTIgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAg
W1dpbkNhaXJvXSBUaWxpbmcgc2Nyb2xsIHN1cHBvcnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJyb3JDYWxsYmFj
ay5pZGwJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQsNCAr
MjQsNSBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9R0VPTE9DQVRJT04sCisgICAgU2tpcENhbGxi
YWNrSW52b2tlQ2hlY2ssCiBdIGNhbGxiYWNrIFBvc2l0aW9uRXJyb3JDYWxsYmFjayA9IHVuZGVm
aW5lZCAoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yIGVycm9yKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrTWFuYWdlci5jcHAJKHJldmlz
aW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgV2ViTG9j
a01hbmFnZXI6OmRpZENvbXBsZXRlTG9ja1JlcXUKICAgICAgICAgICAgIGF1dG8gbG9jayA9IFdl
YkxvY2s6OmNyZWF0ZShyZXF1ZXN0LmxvY2tJZGVudGlmaWVyLCByZXF1ZXN0Lm5hbWUsIHJlcXVl
c3QubW9kZSk7CiAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHJlcXVlc3QuZ3JhbnRlZENhbGxi
YWNrLT5oYW5kbGVFdmVudChsb2NrLnB0cigpKTsKICAgICAgICAgICAgIFJlZlB0cjxET01Qcm9t
aXNlPiB3YWl0aW5nUHJvbWlzZSA9IHJlc3VsdC50eXBlKCkgPT0gQ2FsbGJhY2tSZXN1bHRUeXBl
OjpTdWNjZXNzID8gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpIDogbnVsbHB0cjsKLSAgICAg
ICAgICAgIGlmICghd2FpdGluZ1Byb21pc2UpIHsKKyAgICAgICAgICAgIGlmICghd2FpdGluZ1By
b21pc2UgfHwgd2FpdGluZ1Byb21pc2UtPmlzU3VzcGVuZGVkKCkpIHsKICAgICAgICAgICAgICAg
ICBtX21haW5UaHJlYWRCcmlkZ2UtPnJlbGVhc2VMb2NrKHJlcXVlc3QubG9ja0lkZW50aWZpZXIs
IHJlcXVlc3QubmFtZSk7CiAgICAgICAgICAgICAgICAgc2V0dGxlUmVsZWFzZVByb21pc2UocmVx
dWVzdC5sb2NrSWRlbnRpZmllciwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBXZWJM
b2NrTWFuYWdlcjo6ZGlkQ29tcGxldGVMb2NrUmVxdQogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgYXV0byByZXN1bHQgPSByZXF1ZXN0LmdyYW50ZWRDYWxsYmFjay0+aGFuZGxlRXZlbnQo
bnVsbHB0cik7CiAgICAgICAgICAgICBSZWZQdHI8RE9NUHJvbWlzZT4gd2FpdGluZ1Byb21pc2Ug
PSByZXN1bHQudHlwZSgpID09IENhbGxiYWNrUmVzdWx0VHlwZTo6U3VjY2VzcyA/IHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBpZiAoIXdhaXRpbmdQ
cm9taXNlKSB7CisgICAgICAgICAgICBpZiAoIXdhaXRpbmdQcm9taXNlIHx8IHdhaXRpbmdQcm9t
aXNlLT5pc1N1c3BlbmRlZCgpKSB7CiAgICAgICAgICAgICAgICAgc2V0dGxlUmVsZWFzZVByb21p
c2UocmVxdWVzdC5sb2NrSWRlbnRpZmllciwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25F
cnJvciB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29y
a2xldEdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDcgKzc3LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9Xb3JrbGV0R2xvYmFs
U2NvcAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJBIHBy
b2Nlc3NvciB3YXMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1lIl9zIH07CiAKICAg
ICBKU0M6OkpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gcHJvY2Vzc29yQ29udHJ1Y3Rvci0+Y2Fs
bGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0ganNDb25z
dHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPiBBdWRp
b1dvcmtsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSlNDOjpKU09iamVjdCoganND
b25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yLT5jYWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTsKLSAg
ICBhdXRvKiBnbG9iYWxPYmplY3QgPSBjb25zdHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmdsb2Jh
bE9iamVjdCgpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2sgeyBnbG9iYWxPYmplY3QgfTsKQEAgLTE1NCw3ICsxNTQsNyBAQCBS
ZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPiBBdWRpb1dvcmtsCiAgICAgaWYgKCFqc1Byb2Nl
c3NvcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBqc1Byb2Nlc3Nvci0+d3JhcHBl
ZCgpLnNldFByb2Nlc3NDYWxsYmFjayhtYWtlVW5pcXVlPEpTQ2FsbGJhY2tEYXRhU3Ryb25nPihq
c1Byb2Nlc3NvciwgZ2xvYmFsT2JqZWN0KSk7CisgICAganNQcm9jZXNzb3ItPndyYXBwZWQoKS5z
ZXRQcm9jZXNzQ2FsbGJhY2soanNQcm9jZXNzb3IpOwogCiAgICAgcmV0dXJuICZqc1Byb2Nlc3Nv
ci0+d3JhcHBlZCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAkocmV2aXNpb24gMjg3OTY3
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNz
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTMgKzIwMSwxNCBAQCBFeGNlcHRpb25PcjxS
ZWY8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPj4gCiAgICAgaWYgKCFjb25zdHJ1Y3Rpb25EYXRhKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiTm8gcGVuZGluZyBjb25zdHJ1
Y3Rpb24gZGF0YSBmb3IgdGhpcyB3b3JrbGV0IHByb2Nlc3NvciJfcyB9OwogCi0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCpjb25zdHJ1Y3Rpb25EYXRhKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKGNvbnRleHQs
ICpjb25zdHJ1Y3Rpb25EYXRhKSk7CiB9CiAKIEF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6fkF1ZGlv
V29ya2xldFByb2Nlc3NvcigpID0gZGVmYXVsdDsKIAotQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpB
dWRpb1dvcmtsZXRQcm9jZXNzb3IoY29uc3QgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0
aW9uRGF0YSYgY29uc3RydWN0aW9uRGF0YSkKLSAgICA6IG1fbmFtZShjb25zdHJ1Y3Rpb25EYXRh
Lm5hbWUoKSkKK0F1ZGlvV29ya2xldFByb2Nlc3Nvcjo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEF1ZGlvV29ya2xldFByb2Nlc3Nv
ckNvbnN0cnVjdGlvbkRhdGEmIGNvbnN0cnVjdGlvbkRhdGEpCisgICAgOiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAsIG1fbmFtZShjb25zdHJ1Y3Rpb25EYXRhLm5hbWUo
KSkKICAgICAsIG1fcG9ydChjb25zdHJ1Y3Rpb25EYXRhLnBvcnQoKSkKIHsKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKQEAgLTIzNiw3ICsyMzcsNyBAQCBib29sIEF1ZGlvV29ya2xldFBy
b2Nlc3Nvcjo6cHJvY2Vzcyhjb25zCiAgICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1
cnJlbnRUaHJlYWRTY29wZSBkaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zOwogCiAgICAgQVNTRVJU
KG1fcHJvY2Vzc0NhbGxiYWNrKTsKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9wcm9jZXNz
Q2FsbGJhY2stPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuZ2xvYmFsT2Jq
ZWN0KCkpOwogICAgIEFTU0VSVChnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXND
b250ZXh0VGhyZWFkKCkpOwogCkBAIC0yNDcsNyArMjQ4LDcgQEAgYm9vbCBBdWRpb1dvcmtsZXRQ
cm9jZXNzb3I6OnByb2Nlc3MoY29ucwogICAgIGJ1aWxkSlNBcmd1bWVudHModm0sIGdsb2JhbE9i
amVjdCwgYXJncywgaW5wdXRzLCBvdXRwdXRzLCBwYXJhbVZhbHVlc01hcCk7CiAKICAgICBOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0byByZXN1bHQg
PSBtX3Byb2Nlc3NDYWxsYmFjay0+aW52b2tlQ2FsbGJhY2soanNVbmRlZmluZWQoKSwgYXJncywg
SlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicHJvY2VzcyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgYXV0byByZXN1bHQg
PSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBh
c09iamVjdChtX3Byb2Nlc3NDYWxsYmFjayksIGpzVW5kZWZpbmVkKCksIGFyZ3MsIEpTQ2FsbGJh
Y2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InByb2Nlc3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlv
bikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNl
cHRpb24pOwogICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CkBAIC0yNTksOSArMjYwLDkg
QEAgYm9vbCBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnByb2Nlc3MoY29ucwogICAgIHJldHVybiBy
ZXN1bHQudG9Cb29sZWFuKCZnbG9iYWxPYmplY3QpOwogfQogCi12b2lkIEF1ZGlvV29ya2xldFBy
b2Nlc3Nvcjo6c2V0UHJvY2Vzc0NhbGxiYWNrKHN0ZDo6dW5pcXVlX3B0cjxKU0NhbGxiYWNrRGF0
YVN0cm9uZz4mJiBwcm9jZXNzQ2FsbGJhY2spCit2b2lkIEF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6
c2V0UHJvY2Vzc0NhbGxiYWNrKEpTT2JqZWN0KiBwcm9jZXNzQ2FsbGJhY2spCiB7Ci0gICAgbV9w
cm9jZXNzQ2FsbGJhY2sgPSBXVEZNb3ZlKHByb2Nlc3NDYWxsYmFjayk7CisgICAgbV9wcm9jZXNz
Q2FsbGJhY2sgPSB7IHByb2Nlc3NDYWxsYmFjayB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFBy
b2Nlc3Nvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDE5ICs1OSwyMSBAQCBwdWJsaWM6CiAKICAgICBib29sIHByb2Nlc3MoY29uc3Qg
VmVjdG9yPFJlZlB0cjxBdWRpb0J1cz4+JiBpbnB1dHMsIFZlY3RvcjxSZWY8QXVkaW9CdXM+PiYg
b3V0cHV0cywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Zsb2F0
QXJyYXk+PiYgcGFyYW1WYWx1ZXNNYXAsIGJvb2wmIHRocmV3RXhjZXB0aW9uKTsKIAotICAgIHZv
aWQgc2V0UHJvY2Vzc0NhbGxiYWNrKHN0ZDo6dW5pcXVlX3B0cjxKU0NhbGxiYWNrRGF0YVN0cm9u
Zz4mJik7CisgICAgdm9pZCBzZXRQcm9jZXNzQ2FsbGJhY2soSlNDOjpKU09iamVjdCopOwogCisg
ICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgcHJvY2Vzc0NhbGxiYWNrV3JhcHBlcigpIHsgcmV0
dXJuIG1fcHJvY2Vzc0NhbGxiYWNrOyB9CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYganNJ
bnB1dHNXcmFwcGVyKCkgeyByZXR1cm4gbV9qc0lucHV0czsgfQogICAgIEpTVmFsdWVJbldyYXBw
ZWRPYmplY3QmIGpzT3V0cHV0c1dyYXBwZXIoKSB7IHJldHVybiBtX2pzT3V0cHV0czsgfQogICAg
IEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGpzUGFyYW1WYWx1ZXNXcmFwcGVyKCkgeyByZXR1cm4g
bV9qc1BhcmFtVmFsdWVzOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQXVkaW9Xb3JrbGV0
UHJvY2Vzc29yKGNvbnN0IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEmKTsK
KyAgICBleHBsaWNpdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IEF1ZGlvV29ya2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEmKTsKICAgICB2
b2lkIGJ1aWxkSlNBcmd1bWVudHMoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6
Ok1hcmtlZEFyZ3VtZW50QnVmZmVyQmFzZSYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8QXVkaW9CdXM+
PiYgaW5wdXRzLCBWZWN0b3I8UmVmPEF1ZGlvQnVzPj4mIG91dHB1dHMsIGNvbnN0IEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GbG9hdEFycmF5Pj4mIHBhcmFtVmFsdWVzTWFw
KTsKIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFJlZjxNZXNzYWdlUG9ydD4gbV9wb3J0OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxKU0NhbGxiYWNrRGF0YVN0cm9uZz4gbV9wcm9jZXNzQ2FsbGJhY2s7
CisgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX3Byb2Nlc3NDYWxsYmFjazsKICAgICBKU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0IG1fanNJbnB1dHM7CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVj
dCBtX2pzT3V0cHV0czsKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0IG1fanNQYXJhbVZhbHVl
czsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5jcHAJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNp
dG9yPgogdm9pZCBKU0F1ZGlvV29ya2xldFByb2Nlc3Nvcjo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRy
ZW4oVmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvJiBwcm9jZXNzb3IgPSB3cmFwcGVkKCk7
CisgICAgcHJvY2Vzc29yLnByb2Nlc3NDYWxsYmFja1dyYXBwZXIoKS52aXNpdCh2aXNpdG9yKTsK
ICAgICBwcm9jZXNzb3IuanNJbnB1dHNXcmFwcGVyKCkudmlzaXQodmlzaXRvcik7CiAgICAgcHJv
Y2Vzc29yLmpzT3V0cHV0c1dyYXBwZXIoKS52aXNpdCh2aXNpdG9yKTsKICAgICBwcm9jZXNzb3Iu
anNQYXJhbVZhbHVlc1dyYXBwZXIoKS52aXNpdCh2aXNpdG9yKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAJKHJldmlzaW9uIDI4Nzk2NykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiAvLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2NhbGwtYS11
c2VyLW9iamVjdHMtb3BlcmF0aW9uCi1KU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxs
YmFjayhKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGJhY2ss
IEpTVmFsdWUgdGhpc1ZhbHVlLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJhY2tU
eXBlIG1ldGhvZCwgUHJvcGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKK0pTVmFsdWUgSlNDYWxsYmFja0RhdGE6Omludm9r
ZUNhbGxiYWNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgSlNPYmplY3QqIGNhbGxiYWNrLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTWFya2VkQXJndW1l
bnRCdWZmZXImIGFyZ3MsIENhbGxiYWNrVHlwZSBtZXRob2QsIFByb3BlcnR5TmFtZSBmdW5jdGlv
bk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiB7CiAg
ICAgQVNTRVJUKGNhbGxiYWNrKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDYWxsYmFja0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5oCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMSArNDcs
MTAgQEAgY2xhc3MgSlNDYWxsYmFja0RhdGEgewogcHVibGljOgogICAgIGVudW0gY2xhc3MgQ2Fs
bGJhY2tUeXBlIHsgRnVuY3Rpb24sIE9iamVjdCwgRnVuY3Rpb25Pck9iamVjdCB9OwogCi0gICAg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0
LmdldCgpOyB9Ci0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGludm9r
ZUNhbGxiYWNrKEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVu
dEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTQzo6SlNWYWx1ZSB0aGlz
VmFsdWUsIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImLCBDYWxsYmFja1R5cGUsIEpTQzo6UHJv
cGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5l
ZEV4Y2VwdGlvbik7CiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgSlNDYWxsYmFja0RhdGEoSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICAgICAgOiBtX2dsb2JhbE9iamVjdChn
bG9iYWxPYmplY3QpCisgICAgZXhwbGljaXQgSlNDYWxsYmFja0RhdGEoSlNET01HbG9iYWxPYmpl
Y3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICAgICAgOiBtX2luY3VtYmVudEdsb2JhbE9i
amVjdChpbmN1bWJlbnRHbG9iYWxPYmplY3QpCiAgICAgewogICAgIH0KICAgICAKQEAgLTYxLDEx
ICs2MCw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgQVNTRVJUKG1fdGhyZWFkLnB0cigpID09ICZU
aHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKICAgICB9Ci0gICAgCi0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9iamVjdCYs
IEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6Ok1h
cmtlZEFyZ3VtZW50QnVmZmVyJiwgQ2FsbGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5TmFtZSBmdW5j
dGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwog
CisgICAgSlNDOjpXZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2luY3VtYmVudEdsb2JhbE9iamVj
dDsKIHByaXZhdGU6Ci0gICAgSlNDOjpXZWFrPEpTRE9NR2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9i
amVjdDsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJlZjxUaHJlYWQ+IG1fdGhyZWFkIHsgVGhy
ZWFkOjpjdXJyZW50KCkgfTsKICNlbmRpZgpAQCAtNzMsMjEgKzcwLDE3IEBAIHByaXZhdGU6CiAK
IGNsYXNzIEpTQ2FsbGJhY2tEYXRhU3Ryb25nIDogcHVibGljIEpTQ2FsbGJhY2tEYXRhIHsKIHB1
YmxpYzoKLSAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdm9pZCogPSBudWxscHRyKQotICAgICAg
ICA6IEpTQ2FsbGJhY2tEYXRhKGdsb2JhbE9iamVjdCkKLSAgICAgICAgLCBtX2NhbGxiYWNrKGds
b2JhbE9iamVjdC0+dm0oKSwgY2FsbGJhY2spCisgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcoSlND
OjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxP
YmplY3QsIHZvaWQqID0gbnVsbHB0cikKKyAgICAgICAgOiBKU0NhbGxiYWNrRGF0YShpbmN1bWJl
bnRHbG9iYWxPYmplY3QpCisgICAgICAgICwgbV9jYWxsYmFjayhpbmN1bWJlbnRHbG9iYWxPYmpl
Y3QtPnZtKCksIGNhbGxiYWNrKQogICAgIHsKICAgICB9CiAKICAgICBKU0M6OkpTT2JqZWN0KiBj
YWxsYmFjaygpIHsgcmV0dXJuIG1fY2FsbGJhY2suZ2V0KCk7IH0KIAotICAgIEpTQzo6SlNWYWx1
ZSBpbnZva2VDYWxsYmFjayhKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6Ok1hcmtlZEFyZ3Vt
ZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFja1R5cGUgY2FsbGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5
TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNl
cHRpb24pCisgICAgSlNDOjpKU1ZhbHVlIGludm9rZUNhbGxiYWNrKEpTRE9NR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6Ok1hcmtl
ZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFja1R5cGUgY2FsbGJhY2tUeXBlLCBKU0M6OlBy
b3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJu
ZWRFeGNlcHRpb24pCiAgICAgewotICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0aGlzLT5n
bG9iYWxPYmplY3QoKTsKLSAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgICAgICBy
ZXR1cm4geyB9OwotCi0gICAgICAgIHJldHVybiBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJh
Y2soKmdsb2JhbE9iamVjdCwgY2FsbGJhY2soKSwgdGhpc1ZhbHVlLCBhcmdzLCBjYWxsYmFja1R5
cGUsIGZ1bmN0aW9uTmFtZSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgICAgICByZXR1cm4gSlND
YWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIG1faW5jdW1i
ZW50R2xvYmFsT2JqZWN0LmdldCgpLCBjYWxsYmFjaygpLCB0aGlzVmFsdWUsIGFyZ3MsIGNhbGxi
YWNrVHlwZSwgZnVuY3Rpb25OYW1lLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgfQogCiBwcml2
YXRlOgpAQCAtOTYsMjEgKzg5LDE3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTQ2FsbGJhY2tEYXRh
V2VhayA6IHB1YmxpYyBKU0NhbGxiYWNrRGF0YSB7CiBwdWJsaWM6Ci0gICAgSlNDYWxsYmFja0Rh
dGFXZWFrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB2b2lkKiBvd25lcikKLSAgICAgICAgOiBKU0NhbGxiYWNrRGF0YShnbG9iYWxPYmpl
Y3QpCisgICAgSlNDYWxsYmFja0RhdGFXZWFrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RP
TUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB2b2lkKiBvd25lcikKKyAgICAg
ICAgOiBKU0NhbGxiYWNrRGF0YShpbmN1bWJlbnRHbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9j
YWxsYmFjayhjYWxsYmFjaywgJm1fd2Vha093bmVyLCBvd25lcikKICAgICB7CiAgICAgfQogCiAg
ICAgSlNDOjpKU09iamVjdCogY2FsbGJhY2soKSB7IHJldHVybiBtX2NhbGxiYWNrLmdldCgpOyB9
CiAKLSAgICBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlNDOjpKU1ZhbHVlIHRoaXNWYWx1
ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJhY2tUeXBlIGNhbGxiYWNr
VHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQorICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFj
ayhKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJhY2tUeXBlIGNh
bGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6
OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKLSAgICAgICAgYXV0byogZ2xv
YmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGlmICghZ2xvYmFsT2Jq
ZWN0KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICByZXR1cm4gSlNDYWxsYmFj
a0RhdGE6Omludm9rZUNhbGxiYWNrKCpnbG9iYWxPYmplY3QsIGNhbGxiYWNrKCksIHRoaXNWYWx1
ZSwgYXJncywgY2FsbGJhY2tUeXBlLCBmdW5jdGlvbk5hbWUsIHJldHVybmVkRXhjZXB0aW9uKTsK
KyAgICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0LCBtX2luY3VtYmVudEdsb2JhbE9iamVjdC5nZXQoKSwgY2FsbGJhY2soKSwgdGhp
c1ZhbHVlLCBhcmdzLCBjYWxsYmFja1R5cGUsIGZ1bmN0aW9uTmFtZSwgcmV0dXJuZWRFeGNlcHRp
b24pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZvaWQgdmlzaXRK
U0Z1bmN0aW9uKFZpc2l0b3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydENhbGxiYWNrcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydENhbGxiYWNrcy5oCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRDYWxsYmFja3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNyArMzYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVy
dGVyPElECiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNvbnZlcnNpb25IYXNTaWRlRWZmZWN0
cyA9IGZhbHNlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERl
ZmF1bHRFeGNlcHRpb25UaHJvd2VyPgotICAgIHN0YXRpYyBSZWZQdHI8VD4gY29udmVydChKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUs
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvblRocm93ZXImJiBleGNl
cHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQorICAgIHN0YXRpYyBSZWZQdHI8VD4g
Y29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0
aW9uVGhyb3dlcigpKQogICAgIHsKICAgICAgICAgSlNDOjpWTSYgdm0gPSBKU0M6OmdldFZNKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwpAQCAtNDYsNyArNDYsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q29udmVydGVyPElECiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0g
ICAgICAgIHJldHVybiBUOjpjcmVhdGUoSlNDOjphc09iamVjdCh2YWx1ZSksICZjYWxsZXJHbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0LCB2bS50b3BDYWxsRnJhbWUpKTsKKyAgICAgICAgYXV0byYg
anNET01HbG9iYWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4
aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBUOjpjcmVhdGUoanNET01HbG9iYWxP
YmplY3QsIEpTQzo6YXNPYmplY3QodmFsdWUpLCAmY2FsbGVyR2xvYmFsT2JqZWN0KGpzRE9NR2xv
YmFsT2JqZWN0LCB2bS50b3BDYWxsRnJhbWUpKTsKICAgICB9CiB9OwogCkBAIC03MCw3ICs3MSw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBKU0NvbnZlcnRlcjwKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxJRExDYWxsYmFja0ludGVyZmFjZTxUPj4gOiBE
ZWZhdWx0Q29udmVydGVyPElETENhbGxiYWNrSW50ZXJmYWNlPFQ+PiB7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgotICAg
IHN0YXRpYyBSZWZQdHI8VD4gY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhy
b3dlcigpKQorICAgIHN0YXRpYyBSZWZQdHI8VD4gY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93
ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsKICAgICAg
ICAgSlNDOjpWTSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODAsNyArODEsOCBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPElECiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBUOjpjcmVhdGUoSlND
Ojphc09iamVjdCh2YWx1ZSksICZjYWxsZXJHbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LCB2bS50
b3BDYWxsRnJhbWUpKTsKKyAgICAgICAgYXV0byYganNET01HbG9iYWxPYmplY3QgPSAqSlNDOjpq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgICAg
IHJldHVybiBUOjpjcmVhdGUoanNET01HbG9iYWxPYmplY3QsIEpTQzo6YXNPYmplY3QodmFsdWUp
LCAmY2FsbGVyR2xvYmFsT2JqZWN0KGpzRE9NR2xvYmFsT2JqZWN0LCB2bS50b3BDYWxsRnJhbWUp
KTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNv
bnZlcnRYUGF0aE5TUmVzb2x2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRYUGF0aE5TUmVzb2x2ZXIuaAkocmV2aXNpb24gMjg3OTY3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0WFBhdGhOU1Jlc29sdmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ29u
dmVydGVyPElETEludGVyZmFjZQogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1hQYXRo
TlNSZXNvbHZlcj4odm0pKQogICAgICAgICAgICAgcmV0dXJuICZKU0M6OmpzQ2FzdDxKU1hQYXRo
TlNSZXNvbHZlcio+KG9iamVjdCktPndyYXBwZWQoKTsKIAotICAgICAgICByZXR1cm4gSlNDdXN0
b21YUGF0aE5TUmVzb2x2ZXI6OmNyZWF0ZShvYmplY3QsIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgYXV0byYganNET01HbG9i
YWxPYmplY3QgPSAqSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2Jh
bE9iamVjdCk7CisgICAgICAgIHJldHVybiBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRl
KGpzRE9NR2xvYmFsT2JqZWN0LCBvYmplY3QsICZjYWxsZXJHbG9iYWxPYmplY3QoanNET01HbG9i
YWxPYmplY3QsIHZtLnRvcENhbGxGcmFtZSkpOwogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9u
IDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDcgKzE5NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTih3aGVuU2lnbmFsQWJvcnQKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKEpTQzo6SlNWYWx1ZTo6SlNGYWxzZSkpOwogCiAgICAgYXV0byoganNET01HbG9iYWxP
YmplY3QgPSBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCk7Ci0g
ICAgUmVmPEFib3J0QWxnb3JpdGhtPiBhYm9ydEFsZ29yaXRobSA9IEpTQWJvcnRBbGdvcml0aG06
OmNyZWF0ZShjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdldE9iamVjdCgpLCBqc0RP
TUdsb2JhbE9iamVjdCk7CisgICAgUmVmPEFib3J0QWxnb3JpdGhtPiBhYm9ydEFsZ29yaXRobSA9
IEpTQWJvcnRBbGdvcml0aG06OmNyZWF0ZSgqanNET01HbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
dW5jaGVja2VkQXJndW1lbnQoMSkuZ2V0T2JqZWN0KCksIGpzRE9NR2xvYmFsT2JqZWN0KTsKIAog
ICAgIGJvb2wgcmVzdWx0ID0gQWJvcnRTaWduYWw6OndoZW5TaWduYWxBYm9ydGVkKGFib3J0U2ln
bmFsLT53cmFwcGVkKCksIFdURk1vdmUoYWJvcnRBbGdvcml0aG0pKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCA/IEpTVmFsdWUoSlNDOjpKU1ZhbHVlOjpKU1RydWUpIDogSlNW
YWx1ZShKU0M6OkpTVmFsdWU6OkpTRmFsc2UpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDI4Nzk2NykKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjA2LDcgKzYwNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc0RPTVcKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RFbXB0
eU9iamVjdChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKS0+
b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICB9CiAKLSAgICBhdXRvIGNyZWF0aW9uQ2FsbGJhY2sg
PSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNEYXRhYmFzZUNhbGxi
YWNrPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDQpLCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsKKyAgICBhdXRvIGNyZWF0aW9u
Q2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNEYXRh
YmFzZUNhbGxiYWNrPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDQpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7CiAgICAgICAgIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCA0LCAiY3JlYXRpb25DYWxsYmFjayIsICJX
aW5kb3ciLCAib3BlbkRhdGFiYXNlIik7CiAgICAgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyODc5
NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQkod29ya2luZyBjb3B5KQpAQCAtNjQwMiwxMyArNjQwMiwxMSBAQCBzdWIgR2VuZXJhdGVDYWxs
YmFja0hlYWRlckNvbnRlbnQKICAgICBwdXNoKEAkY29udGVudFJlZiwgInB1YmxpYzpcbiIpOwog
CiAgICAgIyBUaGUgc3RhdGljIGNyZWF0ZSgpIG1ldGhvZC4KLSAgICBwdXNoKEAkY29udGVudFJl
ZiwgIiAgICBzdGF0aWMgUmVmPCRjbGFzc05hbWU+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxs
YmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOworICAgIHB1c2goQCRj
b250ZW50UmVmLCAiICAgIHN0YXRpYyBSZWY8JGNsYXNzTmFtZT4gY3JlYXRlKEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2Jh
bE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVzaChAJGNvbnRlbnRS
ZWYsICIgICAge1xuIik7Ci0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3ICR7Y2xhc3NOYW1lfShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7XG4iKTsK
KyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgJHtj
bGFzc05hbWV9KGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCkp
O1xuIik7CiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgfVxuXG4iKTsKIAotICAgIHB1c2go
QCRjb250ZW50UmVmLCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9XG5cbiIpOwotCiAgICAgcHVzaChAJGNvbnRlbnRSZWYs
ICIgICAgfiRjbGFzc05hbWUoKSBmaW5hbDtcbiIpOwogCiAgICAgcHVzaChAJGNvbnRlbnRSZWYs
ICIgICAgJHtjYWxsYmFja0RhdGFUeXBlfSogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRh
OyB9XG4iKTsKQEAgLTY0NDUsNyArNjQ0Myw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSGVhZGVy
Q29udGVudAogCiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJcbnByaXZhdGU6XG4iKTsKIAotICAg
IHB1c2goQCRjb250ZW50UmVmLCAiICAgICR7Y2xhc3NOYW1lfShKU0M6OkpTT2JqZWN0KiwgSlNE
T01HbG9iYWxPYmplY3QqKTtcblxuIik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgJHtj
bGFzc05hbWV9KEpTRE9NR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpT
T2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCk7XG5cbiIp
OwogCiAgICAgaWYgKCRpbnRlcmZhY2VPckNhbGxiYWNrLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJ
c1dlYWtDYWxsYmFja30pIHsKICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgYm9vbCBo
YXNDYWxsYmFjaygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGF0YSAmJiBtX2RhdGEtPmNhbGxi
YWNrKCk7IH1cblxuIik7CkBAIC02NDU0LDYgKzY0NTIsMTMgQEAgc3ViIEdlbmVyYXRlQ2FsbGJh
Y2tIZWFkZXJDb250ZW50CiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgdm9pZCB2aXNpdEpT
RnVuY3Rpb24oSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7XG5cbiIpIGlmICRp
bnRlcmZhY2VPckNhbGxiYWNrLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc1dlYWtDYWxsYmFja307
CiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgdm9pZCB2aXNpdEpTRnVuY3Rpb24oSlNDOjpT
bG90VmlzaXRvciYpIG92ZXJyaWRlO1xuXG4iKSBpZiAkaW50ZXJmYWNlT3JDYWxsYmFjay0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57SXNXZWFrQ2FsbGJhY2t9OwogCisgICAgaWYgKCRpbnRlcmZhY2VP
ckNhbGxiYWNrLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTa2lwQ2FsbGJhY2tJbnZva2VDaGVja30p
IHsKKyAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICptX2dsb2JhbE9iamVjdC5nZXQoKTsgfVxuXG4i
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gKkpTQzo6anNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3Qo
KSk7IH1cblxuIik7CisgICAgfQorCisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgSlNDOjpT
dHJvbmc8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFsT2JqZWN0O1xuIikgaWYgJGludGVyZmFj
ZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NraXBDYWxsYmFja0ludm9rZUNoZWNr
fTsKICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAke2NhbGxiYWNrRGF0YVR5cGV9KiBtX2Rh
dGE7XG4iKTsKICAgICBwdXNoKEAkY29udGVudFJlZiwgIn07XG5cbiIpOwogCkBAIC02NDc0LDkg
KzY0NzksMTAgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgogICAg
ICRpbmNsdWRlc1JlZi0+eyJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgifSA9IDE7CiAKICAgICAj
IENvbnN0cnVjdG9yCi0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIke2NsYXNzTmFtZX06OiR7Y2xh
c3NOYW1lfShKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpXG4iKTsKLSAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICA6ICR7bmFtZX0oZ2xvYmFsT2Jq
ZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpXG4iKTsKLSAgICBwdXNoKEAkY29udGVudFJl
ZiwgIiAgICAsIG1fZGF0YShuZXcgJHtjYWxsYmFja0RhdGFUeXBlfShjYWxsYmFjaywgZ2xvYmFs
T2JqZWN0LCB0aGlzKSlcbiIpOworICAgIHB1c2goQCRjb250ZW50UmVmLCAiJHtjbGFzc05hbWV9
Ojoke2NsYXNzTmFtZX0oSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KVxuIik7
CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgOiAke25hbWV9KGdsb2JhbE9iamVjdC5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpXG4iKTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAs
IG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdC52bSgpLCAmZ2xvYmFsT2JqZWN0KVxuIikgaWYg
JGludGVyZmFjZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NraXBDYWxsYmFja0lu
dm9rZUNoZWNrfTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAsIG1fZGF0YShuZXcgJHtj
YWxsYmFja0RhdGFUeXBlfShjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2JqZWN0LCB0aGlzKSlc
biIpOwogICAgIHB1c2goQCRjb250ZW50UmVmLCAie1xuIik7CiAgICAgcHVzaChAJGNvbnRlbnRS
ZWYsICJ9XG5cbiIpOwogCkBAIC02NTgxLDEzICs2NTg3LDEzIEBAIHN1YiBHZW5lcmF0ZUNhbGxi
YWNrSW1wbGVtZW50YXRpb25Db250ZW4KIAogICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBu
ZWVkZWQgZm9yIE5vZGVGaWx0ZXIsIHdoaWNoIHdvcmtzIGV2ZW4gZm9yIGRpc2Nvbm5lY3RlZCBp
ZnJhbWVzLiBXZSBzaG91bGQgaW52ZXN0aWdhdGUKICAgICAgICAgICAgICMgaWYgdGhhdCBiZWhh
dmlvciBpcyBuZWVkZWQgZm9yIG90aGVyIGNhbGxiYWNrcy4KLSAgICAgICAgICAgIGlmICghJG9w
ZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2tpcENhbGxiYWNrSW52b2tlQ2hlY2t9KSB7
CisgICAgICAgICAgICBpZiAoISRpbnRlcmZhY2VPckNhbGxiYWNrLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntTa2lwQ2FsbGJhY2tJbnZva2VDaGVja30pIHsKICAgICAgICAgICAgICAgICBwdXNoKEAk
Y29udGVudFJlZiwgIiAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpXG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0
VHlwZTo6VW5hYmxlVG9FeGVjdXRlO1xuXG4iKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgUmVmPCRjbGFzc05hbWU+IHByb3RlY3RlZFRoaXMo
KnRoaXMpO1xuXG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGF1dG8m
IGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9i
YWxPYmplY3QoKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgYXV0
byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTtcblxuIik7CiAgICAgICAgICAgICBwdXNoKEAkY29u
dGVudFJlZiwgIiAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7XG4iKTsKIApAQCAtNjYwNSwxMCAr
NjYxMSwxMCBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uQ29udGVuCiAKICAg
ICAgICAgICAgIG15ICRjYWxsYmFja0ludm9jYXRpb247CiAgICAgICAgICAgICBpZiAocmVmKCRp
bnRlcmZhY2VPckNhbGxiYWNrKSBlcSAiSURMQ2FsbGJhY2tGdW5jdGlvbiIpIHsKLSAgICAgICAg
ICAgICAgICAkY2FsbGJhY2tJbnZvY2F0aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhp
c1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRl
bnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbikiOworICAgICAgICAgICAgICAgICRjYWxsYmFj
a0ludm9jYXRpb24gPSAibV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9u
LCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIG15ICRjYWxsYmFja1R5cGUgPSAkbnVtT3BlcmF0aW9ucyA+IDEg
PyAiT2JqZWN0IiA6ICJGdW5jdGlvbk9yT2JqZWN0IjsKLSAgICAgICAgICAgICAgICAkY2FsbGJh
Y2tJbnZvY2F0aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBK
U0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjoke2NhbGxiYWNrVHlwZX0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIFwiJHtmdW5jdGlvbk5hbWV9XCIpLCByZXR1cm5lZEV4Y2VwdGlvbiki
OworICAgICAgICAgICAgICAgICRjYWxsYmFja0ludm9jYXRpb24gPSAibV9kYXRhLT5pbnZva2VD
YWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tE
YXRhOjpDYWxsYmFja1R5cGU6OiR7Y2FsbGJhY2tUeXBlfSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgXCIke2Z1bmN0aW9uTmFtZX1cIiksIHJldHVybmVkRXhjZXB0aW9uKSI7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmICgkb3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJ1bmRl
ZmluZWQiKSB7CkBAIC03MDU5LDggKzcwNjUsNiBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlRE9NQ29u
dmVydE5lZWRzR2xvYmFsCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgIHJldHVybiAx
IGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKTsKLSAgICByZXR1
cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0Z1bmN0aW9uKCR0eXBlKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZVRvTmF0aXZlRE9NQ29udmVydE5lZWRzR2xvYmFsT2JqZWN0KEB7JHR5cGUt
PnN1YnR5cGVzfVsxXSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzUmVjb3JkVHlwZSgkdHlwZSk7CiAg
ICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIlNjaGVkdWxlZEFjdGlvbiI7CiAgICAgcmV0
dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lE
TEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTQ5MSw3
ICs0OTEsNyBAQAogICAgICAgICAgICAgInN1cHBvcnRzQ29uanVuY3Rpb24iOiB0cnVlCiAgICAg
ICAgIH0sCiAgICAgICAgICJTa2lwQ2FsbGJhY2tJbnZva2VDaGVjayI6IHsKLSAgICAgICAgICAg
ICJjb250ZXh0c0FsbG93ZWQiOiBbIm9wZXJhdGlvbiIsICJjYWxsYmFjay1mdW5jdGlvbiJdCisg
ICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiY2FsbGJhY2stZnVu
Y3Rpb24iXQogICAgICAgICB9LAogICAgICAgICAiU2tpcFZUYWJsZVZhbGlkYXRpb24iOiB7CiAg
ICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5k
ZXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1
cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVw
CSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw5IEBAIFdlYkRPTVRlc3RDYWxsYmFja0Z1bmN0
aW9uLmg6IAogSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuaDogCiBET01UZXN0Q2FsbGJh
Y2tGdW5jdGlvblJldGhyb3cuaDogCiBXZWJET01UZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cu
aDogCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2suaDogCitE
T01UZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrLmg6IAorV2ViRE9N
VGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5oOiAKIEpTVGVzdENh
bGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5oOiAKIERPTVRlc3RDYWxsYmFja0Z1bmN0aW9u
V2l0aFRoaXNPYmplY3QuaDogCiBXZWJET01UZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2Jq
ZWN0Lmg6IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RD
YWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2suaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tGdW5jdGlv
blNraXBDYWxsYmFja0ludm9rZUNoZWNrLmlkbAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJh
Y2tJbnZva2VDaGVjay5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1sKKyAgICBTa2lwQ2FsbGJhY2tJbnZva2VDaGVjaworXSBjYWxsYmFjayBUZXN0Q2Fs
bGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrID0gdW5zaWduZWQgc2hvcnQgKERP
TVN0cmluZyBhcmd1bWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdENhbGxiYWNrSW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrSW50ZXJmYWNlLmlkbAkocmV2
aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RDYWxsYmFja0ludGVyZmFjZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDUgQEAg
ZGljdGlvbmFyeSBUZXN0Q2FsbGJhY2tJbnRlcmZhY2VEaWN0aW9uYQogICAgIHVuZGVmaW5lZCBj
YWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhsb25nIGxvbmdQYXJhbSwgVGVzdE5vZGUgdGVzdE5v
ZGVQYXJhbSk7CiAgICAgRE9NU3RyaW5nIGNhbGxiYWNrV2l0aEFSZXR1cm5WYWx1ZSgpOwogICAg
IFtSZXRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgY2FsbGJhY2tUaGF0UmV0aHJvd3NFeGNlcHRp
b25zKFRlc3RDYWxsYmFja0ludGVyZmFjZUVudW0gZW51bVBhcmFtKTsKLSAgICBbU2tpcENhbGxi
YWNrSW52b2tlQ2hlY2tdIERPTVN0cmluZyBjYWxsYmFja1RoYXRTa2lwc0ludm9rZUNoZWNrKFRl
c3RDYWxsYmFja0ludGVyZmFjZURpY3Rpb25hcnkgZGljdGlvbmFyeVBhcmFtKTsKICAgICBbQ2Fs
bGJhY2tUaGlzT2JqZWN0PVRlc3ROb2RlXSBET01TdHJpbmcgY2FsbGJhY2tXaXRoVGhpc09iamVj
dChUZXN0T2JqIHRlc3RPYmpQYXJhbSk7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw5ICszMCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCi1KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
KEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAg
ICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQotICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywg
Z2xvYmFsT2JqZWN0LCB0aGlzKSkKK0pTVGVzdENhbGxiYWNrRnVuY3Rpb246OkpTVGVzdENhbGxi
YWNrRnVuY3Rpb24oSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNh
bGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQorICAgIDog
VGVzdENhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkKKyAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGluY3Vt
YmVudEdsb2JhbE9iamVjdCwgdGhpcykpCiB7CiB9CiAKQEAgLTU3LDcgKzU3LDcgQEAgQ2FsbGJh
Y2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxi
YWNrRnVuY3Rpb24+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2Jq
ZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0g
dGhpcy0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsK
IAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTY4LDcgKzY4LDcgQEAgQ2FsbGJhY2tS
ZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVy
Zmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0
aW9uOwotICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1
ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZp
ZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmlu
dm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxs
YmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRF
eGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRF
eGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAg
ICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIFRlc3RDYWxsYmFj
a0Z1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rp
b24+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKKyAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+IGNyZWF0
ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFj
aywgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rpb24oY2FsbGJhY2ss
IGdsb2JhbE9iamVjdCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uKGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVj
dCkpOwogICAgIH0KIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9Ci0KICAgICB+SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbigp
IGZpbmFsOwogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBjYWxsYmFja0RhdGEoKSB7IHJldHVy
biBtX2RhdGE7IH0KIApAQCAtNDMsNyArNDEsOSBAQCBwdWJsaWM6CiAgICAgQ2FsbGJhY2tSZXN1
bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IGhhbmRsZUV2ZW50
KHR5cGVuYW1lIElETExvbmc6OlBhcmFtZXRlclR5cGUgYXJndW1lbnQpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIEpTVGVzdENhbGxiYWNrRnVuY3Rpb24oSlNDOjpKU09iamVjdCosIEpTRE9N
R2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbihKU0RPTUdsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpOworCisgICAgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9CiAKICAgICBK
U0NhbGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93LmNwcAkocmV2aXNpb24gMjg3OTY3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rp
b25SZXRocm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
blJldGhyb3c6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KEpTT2JqZWN0KiBjYWxsYmFj
aywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IFRlc3RDYWxsYmFja0Z1
bmN0aW9uUmV0aHJvdyhnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAg
ICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGdsb2JhbE9iamVj
dCwgdGhpcykpCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdzo6SlNUZXN0Q2FsbGJhY2tG
dW5jdGlvblJldGhyb3coSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQorICAg
IDogVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpCisgICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxi
YWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QsIHRoaXMpKQogewogfQogCkBAIC02MCw3ICs2MCw3
IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW0KIAogICAgIFJlZjxK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAg
ICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRv
JiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGds
b2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtNzEsNyAr
NzEsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltCiAgICAgQVNT
RVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tl
Q2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpG
dW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgYXV0byBqc1Jl
c3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhpc1Zh
bHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRp
ZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7
CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
ICAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgcmV0
dXJuZWRFeGNlcHRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rp
b25SZXRocm93LmgJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSwxMyArMjksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdyBmaW5hbCA6IHB1YmxpYyBUZXN0Q2FsbGJhY2tG
dW5jdGlvblJldGhyb3cgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SlNUZXN0Q2FsbGJhY2tG
dW5jdGlvblJldGhyb3c+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb25SZXRocm93PiBjcmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlND
OjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxP
YmplY3QpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uUmV0aHJvdyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KGdsb2JhbE9iamVj
dCwgY2FsbGJhY2ssIGluY3VtYmVudEdsb2JhbE9iamVjdCkpOwogICAgIH0KIAotICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVy
biBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9
Ci0KICAgICB+SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3coKSBmaW5hbDsKICAgICBKU0Nh
bGxiYWNrRGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAg
LTQzLDcgKzQxLDkgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERP
TVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExTZXF1
ZW5jZTxJRExMb25nPjo6UGFyYW1ldGVyVHlwZSBhcmd1bWVudCkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3coSlNDOjpKU09iamVjdCosIEpT
RE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3coSlNE
T01HbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNPYmplY3QqLCBKU0RP
TUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KTsKKworICAgIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiAqSlNDOjpqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsg
fQogCiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIG1fZGF0YTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNr
aXBDYWxsYmFja0ludm9rZUNoZWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFj
a0ludm9rZUNoZWNrLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9r
ZUNoZWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg5IEBACisvKgorICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlz
IGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1Qg
TU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2suaCIKKworI2luY2x1ZGUgIkpTRE9NQ29u
dmVydE51bWJlcnMuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKworCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2s6OkpTVGVzdENh
bGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjayhKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1
bWJlbnRHbG9iYWxPYmplY3QpCisgICAgOiBUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFj
a0ludm9rZUNoZWNrKGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAg
LCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3Qudm0oKSwgJmdsb2JhbE9iamVjdCkKKyAgICAs
IG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGluY3VtYmVudEdsb2Jh
bE9iamVjdCwgdGhpcykpCit7Cit9CisKK0pTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJh
Y2tJbnZva2VDaGVjazo6fkpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VD
aGVjaygpCit7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGlzIGRlc3Ryb3llZCwg
YWxsIHRhc2tzIHdpdGggYSByZWZlcmVuY2UgdG8gYSBjYWxsYmFjaworICAgIC8vIHNob3VsZCBi
ZSBkZWxldGVkLiBTbyBpZiB0aGUgY29udGV4dCBpcyAwLCB3ZSBhcmUgb24gdGhlIGNvbnRleHQg
dGhyZWFkLgorICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSkK
KyAgICAgICAgZGVsZXRlIG1fZGF0YTsKKyAgICBlbHNlCisgICAgICAgIGNvbnRleHQtPnBvc3RU
YXNrKERlbGV0ZUNhbGxiYWNrRGF0YVRhc2sobV9kYXRhKSk7CisjaWZuZGVmIE5ERUJVRworICAg
IG1fZGF0YSA9IG51bGxwdHI7CisjZW5kaWYKK30KKworQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUg
SURMVW5zaWduZWRTaG9ydDo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2s6OmhhbmRsZUV2ZW50KHR5cGVuYW1lIElETERPTVN0
cmluZzo6UGFyYW1ldGVyVHlwZSBhcmd1bWVudCkKK3sKKyAgICBSZWY8SlNUZXN0Q2FsbGJhY2tG
dW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKwor
ICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8m
IHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CisKKyAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Cisg
ICAgYXV0byYgbGV4aWNhbEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
czsKKyAgICBhcmdzLmFwcGVuZCh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQpKTsKKyAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKKworICAg
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKKyAgICBhdXRvIGpz
UmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlz
VmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVu
dGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24p
IHsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5l
ZEV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlv
blRocm93bjsKKyAgICAgfQorCisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgYXV0byByZXR1cm5WYWx1ZSA9IGNvbnZlcnQ8SURMVW5zaWduZWRTaG9y
dD4obGV4aWNhbEdsb2JhbE9iamVjdCwganNSZXN1bHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd24pOworICAg
IHJldHVybiB7IFdURk1vdmUocmV0dXJuVmFsdWUpIH07Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pT
KFRlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2smIGltcGwpCit7Cisg
ICAgaWYgKCFzdGF0aWNfY2FzdDxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52
b2tlQ2hlY2smPihpbXBsKS5jYWxsYmFja0RhdGEoKSkKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgp
OworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2Fs
bGJhY2tJbnZva2VDaGVjayY+KGltcGwpLmNhbGxiYWNrRGF0YSgpLT5jYWxsYmFjaygpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNo
ZWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjay5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2suaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDU1IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlICJKU0NhbGxiYWNrRGF0YS5oIgor
I2luY2x1ZGUgIlRlc3RDYWxsYmFja0Z1bmN0aW9uU2tpcENhbGxiYWNrSW52b2tlQ2hlY2suaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZva2VDaGVjayBmaW5hbCA6IHB1
YmxpYyBUZXN0Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25Ta2lwQ2FsbGJhY2tJbnZv
a2VDaGVjaz4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNP
YmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrKGdsb2JhbE9iamVjdCwgY2FsbGJhY2ssIGluY3Vt
YmVudEdsb2JhbE9iamVjdCkpOworICAgIH0KKworICAgIH5KU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
U2tpcENhbGxiYWNrSW52b2tlQ2hlY2soKSBmaW5hbDsKKyAgICBKU0NhbGxiYWNrRGF0YVN0cm9u
ZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CisKKyAgICAvLyBGdW5jdGlvbnMK
KyAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbnNpZ25lZFNob3J0OjpJbXBsZW1lbnRh
dGlvblR5cGU+IGhhbmRsZUV2ZW50KHR5cGVuYW1lIElETERPTVN0cmluZzo6UGFyYW1ldGVyVHlw
ZSBhcmd1bWVudCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgICAgSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrKEpTRE9NR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEds
b2JhbE9iamVjdCk7CisKKyAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkgY29u
c3QgeyByZXR1cm4gKm1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CisKKyAgICBKU0M6OlN0cm9uZzxK
U0RPTUdsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CisgICAgSlNDYWxsYmFja0RhdGFTdHJv
bmcqIG1fZGF0YTsKK307CisKK0pTQzo6SlNWYWx1ZSB0b0pTKFRlc3RDYWxsYmFja0Z1bmN0aW9u
U2tpcENhbGxiYWNrSW52b2tlQ2hlY2smKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhUZXN0
Q2FsbGJhY2tGdW5jdGlvblNraXBDYWxsYmFja0ludm9rZUNoZWNrKiBpbXBsKSB7IHJldHVybiBp
bXBsID8gdG9KUygqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
V2l0aFRoaXNPYmplY3QuY3BwCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhU
aGlzT2JqZWN0OjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoSlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogVGVzdENh
bGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdChnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkKLSAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJh
Y2ssIGdsb2JhbE9iamVjdCwgdGhpcykpCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNP
YmplY3Q6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdChKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0
KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCisgICAgOiBUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhU
aGlzT2JqZWN0KGdsb2JhbE9iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBt
X2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxP
YmplY3QsIHRoaXMpKQogewogfQogCkBAIC02MSw3ICs2MSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5
cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
V2l0aFRoaXNPYmplY3Q+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFs
T2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0
ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0o
KTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTcyLDcgKzcyLDcgQEAgQ2FsbGJh
Y2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNP
dmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhj
ZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0Nh
bGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5l
ZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0
aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRF
eGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6
OkV4Y2VwdGlvblRocm93bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmgJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0
aFRoaXNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0
IGZpbmFsIDogcHVibGljIFRlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0
PiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCisgICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNP
YmplY3Q+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2Jq
ZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rp
b25XaXRoVGhpc09iamVjdChjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdChnbG9i
YWxPYmplY3QsIGNhbGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QpKTsKICAgICB9CiAKLSAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsgfQotCiAgICAgfkpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdCgpIGZp
bmFsOwogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBjYWxsYmFja0RhdGEoKSB7IHJldHVybiBt
X2RhdGE7IH0KIApAQCAtNDMsNyArNDEsOSBAQCBwdWJsaWM6CiAgICAgQ2FsbGJhY2tSZXN1bHQ8
dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlvblR5cGU+IGhhbmRsZUV2ZW50KHR5
cGVuYW1lIElETEludGVyZmFjZTxUZXN0Tm9kZT46OlBhcmFtZXRlclR5cGUgdGhpc09iamVjdCwg
dHlwZW5hbWUgSURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPFRlc3ROb2RlPj46OlBhcmFtZXRlclR5
cGUgcGFyYW1ldGVyKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBKU1Rlc3RDYWxsYmFja0Z1
bmN0aW9uV2l0aFRoaXNPYmplY3QoSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0Kik7
CisgICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0KEpTRE9NR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmpl
Y3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCk7CisKKyAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7IH0KIAogICAgIEpT
Q2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjg3OTY3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxi
YWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw5ICszNCw5
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1KU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5
cGVkZWZzKEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKLSAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzKGdsb2JhbE9iamVjdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0
YVN0cm9uZyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0LCB0aGlzKSkKK0pTVGVzdENhbGxiYWNrRnVu
Y3Rpb25XaXRoVHlwZWRlZnM6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMoSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUds
b2JhbE9iamVjdCogaW5jdW1iZW50R2xvYmFsT2JqZWN0KQorICAgIDogVGVzdENhbGxiYWNrRnVu
Y3Rpb25XaXRoVHlwZWRlZnMoZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGluY3VtYmVu
dEdsb2JhbE9iamVjdCwgdGhpcykpCiB7CiB9CiAKQEAgLTYxLDcgKzYxLDcgQEAgQ2FsbGJhY2tS
ZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNr
RnVuY3Rpb25XaXRoVHlwZWRlZnM+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYg
Z2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFs
T2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmpl
Y3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTczLDcgKzczLDcgQEAg
Q2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogICAgIEFTU0VSVCghYXJn
cy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVy
bmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdz
LCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6
OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0
dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3Vs
dFR5cGU6OkV4Y2VwdGlvblRocm93bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMuaAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25X
aXRoVHlwZWRlZnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyBm
aW5hbCA6IHB1YmxpYyBUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzPiBjcmVh
dGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCisgICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzPiBj
cmVhdGUoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU09iamVjdCogY2Fs
bGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5
cGVkZWZzKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhnbG9iYWxPYmplY3QsIGNh
bGxiYWNrLCBpbmN1bWJlbnRHbG9iYWxPYmplY3QpKTsKICAgICB9CiAKLSAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQotCiAg
ICAgfkpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMoKSBmaW5hbDsKICAgICBKU0Nh
bGxiYWNrRGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAg
LTQzLDcgKzQxLDkgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVu
ZGVmaW5lZDo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExTZXF1
ZW5jZTxJRExOdWxsYWJsZTxJRExMb25nPj46OlBhcmFtZXRlclR5cGUgc2VxdWVuY2VBcmcsIHR5
cGVuYW1lIElETExvbmc6OlBhcmFtZXRlclR5cGUgbG9uZ0FyZykgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhKU0M6OkpTT2JqZWN0
KiwgSlNET01HbG9iYWxPYmplY3QqKTsKKyAgICBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5
cGVkZWZzKEpTRE9NR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTT2Jq
ZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCk7CisKKyAgICBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gKkpTQzo6anND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxP
YmplY3QoKSk7IH0KIAogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7CiB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNr
SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODc5Njcp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsOSArMTIwLDkgQEAgdGVtcGxh
dGU8PiBUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkRpY3RpbwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpKU1Rlc3RDYWxsYmFja0ludGVyZmFjZShKU09i
amVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2UoZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpCi0gICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBnbG9i
YWxPYmplY3QsIHRoaXMpKQorSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkpTVGVzdENhbGxiYWNr
SW50ZXJmYWNlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxs
YmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKKyAgICA6IFRl
c3RDYWxsYmFja0ludGVyZmFjZShnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KQorICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgaW5jdW1i
ZW50R2xvYmFsT2JqZWN0LCB0aGlzKSkKIHsKIH0KIApAQCAtMTgzLDcgKzE4Myw3IEBAIENhbGxi
YWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxs
YmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxP
YmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3Qg
PSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgp
OwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtMTkzLDcgKzE5Myw3IEBAIENhbGxi
YWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFz
T3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4
Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlND
YWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY2FsbGJhY2tXaXRoTm9QYXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9k
YXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3Ms
IEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImNhbGxiYWNrV2l0aE5vUGFyYW0iKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAg
IGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGlj
YWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxi
YWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAtMjA5LDcgKzIwOSw3IEBAIENhbGxi
YWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxs
YmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxP
YmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3Qg
PSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgp
OwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtMjIwLDcgKzIyMCw3IEBAIENhbGxi
YWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFz
T3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4
Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlND
YWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY2FsbGJhY2tXaXRoQXJyYXlQYXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAg
bV9kYXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFy
Z3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aEFycmF5UGFyYW0iKSwgcmV0dXJuZWRFeGNlcHRpb24p
OwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24o
JmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJu
IENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAtMjM2LDcgKzIzNiw3IEBA
IENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rl
c3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBn
bG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxP
YmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVj
dC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtMjQ4LDcgKzI0OCw3IEBA
IENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFy
Z3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1
cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0iKSwgcmV0
dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhTZXJpYWxpemVk
U2NyaXB0VmFsdWVQYXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVk
RXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVj
dCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBl
OjpFeGNlcHRpb25UaHJvd247CkBAIC0yNjQsNyArMjY0LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlw
ZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNl
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2Rh
dGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMtPmdsb2Jh
bE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CkBAIC0yNzUsNyArMjc1LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlw
ZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkp
OwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAg
IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6
Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFj
a1dpdGhTdHJpbmdMaXN0IiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9r
ZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFj
a0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdCIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJl
dHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1
bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CkBAIC0yOTEsNyArMjkxLDcgQEAgQ2FsbGJhY2tSZXN1
bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50
ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9
ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMt
Pmdsb2JhbE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC0zMDIsNyArMzAyLDcgQEAgQ2FsbGJhY2tSZXN1
bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxv
d2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9u
OwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNr
RGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJj
YWxsYmFja1dpdGhCb29sZWFuIiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmlu
dm9rZUNhbGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxs
YmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiY2FsbGJhY2tXaXRoQm9vbGVhbiIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJl
dHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1
bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CkBAIC0zMTgsNyArMzE4LDcgQEAgQ2FsbGJhY2tSZXN1
bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50
ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9
ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9IHRoaXMt
Pmdsb2JhbE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC0zMzAsNyArMzMwLDcgQEAgQ2FsbGJhY2tSZXN1
bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxv
d2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9u
OwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNr
RGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJj
YWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9k
YXRhLT5pbnZva2VDYWxsYmFjayhsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aGlzVmFsdWUsIGFyZ3Ms
IEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgImNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzIiksIHJldHVybmVkRXhjZXB0aW9u
KTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9u
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVy
biBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsKQEAgLTM0Niw3ICszNDYsNyBA
QCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltCiAKICAgICBSZWY8SlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYg
Z2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFs
T2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmpl
Y3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTM1Niw3ICszNTYsNyBA
QCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltCiAgICAgQVNTRVJUKCFh
cmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0
dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJh
Y2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhBUmV0dXJuVmFsdWUiKSwg
cmV0dXJuZWRFeGNlcHRpb24pOworICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNh
bGxiYWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0Rh
dGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2Fs
bGJhY2tXaXRoQVJldHVyblZhbHVlIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0
dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3Vs
dFR5cGU6OkV4Y2VwdGlvblRocm93bjsKQEAgLTM3NSw3ICszNzUsNyBAQCBDYWxsYmFja1Jlc3Vs
dDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0g
Km1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gdGhpcy0+
Z2xvYmFsT2JqZWN0KCk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTM4Niw3ICszODYsNyBAQCBDYWxsYmFja1Jlc3Vs
dDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93
ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247
Ci0gICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBh
cmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJjYWxsYmFja1RoYXRSZXRocm93c0V4Y2VwdGlvbnMiKSwgcmV0dXJuZWRF
eGNlcHRpb24pOworICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxi
YWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tUaGF0
UmV0aHJvd3NFeGNlcHRpb25zIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJu
ZWRFeGNlcHRpb24pIHsKICAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCByZXR1cm5lZEV4Y2VwdGlvbik7CkBAIC0zOTksMzMgKzM5OSw2IEBAIENhbGxi
YWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW0KICAgICByZXR1cm4geyBXVEZNb3Zl
KHJldHVyblZhbHVlKSB9OwogfQogCi1DYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJp
bmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNr
VGhhdFNraXBzSW52b2tlQ2hlY2sodHlwZW5hbWUgSURMRGljdGlvbmFyeTxUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U6OkRpY3Rpb25hcnk+OjpQYXJhbWV0ZXJUeXBlIGRpY3Rpb25hcnlQYXJhbSkKLXsK
LSAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwot
Ci0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAg
YXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKLQotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZt
KTsKLSAgICBhdXRvJiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OwotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMRGljdGlvbmFyeTxUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U6OkRpY3Rpb25hcnk+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qs
IGRpY3Rpb25hcnlQYXJhbSkpOwotICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwot
Ci0gICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1
dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlND
YWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiY2FsbGJhY2tUaGF0U2tpcHNJbnZva2VDaGVjayIpLCByZXR1cm5lZEV4Y2VwdGlvbik7
Ci0gICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigm
bGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwotICAgICAgICByZXR1cm4g
Q2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247Ci0gICAgIH0KLQotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8gcmV0dXJuVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwganNSZXN1bHQp
OwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgQ2FsbGJhY2tSZXN1bHRUeXBl
OjpFeGNlcHRpb25UaHJvd24pOwotICAgIHJldHVybiB7IFdURk1vdmUocmV0dXJuVmFsdWUpIH07
Ci19Ci0KIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRp
b25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2FsbGJhY2tXaXRoVGhpc09iamVjdCh0
eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVzdE5vZGU+OjpQYXJhbWV0ZXJUeXBlIHRoaXNPYmplY3Qs
IHR5cGVuYW1lIElETEludGVyZmFjZTxUZXN0T2JqPjo6UGFyYW1ldGVyVHlwZSB0ZXN0T2JqUGFy
YW0pCiB7CiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQpAQCAtNDMzLDcgKzQwNiw3IEBA
IENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW0KIAogICAgIFJlZjxKU1Rl
c3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBn
bG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxP
YmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVj
dC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtNDQ0LDcgKzQxNyw3IEBA
IENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW0KICAgICBBU1NFUlQoIWFy
Z3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1
cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFj
ayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aFRoaXNPYmplY3QiKSwgcmV0
dXJuZWRFeGNlcHRpb24pOworICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxi
YWNrKGxleGljYWxHbG9iYWxPYmplY3QsIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJh
Y2tXaXRoVGhpc09iamVjdCIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVk
RXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVj
dCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBl
OjpFeGNlcHRpb25UaHJvd247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2Uu
aAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEz
ICszMywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpTVGVzdENhbGxiYWNrSW50
ZXJmYWNlIGZpbmFsIDogcHVibGljIFRlc3RDYWxsYmFja0ludGVyZmFjZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gY3JlYXRlKEpTQzo6SlNPYmpl
Y3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRp
YyBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3Qq
IGluY3VtYmVudEdsb2JhbE9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoZ2xvYmFs
T2JqZWN0LCBjYWxsYmFjaywgaW5jdW1iZW50R2xvYmFsT2JqZWN0KSk7CiAgICAgfQogCi0gICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7IH0KLQogICAgIH5KU1Rlc3RDYWxsYmFja0ludGVyZmFjZSgpIGZpbmFsOwogICAgIEpTQ2Fs
bGJhY2tEYXRhU3Ryb25nKiBjYWxsYmFja0RhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KICAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CkBAIC01NCwxMSArNTIsMTIgQEAgcHVibGljOgogICAgIENhbGxiYWNr
UmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25UeXBlPiBjYWxsYmFj
a1JlcXVpcmVzVGhpc1RvUGFzcyh0eXBlbmFtZSBJRExMb25nOjpQYXJhbWV0ZXJUeXBlIGxvbmdQ
YXJhbSwgdHlwZW5hbWUgSURMSW50ZXJmYWNlPFRlc3ROb2RlPjo6UGFyYW1ldGVyVHlwZSB0ZXN0
Tm9kZVBhcmFtKSBvdmVycmlkZTsKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01T
dHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gY2FsbGJhY2tXaXRoQVJldHVyblZhbHVlKCkgb3Zl
cnJpZGU7CiAgICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1l
bnRhdGlvblR5cGU+IGNhbGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0aW9ucyh0eXBlbmFtZSBJRExF
bnVtZXJhdGlvbjxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+OjpQYXJhbWV0ZXJUeXBlIGVu
dW1QYXJhbSkgb3ZlcnJpZGU7Ci0gICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3Ry
aW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IGNhbGxiYWNrVGhhdFNraXBzSW52b2tlQ2hlY2sodHlw
ZW5hbWUgSURMRGljdGlvbmFyeTxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkRpY3Rpb25hcnk+OjpQ
YXJhbWV0ZXJUeXBlIGRpY3Rpb25hcnlQYXJhbSkgb3ZlcnJpZGU7CiAgICAgQ2FsbGJhY2tSZXN1
bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IGNhbGxiYWNrV2l0
aFRoaXNPYmplY3QodHlwZW5hbWUgSURMSW50ZXJmYWNlPFRlc3ROb2RlPjo6UGFyYW1ldGVyVHlw
ZSB0aGlzT2JqZWN0LCB0eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVzdE9iaj46OlBhcmFtZXRlclR5
cGUgdGVzdE9ialBhcmFtKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBKU1Rlc3RDYWxsYmFj
a0ludGVyZmFjZShKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqKTsKKyAgICBKU1Rl
c3RDYWxsYmFja0ludGVyZmFjZShKU0RPTUdsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmpl
Y3QpOworCisgICAgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuICpKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+Z2xvYmFsT2JqZWN0KCkpOyB9CiAKICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogbV9k
YXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuY3BwCShy
ZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyAr
NjUsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeTIgY29udmVyCiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFj
YWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LmNhbGxi
YWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5jYWxs
YmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgc3Ry
aW5nTWVtYmVyVmFsdWU7CkBAIC0xNTMsNyArMTUzLDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZl
ZERpY3Rpb25hcnkyOjpEaWN0aQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNr
TWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9i
amVjdCkpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxi
YWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFj
a01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWU7CkBAIC0x
ODgsNyArMTg4LDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aQog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAg
IGlmICghcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAg
ICByZXN1bHQucGFydGlhbENhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0
aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbENhbGxiYWNr
TWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9i
amVjdCkpOworICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNrTWVtYmVyID0gY29udmVydDxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
cGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgcGFydGlhbFJlcXVpcmVkTG9u
Z01lbWJlclZhbHVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkuY3Bw
CShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3
ICs2NSw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5IGNvbnZlcnQKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAo
IWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICByZXN1bHQuY2Fs
bGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0LmNh
bGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNr
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBw
YXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHRlbXBsYXRlPD4g
VGVzdERlcml2ZWREaWN0aW9uYXJ5IGNvbnZlcnQKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxDYWxsYmFja01lbWJl
clZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01l
bWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0LnBh
cnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRD
YWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVl
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0K
ICAgICBKU1ZhbHVlIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9u
YXJ5Mi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmNwcAkocmV2aXNpb24gMjg3OTY3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRl
ZERpY3Rpb25hcnkyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCB0ZW1wbGF0
ZTw+IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5MiBjb252CiAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjYWxsYmFja01lbWJlclZh
bHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29u
dmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZs
ZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNv
bnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgc3RyaW5nTWVtYmVyVmFsdWU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5o
ZXJpdGVkRGljdGlvbmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuY3BwCShyZXZpc2lv
biAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcg
QEAgdGVtcGxhdGU8PiBUZXN0SW5oZXJpdGVkRGljdGlvbmFyeSBjb252ZQogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJh
Y2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01l
bWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGlj
YWxHbG9iYWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tN
ZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHBhcnRpYWxC
b29sZWFuTWVtYmVyVmFsdWU7CkBAIC0xMDAsNyArMTAwLDcgQEAgdGVtcGxhdGU8PiBUZXN0SW5o
ZXJpdGVkRGljdGlvbmFyeSBjb252ZQogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUu
aXNVbmRlZmluZWQoKSkgewotICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNrTWVtYmVyID0g
Y29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICByZXN1bHQucGFydGlhbENh
bGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNr
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpT
VmFsdWUgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJl
dmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEyLDEwICsyMDEyLDEwIEBAIHRl
bXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTF8KICAgICBBU1NFUlQoY29udGV4
dC0+aXNEb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50
PigqY29udGV4dCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byB0ZXN0Q2FsbGJhY2sgPSBjb252
ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAidGVzdENhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCBu
dWxscHRyKTsgfSk7CisgICAgYXV0byB0ZXN0Q2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNr
SW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmpl
Y3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgInRlc3RDYWxsYmFjayIsICJU
ZXN0T2JqZWN0IiwgbnVsbHB0cik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAgYXV0byB0ZXN0Q2Fs
bGJhY2tGdW5jdGlvbiA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJ0ZXN0Q2FsbGJh
Y2tGdW5jdGlvbiIsICJUZXN0T2JqZWN0IiwgbnVsbHB0cik7IH0pOworICAgIGF1dG8gdGVzdENh
bGxiYWNrRnVuY3Rpb24gPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBzY29wZSwgMSwgInRlc3RDYWxsYmFja0Z1bmN0aW9uIiwgIlRlc3RPYmplY3QiLCBu
dWxscHRyKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPYmo6OmNyZWF0ZShkb2N1bWVudCwg
dGVzdENhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCksIHRlc3RDYWxsYmFja0Z1bmN0aW9uLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIGlmIGNvbnN0ZXhwciAoSXNFeGNlcHRpb25PcjxkZWNsdHlwZShv
YmplY3QpPikKQEAgLTM0NTEsNyArMzQ1MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3RPYmpfc3RyaW5nVm8KICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxP
YmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBhdXRvIG5hdGl2ZVZh
bHVlID0gY29udmVydDxJRExSZWNvcmQ8SURMRE9NU3RyaW5nLCBJRExDYWxsYmFja0Z1bmN0aW9u
PEpTVm9pZENhbGxiYWNrPj4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlLCAqdGhpc09iamVj
dC5nbG9iYWxPYmplY3QoKSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMUmVj
b3JkPElETERPTVN0cmluZywgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBmYWxzZSk7CiAgICAgaW52b2tlRnVuY3RvclByb3BhZ2F0aW5nRXhjZXB0aW9uSWZO
ZWNlc3NhcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICAg
cmV0dXJuIGltcGwuc2V0U3RyaW5nVm9pZENhbGxiYWNrUmVjb3JkQXR0cihXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CkBAIC03MDIwLDcgKzcwMjAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElE
TENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dT
Y29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRo
Q2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVu
dE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJh
Y2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4g
ZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tJbnRlcmZhY2VB
cmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkBAIC03MDQwLDcgKzcwNDAs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVO
TElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxs
QWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwot
ICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJm
YWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJh
Y2tJbnRlcmZhY2VBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVs
bGFibGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJbnRl
cmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoTnVs
bGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CkBA
IC03MDYzLDcgKzcwNjMsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgYXV0byBub25DYWxsYmFjayA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBh
cmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gY2Fs
bGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJm
YWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVj
dEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9i
amVjdCIsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVy
ZmFjZUFyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0lu
dGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJjYWxsYmFjayIsICJUZXN0T2Jq
ZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0ludGVyZmFjZUFyZ0FuZENhbGxiYWNrSW50ZXJm
YWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5vbkNh
bGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmcoV1RGTW92ZShub25DYWxs
YmFjayksIGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkpOwogfQpAQCAtNzA4MSw3ICs3
MDgxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVO
VVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5k
ZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+Pjo6UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAu
dmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRl
cmZhY2VBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGFyZ3VtZW50MC52YWx1ZSgpLmlz
VW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2U+Pjo6UmV0dXJuVHlwZSgpIDogY29udmVydDxJRExDYWxsYmFja0ludGVyZmFj
ZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5l
ZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1
dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tJbnRlcmZhY2VBcmco
V1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzA5OSw3ICs3MDk5LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShjYWxs
RnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0g
ICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZh
Y2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3Vt
ZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsg
dGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3Bl
LCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJs
ZUNhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0
PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNl
Pj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkg
eyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxh
YmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUo
Y2FsbGJhY2spKTsgfSkpKTsKIH0KQEAgLTcxMTksNyArNzExOSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sg
PSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
MCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25B
cmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tG
dW5jdGlvbkFyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkpKTsKIH0KQEAgLTcxMzks
NyArNzEzOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1l
bnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTnVsbGFi
bGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0
PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9i
YWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsg
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxi
YWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RX
aXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2spKTsgfSkpKTsK
IH0KQEAgLTcxNjIsNyArNzE2Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBhdXRvIG5vbkNhbGxiYWNrID0gY29udmVydDxJRExMb25nPigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNj
b3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAgYXV0
byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1
bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1
bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJjYWxsYmFjayIsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25B
cmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlv
bjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MS52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIs
ICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRl
Y2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2Fs
bGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKG5vbkNhbGxiYWNrKSwgY2FsbGJhY2sucmVsZWFzZU5v
bk51bGwoKSk7IH0pKSk7CiB9CkBAIC03MTgwLDcgKzcxODAsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIGNh
bGxiYWNrID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IENvbnZlcnRlcjxJRExD
YWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pjo6UmV0dXJuVHlwZSgpIDog
Y29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKKyAgICBhdXRvIGNh
bGxiYWNrID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IENvbnZlcnRlcjxJRExD
YWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pjo6UmV0dXJuVHlwZSgpIDog
Y29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAs
ICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrRnVu
Y3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0
aW9uYWxDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1vdmUoY2FsbGJhY2spKTsgfSkpKTsKIH0KQEAg
LTcxOTgsNyArNzE5OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51
bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAi
bWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAg
IGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
Qzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0Iiwg
Im1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJh
Y2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CkBAIC03MjE1LDcgKzcy
MTUsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50
ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9i
YWxPYmplY3QpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAi
c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsgfSk7CisgICAgYXV0byBj
YWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAic3RhdGlj
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gVGVzdE9iajo6c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoV1RG
TW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzIzNCw3ICs3MjM0LDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlmIChVTkxJS0VMWShjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxi
YWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFj
ZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIik7
IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpT
VGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAic3Rh
dGljTWV0aG9kV2l0aENhbGxiYWNrQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRo
cm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIFRl
c3RPYmo6OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyhjYWxsYmFjay5yZWxlYXNlTm9uTnVs
bCgpKTsgfSkpKTsKIH0KQEAgLTczNjQsNyArNzM2NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1
dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNr
SW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RC
ZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAi
VGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sg
PSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
MCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExV
bmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNs
dHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm92ZXJsb2FkZWRNZXRob2QoY2FsbGJhY2sucmVsZWFz
ZU5vbk51bGwoKSk7IH0pKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25l
RGljdGlvbmFyeS5jcHAJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9uYXJ5SW1wbE5hbWUg
Y29udmVydERpYwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0g
ICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlv
bjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFs
dWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwor
ICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rp
b248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZh
bHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBKU1ZhbHVlIGVudW1NZW1iZXJWYWx1ZTsKQEAgLTEzNiw3ICsxMzYsNyBAQCB0ZW1w
bGF0ZTw+IERpY3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGljCiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFwYXJ0aWFsQ2FsbGJh
Y2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2Fs
bGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+
PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJl
c3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248
SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQ2FsbGJhY2tNZW1i
ZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
ICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjg3OTY3
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDEwICsxNjgsMTAgQEAgdGVtcGxhdGU8PiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMXwogICAgIGF1dG8gaGVsbG8gPSBjb252ZXJ0PElE
TERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDEpOwotICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBjb252ZXJ0PElETENh
bGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVzdFR5cGVkZWZzIiwg
bnVsbHB0cik7IH0pOworICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBjb252ZXJ0PElE
TENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVz
dEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgInRlc3RDYWxs
YmFja0Z1bmN0aW9uIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOyB9KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0
aWxsQWxpdmVTY29wZSBhcmd1bWVudDIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIp
OwotICAgIGF1dG8gdGVzdENhbGxiYWNrSW50ZXJmYWNlID0gY29udmVydDxJRExDYWxsYmFja0lu
dGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDIudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3Bl
KSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgMiwgInRlc3RDYWxsYmFja0ludGVyZmFjZSIsICJUZXN0VHlwZWRlZnMiLCBudWxscHRy
KTsgfSk7CisgICAgYXV0byB0ZXN0Q2FsbGJhY2tJbnRlcmZhY2UgPSBjb252ZXJ0PElETENhbGxi
YWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50Mi52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVP
YmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMiwgInRlc3RDYWxsYmFja0lu
dGVyZmFjZSIsICJUZXN0VHlwZWRlZnMiLCBudWxscHRyKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBhdXRvIG9iamVjdCA9
IFRlc3RUeXBlZGVmczo6Y3JlYXRlKFdURk1vdmUoaGVsbG8pLCB0ZXN0Q2FsbGJhY2tGdW5jdGlv
bi5yZWxlYXNlTm9uTnVsbCgpLCB0ZXN0Q2FsbGJhY2tJbnRlcmZhY2UucmVsZWFzZU5vbk51bGwo
KSk7CiAgICAgaWYgY29uc3RleHByIChJc0V4Y2VwdGlvbk9yPGRlY2x0eXBlKG9iamVjdCk+KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFZvaWRD
YWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uY3BwCShyZXZpc2lv
biAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw5ICs0MSw5
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1KU1Rlc3RW
b2lkQ2FsbGJhY2tGdW5jdGlvbjo6SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oSlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogVGVzdFZv
aWRDYWxsYmFja0Z1bmN0aW9uKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KQotICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgZ2xvYmFs
T2JqZWN0LCB0aGlzKSkKK0pTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uOjpKU1Rlc3RWb2lkQ2Fs
bGJhY2tGdW5jdGlvbihKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCog
Y2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBpbmN1bWJlbnRHbG9iYWxPYmplY3QpCisgICAg
OiBUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKKyAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ss
IGluY3VtYmVudEdsb2JhbE9iamVjdCwgdGhpcykpCiB7CiB9CiAKQEAgLTY4LDcgKzY4LDcgQEAg
Q2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogCiAgICAgUmVmPEpTVGVz
dFZvaWRDYWxsYmFja0Z1bmN0aW9uPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8m
IGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2Jh
bE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2Jq
ZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC04NCw3ICs4NCw3IEBA
IENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFy
Z3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1
cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwg
cmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sobGV4aWNhbEds
b2JhbE9iamVjdCwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBl
OjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJl
dHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1
bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENhbGxi
YWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDEzICszMSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpT
VGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uIGZpbmFsIDogcHVibGljIFRlc3RWb2lkQ2FsbGJhY2tG
dW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5j
dGlvbj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBSZWY8SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24+
IGNyZWF0ZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTT2JqZWN0KiBj
YWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9u
KGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaywgaW5jdW1i
ZW50R2xvYmFsT2JqZWN0KSk7CiAgICAgfQogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLQogICAgIH5KU1Rlc3RWb2lk
Q2FsbGJhY2tGdW5jdGlvbigpIGZpbmFsOwogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBjYWxs
YmFja0RhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KIApAQCAtNDUsNyArNDMsOSBAQCBwdWJsaWM6
CiAgICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlv
blR5cGU+IGhhbmRsZUV2ZW50KHR5cGVuYW1lIElETEZsb2F0MzJBcnJheTo6UGFyYW1ldGVyVHlw
ZSBhcnJheVBhcmFtLCB0eXBlbmFtZSBJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPjo6UGFyYW1ldGVyVHlwZSBzcnpQYXJhbSwgdHlwZW5hbWUgSURMRE9NU3Ry
aW5nOjpQYXJhbWV0ZXJUeXBlIHN0ckFyZywgdHlwZW5hbWUgSURMQm9vbGVhbjo6UGFyYW1ldGVy
VHlwZSBib29sUGFyYW0sIHR5cGVuYW1lIElETExvbmc6OlBhcmFtZXRlclR5cGUgbG9uZ1BhcmFt
LCB0eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVzdE5vZGU+OjpQYXJhbWV0ZXJUeXBlIHRlc3ROb2Rl
UGFyYW0pIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0
aW9uKEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdFZvaWRD
YWxsYmFja0Z1bmN0aW9uKEpTRE9NR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGluY3VtYmVudEdsb2JhbE9iamVjdCk7
CisKKyAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4g
KkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5nbG9iYWxPYmplY3QoKSk7IH0KIAogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmlkbAkocmV2aXNpb24gMjg3OTY3KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
MCw2ICsyMCw3IEBACiAKIFsKICAgICBJc1dlYWtDYWxsYmFjaywKKyAgICBTa2lwQ2FsbGJhY2tJ
bnZva2VDaGVjaywKICAgICBFeHBvc2VkPVdpbmRvdwogXSBjYWxsYmFjayBpbnRlcmZhY2UgTm9k
ZUZpbHRlciB7CiAgICAgLy8gQ29uc3RhbnRzIGZvciBhY2NlcHROb2RlKCkuCkBAIC00Miw1ICs0
Myw1IEBACiAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBTSE9XX0RPQ1VNRU5UX0ZSQUdNRU5UID0g
MHgwMDAwMDQwMDsKICAgICBjb25zdCB1bnNpZ25lZCBsb25nIFNIT1dfTk9UQVRJT04gPSAweDAw
MDAwODAwOyAvLyBIaXN0b3JpY2FsLgogCi0gICAgW1NraXBDYWxsYmFja0ludm9rZUNoZWNrLCBS
ZXRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBzaG9ydCBhY2NlcHROb2RlKE5vZGUgbm9kZSk7Cisg
ICAgW1JldGhyb3dFeGNlcHRpb25dIHVuc2lnbmVkIHNob3J0IGFjY2VwdE5vZGUoTm9kZSBub2Rl
KTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5oCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDYgKzc4LDcgQEAgcHJvdGVjdGVkOgogICAgIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFdv
cmtlclRocmVhZFR5cGUsIFJlZjxKU0M6OlZNPiYmLCBXb3JrZXJPcldvcmtsZXRUaHJlYWQqKTsK
IAogICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0
X2Nhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqPih0aGlzKTsgfQogICAgIGJvb2wgaXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBtYXJrQXNDbG9z
aW5nKCkgeyBtX2lzQ2xvc2luZyA9IHRydWU7IH0KQEAgLTkwLDcgKzkxLDYgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGZpbmFsIHsgZGVyZWYoKTsg
fQogCiAgICAgLy8gRXZlbnRUYXJnZXQuCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8V29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqPih0aGlzKTsgfQogICAgIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyBkZXJlZigpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Q
YWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTMzLDcgKzEzMyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2Jh
bFNjb3AKICAgICAgICAgaWYgKHBhaW50VmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgY2xhc3MgbXVzdCBoYXZlIGEgcGFp
bnQgbWV0aG9kIiB9OwogCi0gICAgICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50
ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KGdsb2Jh
bE9iamVjdCwgcGFpbnRWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxP
YmplY3QpKTsKKyAgICAgICAgUmVmUHRyPEpTQ1NTUGFpbnRDYWxsYmFjaz4gcGFpbnQgPSBjb252
ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNDU1NQYWludENhbGxiYWNrPj4oZ2xvYmFsT2JqZWN0
LCBwYWludFZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0
aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9KTsKIAogICAgICAgICBhdXRvIHBhaW50RGVm
aW5pdGlvbiA9IG1ha2VVbmlxdWU8UGFpbnREZWZpbml0aW9uPihuYW1lLCBwYWludENvbnN0cnVj
dG9yLmdldCgpLCBwYWludC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKGlucHV0UHJvcGVydGll
cyksIFdURk1vdmUoaW5wdXRBcmd1bWVudHMpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9D
dXN0b21YUGF0aE5TUmVzb2x2ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3ht
bC9DdXN0b21YUGF0aE5TUmVzb2x2ZXIuaWRsCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS94bWwvQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjQsNiArMjQsOCBAQAogICovCiAKIC8vIE5vdCB1c2luZyBbSXNXZWFrQ2FsbGJhY2tdIGhlcmUg
YXMgWFBhdGhOU1Jlc29sdmVyIHdyYXBwZXJzIGFsd2F5cyB0ZW1wb3JhcnkgKG5vIHJlZmVyZW5j
ZSBpcyBrZXB0KQotY2FsbGJhY2sgaW50ZXJmYWNlIEN1c3RvbVhQYXRoTlNSZXNvbHZlciB7Ci0g
ICAgW0ltcGxlbWVudGVkQXM9bG9va3VwTmFtZXNwYWNlVVJJRm9yQmluZGluZ3MsIFNraXBDYWxs
YmFja0ludm9rZUNoZWNrXSBET01TdHJpbmc/IGxvb2t1cE5hbWVzcGFjZVVSSShET01TdHJpbmc/
IHByZWZpeCk7CitbCisgICAgU2tpcENhbGxiYWNrSW52b2tlQ2hlY2ssCitdIGNhbGxiYWNrIGlu
dGVyZmFjZSBDdXN0b21YUGF0aE5TUmVzb2x2ZXIgeworICAgIFtJbXBsZW1lbnRlZEFzPWxvb2t1
cE5hbWVzcGFjZVVSSUZvckJpbmRpbmdzXSBET01TdHJpbmc/IGxvb2t1cE5hbWVzcGFjZVVSSShE
T01TdHJpbmc/IHByZWZpeCk7CiB9OwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjg3OTkzKQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjItMDEtMTMgIEFsZXhleSBTaHZh
eWthICA8YXNodmF5a2FAYXBwbGUuY29tPgorCisgICAgICAgIEpTQ2FsbGJhY2tEYXRhIHNob3Vs
ZCB1c2UgbGV4aWNhbCBnbG9iYWwgb2JqZWN0IGZvciBlcnJvcnMgYW5kIGxpZmVjeWNsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMzg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgU2luY2UgZmFzdC9kb20v
R2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRtbCBpcyBub3cgY2FsbHMgVGVzdFJ1bm5lcidz
CisgICAgICAgIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrKCkgZnJvbSBhbiBlcnJv
ciBjYWxsYmFjayB3aXRoIGFuIHVuZXhwZWN0ZWQgfHRoaXN8CisgICAgICAgIHZhbHVlICh5ZXQg
d2l0aCBhbiBhcmd1bWVudCksIHRoaXMgcGF0Y2ggYWRkcyBhIGBudWxscHRyYCBjaGVjayB0byBh
dm9pZCBjcmFzaGVzLgorCisgICAgICAgIFRoaXMgaXNzdWUgaXMgbm90IHVuaXF1ZSB0byB0aGUg
cGFydGljdWxhciBtZXRob2QuCisgICAgICAgIFdlIHNob3VsZCBjb25zaWRlciBpbnRyb2R1Y2lu
ZyBhIG1hY3JvIHRoYXQgdW53cmFwcywgY2FzdHMsIGFuZCBudWxsIGNoZWNrcyBhIGBjb250cm9s
bGVyYC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAg
ICAoc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2spOgorCiAyMDIyLTAxLTEzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIGluIERv
Y3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKCkgd2hlbiByZW1vdmluZyBhIG5vZGUgY29udGFp
bmluZyB0aGUgZHJhZyBjYXJldApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAJ
KHJldmlzaW9uIDI4Nzk2NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05NzQsNiArOTc0LDkgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0
R2VvbG9jYXRpb25QZXJtaXNzaQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CiAKICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVz
dFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgaWYgKFVOTElL
RUxZKCFjb250cm9sbGVyKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOworCiAgICAgY29udHJvbGxlci0+c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKEpTVmFs
dWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKSk7CiAKICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODc5NjcpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAy
Mi0wMS0xMyAgQWxleGV5IFNodmF5a2EgIDxhc2h2YXlrYUBhcHBsZS5jb20+CisKKyAgICAgICAg
SlNDYWxsYmFja0RhdGEgc2hvdWxkIHVzZSBsZXhpY2FsIGdsb2JhbCBvYmplY3QgZm9yIGVycm9y
cyBhbmQgbGlmZWN5Y2xlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzIzODcKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAg
ICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8t
ZGVsZXRlZC1jb250ZXh0Lmh0bWw6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vcmVz
b3VyY2VzL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1pbm5lcjEuaHRtbDoKKwogMjAyMi0w
MS0xMiAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
VEtdW1dQRV0gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZywgbWVyZ2UgY29tbW9uIFdlYlJUQyB0
ZXN0IGZhaWx1cmVzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxs
YmFjay10by1kZWxldGVkLWNvbnRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDI4Nzk2NykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTAgKzEsMTAgQEAKIGZyYW1lICI8IS0tZnJhbWUxLS0+IiAtIGhhcyAx
IG9udW5sb2FkIGhhbmRsZXIocykKLVRlc3RzIHRoYXQgd2hlbiBhIEdlb2xvY2F0aW9uIHJlcXVl
c3QgaXMgbWFkZSBmcm9tIGEgcmVtb3RlIGZyYW1lLCBhbmQgdGhhdCBmcmFtZSdzIHNjcmlwdCBj
b250ZXh0IGdvZXMgYXdheSBiZWZvcmUgdGhlIEdlb2xvY2F0aW9uIGNhbGxiYWNrIGlzIG1hZGUs
IHRoZSBjYWxsYmFjayBpcyBub3QgbWFkZS4gSWYgdGhlIGNhbGxiYWNrIGlzIGF0dGVtcHRlZCwg
YSBjcmFzaCB3aWxsIG9jY3VyLgorVGVzdHMgdGhhdCB3aGVuIGEgR2VvbG9jYXRpb24gcmVxdWVz
dCBpcyBtYWRlIGZyb20gYSByZW1vdGUgZnJhbWUsIGNhbGxiYWNrcyBhcmUgbWFkZSBhcyB1c3Vh
bCBldmVuIGlmIHRoYXQgZnJhbWUncyBicm93c2luZyBjb250ZXh0IGlzIGFscmVhZHkgbnVsbC4K
IAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgTm8gY2FsbGJhY2tzIGludm9r
ZWQKK1BBU1MgU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29u
dGV4dC5odG1sCShyZXZpc2lvbiAyODc5NjcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtNSw3ICs1LDcgQEAKIDwvaGVhZD4KIDxib2R5PgogPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJU
ZXN0cyB0aGF0IHdoZW4gYSBHZW9sb2NhdGlvbiByZXF1ZXN0IGlzIG1hZGUgZnJvbSBhIHJlbW90
ZSBmcmFtZSwgYW5kIHRoYXQgZnJhbWUncyBzY3JpcHQgY29udGV4dCBnb2VzIGF3YXkgYmVmb3Jl
IHRoZSBHZW9sb2NhdGlvbiBjYWxsYmFjayBpcyBtYWRlLCB0aGUgY2FsbGJhY2sgaXMgbm90IG1h
ZGUuIElmIHRoZSBjYWxsYmFjayBpcyBhdHRlbXB0ZWQsIGEgY3Jhc2ggd2lsbCBvY2N1ci4iKTsK
K2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdoZW4gYSBHZW9sb2NhdGlvbiByZXF1ZXN0IGlzIG1h
ZGUgZnJvbSBhIHJlbW90ZSBmcmFtZSwgY2FsbGJhY2tzIGFyZSBtYWRlIGFzIHVzdWFsIGV2ZW4g
aWYgdGhhdCBmcmFtZSdzIGJyb3dzaW5nIGNvbnRleHQgaXMgYWxyZWFkeSBudWxsLiIpOwogCiBm
dW5jdGlvbiBvbkZpcnN0SWZyYW1lTG9hZGVkKCkgewogICAgIGlmcmFtZS5zcmMgPSAncmVzb3Vy
Y2VzL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1pbm5lcjIuaHRtbCc7CkBAIC0xMyw3ICsx
Myw3IEBAIGZ1bmN0aW9uIG9uRmlyc3RJZnJhbWVMb2FkZWQoKSB7CiAKIGZ1bmN0aW9uIG9uU2Vj
b25kSWZyYW1lTG9hZGVkKCkgewogICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewot
ICAgICAgICB0ZXN0UGFzc2VkKCdObyBjYWxsYmFja3MgaW52b2tlZCcpOworICAgICAgICB0ZXN0
RmFpbGVkKCdObyBjYWxsYmFja3MgaW52b2tlZCcpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
ICAgICB9LCA1MDApOwogfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
cmVzb3VyY2VzL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1pbm5lcjEuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvY2FsbGJh
Y2stdG8tZGVsZXRlZC1jb250ZXh0LWlubmVyMS5odG1sCShyZXZpc2lvbiAyODc5NjcpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvY2FsbGJhY2stdG8tZGVs
ZXRlZC1jb250ZXh0LWlubmVyMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw3ICsxMyw3IEBA
CiAgICAgICAgICAgLy8gTWFrZSByZXF1ZXN0IGZyb20gcmVtb3RlIGZyYW1lLCB0aGlzIGZyYW1l
IHdpbGwgYmUgZ29uZSBieSB0aGUgdGltZSB0aGUgR2VvbG9jYXRpb24KICAgICAgICAgICAvLyBv
YmplY3QgYXR0ZW1wdHMgdG8gaW52b2tlIHRoZSBjYWxsYmFjay4KICAgICAgICAgICB3aW5kb3cu
cGFyZW50Lm5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgIHBhcmVudC50ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGlu
dm9rZWQgdW5leHBlY3RlZGx5Jyk7CisgICAgICAgICAgICAgIHBhcmVudC50ZXN0UGFzc2VkKCdT
dWNjZXNzIGNhbGxiYWNrIGludm9rZWQnKTsKICAgICAgICAgICAgICAgcGFyZW50LmZpbmlzaEpT
VGVzdCgpOwogICAgICAgICAgIH0sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICBwYXJlbnQu
dGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKSW5kZXg6
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjg3OTY3KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEy
IEBACisyMDIyLTAxLTEzICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KKwor
ICAgICAgICBKU0NhbGxiYWNrRGF0YSBzaG91bGQgdXNlIGxleGljYWwgZ2xvYmFsIG9iamVjdCBm
b3IgZXJyb3JzIGFuZCBsaWZlY3ljbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMjM4NworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVu
LgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtl
ci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQ6CisKIDIwMjItMDEt
MTIgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W2Nzcy1mbGV4Ym94XSBJbXBvcnQgV1BUIHRlc3RzIC0gSmFudWFyeSBlZGl0aW9uCkluZGV4OiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwv
VHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9k
b20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyODc5NjcpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZp
bHRlci1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTkgKzEs
NyBAQAogCiAKLUZBSUwgcGFyZW50J3MgfHRoaXN8LCBwYXJlbnQncyBtZXRob2QsIHBhcmVudCdz
IGZpbHRlciwgcGFyZW50J3Mgcm9vdCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmdW5jdGlvbiAi
ZnVuY3Rpb24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iIGJ1dCBnb3QgZnVu
Y3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAgICBbbmF0aXZlIGNvZGVdCi19IgotRkFJ
TCBwYXJlbnQncyB8dGhpc3wsIHBhcmVudCdzIG1ldGhvZCwgcGFyZW50J3MgZmlsdGVyLCBpZnJh
bWUncyByb290IGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBl
RXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rp
b24gVHlwZUVycm9yKCkgewotICAgIFtuYXRpdmUgY29kZV0KLX0iCi1GQUlMIHBhcmVudCdzIHx0
aGlzfCwgcGFyZW50J3MgbWV0aG9kLCBpZnJhbWUncyBmaWx0ZXIsIGlmcmFtZSdzIHJvb3QgYXNz
ZXJ0X2VxdWFsczogZXhwZWN0ZWQgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKLSAg
ICBbbmF0aXZlIGNvZGVdCi19IiBidXQgZ290IGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3Io
KSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIKK1BBU1MgcGFyZW50J3MgfHRoaXN8LCBwYXJlbnQn
cyBtZXRob2QsIHBhcmVudCdzIGZpbHRlciwgcGFyZW50J3Mgcm9vdAorUEFTUyBwYXJlbnQncyB8
dGhpc3wsIHBhcmVudCdzIG1ldGhvZCwgcGFyZW50J3MgZmlsdGVyLCBpZnJhbWUncyByb290CitQ
QVNTIHBhcmVudCdzIHx0aGlzfCwgcGFyZW50J3MgbWV0aG9kLCBpZnJhbWUncyBmaWx0ZXIsIGlm
cmFtZSdzIHJvb3QKIFBBU1MgcGFyZW50J3MgfHRoaXN8LCBpZnJhbWVzJ3MgbWV0aG9kLCBpZnJh
bWUncyBmaWx0ZXIsIGlmcmFtZSdzIHJvb3QKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449463</attachid>
            <date>2022-01-18 20:53:50 -0800</date>
            <delta_ts>2022-01-19 19:20:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232387-20220119045348.patch</filename>
            <type>text/plain</type>
            <size>168132</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4ODE3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAyMi0wMS0xOCAgQWxleGV5
IFNodmF5a2EgIDxhc2h2YXlrYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FsbGJhY2sgZnVuY3Rp
b25zIC8gaW50ZXJmYWNlcyBzaG91bGQgdXNlIGdsb2JhbCBvYmplY3Qgb2YgaXRzIF92YWx1ZV8g
Zm9yIGVycm9ycyBhbmQgbGlmZWN5Y2xlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzIzODcKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJl
bi4KKworICAgICAgICBCZWZvcmUgdGhpcyBjaGFuZ2UsIF9yZWxldmFudF8gZ2xvYmFsIG9iamVj
dCB3YXMgdXNlZCBhKSB0byB0aHJvdyBlcnJvcnMgaW4gd2hlbgorICAgICAgICBpbnZva2luZyBj
YWxsYmFjayBmdW5jdGlvbiAvIGludGVyZmFjZSwgd2hpY2ggaXNuJ3QgY29ycmVjdCBbMV0sIGFu
ZCBiKSB0byBjYWxsCisgICAgICAgIGNhbkludm9rZUNhbGxiYWNrKCkgb24gKGxpZmVjeWNsZSks
IHdoaWNoIGRvZXNuJ3QgbWF0Y2ggb3RoZXIgYnJvd3NlcnMgYW5kIG5vdAorICAgICAgICBxdWl0
ZSB1c2VmdWw6IF9yZWxldmFudF8gZXZlbnQgbG9vcCBzdG9wcyBpZiBkb2N1bWVudCBpcyBkZXRh
Y2hlZC4KKworICAgICAgICBUaGlzIHBhdGNoOgorCisgICAgICAgICAgMS4gUmVtb3ZlcyBbU2tp
cENhbGxiYWNrSW52b2tlQ2hlY2tdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgd2hpbGUgZW5zdXJpbmcg
RE9NCisgICAgICAgICAgICAgdHJhdmVyc2FsIGRvZXNuJ3QgY3Jhc2gsIHdoaWNoIGFsaWducyBX
ZWJLaXQgd2l0aCBvdGhlciBicm93c2Vycy4KKworICAgICAgICAgIDIuIEludm9rZXMgY2FuSW52
b2tlQ2FsbGJhY2soKSBvbiB0aGUgZ2xvYmFsIG9iamVjdCBvZiBfdmFsdWVfLCB3aGljaCBtYXRj
aGVzCisgICAgICAgICAgICAgIEdlY2tvIGJ1dCBub3QgQmxpbmssIHdoaWNoIHVzZXMgX2luY3Vt
YmVudF8gcmVhbG0gdG8gZGV0ZXJtaW5lIGlmIGNhbGxiYWNrCisgICAgICAgICAgICAgIGNhbiBz
dGlsbCBiZSBpbnZva2VkIChkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZSB0byBtZSkuCisKKyAgICAg
ICAgICAzLiBUaHJvd3MgY2FsbGJhY2sgaW52b2NhdGlvbiBlcnJvcnMgKGUuZy4gbm9uLWNhbGxh
YmxlIG1ldGhvZCwgcmV2b2tlZCBQcm94eSkKKyAgICAgICAgICAgICBpbiB0aGUgZ2xvYmFsIG9i
amVjdCBvZiBfdmFsdWVfLCB3aGljaCBtYXRjaGVzIHRoZSBzcGVjIFsxXSBhbmQgQmxpbmssIGJ1
dCBub3QgR2Vja28sCisgICAgICAgICAgICAgd2hpY2ggdXNlcyBfY3VycmVudF8gcmVhbG0gKG9m
IHRoZSBtZXRob2QgdGhhdCB3YXMgcGFzc2VkIGNhbGxiYWNrJ3MgX3ZhbHVlXykKKyAgICAgICAg
ICAgICB0byB0aHJvdyBUeXBlRXJyb3JzIGluLgorCisgICAgICAgICAgICAgVGhhdCBkb2Vzbid0
IG1ha2UgbXVjaCBzZW5zZSB0byBtZSBlaXRoZXI6ICJyZWdpc3RlcmluZyIgYSBjYWxsYmFjayBh
bmQgaW52b2tpbmcKKyAgICAgICAgICAgICBpdCBjb3VsZCBoYXBwZW4gaW4gZGlmZmVyZW50IHJl
YWxtcy4KKworICAgICAgICAgICAgIFRoZSBzcGVjIG9uIHRoaXMgaXMgd29yZGVkIHF1aXRlIHRy
aWNraWx5ICh5ZXQgSSB0aGluayBJJ3ZlIGZpZ3VyZWQgaXQgb3V0KToKKyAgICAgICAgICAgICBF
Q01BJ3MgInRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbiIgdXNlcyAicnVubmluZyBleGVjdXRp
b24gY29udGV4dCIgWzJdCisgICAgICAgICAgICAgdG8gY3JlYXRlIGFuIG9iamVjdCBpbiwgd2hp
Y2ggaXMgc3dpdGNoZWQgdG8gdGhlIHJlYWxtIG9mIF92YWx1ZV8gcGVyIFsxXS4KKworICAgICAg
ICBBdWRpb1dvcmtsZXQgY2hhbmdlcyBhcmUgdW5vYnNlcnZhYmxlIGFzIHdvcmtsZXRzIGNhbid0
IGFjcXVpcmUgYSBjcm9zcy1yZWFsbSBtZXRob2QuIAorICAgICAgICBJdCdzIGFsc28gbmljZXIg
bm90IHRvIHBhc3MgSlNDYWxsYmFja0RhdGFTdHJvbmcgYXJvdW5kLgorCisgICAgICAgIFsxXSBo
dHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI3JlZi1mb3ItcHJlcGFyZS10by1ydW4tc2Ny
aXB0CisgICAgICAgIFsyXSBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQt
ZnVuY3Rpb24tb2JqZWN0cy1jYWxsLXRoaXNhcmd1bWVudC1hcmd1bWVudHNsaXN0IChzdGVwIDQp
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZy
YW1lLWludGVyc2VjdGlvbi1vYnNlcnZlci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9j
YWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1tdXRhdGlvbi1vYnNlcnZlci5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1w
ZXJmb3JtYW5jZS1vYnNlcnZlci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9jYWxsYmFj
ay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1yYWYuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9k
b20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9ic2VydmVyLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1l
LXRvLWJsb2IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vY2FsbGJhY2staW50ZXJmYWNl
LWRldGFjaGVkLWZyYW1lLW5vZGUtZmlsdGVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFtZS14cGF0aG5zcmVzb2x2ZXIuaHRtbAor
ICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVy
c2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tbnVsbC1icm93c2lu
Zy1jb250ZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJl
YWxtLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZG9tL2V2ZW50cy9FdmVudExpc3RlbmVyLWhhbmRsZUV2ZW50LWNyb3NzLXJlYWxtLmh0bWwKKyAg
ICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9teHBhdGgvcmVz
b2x2ZXItY2FsbGJhY2staW50ZXJmYWNlLWNyb3NzLXJlYWxtLmh0bWwKKworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGVQcm9jZXNzb3IpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6cHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnNldFByb2Nlc3NDYWxsYmFjayk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6cHJvY2Vzc0NhbGxiYWNrV3Jh
cHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2sp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU0NhbGxiYWNrRGF0YTo6fkpTQ2FsbGJhY2tEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ2FsbGJhY2tEYXRhU3Ryb25nOjpKU0NhbGxiYWNrRGF0YVN0cm9uZyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NhbGxiYWNrRGF0YVN0cm9uZzo6aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6SlNDYWxsYmFja0RhdGFXZWFrOjpKU0NhbGxiYWNrRGF0YVdlYWspOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGFXZWFrOjppbnZva2VDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6Z2xvYmFsT2JqZWN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjpKU0NhbGxiYWNrRGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Q2FsbGJhY2tzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDb252ZXJ0ZXI8SURMQ2FsbGJhY2tGdW5jdGlvbjxUPj46OmNvbnZlcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETENhbGxiYWNrSW50ZXJmYWNlPFQ+Pjo6Y29udmVy
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFhQYXRoTlNSZXNvbHZl
cj4+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9vcGVuRGF0YWJhc2VCb2R5KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRl
Q2FsbGJhY2tIZWFkZXJDb250ZW50KToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1l
bnRhdGlvbkNvbnRlbnQpOgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlRE9NQ29udmVydE5lZWRz
R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvKjogVXBkYXRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrSW50ZXJmYWNlLmlkbDoK
KyAgICAgICAgKiBkb20vTm9kZUZpbHRlci5pZGw6CisgICAgICAgICogZG9tL1RyYXZlcnNhbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3JCYXNlOjphY2NlcHROb2RlKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICog
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHhtbC9D
dXN0b21YUGF0aE5TUmVzb2x2ZXIuaWRsOgorCiAyMDIyLTAxLTE4ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgV2hlbiBpbnNlcnRpbmcgYSBzZWxlY3RlZCA8b3B0
aW9uPiBpbiBhIDxzZWxlY3Q+IGVsZW1lbnQsIGl0cyBzZWxlY3RlZCBzdGF0ZSBzaG91bGQgcmVt
YWluCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEds
b2JhbFNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNwcAkocmV2aXNpb24gMjg4MTc5KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRHbG9iYWxTY29wZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9X
b3JrbGV0R2xvYmFsU2NvcAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IsICJBIHByb2Nlc3NvciB3YXMgYWxyZWFkeSByZWdpc3RlcmVkIHdpdGggdGhpcyBuYW1l
Il9zIH07CiAKICAgICBKU0M6OkpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gcHJvY2Vzc29yQ29u
dHJ1Y3Rvci0+Y2FsbGJhY2tEYXRhKCktPmNhbGxiYWNrKCk7Ci0gICAgYXV0byogZ2xvYmFsT2Jq
ZWN0ID0ganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byogZ2xvYmFsT2Jq
ZWN0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBhdXRv
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBSZWZQdHI8QXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yPiBBdWRpb1dvcmtsCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSlNDOjpK
U09iamVjdCoganNDb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yLT5jYWxsYmFja0RhdGEoKS0+Y2Fs
bGJhY2soKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBjb25zdHJ1Y3Rvci0+Y2FsbGJhY2tE
YXRhKCktPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgSlNDOjpWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sgeyBnbG9iYWxPYmplY3QgfTsKQEAgLTE1NCw3
ICsxNTQsNyBAQCBSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPiBBdWRpb1dvcmtsCiAgICAg
aWYgKCFqc1Byb2Nlc3NvcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBqc1Byb2Nl
c3Nvci0+d3JhcHBlZCgpLnNldFByb2Nlc3NDYWxsYmFjayhtYWtlVW5pcXVlPEpTQ2FsbGJhY2tE
YXRhU3Ryb25nPihqc1Byb2Nlc3NvciwgZ2xvYmFsT2JqZWN0KSk7CisgICAganNQcm9jZXNzb3It
PndyYXBwZWQoKS5zZXRQcm9jZXNzQ2FsbGJhY2soanNQcm9jZXNzb3IpOwogCiAgICAgcmV0dXJu
ICZqc1Byb2Nlc3Nvci0+d3JhcHBlZCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcAkocmV2
aXNpb24gMjg4MTc5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRQcm9jZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTMgKzIwMSwxNCBAQCBF
eGNlcHRpb25PcjxSZWY8QXVkaW9Xb3JrbGV0UHJvY2Vzc29yPj4gCiAgICAgaWYgKCFjb25zdHJ1
Y3Rpb25EYXRhKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiTm8gcGVu
ZGluZyBjb25zdHJ1Y3Rpb24gZGF0YSBmb3IgdGhpcyB3b3JrbGV0IHByb2Nlc3NvciJfcyB9Owog
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCpjb25zdHJ1
Y3Rpb25EYXRhKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yKGNvbnRleHQsICpjb25zdHJ1Y3Rpb25EYXRhKSk7CiB9CiAKIEF1ZGlvV29ya2xldFByb2Nl
c3Nvcjo6fkF1ZGlvV29ya2xldFByb2Nlc3NvcigpID0gZGVmYXVsdDsKIAotQXVkaW9Xb3JrbGV0
UHJvY2Vzc29yOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3IoY29uc3QgQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yQ29uc3RydWN0aW9uRGF0YSYgY29uc3RydWN0aW9uRGF0YSkKLSAgICA6IG1fbmFtZShjb25z
dHJ1Y3Rpb25EYXRhLm5hbWUoKSkKK0F1ZGlvV29ya2xldFByb2Nlc3Nvcjo6QXVkaW9Xb3JrbGV0
UHJvY2Vzc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEF1ZGlvV29y
a2xldFByb2Nlc3NvckNvbnN0cnVjdGlvbkRhdGEmIGNvbnN0cnVjdGlvbkRhdGEpCisgICAgOiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICAsIG1fbmFtZShjb25zdHJ1Y3Rp
b25EYXRhLm5hbWUoKSkKICAgICAsIG1fcG9ydChjb25zdHJ1Y3Rpb25EYXRhLnBvcnQoKSkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTIzNiw3ICsyMzcsNyBAQCBib29sIEF1
ZGlvV29ya2xldFByb2Nlc3Nvcjo6cHJvY2Vzcyhjb25zCiAgICAgRGlzYWJsZU1hbGxvY1Jlc3Ry
aWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBkaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zOwog
CiAgICAgQVNTRVJUKG1fcHJvY2Vzc0NhbGxiYWNrKTsKLSAgICBhdXRvJiBnbG9iYWxPYmplY3Qg
PSAqbV9wcm9jZXNzQ2FsbGJhY2stPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9i
amVjdCA9ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuZ2xvYmFsT2JqZWN0KCkpOwogICAgIEFTU0VSVChnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwogCkBAIC0yNDcsNyArMjQ4LDcgQEAgYm9vbCBB
dWRpb1dvcmtsZXRQcm9jZXNzb3I6OnByb2Nlc3MoY29ucwogICAgIGJ1aWxkSlNBcmd1bWVudHMo
dm0sIGdsb2JhbE9iamVjdCwgYXJncywgaW5wdXRzLCBvdXRwdXRzLCBwYXJhbVZhbHVlc01hcCk7
CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAg
YXV0byByZXN1bHQgPSBtX3Byb2Nlc3NDYWxsYmFjay0+aW52b2tlQ2FsbGJhY2soanNVbmRlZmlu
ZWQoKSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvY2VzcyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAg
YXV0byByZXN1bHQgPSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2sodm0sIGFzT2JqZWN0
KG1fcHJvY2Vzc0NhbGxiYWNrKSwganNVbmRlZmluZWQoKSwgYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicHJvY2Vz
cyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAg
ICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmZ2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7
CiAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKQEAgLTI1OSw5ICsyNjAsOSBAQCBib29s
IEF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6cHJvY2Vzcyhjb25zCiAgICAgcmV0dXJuIHJlc3VsdC50
b0Jvb2xlYW4oJmdsb2JhbE9iamVjdCk7CiB9CiAKLXZvaWQgQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
OjpzZXRQcm9jZXNzQ2FsbGJhY2soc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJhY2tEYXRhU3Ryb25n
PiYmIHByb2Nlc3NDYWxsYmFjaykKK3ZvaWQgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpzZXRQcm9j
ZXNzQ2FsbGJhY2soSlNPYmplY3QqIHByb2Nlc3NDYWxsYmFjaykKIHsKLSAgICBtX3Byb2Nlc3ND
YWxsYmFjayA9IFdURk1vdmUocHJvY2Vzc0NhbGxiYWNrKTsKKyAgICBtX3Byb2Nlc3NDYWxsYmFj
ayA9IHsgcHJvY2Vzc0NhbGxiYWNrIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dv
cmtsZXRQcm9jZXNzb3IuaAkocmV2aXNpb24gMjg4MTc5KQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaAkod29ya2luZyBjb3B5KQpAQCAt
NTksMTkgKzU5LDIxIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcHJvY2Vzcyhjb25zdCBWZWN0b3I8
UmVmUHRyPEF1ZGlvQnVzPj4mIGlucHV0cywgVmVjdG9yPFJlZjxBdWRpb0J1cz4+JiBvdXRwdXRz
LCBjb25zdCBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmxvYXRBcnJheT4+
JiBwYXJhbVZhbHVlc01hcCwgYm9vbCYgdGhyZXdFeGNlcHRpb24pOwogCi0gICAgdm9pZCBzZXRQ
cm9jZXNzQ2FsbGJhY2soc3RkOjp1bmlxdWVfcHRyPEpTQ2FsbGJhY2tEYXRhU3Ryb25nPiYmKTsK
KyAgICB2b2lkIHNldFByb2Nlc3NDYWxsYmFjayhKU0M6OkpTT2JqZWN0Kik7CiAKKyAgICBKU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0JiBwcm9jZXNzQ2FsbGJhY2tXcmFwcGVyKCkgeyByZXR1cm4gbV9w
cm9jZXNzQ2FsbGJhY2s7IH0KICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBqc0lucHV0c1dy
YXBwZXIoKSB7IHJldHVybiBtX2pzSW5wdXRzOyB9CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVj
dCYganNPdXRwdXRzV3JhcHBlcigpIHsgcmV0dXJuIG1fanNPdXRwdXRzOyB9CiAgICAgSlNWYWx1
ZUluV3JhcHBlZE9iamVjdCYganNQYXJhbVZhbHVlc1dyYXBwZXIoKSB7IHJldHVybiBtX2pzUGFy
YW1WYWx1ZXM7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBBdWRpb1dvcmtsZXRQcm9jZXNz
b3IoY29uc3QgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YSYpOworICAgIGV4
cGxpY2l0IEF1ZGlvV29ya2xldFByb2Nlc3NvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YSYpOwogICAgIHZvaWQgYnVp
bGRKU0FyZ3VtZW50cyhKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6TWFya2Vk
QXJndW1lbnRCdWZmZXJCYXNlJiwgY29uc3QgVmVjdG9yPFJlZlB0cjxBdWRpb0J1cz4+JiBpbnB1
dHMsIFZlY3RvcjxSZWY8QXVkaW9CdXM+PiYgb3V0cHV0cywgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0Zsb2F0QXJyYXk+PiYgcGFyYW1WYWx1ZXNNYXApOwogCisg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAg
IFN0cmluZyBtX25hbWU7CiAgICAgUmVmPE1lc3NhZ2VQb3J0PiBtX3BvcnQ7Ci0gICAgc3RkOjp1
bmlxdWVfcHRyPEpTQ2FsbGJhY2tEYXRhU3Ryb25nPiBtX3Byb2Nlc3NDYWxsYmFjazsKKyAgICBK
U1ZhbHVlSW5XcmFwcGVkT2JqZWN0IG1fcHJvY2Vzc0NhbGxiYWNrOwogICAgIEpTVmFsdWVJbldy
YXBwZWRPYmplY3QgbV9qc0lucHV0czsKICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0IG1fanNP
dXRwdXRzOwogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9qc1BhcmFtVmFsdWVzOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9X
b3JrbGV0UHJvY2Vzc29yQ3VzdG9tLmNwcAkocmV2aXNpb24gMjg4MTc5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2
b2lkIEpTQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihWaXNp
dG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8mIHByb2Nlc3NvciA9IHdyYXBwZWQoKTsKKyAgICBw
cm9jZXNzb3IucHJvY2Vzc0NhbGxiYWNrV3JhcHBlcigpLnZpc2l0KHZpc2l0b3IpOwogICAgIHBy
b2Nlc3Nvci5qc0lucHV0c1dyYXBwZXIoKS52aXNpdCh2aXNpdG9yKTsKICAgICBwcm9jZXNzb3Iu
anNPdXRwdXRzV3JhcHBlcigpLnZpc2l0KHZpc2l0b3IpOwogICAgIHByb2Nlc3Nvci5qc1BhcmFt
VmFsdWVzV3JhcHBlcigpLnZpc2l0KHZpc2l0b3IpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAkocmV2aXNpb24gMjg4MTc5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSwxMiArMzksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogLy8gaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNjYWxsLWEtdXNlci1v
YmplY3RzLW9wZXJhdGlvbgotSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2so
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxiYWNrLCBKU1Zh
bHVlIHRoaXNWYWx1ZSwgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIENhbGxiYWNrVHlwZSBt
ZXRob2QsIFByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiYgcmV0dXJuZWRFeGNlcHRpb24pCitKU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxs
YmFjayhWTSYgdm0sIEpTT2JqZWN0KiBjYWxsYmFjaywgSlNWYWx1ZSB0aGlzVmFsdWUsIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFja1R5cGUgbWV0aG9kLCBQcm9wZXJ0eU5hbWUg
ZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9u
KQogewogICAgIEFTU0VSVChjYWxsYmFjayk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCA9ICZnbG9iYWxPYmplY3Q7Ci0gICAgVk0mIHZtID0gbGV4aWNhbEdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICAvLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI3Jl
Zi1mb3ItcHJlcGFyZS10by1ydW4tc2NyaXB0IG1ha2VzIGNhbGxiYWNrJ3MgW1tSZWFsbV1dIGEg
cnVubmluZyBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0LAorICAgIC8vIHdoaWNoIGlzIHVz
ZWQgZm9yIGNyZWF0aW5nIFR5cGVFcnJvciBvYmplY3RzOiBodHRwczovL3RjMzkuZXMvZWNtYTI2
Mi8jc2VjLWVjbWFzY3JpcHQtZnVuY3Rpb24tb2JqZWN0cy1jYWxsLXRoaXNhcmd1bWVudC1hcmd1
bWVudHNsaXN0IChzdGVwIDQpLgorICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0ID0gY2FsbGJhY2stPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgSlNWYWx1ZSBmdW5jdGlvbjsKQEAgLTgwLDcgKzgx
LDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSgogICAgIEFTU0VS
VCghZnVuY3Rpb24uaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoY2FsbERhdGEudHlwZSAhPSBDYWxs
RGF0YTo6VHlwZTo6Tm9uZSk7CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
ID0gZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNh
bEdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAvLyBXZSB3aWxs
IGZhaWwgdG8gZ2V0IHRoZSBjb250ZXh0IGlmIHRoZSBmcmFtZSBoYXMgYmVlbiBkZXRhY2hlZC4K
ICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgJKHJldmlzaW9uIDI4ODE3
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01HbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmpl
Y3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KQEAgLTQ3LDEzICs0Niwx
MCBAQCBjbGFzcyBKU0NhbGxiYWNrRGF0YSB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBDYWxs
YmFja1R5cGUgeyBGdW5jdGlvbiwgT2JqZWN0LCBGdW5jdGlvbk9yT2JqZWN0IH07CiAKLSAgICBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Qu
Z2V0KCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGludm9rZUNh
bGxiYWNrKEpTQzo6Vk0mLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYsIENhbGxiYWNrVHlwZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVy
bmVkRXhjZXB0aW9uKTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEpTQ2FsbGJhY2tEYXRh
KEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgICAgIDogbV9nbG9iYWxPYmpl
Y3QoZ2xvYmFsT2JqZWN0KQotICAgIHsKLSAgICB9CisgICAgZXhwbGljaXQgSlNDYWxsYmFja0Rh
dGEoKSA9IGRlZmF1bHQ7CiAgICAgCiAgICAgfkpTQ2FsbGJhY2tEYXRhKCkKICAgICB7CkBAIC02
MSwxMSArNTcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIEFTU0VSVChtX3RocmVhZC5wdHIoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAgICAgfQotICAgIAotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlNET01HbG9iYWxPYmpl
Y3QmLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlND
OjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYsIENhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUg
ZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9u
KTsKIAogcHJpdmF0ZToKLSAgICBKU0M6OldlYWs8SlNET01HbG9iYWxPYmplY3Q+IG1fZ2xvYmFs
T2JqZWN0OwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgUmVmPFRocmVhZD4gbV90aHJlYWQgeyBU
aHJlYWQ6OmN1cnJlbnQoKSB9OwogI2VuZGlmCkBAIC03MywyMSArNjYsMTYgQEAgcHJpdmF0ZToK
IAogY2xhc3MgSlNDYWxsYmFja0RhdGFTdHJvbmcgOiBwdWJsaWMgSlNDYWxsYmFja0RhdGEgewog
cHVibGljOgotICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNr
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB2b2lkKiA9IG51bGxwdHIpCi0gICAg
ICAgIDogSlNDYWxsYmFja0RhdGEoZ2xvYmFsT2JqZWN0KQotICAgICAgICAsIG1fY2FsbGJhY2so
Z2xvYmFsT2JqZWN0LT52bSgpLCBjYWxsYmFjaykKKyAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyhK
U0M6OlZNJiB2bSwgSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIHZvaWQqID0gbnVsbHB0cikKKyAg
ICAgICAgOiBtX2NhbGxiYWNrKHZtLCBjYWxsYmFjaykKICAgICB7CiAgICAgfQogCiAgICAgSlND
OjpKU09iamVjdCogY2FsbGJhY2soKSB7IHJldHVybiBtX2NhbGxiYWNrLmdldCgpOyB9CiAKLSAg
ICBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlND
OjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlwZSwg
SlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4m
IHJldHVybmVkRXhjZXB0aW9uKQorICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0M6
OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZl
ciYgYXJncywgQ2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVu
Y3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQog
ICAgIHsKLSAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7
Ci0gICAgICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQot
ICAgICAgICByZXR1cm4gSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKCpnbG9iYWxPYmpl
Y3QsIGNhbGxiYWNrKCksIHRoaXNWYWx1ZSwgYXJncywgY2FsbGJhY2tUeXBlLCBmdW5jdGlvbk5h
bWUsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tEYXRhOjpp
bnZva2VDYWxsYmFjayh2bSwgY2FsbGJhY2soKSwgdGhpc1ZhbHVlLCBhcmdzLCBjYWxsYmFja1R5
cGUsIGZ1bmN0aW9uTmFtZSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIH0KIAogcHJpdmF0ZToK
QEAgLTk2LDIxICs4NCwxNiBAQCBwcml2YXRlOgogCiBjbGFzcyBKU0NhbGxiYWNrRGF0YVdlYWsg
OiBwdWJsaWMgSlNDYWxsYmFja0RhdGEgewogcHVibGljOgotICAgIEpTQ2FsbGJhY2tEYXRhV2Vh
ayhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgdm9pZCogb3duZXIpCi0gICAgICAgIDogSlNDYWxsYmFja0RhdGEoZ2xvYmFsT2JqZWN0KQot
ICAgICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2ssICZtX3dlYWtPd25lciwgb3duZXIpCisgICAg
SlNDYWxsYmFja0RhdGFXZWFrKEpTQzo6Vk0mLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgdm9p
ZCogb3duZXIpCisgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaywgJm1fd2Vha093bmVyLCBv
d25lcikKICAgICB7CiAgICAgfQogCiAgICAgSlNDOjpKU09iamVjdCogY2FsbGJhY2soKSB7IHJl
dHVybiBtX2NhbGxiYWNrLmdldCgpOyB9CiAKLSAgICBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJh
Y2soSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJn
cywgQ2FsbGJhY2tUeXBlIGNhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25O
YW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQorICAgIEpT
Qzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHRoaXNW
YWx1ZSwgSlNDOjpNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJhY2tUeXBlIGNhbGxi
YWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQogICAgIHsKLSAgICAgICAgYXV0byogZ2xvYmFs
T2JqZWN0ID0gdGhpcy0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGlmICghZ2xvYmFsT2JqZWN0
KQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICByZXR1cm4gSlNDYWxsYmFja0Rh
dGE6Omludm9rZUNhbGxiYWNrKCpnbG9iYWxPYmplY3QsIGNhbGxiYWNrKCksIHRoaXNWYWx1ZSwg
YXJncywgY2FsbGJhY2tUeXBlLCBmdW5jdGlvbk5hbWUsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayh2bSwgY2FsbGJhY2so
KSwgdGhpc1ZhbHVlLCBhcmdzLCBjYWxsYmFja1R5cGUsIGZ1bmN0aW9uTmFtZSwgcmV0dXJuZWRF
eGNlcHRpb24pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+IHZvaWQg
dmlzaXRKU0Z1bmN0aW9uKFZpc2l0b3ImKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQ29udmVydENhbGxiYWNrcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydENhbGxiYWNrcy5oCShyZXZpc2lvbiAyODgxNzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRDYWxsYmFja3MuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
Q29udmVydGVyPElECiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGNvbnZlcnNpb25IYXNTaWRl
RWZmZWN0cyA9IGZhbHNlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhyb3dl
ciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgotICAgIHN0YXRpYyBSZWZQdHI8VD4gY29udmVy
dChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
dmFsdWUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvblRocm93ZXIm
JiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQorICAgIHN0YXRpYyBSZWZQ
dHI8VD4gY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2VyID0g
RXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsKICAgICAgICAgSlNDOjpWTSYgdm0gPSBKU0M6Omdl
dFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtNDYsNyArNDYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgQ29udmVydGVyPElECiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQogCi0gICAgICAgIHJldHVybiBUOjpjcmVhdGUoSlNDOjphc09iamVjdCh2YWx1ZSksICZnbG9i
YWxPYmplY3QpOworICAgICAgICByZXR1cm4gVDo6Y3JlYXRlKHZtLCBKU0M6OmFzT2JqZWN0KHZh
bHVlKSk7CiAgICAgfQogfTsKIApAQCAtNzAsNyArNzAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSlNDb252ZXJ0ZXI8CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252
ZXJ0ZXI8SURMQ2FsbGJhY2tJbnRlcmZhY2U8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxJRExDYWxs
YmFja0ludGVyZmFjZTxUPj4gewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvblRocm93
ZXIgPSBEZWZhdWx0RXhjZXB0aW9uVGhyb3dlcj4KLSAgICBzdGF0aWMgUmVmUHRyPFQ+IGNvbnZl
cnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBFeGNlcHRpb25UaHJvd2Vy
JiYgZXhjZXB0aW9uVGhyb3dlciA9IEV4Y2VwdGlvblRocm93ZXIoKSkKKyAgICBzdGF0aWMgUmVm
UHRyPFQ+IGNvbnZlcnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHZhbHVlLCBFeGNlcHRpb25UaHJvd2VyJiYgZXhjZXB0aW9uVGhyb3dlciA9
IEV4Y2VwdGlvblRocm93ZXIoKSkKICAgICB7CiAgICAgICAgIEpTQzo6Vk0mIHZtID0gSlNDOjpn
ZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKQEAgLTgwLDcgKzgwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IENvbnZlcnRlcjxJRAogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IH0KIAotICAgICAgICByZXR1cm4gVDo6Y3JlYXRlKEpTQzo6YXNPYmplY3QodmFsdWUpLCAmZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFQ6OmNyZWF0ZSh2bSwgSlNDOjphc09iamVjdCh2
YWx1ZSkpOwogICAgIH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFhQYXRoTlNSZXNvbHZlci5oCShyZXZpc2lvbiAyODgx
NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRYUGF0aE5TUmVz
b2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBDb252ZXJ0ZXI8SURMSW50ZXJmYWNlCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpT
WFBhdGhOU1Jlc29sdmVyPih2bSkpCiAgICAgICAgICAgICByZXR1cm4gJkpTQzo6anNDYXN0PEpT
WFBhdGhOU1Jlc29sdmVyKj4ob2JqZWN0KS0+d3JhcHBlZCgpOwogCi0gICAgICAgIHJldHVybiBK
U0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRlKG9iamVjdCwgSlNDOjpqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICByZXR1cm4gSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXI6OmNyZWF0ZSh2bSwgb2JqZWN0KTsKICAgICB9CiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCShyZXZpc2lvbiAyODgxNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCw4ICsxOTQsNyBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04od2hlblNpZ25hbEFib3J0CiAgICAgaWYgKFVOTElLRUxZKCFh
Ym9ydFNpZ25hbCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZShKU0M6
OkpTVmFsdWU6OkpTRmFsc2UpKTsKIAotICAgIGF1dG8qIGpzRE9NR2xvYmFsT2JqZWN0ID0gSlND
Ojpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpOwotICAgIFJlZjxBYm9y
dEFsZ29yaXRobT4gYWJvcnRBbGdvcml0aG0gPSBKU0Fib3J0QWxnb3JpdGhtOjpjcmVhdGUoY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS5nZXRPYmplY3QoKSwganNET01HbG9iYWxPYmpl
Y3QpOworICAgIFJlZjxBYm9ydEFsZ29yaXRobT4gYWJvcnRBbGdvcml0aG0gPSBKU0Fib3J0QWxn
b3JpdGhtOjpjcmVhdGUodm0sIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSkuZ2V0T2Jq
ZWN0KCkpOwogCiAgICAgYm9vbCByZXN1bHQgPSBBYm9ydFNpZ25hbDo6d2hlblNpZ25hbEFib3J0
ZWQoYWJvcnRTaWduYWwtPndyYXBwZWQoKSwgV1RGTW92ZShhYm9ydEFsZ29yaXRobSkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0ID8gSlNWYWx1ZShKU0M6OkpTVmFsdWU6OkpT
VHJ1ZSkgOiBKU1ZhbHVlKEpTQzo6SlNWYWx1ZTo6SlNGYWxzZSkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24g
Mjg4MTc5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDYsNyArNjA2LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzRE9NVwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGxleGljYWxHbG9iYWxPYmplY3QsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKSkpOwogICAgIH0KIAotICAgIGF1dG8gY3JlYXRp
b25DYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0Rh
dGFiYXNlQ2FsbGJhY2s+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoNCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeworICAgIGF1
dG8gY3JlYXRpb25DYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tGdW5j
dGlvbjxKU0RhdGFiYXNlQ2FsbGJhY2s+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoNCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmpl
Y3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsKICAgICAgICAgdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDQsICJjcmVhdGlvbkNh
bGxiYWNrIiwgIldpbmRvdyIsICJvcGVuRGF0YWJhc2UiKTsKICAgICB9KTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJl
dmlzaW9uIDI4ODE3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC02Mzg0LDkgKzYzODQsOSBAQCBzdWIgR2Vu
ZXJhdGVDYWxsYmFja0hlYWRlckNvbnRlbnQKICAgICBwdXNoKEAkY29udGVudFJlZiwgInB1Ymxp
YzpcbiIpOwogCiAgICAgIyBUaGUgc3RhdGljIGNyZWF0ZSgpIG1ldGhvZC4KLSAgICBwdXNoKEAk
Y29udGVudFJlZiwgIiAgICBzdGF0aWMgUmVmPCRjbGFzc05hbWU+IGNyZWF0ZShKU0M6OkpTT2Jq
ZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOworICAg
IHB1c2goQCRjb250ZW50UmVmLCAiICAgIHN0YXRpYyBSZWY8JGNsYXNzTmFtZT4gY3JlYXRlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaylcbiIpOwogICAgIHB1c2goQCRjb250
ZW50UmVmLCAiICAgIHtcbiIpOwotICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyAke2NsYXNzTmFtZX0oY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpO1xu
Iik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
ICR7Y2xhc3NOYW1lfSh2bSwgY2FsbGJhY2spKTtcbiIpOwogICAgIHB1c2goQCRjb250ZW50UmVm
LCAiICAgIH1cblxuIik7CiAKICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfVxuXG4i
KTsKQEAgLTY0MjcsNyArNjQyNyw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSGVhZGVyQ29udGVu
dAogCiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJcbnByaXZhdGU6XG4iKTsKIAotICAgIHB1c2go
QCRjb250ZW50UmVmLCAiICAgICR7Y2xhc3NOYW1lfShKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9i
YWxPYmplY3QqKTtcblxuIik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgJHtjbGFzc05h
bWV9KEpTQzo6Vk0mLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjayk7XG5cbiIpOwogCiAgICAgaWYg
KCRpbnRlcmZhY2VPckNhbGxiYWNrLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJc1dlYWtDYWxsYmFj
a30pIHsKICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgYm9vbCBoYXNDYWxsYmFjaygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZGF0YSAmJiBtX2RhdGEtPmNhbGxiYWNrKCk7IH1cblxu
Iik7CkBAIC02NDU2LDkgKzY0NTYsOSBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0
aW9uQ29udGVuCiAgICAgJGluY2x1ZGVzUmVmLT57IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCJ9
ID0gMTsKIAogICAgICMgQ29uc3RydWN0b3IKLSAgICBwdXNoKEAkY29udGVudFJlZiwgIiR7Y2xh
c3NOYW1lfTo6JHtjbGFzc05hbWV9KEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdClcbiIpOwotICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIDogJHtu
YW1lfShnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSlcbiIpOwotICAgIHB1
c2goQCRjb250ZW50UmVmLCAiICAgICwgbV9kYXRhKG5ldyAke2NhbGxiYWNrRGF0YVR5cGV9KGNh
bGxiYWNrLCBnbG9iYWxPYmplY3QsIHRoaXMpKVxuIik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYs
ICIke2NsYXNzTmFtZX06OiR7Y2xhc3NOYW1lfShWTSYgdm0sIEpTT2JqZWN0KiBjYWxsYmFjaylc
biIpOworICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIDogJHtuYW1lfShqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihjYWxsYmFjay0+Z2xvYmFsT2JqZWN0KHZtKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSlcbiIpOworICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICwgbV9kYXRhKG5l
dyAke2NhbGxiYWNrRGF0YVR5cGV9KHZtLCBjYWxsYmFjaywgdGhpcykpXG4iKTsKICAgICBwdXNo
KEAkY29udGVudFJlZiwgIntcbiIpOwogICAgIHB1c2goQCRjb250ZW50UmVmLCAifVxuXG4iKTsK
IApAQCAtNjU2MSwxNSArNjU2MSwxMSBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0
aW9uQ29udGVuCiAgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiR7bmF0aXZlUmV0dXJu
VHlwZX0gJHtjbGFzc05hbWV9Ojoke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSgiIC4gam9p
bigiLCAiLCBAYXJndW1lbnRzKSAuICIpXG4iKTsKICAgICAgICAgICAgIHB1c2goQCRjb250ZW50
UmVmLCAie1xuIik7CiAKLSAgICAgICAgICAgICMgRklYTUU6IFRoaXMgaXMgbmVlZGVkIGZvciBO
b2RlRmlsdGVyLCB3aGljaCB3b3JrcyBldmVuIGZvciBkaXNjb25uZWN0ZWQgaWZyYW1lcy4gV2Ug
c2hvdWxkIGludmVzdGlnYXRlCi0gICAgICAgICAgICAjIGlmIHRoYXQgYmVoYXZpb3IgaXMgbmVl
ZGVkIGZvciBvdGhlciBjYWxsYmFja3MuCi0gICAgICAgICAgICBpZiAoISRvcGVyYXRpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+e1NraXBDYWxsYmFja0ludm9rZUNoZWNrfSkgewotICAgICAgICAg
ICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSlc
biIpOwotICAgICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICAgICByZXR1cm4g
Q2FsbGJhY2tSZXN1bHRUeXBlOjpVbmFibGVUb0V4ZWN1dGU7XG5cbiIpOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgaWYgKCFjYW5JbnZva2VDYWxs
YmFjaygpKVxuIik7CisgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAgICAgcmV0
dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6VW5hYmxlVG9FeGVjdXRlO1xuXG4iKTsKIAogICAgICAg
ICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgUmVmPCRjbGFzc05hbWU+IHByb3RlY3RlZFRo
aXMoKnRoaXMpO1xuXG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGF1
dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqanNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmpl
Y3QoKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGF1dG8mIHZt
ID0gZ2xvYmFsT2JqZWN0LnZtKCk7XG5cbiIpOwogICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRS
ZWYsICIgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pO1xuIik7CiAKQEAgLTY1ODcsMTAgKzY1ODMs
MTAgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgogCiAgICAgICAg
ICAgICBteSAkY2FsbGJhY2tJbnZvY2F0aW9uOwogICAgICAgICAgICAgaWYgKHJlZigkaW50ZXJm
YWNlT3JDYWxsYmFjaykgZXEgIklETENhbGxiYWNrRnVuY3Rpb24iKSB7Ci0gICAgICAgICAgICAg
ICAgJGNhbGxiYWNrSW52b2NhdGlvbiA9ICJtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1
ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZp
ZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pIjsKKyAgICAgICAgICAgICAgICAkY2FsbGJhY2tJbnZv
Y2F0aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1ZSwgYXJncywgSlND
YWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJu
ZWRFeGNlcHRpb24pIjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbXkg
JGNhbGxiYWNrVHlwZSA9ICRudW1PcGVyYXRpb25zID4gMSA/ICJPYmplY3QiIDogIkZ1bmN0aW9u
T3JPYmplY3QiOwotICAgICAgICAgICAgICAgICRjYWxsYmFja0ludm9jYXRpb24gPSAibV9kYXRh
LT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFj
a1R5cGU6OiR7Y2FsbGJhY2tUeXBlfSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2Z1
bmN0aW9uTmFtZX1cIiksIHJldHVybmVkRXhjZXB0aW9uKSI7CisgICAgICAgICAgICAgICAgJGNh
bGxiYWNrSW52b2NhdGlvbiA9ICJtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUs
IGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OiR7Y2FsbGJhY2tUeXBlfSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgXCIke2Z1bmN0aW9uTmFtZX1cIiksIHJldHVybmVkRXhj
ZXB0aW9uKSI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgkb3BlcmF0aW9uLT50
eXBlLT5uYW1lIGVxICJ1bmRlZmluZWQiKSB7CkBAIC03MDQxLDggKzcwMzcsNiBAQCBzdWIgSlNW
YWx1ZVRvTmF0aXZlRE9NQ29udmVydE5lZWRzR2xvYmFsCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlm
dDsKIAotICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNl
KCR0eXBlKTsKLSAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0Z1bmN0
aW9uKCR0eXBlKTsKICAgICByZXR1cm4gSlNWYWx1ZVRvTmF0aXZlRE9NQ29udmVydE5lZWRzR2xv
YmFsT2JqZWN0KEB7JHR5cGUtPnN1YnR5cGVzfVsxXSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzUmVj
b3JkVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuIDEgaWYgJHR5cGUtPm5hbWUgZXEgIlNjaGVkdWxl
ZEFjdGlvbiI7CiAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjg4MTc5KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtp
bmcgY29weSkKQEAgLTQ4Nyw5ICs0ODcsNiBAQAogICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJd
LAogICAgICAgICAgICAgInN1cHBvcnRzQ29uanVuY3Rpb24iOiB0cnVlCiAgICAgICAgIH0sCi0g
ICAgICAgICJTa2lwQ2FsbGJhY2tJbnZva2VDaGVjayI6IHsKLSAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbIm9wZXJhdGlvbiIsICJjYWxsYmFjay1mdW5jdGlvbiJdCi0gICAgICAgIH0s
CiAgICAgICAgICJTa2lwVlRhYmxlVmFsaWRhdGlvbiI6IHsKICAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbImludGVyZmFjZSJdCiAgICAgICAgIH0sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrSW50ZXJmYWNlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNr
SW50ZXJmYWNlLmlkbAkocmV2aXNpb24gMjg4MTc5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFja0ludGVyZmFjZS5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDYgKzUyLDUgQEAgZGljdGlvbmFyeSBUZXN0Q2FsbGJhY2tJbnRlcmZhY2VEaWN0aW9u
YQogICAgIHVuZGVmaW5lZCBjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhsb25nIGxvbmdQYXJh
bSwgVGVzdE5vZGUgdGVzdE5vZGVQYXJhbSk7CiAgICAgRE9NU3RyaW5nIGNhbGxiYWNrV2l0aEFS
ZXR1cm5WYWx1ZSgpOwogICAgIFtSZXRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgY2FsbGJhY2tU
aGF0UmV0aHJvd3NFeGNlcHRpb25zKFRlc3RDYWxsYmFja0ludGVyZmFjZUVudW0gZW51bVBhcmFt
KTsKLSAgICBbU2tpcENhbGxiYWNrSW52b2tlQ2hlY2tdIERPTVN0cmluZyBjYWxsYmFja1RoYXRT
a2lwc0ludm9rZUNoZWNrKFRlc3RDYWxsYmFja0ludGVyZmFjZURpY3Rpb25hcnkgZGljdGlvbmFy
eVBhcmFtKTsKICAgICBbQ2FsbGJhY2tUaGlzT2JqZWN0PVRlc3ROb2RlXSBET01TdHJpbmcgY2Fs
bGJhY2tXaXRoVGhpc09iamVjdChUZXN0T2JqIHRlc3RPYmpQYXJhbSk7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg4MTc5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw5IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpKU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uKEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKLSAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uKGdsb2JhbE9iamVjdC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0
YVN0cm9uZyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0LCB0aGlzKSkKK0pTVGVzdENhbGxiYWNrRnVu
Y3Rpb246OkpTVGVzdENhbGxiYWNrRnVuY3Rpb24oVk0mIHZtLCBKU09iamVjdCogY2FsbGJhY2sp
CisgICAgOiBUZXN0Q2FsbGJhY2tGdW5jdGlvbihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihj
YWxsYmFjay0+Z2xvYmFsT2JqZWN0KHZtKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAg
ICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcodm0sIGNhbGxiYWNrLCB0aGlzKSkK
IHsKIH0KIApAQCAtNTcsNyArNTcsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01T
dHJpbmc6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgYXV0byYg
dm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAg
LTY4LDcgKzY4LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQog
ICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEt
Pmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNr
VHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIGF1
dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3Ms
IEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJl
dHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAg
cmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7
CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjg4MTc5KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVu
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEpTVGVzdENhbGxiYWNrRnVuY3Rpb24gZmluYWwgOiBwdWJsaWMgVGVzdENh
bGxiYWNrRnVuY3Rpb24gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4g
Y3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rpb24oY2FsbGJhY2ss
IGdsb2JhbE9iamVjdCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uKHZtLCBjYWxsYmFjaykpOwogICAgIH0KIAogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CkBAIC00Myw3
ICs0Myw3IEBAIHB1YmxpYzoKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJp
bmc6OkltcGxlbWVudGF0aW9uVHlwZT4gaGFuZGxlRXZlbnQodHlwZW5hbWUgSURMTG9uZzo6UGFy
YW1ldGVyVHlwZSBhcmd1bWVudCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvbihKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqKTsKKyAgICBK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uKEpTQzo6Vk0mLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjayk7
CiAKICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0
aHJvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93LmNwcAkocmV2aXNpb24gMjg4MTc5
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxi
YWNrRnVuY3Rpb25SZXRocm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotSlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvblJldGhyb3c6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KEpTT2JqZWN0
KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IFRlc3RD
YWxsYmFja0Z1bmN0aW9uUmV0aHJvdyhnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkKLSAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGds
b2JhbE9iamVjdCwgdGhpcykpCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdzo6SlNUZXN0
Q2FsbGJhY2tGdW5jdGlvblJldGhyb3coVk0mIHZtLCBKU09iamVjdCogY2FsbGJhY2spCisgICAg
OiBUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3coanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Y2FsbGJhY2stPmdsb2JhbE9iamVjdCh2bSkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisg
ICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKHZtLCBjYWxsYmFjaywgdGhpcykp
CiB7CiB9CiAKQEAgLTYwLDcgKzYwLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9N
U3RyaW5nOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93PiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmds
b2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsKICAg
ICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2so
dm0pOwpAQCAtNzEsNyArNzEsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJp
bmc6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0byBqc1Jlc3VsdCA9
IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6
Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7
CisgICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1
ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZp
ZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewog
ICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAg
ICAgdGhyb3dFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIHJldHVy
bmVkRXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
UmV0aHJvdy5oCShyZXZpc2lvbiAyODgxNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksOSArMjksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpTVGVz
dENhbGxiYWNrRnVuY3Rpb25SZXRocm93IGZpbmFsIDogcHVibGljIFRlc3RDYWxsYmFja0Z1bmN0
aW9uUmV0aHJvdyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uUmV0aHJvdz4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlv
blJldGhyb3c+IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpKU09iamVjdCogY2FsbGJhY2spCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
UmV0aHJvdyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93KHZtLCBjYWxsYmFjaykpOwogICAg
IH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOyB9CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBDYWxsYmFja1Jl
c3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gaGFuZGxlRXZl
bnQodHlwZW5hbWUgSURMU2VxdWVuY2U8SURMTG9uZz46OlBhcmFtZXRlclR5cGUgYXJndW1lbnQp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93
KEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdENhbGxiYWNr
RnVuY3Rpb25SZXRocm93KEpTQzo6Vk0mLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjayk7CiAKICAg
ICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuY3BwCShyZXZpc2lv
biAyODgxNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsOSArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAotSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0OjpKU1Rlc3RDYWxsYmFja0Z1
bmN0aW9uV2l0aFRoaXNPYmplY3QoSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQotICAgIDogVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVj
dChnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fZGF0YShu
ZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCwgdGhpcykpCitK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3Q6OkpTVGVzdENhbGxiYWNrRnVuY3Rp
b25XaXRoVGhpc09iamVjdChWTSYgdm0sIEpTT2JqZWN0KiBjYWxsYmFjaykKKyAgICA6IFRlc3RD
YWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Y2FsbGJhY2stPmdsb2JhbE9iamVjdCh2bSkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisg
ICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKHZtLCBjYWxsYmFjaywgdGhpcykp
CiB7CiB9CiAKQEAgLTYxLDcgKzYxLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5k
ZWZpbmVkOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVj
dD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9k
YXRhLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3Qo
KSk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHZtKTsKQEAgLTcyLDcgKzcyLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURM
VW5kZWZpbmVkOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAg
TmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+
aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tU
eXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9k
YXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6
Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7
CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigm
bGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4g
Q2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlz
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5oCShyZXZpc2lvbiAy
ODgxNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkg
KzI5LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uV2l0aFRoaXNPYmplY3QgZmluYWwgOiBwdWJsaWMgVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRo
VGhpc09iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uV2l0aFRoaXNPYmplY3Q+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNr
RnVuY3Rpb25XaXRoVGhpc09iamVjdD4gY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTT2JqZWN0
KiBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENh
bGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdChjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhp
c09iamVjdCh2bSwgY2FsbGJhY2spKTsKICAgICB9CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpAQCAtNDMsNyArNDMs
NyBAQCBwdWJsaWM6CiAgICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJ
bXBsZW1lbnRhdGlvblR5cGU+IGhhbmRsZUV2ZW50KHR5cGVuYW1lIElETEludGVyZmFjZTxUZXN0
Tm9kZT46OlBhcmFtZXRlclR5cGUgdGhpc09iamVjdCwgdHlwZW5hbWUgSURMU2VxdWVuY2U8SURM
SW50ZXJmYWNlPFRlc3ROb2RlPj46OlBhcmFtZXRlclR5cGUgcGFyYW1ldGVyKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoSlND
OjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbldpdGhUaGlzT2JqZWN0KEpTQzo6Vk0mLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjayk7CiAK
ICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5
cGVkZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcy5jcHAJKHJldmlzaW9u
IDI4ODE3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
OSArMzQsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAot
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmczo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bldpdGhUeXBlZGVmcyhKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCi0gICAgOiBUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhnbG9iYWxP
YmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fZGF0YShuZXcgSlNDYWxs
YmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCwgdGhpcykpCitKU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzOjpKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVk
ZWZzKFZNJiB2bSwgSlNPYmplY3QqIGNhbGxiYWNrKQorICAgIDogVGVzdENhbGxiYWNrRnVuY3Rp
b25XaXRoVHlwZWRlZnMoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2FsbGJhY2stPmdsb2Jh
bE9iamVjdCh2bSkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX2RhdGEobmV3
IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKHZtLCBjYWxsYmFjaywgdGhpcykpCiB7CiB9CiAKQEAgLTYx
LDcgKzYxLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogCiAg
ICAgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnM+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0
KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGF1dG8mIHZt
ID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC03
Myw3ICs3Myw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KICAg
ICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhj
ZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRo
aXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElk
ZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJh
Y2sodm0sIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVu
Y3Rpb24sIElkZW50aWZpZXIoKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5l
ZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmpl
Y3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlw
ZTo6RXhjZXB0aW9uVGhyb3duOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbldpdGhUeXBlZGVmcy5oCShyZXZpc2lvbiAyODgxNzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhU
eXBlZGVmcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyBmaW5hbCA6
IHB1YmxpYyBUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzPiBjcmVhdGUoSlND
OjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisg
ICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzPiBjcmVhdGUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhjYWxs
YmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVz
dENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnModm0sIGNhbGxiYWNrKSk7CiAgICAgfQogCiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7IH0KQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5
cGVuYW1lIElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBl
bmFtZSBJRExTZXF1ZW5jZTxJRExOdWxsYWJsZTxJRExMb25nPj46OlBhcmFtZXRlclR5cGUgc2Vx
dWVuY2VBcmcsIHR5cGVuYW1lIElETExvbmc6OlBhcmFtZXRlclR5cGUgbG9uZ0FyZykgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyhK
U0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqKTsKKyAgICBKU1Rlc3RDYWxsYmFja0Z1
bmN0aW9uV2l0aFR5cGVkZWZzKEpTQzo6Vk0mLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjayk7CiAK
ICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjg4MTc5KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDkgKzEyMCw5IEBAIHRlbXBsYXRlPD4gVGVzdENhbGxi
YWNrSW50ZXJmYWNlOjpEaWN0aW8KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU1Rlc3RDYWxs
YmFja0ludGVyZmFjZTo6SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoSlNPYmplY3QqIGNhbGxiYWNr
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogVGVzdENhbGxiYWNrSW50
ZXJmYWNlKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9k
YXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0LCB0aGlz
KSkKK0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpKU1Rlc3RDYWxsYmFja0ludGVyZmFjZShWTSYg
dm0sIEpTT2JqZWN0KiBjYWxsYmFjaykKKyAgICA6IFRlc3RDYWxsYmFja0ludGVyZmFjZShqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihjYWxsYmFjay0+Z2xvYmFsT2JqZWN0KHZtKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJv
bmcodm0sIGNhbGxiYWNrLCB0aGlzKSkKIHsKIH0KIApAQCAtMTgzLDcgKzE4Myw3IEBAIENhbGxi
YWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxs
YmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxP
YmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3Qg
PSAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5n
bG9iYWxPYmplY3QoKSk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAg
IEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBDYWxsYmFja1Jlc3Vs
dDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93
ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247
Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tE
YXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNh
bGxiYWNrV2l0aE5vUGFyYW0iKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52
b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNr
VHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoTm9Q
YXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7
CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRF
eGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25U
aHJvd247CkBAIC0yMDksNyArMjA5LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5k
ZWZpbmVkOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9i
amVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsKICAgICBhdXRv
JiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpA
QCAtMjIwLDcgKzIyMCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6
SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxi
YWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0
LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoQXJyYXlQYXJhbSIpLCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1Zh
bHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhBcnJheVBhcmFtIiksIHJldHVybmVkRXhj
ZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhj
ZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAg
IHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsKQEAgLTIzNiw3ICsy
MzYsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAKICAgICBS
ZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAg
YXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYg
Z2xvYmFsT2JqZWN0ID0gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0
LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC0yNDgsNyArMjQ4LDcgQEAg
Q2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogICAgIEFTU0VSVCghYXJn
cy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVy
bmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdz
LCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbSIpLCByZXR1
cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVl
LCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbSIp
LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRp
b24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247
CkBAIC0yNjQsNyArMjY0LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVk
OjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgp
OworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsKICAgICBhdXRvJiB2bSA9
IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtMjc1
LDcgKzI3NSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KICAg
ICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhj
ZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRo
aXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoU3RyaW5nTGlzdCIpLCByZXR1cm5l
ZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBh
cmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhTdHJpbmdMaXN0IiksIHJldHVybmVkRXhjZXB0aW9u
KTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9u
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVy
biBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsKQEAgLTI5MSw3ICsyOTEsNyBA
QCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYg
Z2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFs
T2JqZWN0ID0gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7
CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC0zMDIsNyArMzAyLDcgQEAgQ2FsbGJh
Y2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNP
dmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhj
ZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0Nh
bGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJjYWxsYmFja1dpdGhCb29sZWFuIiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBtX2Rh
dGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpD
YWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNr
V2l0aEJvb2xlYW4iKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2Vw
dGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJl
dHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhj
ZXB0aW9uVGhyb3duOwpAQCAtMzE4LDcgKzMxOCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5n
bG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7CiAg
ICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKQEAgLTMzMCw3ICszMzAsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRl
ZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtl
ZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9kYXRhLT5pbnZv
a2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6
Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrUmVxdWlyZXNUaGlz
VG9QYXNzIiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNr
KHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNz
IiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAg
ICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2Vw
dGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93
bjsKQEAgLTM0Niw3ICszNDYsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJp
bmc6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0
KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGF1dG8mIHZt
ID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC0z
NTYsNyArMzU2LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQog
ICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEt
Pmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNr
VHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tXaXRoQVJl
dHVyblZhbHVlIiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9k
YXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6
Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFj
a1dpdGhBUmV0dXJuVmFsdWUiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5l
ZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmpl
Y3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlw
ZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAtMzc1LDcgKzM3NSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5
cGVuYW1lIElETERPTVN0cmluZzo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFj
ZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9k
YXRhLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3Qo
KSk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRl
ciBsb2NrKHZtKTsKQEAgLTM4Niw3ICszODYsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJ
RExET01TdHJpbmc6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAg
ICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0byBq
c1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxi
YWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJjYWxsYmFja1RoYXRSZXRocm93c0V4Y2VwdGlvbnMiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwor
ICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUs
IGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0aW9ucyIpLCByZXR1cm5l
ZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICB0aHJvd0V4Y2Vw
dGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgcmV0dXJuZWRFeGNlcHRpb24p
OwpAQCAtMzk5LDMzICszOTksNiBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJp
bmc6OkltCiAgICAgcmV0dXJuIHsgV1RGTW92ZShyZXR1cm5WYWx1ZSkgfTsKIH0KIAotQ2FsbGJh
Y2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVz
dENhbGxiYWNrSW50ZXJmYWNlOjpjYWxsYmFja1RoYXRTa2lwc0ludm9rZUNoZWNrKHR5cGVuYW1l
IElETERpY3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5Pjo6UGFyYW1l
dGVyVHlwZSBkaWN0aW9uYXJ5UGFyYW0pCi17Ci0gICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJm
YWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKLQotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpt
X2RhdGEtPmdsb2JhbE9iamVjdCgpOwotICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7
Ci0KLSAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgYXV0byYgbGV4aWNhbEdsb2JhbE9i
amVjdCA9IGdsb2JhbE9iamVjdDsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGpzVW5kZWZpbmVk
KCk7Ci0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAgICBhcmdzLmFwcGVuZCh0b0pT
PElETERpY3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5Pj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBkaWN0aW9uYXJ5UGFyYW0pKTsKLSAgICBBU1NF
UlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKLQotICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VD
YWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9i
amVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrVGhhdFNraXBzSW52b2tl
Q2hlY2siKSwgcmV0dXJuZWRFeGNlcHRpb24pOwotICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikg
ewotICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVk
RXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9u
VGhyb3duOwotICAgICB9Ci0KLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSAgICBhdXRvIHJldHVyblZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KGxl
eGljYWxHbG9iYWxPYmplY3QsIGpzUmVzdWx0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duKTsKLSAgICByZXR1
cm4geyBXVEZNb3ZlKHJldHVyblZhbHVlKSB9OwotfQotCiBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2U6OmNhbGxiYWNrV2l0aFRoaXNPYmplY3QodHlwZW5hbWUgSURMSW50ZXJmYWNlPFRlc3ROb2Rl
Pjo6UGFyYW1ldGVyVHlwZSB0aGlzT2JqZWN0LCB0eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVzdE9i
aj46OlBhcmFtZXRlclR5cGUgdGVzdE9ialBhcmFtKQogewogICAgIGlmICghY2FuSW52b2tlQ2Fs
bGJhY2soKSkKQEAgLTQzMyw3ICs0MDYsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExE
T01TdHJpbmc6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFs
T2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGF1
dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7
CkBAIC00NDQsNyArNDE3LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5n
OjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8
SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8ganNSZXN1bHQgPSBt
X2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNh
bGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tX
aXRoVGhpc09iamVjdCIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgYXV0byBqc1Jlc3VsdCA9
IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0Rh
dGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2Fs
bGJhY2tXaXRoVGhpc09iamVjdCIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVy
bmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9i
amVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRU
eXBlOjpFeGNlcHRpb25UaHJvd247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2UuaAkocmV2aXNpb24gMjg4MTc5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDkgKzMzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBKU1Rlc3RDYWxsYmFja0lu
dGVyZmFjZSBmaW5hbCA6IHB1YmxpYyBUZXN0Q2FsbGJhY2tJbnRlcmZhY2UgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IGNyZWF0ZShKU0M6OkpTT2Jq
ZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0
aWMgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNPYmplY3QqIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZSh2bSwgY2FsbGJh
Y2spKTsKICAgICB9CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpAQCAtNTQsMTEgKzU0LDEwIEBAIHB1YmxpYzoKICAg
ICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVudGF0aW9uVHlw
ZT4gY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3ModHlwZW5hbWUgSURMTG9uZzo6UGFyYW1ldGVy
VHlwZSBsb25nUGFyYW0sIHR5cGVuYW1lIElETEludGVyZmFjZTxUZXN0Tm9kZT46OlBhcmFtZXRl
clR5cGUgdGVzdE5vZGVQYXJhbSkgb3ZlcnJpZGU7CiAgICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5h
bWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IGNhbGxiYWNrV2l0aEFSZXR1cm5W
YWx1ZSgpIG92ZXJyaWRlOwogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmlu
Zzo6SW1wbGVtZW50YXRpb25UeXBlPiBjYWxsYmFja1RoYXRSZXRocm93c0V4Y2VwdGlvbnModHlw
ZW5hbWUgSURMRW51bWVyYXRpb248VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpFbnVtPjo6UGFyYW1l
dGVyVHlwZSBlbnVtUGFyYW0pIG92ZXJyaWRlOwotICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBjYWxsYmFja1RoYXRTa2lwc0ludm9r
ZUNoZWNrKHR5cGVuYW1lIElETERpY3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0
aW9uYXJ5Pjo6UGFyYW1ldGVyVHlwZSBkaWN0aW9uYXJ5UGFyYW0pIG92ZXJyaWRlOwogICAgIENh
bGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBj
YWxsYmFja1dpdGhUaGlzT2JqZWN0KHR5cGVuYW1lIElETEludGVyZmFjZTxUZXN0Tm9kZT46OlBh
cmFtZXRlclR5cGUgdGhpc09iamVjdCwgdHlwZW5hbWUgSURMSW50ZXJmYWNlPFRlc3RPYmo+OjpQ
YXJhbWV0ZXJUeXBlIHRlc3RPYmpQYXJhbSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgSlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2UoSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0Kik7
CisgICAgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UoSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqIGNh
bGxiYWNrKTsKIAogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0
aW9uYXJ5Mi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5jcHAJKHJldmlzaW9uIDI4ODE3OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVk
RGljdGlvbmFyeTIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHRlbXBsYXRl
PD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5MiBjb252ZXIKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFs
dWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252
ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxl
eGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29u
dmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBzdHJpbmdNZW1iZXJWYWx1ZTsK
QEAgLTE1Myw3ICsxNTMsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeTI6OkRp
Y3RpCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9
CiAgICAgaWYgKCFjYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAg
cmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9p
ZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAg
IHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Zv
aWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAg
IEpTVmFsdWUgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZTsKQEAgLTE4OCw3ICsxODgsNyBAQCB0
ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeTI6OkRpY3RpCiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFwYXJ0aWFsQ2Fs
bGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5wYXJ0aWFs
Q2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJh
Y2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAg
IHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rp
b248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQ2FsbGJhY2tN
ZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKICAgICB9CiAgICAgSlNWYWx1ZSBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZl
ZERpY3Rpb25hcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeS5jcHAJKHJldmlzaW9uIDI4ODE3
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJp
dmVkRGljdGlvbmFyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgdGVtcGxh
dGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkgY29udmVydAogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJW
YWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNv
bnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigm
bGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBj
b252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHBhcnRpYWxCb29sZWFuTWVt
YmVyVmFsdWU7CkBAIC0xMDAsNyArMTAwLDcgQEAgdGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rp
b25hcnkgY29udmVydAogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNrTWVtYmVyID0gY29udmVydDxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
cGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigm
bGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNrTWVt
YmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgcGFy
dGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5o
ZXJpdGVkRGljdGlvbmFyeTIuY3BwCShyZXZpc2lvbiAyODgxNzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRl
ZERpY3Rpb25hcnkyIGNvbnYKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQo
KSkgewotICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNr
RnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01l
bWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKKyAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFj
a0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tN
ZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKICAgICB9CiAgICAgSlNWYWx1ZSBzdHJpbmdNZW1iZXJWYWx1ZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5jcHAJKHJldmlzaW9uIDI4ODE3OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0
aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB0ZW1wbGF0ZTw+IFRl
c3RJbmhlcml0ZWREaWN0aW9uYXJ5IGNvbnZlCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjYWxsYmFja01lbWJlclZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwg
Y2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3Qs
IGNhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1
ZTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5
IGNvbnZlCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAg
ICB9CiAgICAgaWYgKCFwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
Ci0gICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxi
YWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFs
Q2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBj
b252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBwYXJ0aWFsUmVx
dWlyZWRMb25nTWVtYmVyVmFsdWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjg4MTc5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMTIsMTAgKzIwMTIsMTAgQEAgdGVtcGxhdGU8PiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMXwogICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkp
OwogICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTsKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKLSAgICBhdXRvIHRlc3RDYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJ
bnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwg
YXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
c2NvcGUsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9iamVjdCIsIG51bGxwdHIpOyB9KTsKKyAg
ICBhdXRvIHRlc3RDYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhy
b3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAwLCAidGVzdENhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCBudWxs
cHRyKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1l
LT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICBhdXRvIHRlc3RDYWxsYmFja0Z1bmN0aW9uID0g
Y29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgInRlc3RDYWxsYmFja0Z1bmN0aW9uIiwgIlRl
c3RPYmplY3QiLCBudWxscHRyKTsgfSk7CisgICAgYXV0byB0ZXN0Q2FsbGJhY2tGdW5jdGlvbiA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93
QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAx
LCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVzdE9iamVjdCIsIG51bGxwdHIpOyB9KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IGF1dG8gb2JqZWN0ID0gVGVzdE9iajo6Y3JlYXRlKGRvY3VtZW50LCB0ZXN0Q2FsbGJhY2sucmVs
ZWFzZU5vbk51bGwoKSwgdGVzdENhbGxiYWNrRnVuY3Rpb24ucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgaWYgY29uc3RleHByIChJc0V4Y2VwdGlvbk9yPGRlY2x0eXBlKG9iamVjdCk+KQpAQCAtMzQ1
MSw3ICszNDUxLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ial9zdHJpbmdWbwog
ICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9
IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElE
TFJlY29yZDxJRExET01TdHJpbmcsIElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgp
KTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExSZWNvcmQ8SURMRE9NU3RyaW5n
LCBJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2FyeShsZXhpY2Fs
R2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1wbC5zZXRT
dHJpbmdWb2lkQ2FsbGJhY2tSZWNvcmRBdHRyKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKQEAgLTcw
MjAsNyArNzAyMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAg
RW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZh
Y2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2Jh
bE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0
aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUs
IDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0ludGVyZmFj
ZUFyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVy
ZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0
IiwgIm1ldGhvZFdpdGhDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0ludGVyZmFjZUFyZyhjYWxsYmFjay5yZWxl
YXNlTm9uTnVsbCgpKTsgfSkpKTsKIH0KQEAgLTcwNDAsNyArNzA0MCw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFj
ayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11
c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2si
LCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyIp
OyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFj
a0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9i
amVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrSW50
ZXJmYWNlQXJnKFdURk1vdmUoY2FsbGJhY2spKTsgfSkpKTsKIH0KQEAgLTcwNjMsNyArNzA2Myw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBhdXRvIG5v
bkNhbGxiYWNrID0gY29udmVydDxJRExMb25nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsIDEsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdp
dGhOb25DYWxsYmFja0ludGVyZmFjZUFyZ0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwor
ICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENh
bGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgp
LCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0
aE5vbkNhbGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
VW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVj
bHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VB
cmdBbmRDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKG5vbkNhbGxiYWNrKSwgY2FsbGJhY2su
cmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkBAIC03MDgxLDcgKzcwODEsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAg
ICBhdXRvIGNhbGxiYWNrID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IENvbnZl
cnRlcjxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+OjpSZXR1
cm5UeXBlKCkgOiBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50
ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9i
amVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVz
dE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsK
KyAgICBhdXRvIGNhbGxiYWNrID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IENv
bnZlcnRlcjxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+OjpS
ZXR1cm5UeXBlKCkgOiBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNr
SW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlv
bmFsQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1w
bC5tZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNr
KSk7IH0pKSk7CiB9CkBAIC03MDk5LDcgKzcwOTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNr
ID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFj
a0ludGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVz
dEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZh
Y2VBcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURM
Q2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRN
dXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNr
IiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0ludGVy
ZmFjZUFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlQ2FsbGJhY2tJbnRlcmZhY2VBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkp
OwogfQpAQCAtNzExOSw3ICs3MTE5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8
IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxs
YmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVj
dCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxi
YWNrRnVuY3Rpb25BcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2Fs
bGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRl
ZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlw
ZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKGNhbGxi
YWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkpOwogfQpAQCAtNzEzOSw3ICs3MTM5LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlmIChVTkxJS0VMWShj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRv
IGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVz
dENhbGxiYWNrRnVuY3Rpb24+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1
ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1
bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJj
YWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrRnVuY3Rp
b25BcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURM
Q2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVz
dEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNr
IiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyIp
OyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0o
KSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxi
YWNrRnVuY3Rpb25BcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzE2Miw3ICs3
MTYyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1
dG8gbm9uQ2FsbGJhY2sgPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29u
dmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0
aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKKyAgICBh
dXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNr
RnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIDEsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOb25D
YWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC5tZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJn
KFdURk1vdmUobm9uQ2FsbGJhY2spLCBjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkpKTsK
IH0KQEAgLTcxODAsNyArNzE4MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBhcmd1bWVu
dDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gQ29udmVydGVyPElETENhbGxiYWNrRnVuY3Rpb248
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+OjpSZXR1cm5UeXBlKCkgOiBjb252ZXJ0PElETENhbGxi
YWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBhcmd1bWVu
dDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gQ29udmVydGVyPElETENhbGxiYWNrRnVuY3Rpb248
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+OjpSZXR1cm5UeXBlKCkgOiBjb252ZXJ0PElETENhbGxi
YWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVu
Y3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRl
c3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrRnVu
Y3Rpb25BcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzE5OCw3ICs3MTk4LDcg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9Q
QVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9
IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1
bmN0aW9uPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlv
bmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJnKFdU
Rk1vdmUoY2FsbGJhY2spKTsgfSkpKTsKIH0KQEAgLTcyMTUsNyArNzIxNSw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxs
YmFjayA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2U+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgp
LCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRo
Q2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVy
dDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFj
ZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUp
IHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNj
b3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJh
Y2tBbmRPcHRpb25hbEFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3Bl
LCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBUZXN0T2JqOjpz
dGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7
IH0pKSk7CiB9CkBAIC03MjM0LDcgKzcyMzQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElE
TENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
bGV4aWNhbEdsb2JhbE9iamVjdCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9i
amVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVz
dE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmciKTsgfSk7CisgICAgYXV0byBj
YWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2Fs
bGJhY2tBcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gVGVzdE9iajo6c3RhdGljTWV0
aG9kV2l0aENhbGxiYWNrQXJnKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkpOwogfQpA
QCAtNzM2NCw3ICs3MzY0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNv
bnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm92
ZXJsb2FkZWRNZXRob2QiKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2Fs
bGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RC
ZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAi
VGVzdE9iamVjdCIsICJvdmVybG9hZGVkTWV0aG9kIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0
dXJuIGltcGwub3ZlcmxvYWRlZE1ldGhvZChjYWxsYmFjay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdGFuZGFsb25lRGljdGlvbmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcAko
cmV2aXNpb24gMjg4MTc5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUs
NyArNzUsNyBAQCB0ZW1wbGF0ZTw+IERpY3Rpb25hcnlJbXBsTmFtZSBjb252ZXJ0RGljCiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYg
KCFjYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LmNh
bGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNr
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5j
YWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFj
az4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUg
ZW51bU1lbWJlclZhbHVlOwpAQCAtMTM2LDcgKzEzNiw3IEBAIHRlbXBsYXRlPD4gRGljdGlvbmFy
eUltcGxOYW1lIGNvbnZlcnREaWMKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNv
bnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxs
YmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+
KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlKTsKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCShyZXZpc2lvbiAyODgxNzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjgsMTAgKzE2OCwxMCBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTExfCiAgICAgYXV0byBoZWxsbyA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7Ci0gICAg
YXV0byB0ZXN0Q2FsbGJhY2tGdW5jdGlvbiA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxK
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52
YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dB
cmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEs
ICJ0ZXN0Q2FsbGJhY2tGdW5jdGlvbiIsICJUZXN0VHlwZWRlZnMiLCBudWxscHRyKTsgfSk7Cisg
ICAgYXV0byB0ZXN0Q2FsbGJhY2tGdW5jdGlvbiA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlv
bjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MS52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAi
VGVzdFR5cGVkZWZzIiwgbnVsbHB0cik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFy
Z3VtZW50MiA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMik7Ci0gICAgYXV0byB0ZXN0
Q2FsbGJhY2tJbnRlcmZhY2UgPSBjb252ZXJ0PElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENh
bGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgp
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVu
dE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAyLCAidGVzdENh
bGxiYWNrSW50ZXJmYWNlIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOyB9KTsKKyAgICBhdXRv
IHRlc3RDYWxsYmFja0ludGVyZmFjZSA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQyLnZh
bHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6
VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGlj
YWxHbG9iYWxPYmplY3QsIHNjb3BlLCAyLCAidGVzdENhbGxiYWNrSW50ZXJmYWNlIiwgIlRlc3RU
eXBlZGVmcyIsIG51bGxwdHIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2JqZWN0ID0gVGVzdFR5cGVkZWZzOjpj
cmVhdGUoV1RGTW92ZShoZWxsbyksIHRlc3RDYWxsYmFja0Z1bmN0aW9uLnJlbGVhc2VOb25OdWxs
KCksIHRlc3RDYWxsYmFja0ludGVyZmFjZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBpZiBjb25z
dGV4cHIgKElzRXhjZXB0aW9uT3I8ZGVjbHR5cGUob2JqZWN0KT4pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI4ODE3OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tG
dW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDkgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLUpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0
aW9uOjpKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbihKU09iamVjdCogY2FsbGJhY2ssIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBUZXN0Vm9pZENhbGxiYWNrRnVuY3Rp
b24oZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2RhdGEo
bmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QsIHRoaXMpKQor
SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb246OkpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uKFZN
JiB2bSwgSlNPYmplY3QqIGNhbGxiYWNrKQorICAgIDogVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9u
KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNhbGxiYWNrLT5nbG9iYWxPYmplY3Qodm0pKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0
YVN0cm9uZyh2bSwgY2FsbGJhY2ssIHRoaXMpKQogewogfQogCkBAIC02OCw3ICs2OCw3IEBAIENh
bGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxKU1Rlc3RW
b2lkQ2FsbGJhY2tGdW5jdGlvbj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBn
bG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxP
YmplY3QgPSAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsK
IAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTg0LDcgKzg0LDcgQEAgQ2FsbGJhY2tS
ZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVy
Zmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0
aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxi
YWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4
Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdz
LCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAg
IHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJuZWRFeGNlcHRpb24p
OwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENh
bGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uaAkocmV2aXNpb24gMjg4
MTc5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFZv
aWRDYWxsYmFja0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbiBmaW5h
bCA6IHB1YmxpYyBUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBj
YWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgUmVm
PEpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uPiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNP
YmplY3QqIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNU
ZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbih2bSwgY2Fs
bGJhY2spKTsKICAgICB9CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAg
ICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlvblR5
cGU+IGhhbmRsZUV2ZW50KHR5cGVuYW1lIElETEZsb2F0MzJBcnJheTo6UGFyYW1ldGVyVHlwZSBh
cnJheVBhcmFtLCB0eXBlbmFtZSBJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPjo6UGFyYW1ldGVyVHlwZSBzcnpQYXJhbSwgdHlwZW5hbWUgSURMRE9NU3RyaW5n
OjpQYXJhbWV0ZXJUeXBlIHN0ckFyZywgdHlwZW5hbWUgSURMQm9vbGVhbjo6UGFyYW1ldGVyVHlw
ZSBib29sUGFyYW0sIHR5cGVuYW1lIElETExvbmc6OlBhcmFtZXRlclR5cGUgbG9uZ1BhcmFtLCB0
eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVzdE5vZGU+OjpQYXJhbWV0ZXJUeXBlIHRlc3ROb2RlUGFy
YW0pIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIEpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9u
KEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdFZvaWRDYWxs
YmFja0Z1bmN0aW9uKEpTQzo6Vk0mLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjayk7CiAKICAgICBK
U0NhbGxiYWNrRGF0YVN0cm9uZyogbV9kYXRhOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlRmlsdGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZUZp
bHRlci5pZGwJKHJldmlzaW9uIDI4ODE3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlRmls
dGVyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNSArNDIsNSBAQAogICAgIGNvbnN0IHVuc2ln
bmVkIGxvbmcgU0hPV19ET0NVTUVOVF9GUkFHTUVOVCA9IDB4MDAwMDA0MDA7CiAgICAgY29uc3Qg
dW5zaWduZWQgbG9uZyBTSE9XX05PVEFUSU9OID0gMHgwMDAwMDgwMDsgLy8gSGlzdG9yaWNhbC4K
IAotICAgIFtTa2lwQ2FsbGJhY2tJbnZva2VDaGVjaywgUmV0aHJvd0V4Y2VwdGlvbl0gdW5zaWdu
ZWQgc2hvcnQgYWNjZXB0Tm9kZShOb2RlIG5vZGUpOworICAgIFtSZXRocm93RXhjZXB0aW9uXSB1
bnNpZ25lZCBzaG9ydCBhY2NlcHROb2RlKE5vZGUgbm9kZSk7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1RyYXZlcnNhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1RyYXZlcnNhbC5jcHAJKHJldmlzaW9uIDI4ODE3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9U
cmF2ZXJzYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw4IEBAIEV4Y2VwdGlvbk9y
PHVuc2lnbmVkIHNob3J0PiBOb2RlSXRlcmF0b3IKIAogICAgIFNldEZvclNjb3BlPGJvb2w+IGlz
QWN0aXZlKG1faXNBY3RpdmUsIHRydWUpOwogICAgIGF1dG8gY2FsbGJhY2tSZXN1bHQgPSBtX2Zp
bHRlci0+YWNjZXB0Tm9kZShub2RlKTsKKyAgICBpZiAoY2FsbGJhY2tSZXN1bHQudHlwZSgpID09
IENhbGxiYWNrUmVzdWx0VHlwZTo6VW5hYmxlVG9FeGVjdXRlKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90QWxsb3dlZEVycm9yLCAiRmFpbGVkIHRvIGV4ZWN1dGUgJ2FjY2VwdE5vZGUn
IG9uICdOb2RlRmlsdGVyJzogVGhlIHByb3ZpZGVkIGNhbGxiYWNrIGlzIG5vIGxvbmdlciBydW5u
YWJsZS4iX3MgfTsKICAgICBpZiAoY2FsbGJhY2tSZXN1bHQudHlwZSgpID09IENhbGxiYWNrUmVz
dWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgRXhp
c3RpbmdFeGNlcHRpb25FcnJvciB9OwogICAgIHJldHVybiBjYWxsYmFja1Jlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgJKHJldmlzaW9uIDI4ODE3OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgU2NyaXB0TW9kdWxlTG9hZGVyJiBtb2R1
bGVMb2FkZXIoKSB7IHJldHVybiAqbV9tb2R1bGVMb2FkZXI7IH0KIAogICAgIC8vIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8V29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUqPih0aGlzKTsgfQogICAgIEV2ZW50TG9vcFRhc2tHcm91cCYgZXZlbnRM
b29wKCkgZmluYWw7CiAgICAgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdCBmaW5hbDsKICAg
ICB2b2lkIHBvc3RUYXNrKFRhc2smJikgZmluYWw7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNv
bnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCkBAIC05MCw3ICs5MSw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IGRlcmVmKCk7
IH0KIAogICAgIC8vIEV2ZW50VGFyZ2V0LgotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBjb25zdF9jYXN0PFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKj4odGhpcyk7IH0KICAgICB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFs
IHsgZGVyZWYoKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODgxNzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMyw3ICsxMzMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9i
YWxTY29wCiAgICAgICAgIGlmIChwYWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBh
aW50IG1ldGhvZCIgfTsKIAotICAgICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWlu
dCA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihnbG9i
YWxPYmplY3QsIHBhaW50VmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFs
T2JqZWN0KSk7CisgICAgICAgIFJlZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29u
dmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KGdsb2JhbE9iamVj
dCwgcGFpbnRWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2Vw
dGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfSk7CiAKICAgICAgICAgYXV0byBwYWludERl
ZmluaXRpb24gPSBtYWtlVW5pcXVlPFBhaW50RGVmaW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1
Y3Rvci5nZXQoKSwgcGFpbnQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRp
ZXMpLCBXVEZNb3ZlKGlucHV0QXJndW1lbnRzKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwv
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94
bWwvQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmlkbAkocmV2aXNpb24gMjg4MTc5KQorKysgU291cmNl
L1dlYkNvcmUveG1sL0N1c3RvbVhQYXRoTlNSZXNvbHZlci5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDUgKzI1LDUgQEAKIAogLy8gTm90IHVzaW5nIFtJc1dlYWtDYWxsYmFja10gaGVyZSBhcyBY
UGF0aE5TUmVzb2x2ZXIgd3JhcHBlcnMgYWx3YXlzIHRlbXBvcmFyeSAobm8gcmVmZXJlbmNlIGlz
IGtlcHQpCiBjYWxsYmFjayBpbnRlcmZhY2UgQ3VzdG9tWFBhdGhOU1Jlc29sdmVyIHsKLSAgICBb
SW1wbGVtZW50ZWRBcz1sb29rdXBOYW1lc3BhY2VVUklGb3JCaW5kaW5ncywgU2tpcENhbGxiYWNr
SW52b2tlQ2hlY2tdIERPTVN0cmluZz8gbG9va3VwTmFtZXNwYWNlVVJJKERPTVN0cmluZz8gcHJl
Zml4KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1sb29rdXBOYW1lc3BhY2VVUklGb3JCaW5kaW5nc10g
RE9NU3RyaW5nPyBsb29rdXBOYW1lc3BhY2VVUkkoRE9NU3RyaW5nPyBwcmVmaXgpOwogfTsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI4ODE3OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisyMDIyLTAxLTE4ICBBbGV4ZXkgU2h2YXlrYSAgPGFz
aHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBDYWxsYmFjayBmdW5jdGlvbnMgLyBpbnRlcmZh
Y2VzIHNob3VsZCB1c2UgZ2xvYmFsIG9iamVjdCBvZiBpdHMgX3ZhbHVlXyBmb3IgZXJyb3JzIGFu
ZCBsaWZlY3ljbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMjM4NworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAg
ICogZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxl
dGVkLWNvbnRleHQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJj
ZXMvY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0LWlubmVyMS5odG1sOgorICAgICAgICBBbGln
bnMgdGVzdCBhc3NlcnRpb25zIHdpdGggYmVoYXZpb3Igb2YgQmxpbmsgYW5kIEdlY2tvLgorCisg
ICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUt
cGVybWlzc2lvbi1kZW5pZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xv
Y2F0aW9uL2Rpc2Nvbm5lY3RlZC1mcmFtZS1wZXJtaXNzaW9uLWRlbmllZC5odG1sOgorICAgICAg
ICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nvbm5lY3RlZC1mcmFtZS5odG1sOgorICAgICAg
ICBBbGlnbnMgdGVzdHMgYXNzZXJ0aW9ucyB3aXRoIHRoZWlyIGluaXRpYWwgZGVzY3JpcHRpb25z
LgorICAgICAgICBXaGlsZSBvdGhlciBicm93c2VycyBkb24ndCBjYWxsIGVycm9yIGNhbGxiYWNr
IGZvciBhIGRpc2Nvbm5lY3RlZCBmcmFtZSwKKyAgICAgICAgaXQgc2VlbXMgbGlrZSBhIHVzZWZ1
bCB0aGluZyB0byBkby4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2RldGFjaGVkLXN2Zy1wYXJl
bnQtd2luZG93LWV2ZW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvZGV0
YWNoZWQtc3ZnLXBhcmVudC13aW5kb3ctZXZlbnRzLmh0bWw6CisgICAgICAgIEFsaWducyB0ZXN0
IGFzc2VydGlvbiB3aXRoIG90aGVyIGJyb3dzZXJzLgorICAgICAgICBUaGVyZSBpcyBubyByZWFz
b24gd2h5IGV2YWwoKSB3b3VsZG4ndCB0aHJvdyBhbiBlcnJvciBnaXZlbiB0aGUgPGlmcmFtZT4g
aXMgY29ubmVjdGVkLgorCisgICAgICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3dyb25nLWds
b2JhbC1vYmplY3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9mcmFtZS13
aW5kb3ctYXMtY2FsbGJhY2stZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZnJhbWVzL2Zy
YW1lLXdpbmRvdy1hcy1jYWxsYmFjay5odG1sOgorICAgICAgICBBbGlnbnMgdGVzdCBhc3NlcnRp
b25zIHdpdGggdGhlIHNwZWMgYW5kIEJsaW5rIC8gR2Vja28uCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlv
bi1kZXRhY2hlZC1mcmFtZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtbXV0YXRpb24t
b2JzZXJ2ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jYWxsYmFj
ay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1tdXRhdGlvbi1vYnNlcnZlci5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1wZXJm
b3JtYW5jZS1vYnNlcnZlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXBlcmZvcm1hbmNlLW9ic2VydmVyLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVk
LWZyYW1lLXJhZi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2NhbGxi
YWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXJhZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1yZXNpemUtb2JzZXJ2ZXIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlv
bi1kZXRhY2hlZC1mcmFtZS1yZXNpemUtb2JzZXJ2ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtdG8tYmxvYi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFj
aGVkLWZyYW1lLXRvLWJsb2IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY2FsbGJh
Y2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLW5vZGUtZmlsdGVyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1l
LW5vZGUtZmlsdGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2NhbGxiYWNrLWlu
dGVyZmFjZS1kZXRhY2hlZC1mcmFtZS14cGF0aG5zcmVzb2x2ZXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jYWxsYmFjay1pbnRlcmZhY2UtZGV0YWNoZWQtZnJhbWUt
eHBhdGhuc3Jlc29sdmVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNl
cy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1jb21tb24uanM6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFt
ZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXItaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1tdXRhdGlv
bi1vYnNlcnZlci1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmVzb3Vy
Y2VzL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXBlcmZvcm1hbmNlLW9ic2VydmVy
LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJh
Y2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcmFmLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUt
cmVzaXplLW9ic2VydmVyLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9y
ZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtdG8tYmxvYi1pZnJhbWUu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNrLWludGVy
ZmFjZS1kZXRhY2hlZC1mcmFtZS1ub2RlLWZpbHRlci1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFt
ZS14cGF0aG5zcmVzb2x2ZXItaWZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDIyLTAxLTE4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHIyNjQzNTIpOiBNYWlsIGNvbXBvc2UgYm9keSBmaWVsZCBkb2VzIG5vdCBhdm9pZCB0aGUga2V5
Ym9hcmQgd2hlbiBzY3JvbGxpbmcgYWZ0ZXIgZm9jdXMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLWludGVyc2VjdGlvbi1vYnNlcnZl
ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJh
Y2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtaW50ZXJzZWN0aW9uLW9ic2VydmVyLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1mdW5j
dGlvbi1kZXRhY2hlZC1mcmFtZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXItZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorCitQQVNTIENhbGxiYWNrIGZ1bmN0aW9uLCBv
cmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGNvbm5l
Y3RlZAorUEFTUyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2
aWEgbWFpbiB3aW5kb3cncyBGdW5jdGlvbiBjb25zdHJ1Y3RvciwgaXMgaW52b2tlZCBldmVuIGlm
IDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZAorUEFTUyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2lu
YXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29u
bmVjdGVkCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRl
dGFjaGVkLWZyYW1lLWludGVyc2VjdGlvbi1vYnNlcnZlci5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLWludGVy
c2VjdGlvbi1vYnNlcnZlci5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLWludGVyc2VjdGlvbi1vYnNlcnZl
ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FsbGJh
Y2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtY29tbW9uLmpzIj48L3NjcmlwdD4KKworPGJvZHk+
CisKKzxkaXYgaWQ9ImludGVyc2VjdGlvbk9ic2VydmVyVGVzdFJvb3QiIGhpZGRlbj48L2Rpdj4K
KworPHNjcmlwdD4KK2NvbnN0IElGUkFNRV9TUkMgPSAicmVzb3VyY2VzL2NhbGxiYWNrLWZ1bmN0
aW9uLWRldGFjaGVkLWZyYW1lLWludGVyc2VjdGlvbi1vYnNlcnZlci1pZnJhbWUuaHRtbCI7CisK
K3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCBjcmVh
dGVJZnJhbWUodCwgSUZSQU1FX1NSQyk7CisgICAgY29uc3QgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIg
PSBpZnJhbWUuY29udGVudFdpbmRvdy5jcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlcigpOworCisg
ICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKGludGVyc2VjdGlvbk9ic2Vy
dmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDApOworICAgIHNjaGVkdWxlT2JzZXJ2ZWRJbnRlcnNl
Y3Rpb24oKTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnRl
cnNlY3Rpb25PYnNlcnZlci5jYWxsYmFja0ludm9jYXRpb25zLCAxKTsKK30sICJDYWxsYmFjayBm
dW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgaW52b2tlZCBpZiA8aWZyYW1l
PiBpcyBjb25uZWN0ZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0
IGlmcmFtZSA9IGF3YWl0IGNyZWF0ZUlmcmFtZSh0LCBJRlJBTUVfU1JDKTsKKyAgICBjb25zdCBp
bnRlcnNlY3Rpb25PYnNlcnZlciA9IGlmcmFtZS5jb250ZW50V2luZG93LmNyZWF0ZUludGVyc2Vj
dGlvbk9ic2VydmVyKEZ1bmN0aW9uKTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhpbnRlcnNlY3Rpb25PYnNlcnZlci5jYWxsYmFja0ludm9jYXRpb25zLCAwKTsK
KworICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGlmcmFtZS5jb250ZW50
V2luZG93LCBudWxsKTsKKworICAgIHNjaGVkdWxlT2JzZXJ2ZWRJbnRlcnNlY3Rpb24oKTsKKwor
ICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnRlcnNlY3Rpb25PYnNl
cnZlci5jYWxsYmFja0ludm9jYXRpb25zLCAxKTsKK30sICJDYWxsYmFjayBmdW5jdGlvbiwgb3Jp
Z2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFpbiB3aW5kb3cncyBGdW5jdGlvbiBjb25zdHJ1
Y3RvciwgaXMgaW52b2tlZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZCIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRl
SWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IGludGVyc2VjdGlvbk9ic2VydmVyID0g
aWZyYW1lLmNvbnRlbnRXaW5kb3cuY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTsKKworICAg
IGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnRlcnNlY3Rpb25PYnNlcnZl
ci5jYWxsYmFja0ludm9jYXRpb25zLCAwKTsKKworICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGlmcmFtZS5jb250ZW50V2luZG93LCBudWxsKTsKKworICAgIHNjaGVkdWxl
T2JzZXJ2ZWRJbnRlcnNlY3Rpb24oKTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhpbnRlcnNlY3Rpb25PYnNlcnZlci5jYWxsYmFja0ludm9jYXRpb25zLCAwKTsK
K30sICJDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90
IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIik7CisKK2Z1bmN0aW9uIHNjaGVk
dWxlT2JzZXJ2ZWRJbnRlcnNlY3Rpb24oKSB7CisgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJUZXN0
Um9vdC5oaWRkZW4gPSAhaW50ZXJzZWN0aW9uT2JzZXJ2ZXJUZXN0Um9vdC5oaWRkZW47Cit9Cis8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRl
dGFjaGVkLWZyYW1lLW11dGF0aW9uLW9ic2VydmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1t
dXRhdGlvbi1vYnNlcnZlci1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtbXV0YXRpb24tb2Jz
ZXJ2ZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorCitQQVNT
IENhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBpbnZva2Vk
IGlmIDxpZnJhbWU+IGlzIGNvbm5lY3RlZAorUEFTUyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2lu
YXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFpbiB3aW5kb3cncyBGdW5jdGlvbiBjb25zdHJ1Y3Rv
ciwgaXMgaW52b2tlZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZAorUEFTUyBDYWxs
YmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQg
aWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLW11dGF0aW9uLW9ic2VydmVyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0
YWNoZWQtZnJhbWUtbXV0YXRpb24tb2JzZXJ2ZXIuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1tdXRhdGlv
bi1vYnNlcnZlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtY29tbW9uLmpzIj48L3NjcmlwdD4K
KworPGJvZHk+CisKKzxkaXYgaWQ9Im11dGF0aW9uT2JzZXJ2ZXJUZXN0Um9vdCIgaGlkZGVuPjwv
ZGl2PgorCis8c2NyaXB0PgorY29uc3QgSUZSQU1FX1NSQyA9ICJyZXNvdXJjZXMvY2FsbGJhY2st
ZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtbXV0YXRpb24tb2JzZXJ2ZXItaWZyYW1lLmh0bWwiOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3Jl
YXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IG11dGF0aW9uT2JzZXJ2ZXIgPSBp
ZnJhbWUuY29udGVudFdpbmRvdy5jcmVhdGVNdXRhdGlvbk9ic2VydmVyKCk7CisKKyAgICBhd2Fp
dCBzbGVlcCgxMDApOworICAgIGFzc2VydF9lcXVhbHMobXV0YXRpb25PYnNlcnZlci5jYWxsYmFj
a0ludm9jYXRpb25zLCAwKTsKKyAgICBzY2hlZHVsZU9ic2VydmVkTXV0YXRpb24oKTsKKworICAg
IGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0X2VxdWFscyhtdXRhdGlvbk9ic2VydmVyLmNh
bGxiYWNrSW52b2NhdGlvbnMsIDEpOworfSwgIkNhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVk
IGluIGFuIDxpZnJhbWU+LCBpcyBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGNvbm5lY3RlZCIpOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3Jl
YXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IG11dGF0aW9uT2JzZXJ2ZXIgPSBp
ZnJhbWUuY29udGVudFdpbmRvdy5jcmVhdGVNdXRhdGlvbk9ic2VydmVyKEZ1bmN0aW9uKTsKKwor
ICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0X2VxdWFscyhtdXRhdGlvbk9ic2VydmVy
LmNhbGxiYWNrSW52b2NhdGlvbnMsIDApOworCisgICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFz
c2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRXaW5kb3csIG51bGwpOworCisgICAgc2NoZWR1bGVP
YnNlcnZlZE11dGF0aW9uKCk7CisKKyAgICBhd2FpdCBzbGVlcCgxMDApOworICAgIGFzc2VydF9l
cXVhbHMobXV0YXRpb25PYnNlcnZlci5jYWxsYmFja0ludm9jYXRpb25zLCAxKTsKK30sICJDYWxs
YmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFpbiB3aW5kb3cn
cyBGdW5jdGlvbiBjb25zdHJ1Y3RvciwgaXMgaW52b2tlZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRp
c2Nvbm5lY3RlZCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgaWZy
YW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IG11dGF0
aW9uT2JzZXJ2ZXIgPSBpZnJhbWUuY29udGVudFdpbmRvdy5jcmVhdGVNdXRhdGlvbk9ic2VydmVy
KCk7CisKKyAgICBhd2FpdCBzbGVlcCgxMDApOworICAgIGFzc2VydF9lcXVhbHMobXV0YXRpb25P
YnNlcnZlci5jYWxsYmFja0ludm9jYXRpb25zLCAwKTsKKworICAgIGlmcmFtZS5yZW1vdmUoKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGlmcmFtZS5jb250ZW50V2luZG93LCBudWxsKTsKKworICAgIHNj
aGVkdWxlT2JzZXJ2ZWRNdXRhdGlvbigpOworCisgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICBh
c3NlcnRfZXF1YWxzKG11dGF0aW9uT2JzZXJ2ZXIuY2FsbGJhY2tJbnZvY2F0aW9ucywgMCk7Cit9
LCAiQ2FsbGJhY2sgZnVuY3Rpb24sIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4sIGlzIG5vdCBp
bnZva2VkIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZCIpOworCitmdW5jdGlvbiBzY2hlZHVs
ZU9ic2VydmVkTXV0YXRpb24oKSB7CisgICAgbXV0YXRpb25PYnNlcnZlclRlc3RSb290LmFwcGVu
ZCgiZm9vIik7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxi
YWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXBlcmZvcm1hbmNlLW9ic2VydmVyLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlv
bi1kZXRhY2hlZC1mcmFtZS1wZXJmb3JtYW5jZS1vYnNlcnZlci1leHBlY3RlZC50eHQJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNo
ZWQtZnJhbWUtcGVyZm9ybWFuY2Utb2JzZXJ2ZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNSBAQAorCitQQVNTIENhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGlu
IGFuIDxpZnJhbWU+LCBpcyBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGNvbm5lY3RlZAorUEFTUyBD
YWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFpbiB3aW5k
b3cncyBGdW5jdGlvbiBjb25zdHJ1Y3RvciwgaXMgaW52b2tlZCBldmVuIGlmIDxpZnJhbWU+IGlz
IGRpc2Nvbm5lY3RlZAorUEFTUyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8
aWZyYW1lPiwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1l
LXBlcmZvcm1hbmNlLW9ic2VydmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcGVyZm9ybWFuY2Utb2JzZXJ2
ZXIuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1m
dW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1wZXJmb3JtYW5jZS1vYnNlcnZlci5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0
YWNoZWQtZnJhbWUtY29tbW9uLmpzIj48L3NjcmlwdD4KKworPGJvZHk+CisKKzxzY3JpcHQ+Citj
b25zdCBJRlJBTUVfU1JDID0gInJlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1m
cmFtZS1wZXJmb3JtYW5jZS1vYnNlcnZlci1pZnJhbWUuaHRtbCI7CisKK3Byb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJhbWUodCwgSUZS
QU1FX1NSQyk7CisgICAgY29uc3QgcGVyZm9ybWFuY2VPYnNlcnZlciA9IGlmcmFtZS5jb250ZW50
V2luZG93LmNyZWF0ZVBlcmZvcm1hbmNlT2JzZXJ2ZXIoKTsKKworICAgIGF3YWl0IHNsZWVwKDEw
MCk7CisgICAgYXNzZXJ0X2VxdWFscyhwZXJmb3JtYW5jZU9ic2VydmVyLmNhbGxiYWNrSW52b2Nh
dGlvbnMsIDApOworICAgIHBlcmZvcm1hbmNlLm1hcmsoImZvbyIpOworCisgICAgYXdhaXQgc2xl
ZXAoMTAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHBlcmZvcm1hbmNlT2JzZXJ2ZXIuY2FsbGJhY2tJ
bnZvY2F0aW9ucywgMSk7Cit9LCAiQ2FsbGJhY2sgZnVuY3Rpb24sIG9yaWdpbmF0ZWQgaW4gYW4g
PGlmcmFtZT4sIGlzIGludm9rZWQgaWYgPGlmcmFtZT4gaXMgY29ubmVjdGVkIik7CisKK3Byb21p
c2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJh
bWUodCwgSUZSQU1FX1NSQyk7CisgICAgY29uc3QgcGVyZm9ybWFuY2VPYnNlcnZlciA9IGlmcmFt
ZS5jb250ZW50V2luZG93LmNyZWF0ZVBlcmZvcm1hbmNlT2JzZXJ2ZXIoRnVuY3Rpb24pOworCisg
ICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHBlcmZvcm1hbmNlT2JzZXJ2
ZXIuY2FsbGJhY2tJbnZvY2F0aW9ucywgMCk7CisKKyAgICBpZnJhbWUucmVtb3ZlKCk7CisgICAg
YXNzZXJ0X2VxdWFscyhpZnJhbWUuY29udGVudFdpbmRvdywgbnVsbCk7CisKKyAgICBwZXJmb3Jt
YW5jZS5tYXJrKCJmb28iKTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0X2Vx
dWFscyhwZXJmb3JtYW5jZU9ic2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDEpOworfSwgIkNh
bGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZpYSBtYWluIHdpbmRv
dydzIEZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBpcyBpbnZva2VkIGV2ZW4gaWYgPGlmcmFtZT4gaXMg
ZGlzY29ubmVjdGVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBp
ZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJhbWUodCwgSUZSQU1FX1NSQyk7CisgICAgY29uc3QgcGVy
Zm9ybWFuY2VPYnNlcnZlciA9IGlmcmFtZS5jb250ZW50V2luZG93LmNyZWF0ZVBlcmZvcm1hbmNl
T2JzZXJ2ZXIoKTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0X2VxdWFscyhw
ZXJmb3JtYW5jZU9ic2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDApOworCisgICAgaWZyYW1l
LnJlbW92ZSgpOworICAgIGFzc2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRXaW5kb3csIG51bGwp
OworCisgICAgcGVyZm9ybWFuY2UubWFyaygiZm9vIik7CisKKyAgICBhd2FpdCBzbGVlcCgxMDAp
OworICAgIGFzc2VydF9lcXVhbHMocGVyZm9ybWFuY2VPYnNlcnZlci5jYWxsYmFja0ludm9jYXRp
b25zLCAwKTsKK30sICJDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1l
PiwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIik7Cis8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVk
LWZyYW1lLXJhZi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcmFmLWV4cGVjdGVkLnR4dAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRh
Y2hlZC1mcmFtZS1yYWYtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBA
QAorCitQQVNTIENhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBp
cyBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGNvbm5lY3RlZAorUEFTUyBDYWxsYmFjayBmdW5jdGlv
biwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFpbiB3aW5kb3cncyBGdW5jdGlvbiBj
b25zdHJ1Y3RvciwgaXMgaW52b2tlZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZAor
UEFTUyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90
IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkCisKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXJhZi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVk
LWZyYW1lLXJhZi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2Nh
bGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXJhZi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJh
bWUtY29tbW9uLmpzIj48L3NjcmlwdD4KKworPGJvZHk+CisKKzxkaXYgaWQ9InJhZlRlc3RSb290
IiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4Ij48L2Rpdj4KKworPHNjcmlwdD4K
K2NvbnN0IElGUkFNRV9TUkMgPSAicmVzb3VyY2VzL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVk
LWZyYW1lLXJhZi1pZnJhbWUuaHRtbCI7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAg
ICB3aW5kb3cuX19yYWYwQ2FsbHNfXyA9IDA7CisKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCBj
cmVhdGVJZnJhbWUodCwgSUZSQU1FX1NSQyk7CisgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cucmFm
KCJfX3JhZjBDYWxsc19fIik7CisKKyAgICBzY2hlZHVsZVJlcGFpbnQoKTsKKyAgICBhd2FpdCBz
bGVlcCgxMDApOworCisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuX19yYWYwQ2FsbHNfXywgMSk7
Cit9LCAiQ2FsbGJhY2sgZnVuY3Rpb24sIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4sIGlzIGlu
dm9rZWQgaWYgPGlmcmFtZT4gaXMgY29ubmVjdGVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgICB3aW5kb3cuX19yYWYxQ2FsbHNfXyA9IDA7CisKKyAgICBjb25zdCBpZnJhbWUg
PSBhd2FpdCBjcmVhdGVJZnJhbWUodCwgSUZSQU1FX1NSQyk7CisgICAgaWZyYW1lLmNvbnRlbnRX
aW5kb3cucmFmKCJfX3JhZjFDYWxsc19fIiwgRnVuY3Rpb24pOworCisgICAgaWZyYW1lLnJlbW92
ZSgpOworICAgIGFzc2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRXaW5kb3csIG51bGwpOworCisg
ICAgc2NoZWR1bGVSZXBhaW50KCk7CisgICAgYXdhaXQgc2xlZXAoMTAwKTsKKworICAgIGFzc2Vy
dF9lcXVhbHMod2luZG93Ll9fcmFmMUNhbGxzX18sIDEpOworfSwgIkNhbGxiYWNrIGZ1bmN0aW9u
LCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZpYSBtYWluIHdpbmRvdydzIEZ1bmN0aW9uIGNv
bnN0cnVjdG9yLCBpcyBpbnZva2VkIGV2ZW4gaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIik7
CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICB3aW5kb3cuX19yYWYyQ2FsbHNfXyA9
IDA7CisKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJhbWUodCwgSUZSQU1FX1NS
Qyk7CisgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cucmFmKCJfX3JhZjJDYWxsc19fIik7CisKKyAg
ICBpZnJhbWUucmVtb3ZlKCk7CisgICAgYXNzZXJ0X2VxdWFscyhpZnJhbWUuY29udGVudFdpbmRv
dywgbnVsbCk7CisKKyAgICBzY2hlZHVsZVJlcGFpbnQoKTsKKyAgICBhd2FpdCBzbGVlcCgxMDAp
OworCisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuX19yYWYyQ2FsbHNfXywgMCk7Cit9LCAiQ2Fs
bGJhY2sgZnVuY3Rpb24sIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4sIGlzIG5vdCBpbnZva2Vk
IGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZCIpOworCitmdW5jdGlvbiBzY2hlZHVsZVJlcGFp
bnQoKSB7CisgICAgcmFmVGVzdFJvb3Quc3R5bGUuaGVpZ2h0ID0gYCR7cGFyc2VJbnQocmFmVGVz
dFJvb3Quc3R5bGUuaGVpZ2h0KSArIDEwfXB4YDsKK30KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9i
c2VydmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9j
YWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1yZXNpemUtb2JzZXJ2ZXItZXhwZWN0ZWQu
dHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0
aW9uLWRldGFjaGVkLWZyYW1lLXJlc2l6ZS1vYnNlcnZlci1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgQ2FsbGJhY2sgZnVuY3Rpb24sIG9yaWdpbmF0
ZWQgaW4gYW4gPGlmcmFtZT4sIGlzIGludm9rZWQgaWYgPGlmcmFtZT4gaXMgY29ubmVjdGVkCitQ
QVNTIENhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZpYSBtYWlu
IHdpbmRvdydzIEZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBpcyBpbnZva2VkIGV2ZW4gaWYgPGlmcmFt
ZT4gaXMgZGlzY29ubmVjdGVkCitQQVNTIENhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGlu
IGFuIDxpZnJhbWU+LCBpcyBub3QgaW52b2tlZCBpZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQt
ZnJhbWUtcmVzaXplLW9ic2VydmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9ic2VydmVyLmh0
bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rp
b24tZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9ic2VydmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw2MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFt
ZS1jb21tb24uanMiPjwvc2NyaXB0PgorCis8Ym9keT4KKworPGRpdiBpZD0icmVzaXplT2JzZXJ2
ZXJUZXN0Um9vdCIgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsiPjwvZGl2Pgor
Cis8c2NyaXB0PgorY29uc3QgSUZSQU1FX1NSQyA9ICJyZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rp
b24tZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9ic2VydmVyLWlmcmFtZS5odG1sIjsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGlmcmFtZSA9IGF3YWl0IGNyZWF0ZUlmcmFt
ZSh0LCBJRlJBTUVfU1JDKTsKKyAgICBjb25zdCByZXNpemVPYnNlcnZlciA9IGlmcmFtZS5jb250
ZW50V2luZG93LmNyZWF0ZVJlc2l6ZU9ic2VydmVyKCk7CisKKyAgICBhd2FpdCBzbGVlcCgxMDAp
OworICAgIGFzc2VydF9lcXVhbHMocmVzaXplT2JzZXJ2ZXIuY2FsbGJhY2tJbnZvY2F0aW9ucywg
MCk7CisgICAgc2NoZWR1bGVPYnNlcnZlZFJlc2l6ZSgpOworCisgICAgYXdhaXQgc2xlZXAoMTAw
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc2l6ZU9ic2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMs
IDEpOworfSwgIkNhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBp
cyBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGNvbm5lY3RlZCIpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFN
RV9TUkMpOworICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cu
Y3JlYXRlUmVzaXplT2JzZXJ2ZXIoRnVuY3Rpb24pOworCisgICAgYXdhaXQgc2xlZXAoMTAwKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHJlc2l6ZU9ic2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDAp
OworCisgICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFzc2VydF9lcXVhbHMoaWZyYW1lLmNvbnRl
bnRXaW5kb3csIG51bGwpOworCisgICAgc2NoZWR1bGVPYnNlcnZlZFJlc2l6ZSgpOworCisgICAg
YXdhaXQgc2xlZXAoMTAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc2l6ZU9ic2VydmVyLmNhbGxi
YWNrSW52b2NhdGlvbnMsIDEpOworfSwgIkNhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGlu
IGFuIDxpZnJhbWU+IHZpYSBtYWluIHdpbmRvdydzIEZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBpcyBp
bnZva2VkIGV2ZW4gaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIik7CisKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJhbWUodCwg
SUZSQU1FX1NSQyk7CisgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBpZnJhbWUuY29udGVudFdp
bmRvdy5jcmVhdGVSZXNpemVPYnNlcnZlcigpOworCisgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHJlc2l6ZU9ic2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDApOwor
CisgICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFzc2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRX
aW5kb3csIG51bGwpOworCisgICAgc2NoZWR1bGVPYnNlcnZlZFJlc2l6ZSgpOworCisgICAgYXdh
aXQgc2xlZXAoMTAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc2l6ZU9ic2VydmVyLmNhbGxiYWNr
SW52b2NhdGlvbnMsIDApOworfSwgIkNhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFu
IDxpZnJhbWU+LCBpcyBub3QgaW52b2tlZCBpZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQiKTsK
KworZnVuY3Rpb24gc2NoZWR1bGVPYnNlcnZlZFJlc2l6ZSgpIHsKKyAgICByZXNpemVPYnNlcnZl
clRlc3RSb290LnN0eWxlLndpZHRoID0gYCR7cGFyc2VJbnQocmVzaXplT2JzZXJ2ZXJUZXN0Um9v
dC5zdHlsZS53aWR0aCkgKyAxMH1weGA7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXRvLWJsb2ItZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0
aW9uLWRldGFjaGVkLWZyYW1lLXRvLWJsb2ItZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXRv
LWJsb2ItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorCitQQVNT
IENhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBpbnZva2Vk
IGlmIDxpZnJhbWU+IGlzIGNvbm5lY3RlZAorUEFTUyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2lu
YXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFpbiB3aW5kb3cncyBGdW5jdGlvbiBjb25zdHJ1Y3Rv
ciwgaXMgaW52b2tlZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZAorUEFTUyBDYWxs
YmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQg
aWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXRvLWJsb2IuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFt
ZS10by1ibG9iLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY2Fs
bGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtdG8tYmxvYi5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQt
ZnJhbWUtY29tbW9uLmpzIj48L3NjcmlwdD4KKworPGJvZHk+CisKKzxjYW52YXMgaWQ9InRvQmxv
YlRlc3RSb290IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+PC9jYW52YXM+CisKKzxzY3JpcHQ+
Citjb25zdCBJRlJBTUVfU1JDID0gInJlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hl
ZC1mcmFtZS10by1ibG9iLWlmcmFtZS5odG1sIjsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4g
eworICAgIHdpbmRvdy5fX3RvQmxvYjBDYWxsc19fID0gMDsKKworICAgIGNvbnN0IGlmcmFtZSA9
IGF3YWl0IGNyZWF0ZUlmcmFtZSh0LCBJRlJBTUVfU1JDKTsKKyAgICBpZnJhbWUuY29udGVudFdp
bmRvdy50b0Jsb2IoIl9fdG9CbG9iMENhbGxzX18iKTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7
CisKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5fX3RvQmxvYjBDYWxsc19fLCAxKTsKK30sICJD
YWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgaW52b2tlZCBp
ZiA8aWZyYW1lPiBpcyBjb25uZWN0ZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIHdpbmRvdy5fX3RvQmxvYjFDYWxsc19fID0gMDsKKworICAgIGNvbnN0IGlmcmFtZSA9IGF3
YWl0IGNyZWF0ZUlmcmFtZSh0LCBJRlJBTUVfU1JDKTsKKyAgICBpZnJhbWUuY29udGVudFdpbmRv
dy50b0Jsb2IoIl9fdG9CbG9iMUNhbGxzX18iLCBGdW5jdGlvbik7CisKKyAgICBpZnJhbWUucmVt
b3ZlKCk7CisgICAgYXNzZXJ0X2VxdWFscyhpZnJhbWUuY29udGVudFdpbmRvdywgbnVsbCk7CisK
KyAgICBhd2FpdCBzbGVlcCgxMDApOworCisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuX190b0Js
b2IxQ2FsbHNfXywgMSk7Cit9LCAiQ2FsbGJhY2sgZnVuY3Rpb24sIG9yaWdpbmF0ZWQgaW4gYW4g
PGlmcmFtZT4gdmlhIG1haW4gd2luZG93J3MgRnVuY3Rpb24gY29uc3RydWN0b3IsIGlzIGludm9r
ZWQgZXZlbiBpZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQiKTsKKworcHJvbWlzZV90ZXN0KGFz
eW5jIHQgPT4geworICAgIHdpbmRvdy5fX3RvQmxvYjJDYWxsc19fID0gMDsKKworICAgIGNvbnN0
IGlmcmFtZSA9IGF3YWl0IGNyZWF0ZUlmcmFtZSh0LCBJRlJBTUVfU1JDKTsKKyAgICBpZnJhbWUu
Y29udGVudFdpbmRvdy50b0Jsb2IoIl9fdG9CbG9iMkNhbGxzX18iKTsKKworICAgIGlmcmFtZS5y
ZW1vdmUoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGlmcmFtZS5jb250ZW50V2luZG93LCBudWxsKTsK
KworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5fX3Rv
QmxvYjJDYWxsc19fLCAwKTsKK30sICJDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBh
biA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIik7
Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWludGVyZmFj
ZS1kZXRhY2hlZC1mcmFtZS1ub2RlLWZpbHRlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLW5v
ZGUtZmlsdGVyLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9jYWxsYmFjay1pbnRlcmZhY2UtZGV0YWNoZWQtZnJhbWUtbm9kZS1maWx0ZXItZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOCBAQAorCitQQVNTIENhbGxhYmxlIGNh
bGxiYWNrIGludGVyZmFjZSwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgaW52b2tlZCBp
ZiA8aWZyYW1lPiBpcyBjb25uZWN0ZWQKK1BBU1MgQ2FsbGFibGUgY2FsbGJhY2sgaW50ZXJmYWNl
LCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZpYSBtYWluIHdpbmRvdydzIEZ1bmN0aW9uIGNv
bnN0cnVjdG9yLCBpcyBpbnZva2VkIGV2ZW4gaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkCitQ
QVNTIENhbGxhYmxlIGNhbGxiYWNrIGludGVyZmFjZSwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1l
PiwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkCitQQVNTIE5vbi1j
YWxsYWJsZSBjYWxsYmFjayBpbnRlcmZhY2UsIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4gdmlh
IG9iamVjdCBsaXRlcmFsLCBpcyBub3QgaW52b2tlZCBpZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0
ZWQgZXZlbiBpZiBpdHMgJ2FjY2VwdE5vZGUnIG1ldGhvZCBpcyBvZiBtYWluIHdpbmRvdworUEFT
UyBOb24tY2FsbGFibGUgY2FsbGJhY2sgaW50ZXJmYWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJh
bWU+IHZpYSBvYmplY3QgbGl0ZXJhbCwgaXMgbm90IGludm9rZWQgZXZlbiBpZiA8aWZyYW1lPiBp
cyBkaXNjb25uZWN0ZWQgZHVyaW5nICdhY2NlcHROb2RlJyBsb29rdXAKK1BBU1MgTm9uLWNhbGxh
YmxlIGNhbGxiYWNrIGludGVyZmFjZSwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFp
biB3aW5kb3cncyBPYmplY3QgY29uc3RydWN0b3IsIGlzIGludm9rZWQgaWYgPGlmcmFtZT4gaXMg
ZGlzY29ubmVjdGVkIGV2ZW4gaWYgaXRzICdhY2NlcHROb2RlJyBtZXRob2QgaXMgb2YgdGhlIDxp
ZnJhbWU+CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWludGVyZmFjZS1k
ZXRhY2hlZC1mcmFtZS1ub2RlLWZpbHRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFtZS1ub2RlLWZpbHRlci5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWludGVy
ZmFjZS1kZXRhY2hlZC1mcmFtZS1ub2RlLWZpbHRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsODUgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUt
Y29tbW9uLmpzIj48L3NjcmlwdD4KKworPGJvZHk+CisKKzxkaXYgaWQ9Im5vZGVJdGVyYXRvclRl
c3RSb290Ij48L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IElGUkFNRV9TUkMgPSAicmVzb3VyY2Vz
L2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFtZS1ub2RlLWZpbHRlci1pZnJhbWUuaHRt
bCI7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICB3aW5kb3cuX19ub2RlRmlsdGVy
MENhbGxzX18gPSAwOworICAgIGNvbnN0IGlmcmFtZSA9IGF3YWl0IGNyZWF0ZUlmcmFtZSh0LCBJ
RlJBTUVfU1JDKTsKKyAgICBjb25zdCBub2RlSXRlcmF0b3IgPSBpZnJhbWUuY29udGVudFdpbmRv
dy5jcmVhdGVOb2RlSXRlcmF0b3JXaXRoQ2FsbGFibGVGaWx0ZXIoIl9fbm9kZUZpbHRlcjBDYWxs
c19fIik7CisKKyAgICBhc3NlcnRfZXF1YWxzKG5vZGVJdGVyYXRvci5uZXh0Tm9kZSgpLCBub2Rl
SXRlcmF0b3JUZXN0Um9vdCk7CisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuX19ub2RlRmlsdGVy
MENhbGxzX18sIDEpOworfSwgIkNhbGxhYmxlIGNhbGxiYWNrIGludGVyZmFjZSwgb3JpZ2luYXRl
ZCBpbiBhbiA8aWZyYW1lPiwgaXMgaW52b2tlZCBpZiA8aWZyYW1lPiBpcyBjb25uZWN0ZWQiKTsK
KworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIHdpbmRvdy5fX25vZGVGaWx0ZXIxQ2Fs
bHNfXyA9IDA7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFN
RV9TUkMpOworICAgIGNvbnN0IG5vZGVJdGVyYXRvciA9IGlmcmFtZS5jb250ZW50V2luZG93LmNy
ZWF0ZU5vZGVJdGVyYXRvcldpdGhDYWxsYWJsZUZpbHRlcigiX19ub2RlRmlsdGVyMUNhbGxzX18i
LCBGdW5jdGlvbik7CisKKyAgICBpZnJhbWUucmVtb3ZlKCk7CisgICAgYXNzZXJ0X2VxdWFscyhp
ZnJhbWUuY29udGVudFdpbmRvdywgbnVsbCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKG5vZGVJdGVy
YXRvci5uZXh0Tm9kZSgpLCBub2RlSXRlcmF0b3JUZXN0Um9vdCk7CisgICAgYXNzZXJ0X2VxdWFs
cyh3aW5kb3cuX19ub2RlRmlsdGVyMUNhbGxzX18sIDEpOworfSwgIkNhbGxhYmxlIGNhbGxiYWNr
IGludGVyZmFjZSwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFpbiB3aW5kb3cncyBG
dW5jdGlvbiBjb25zdHJ1Y3RvciwgaXMgaW52b2tlZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRpc2Nv
bm5lY3RlZCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgd2luZG93Ll9fbm9k
ZUZpbHRlcjJDYWxsc19fID0gMDsKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJh
bWUodCwgSUZSQU1FX1NSQyk7CisgICAgY29uc3Qgbm9kZUl0ZXJhdG9yID0gaWZyYW1lLmNvbnRl
bnRXaW5kb3cuY3JlYXRlTm9kZUl0ZXJhdG9yV2l0aENhbGxhYmxlRmlsdGVyKCJfX25vZGVGaWx0
ZXIyQ2FsbHNfXyIpOworCisgICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFzc2VydF9lcXVhbHMo
aWZyYW1lLmNvbnRlbnRXaW5kb3csIG51bGwpOworCisgICAgYXNzZXJ0X3Rocm93cygoKSA9PiB7
IG5vZGVJdGVyYXRvci5uZXh0Tm9kZSgpOyB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5f
X25vZGVGaWx0ZXIyQ2FsbHNfXywgMCk7Cit9LCAiQ2FsbGFibGUgY2FsbGJhY2sgaW50ZXJmYWNl
LCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBub3QgaW52b2tlZCBpZiA8aWZyYW1lPiBp
cyBkaXNjb25uZWN0ZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIHdpbmRv
dy5fX25vZGVGaWx0ZXIzQ2FsbHNfXyA9IDA7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3Jl
YXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IG5vZGVJdGVyYXRvciA9IGlmcmFt
ZS5jb250ZW50V2luZG93LmNyZWF0ZU5vZGVJdGVyYXRvcldpdGhOb25DYWxsYWJsZUZpbHRlcjAo
Il9fbm9kZUZpbHRlcjNDYWxsc19fIik7CisKKyAgICBpZnJhbWUucmVtb3ZlKCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhpZnJhbWUuY29udGVudFdpbmRvdywgbnVsbCk7CisKKyAgICBhc3NlcnRfdGhy
b3dzKCgpID0+IHsgbm9kZUl0ZXJhdG9yLm5leHROb2RlKCk7IH0pOworICAgIGFzc2VydF9lcXVh
bHMod2luZG93Ll9fbm9kZUZpbHRlcjNDYWxsc19fLCAwKTsKK30sICJOb24tY2FsbGFibGUgY2Fs
bGJhY2sgaW50ZXJmYWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZpYSBvYmplY3QgbGl0
ZXJhbCwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIGV2ZW4gaWYg
aXRzICdhY2NlcHROb2RlJyBtZXRob2QgaXMgb2YgbWFpbiB3aW5kb3ciKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICAgIHdpbmRvdy5fX25vZGVGaWx0ZXI0Q2FsbHNfXyA9IDA7Cisg
ICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAg
IGNvbnN0IG5vZGVJdGVyYXRvciA9IGlmcmFtZS5jb250ZW50V2luZG93LmNyZWF0ZU5vZGVJdGVy
YXRvcldpdGhOb25DYWxsYWJsZUZpbHRlcjEoIl9fbm9kZUZpbHRlcjRDYWxsc19fIiwgaWZyYW1l
KTsKKworICAgIGFzc2VydF90aHJvd3MoKCkgPT4geyBub2RlSXRlcmF0b3IubmV4dE5vZGUoKTsg
fSk7CisgICAgYXNzZXJ0X2VxdWFscyhpZnJhbWUuY29udGVudFdpbmRvdywgbnVsbCk7CisgICAg
YXNzZXJ0X2VxdWFscyh3aW5kb3cuX19ub2RlRmlsdGVyNENhbGxzX18sIDApOworfSwgIk5vbi1j
YWxsYWJsZSBjYWxsYmFjayBpbnRlcmZhY2UsIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4gdmlh
IG9iamVjdCBsaXRlcmFsLCBpcyBub3QgaW52b2tlZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRpc2Nv
bm5lY3RlZCBkdXJpbmcgJ2FjY2VwdE5vZGUnIGxvb2t1cCIpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFN
RV9TUkMpOworICAgIGNvbnN0IG5vZGVJdGVyYXRvciA9IGlmcmFtZS5jb250ZW50V2luZG93LmNy
ZWF0ZU5vZGVJdGVyYXRvcldpdGhOb25DYWxsYWJsZUZpbHRlcjIoKTsKKworICAgIGlmcmFtZS5y
ZW1vdmUoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGlmcmFtZS5jb250ZW50V2luZG93LCBudWxsKTsK
KworICAgIGFzc2VydF9lcXVhbHMobm9kZUl0ZXJhdG9yLm5leHROb2RlKCksIG5vZGVJdGVyYXRv
clRlc3RSb290KTsKKyAgICBhc3NlcnRfZXF1YWxzKG5vZGVJdGVyYXRvci5jYWxsYmFja0ludm9j
YXRpb25zLCAxKTsKK30sICJOb24tY2FsbGFibGUgY2FsbGJhY2sgaW50ZXJmYWNlLCBvcmlnaW5h
dGVkIGluIGFuIDxpZnJhbWU+IHZpYSBtYWluIHdpbmRvdydzIE9iamVjdCBjb25zdHJ1Y3Rvciwg
aXMgaW52b2tlZCBpZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQgZXZlbiBpZiBpdHMgJ2FjY2Vw
dE5vZGUnIG1ldGhvZCBpcyBvZiB0aGUgPGlmcmFtZT4iKTsKKworZnVuY3Rpb24gYXNzZXJ0X3Ro
cm93cyhmbikgeworICAgIGxldCBjYXVnaHRFcnJvciA9IGZhbHNlOworICAgIHRyeSB7IGZuKCk7
IH0gY2F0Y2ggeyBjYXVnaHRFcnJvciA9IHRydWU7IH0KKyAgICBhc3NlcnRfdHJ1ZShjYXVnaHRF
cnJvciwgImFzc2VydF90aHJvd3MiKTsKK30KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLXhwYXRobnNyZXNvbHZl
ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJh
Y2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLXhwYXRobnNyZXNvbHZlci1leHBlY3RlZC50eHQJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2staW50ZXJmYWNl
LWRldGFjaGVkLWZyYW1lLXhwYXRobnNyZXNvbHZlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw4IEBACisKK1BBU1MgQ2FsbGFibGUgY2FsbGJhY2sgaW50ZXJmYWNlLCBv
cmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGNvbm5l
Y3RlZAorUEFTUyBDYWxsYWJsZSBjYWxsYmFjayBpbnRlcmZhY2UsIG9yaWdpbmF0ZWQgaW4gYW4g
PGlmcmFtZT4gdmlhIG1haW4gd2luZG93J3MgRnVuY3Rpb24gY29uc3RydWN0b3IsIGlzIGludm9r
ZWQgZXZlbiBpZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQKK1BBU1MgQ2FsbGFibGUgY2FsbGJh
Y2sgaW50ZXJmYWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBub3QgaW52b2tlZCBp
ZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQKK1BBU1MgTm9uLWNhbGxhYmxlIGNhbGxiYWNrIGlu
dGVyZmFjZSwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgb2JqZWN0IGxpdGVyYWwsIGlz
IG5vdCBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZCBldmVuIGlmIGl0cyAnYWNj
ZXB0Tm9kZScgbWV0aG9kIGlzIG9mIG1haW4gd2luZG93CitQQVNTIE5vbi1jYWxsYWJsZSBjYWxs
YmFjayBpbnRlcmZhY2UsIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4gdmlhIG9iamVjdCBsaXRl
cmFsLCBpcyBub3QgaW52b2tlZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZCBkdXJp
bmcgJ2FjY2VwdE5vZGUnIGxvb2t1cAorUEFTUyBOb24tY2FsbGFibGUgY2FsbGJhY2sgaW50ZXJm
YWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZpYSBtYWluIHdpbmRvdydzIE9iamVjdCBj
b25zdHJ1Y3RvciwgaXMgaW52b2tlZCBpZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQgZXZlbiBp
ZiBpdHMgJ2FjY2VwdE5vZGUnIG1ldGhvZCBpcyBvZiB0aGUgPGlmcmFtZT4KKwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLXhwYXRo
bnNyZXNvbHZlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxi
YWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFtZS14cGF0aG5zcmVzb2x2ZXIuaHRtbAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1pbnRlcmZhY2UtZGV0YWNo
ZWQtZnJhbWUteHBhdGhuc3Jlc29sdmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1jb21tb24u
anMiPjwvc2NyaXB0PgorCis8Ym9keT4KKworPGRpdiBpZD0ieHBhdGhFeHByZXNzaW9uVGVzdFJv
b3QiPjwvZGl2PgorCis8c2NyaXB0PgorY29uc3QgSUZSQU1FX1NSQyA9ICJyZXNvdXJjZXMvY2Fs
bGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLXhwYXRobnNyZXNvbHZlci1pZnJhbWUuaHRt
bCI7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICB3aW5kb3cuX194cGF0aEV4cHJl
c3Npb24wQ2FsbHNfXyA9IDA7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1l
KHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IHRodW5rID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cu
Y3JlYXRlVGh1bmtXaXRoQ2FsbGFibGVSZXNvbHZlcigiX194cGF0aEV4cHJlc3Npb24wQ2FsbHNf
XyIpOworCisgICAgdGh1bmsoZG9jdW1lbnQsIHhwYXRoRXhwcmVzc2lvblRlc3RSb290KTsKKyAg
ICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5fX3hwYXRoRXhwcmVzc2lvbjBDYWxsc19fLCAxKTsKK30s
ICJDYWxsYWJsZSBjYWxsYmFjayBpbnRlcmZhY2UsIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4s
IGlzIGludm9rZWQgaWYgPGlmcmFtZT4gaXMgY29ubmVjdGVkIik7CisKK3Byb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKKyAgICB3aW5kb3cuX194cGF0aEV4cHJlc3Npb24xQ2FsbHNfXyA9IDA7Cisg
ICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAg
IGNvbnN0IHRodW5rID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY3JlYXRlVGh1bmtXaXRoQ2FsbGFi
bGVSZXNvbHZlcigiX194cGF0aEV4cHJlc3Npb24xQ2FsbHNfXyIsIEZ1bmN0aW9uKTsKKworICAg
IGlmcmFtZS5yZW1vdmUoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGlmcmFtZS5jb250ZW50V2luZG93
LCBudWxsKTsKKworICAgIHRodW5rKGRvY3VtZW50LCB4cGF0aEV4cHJlc3Npb25UZXN0Um9vdCk7
CisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuX194cGF0aEV4cHJlc3Npb24xQ2FsbHNfXywgMSk7
Cit9LCAiQ2FsbGFibGUgY2FsbGJhY2sgaW50ZXJmYWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJh
bWU+IHZpYSBtYWluIHdpbmRvdydzIEZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBpcyBpbnZva2VkIGV2
ZW4gaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgICB3aW5kb3cuX194cGF0aEV4cHJlc3Npb24yQ2FsbHNfXyA9IDA7CisgICAgY29u
c3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0
IHRodW5rID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY3JlYXRlVGh1bmtXaXRoQ2FsbGFibGVSZXNv
bHZlcigiX194cGF0aEV4cHJlc3Npb24yQ2FsbHNfXyIpOworCisgICAgaWZyYW1lLnJlbW92ZSgp
OworICAgIGFzc2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRXaW5kb3csIG51bGwpOworCisgICAg
YXNzZXJ0X3Rocm93cygoKSA9PiB7IHRodW5rKGRvY3VtZW50LCB4cGF0aEV4cHJlc3Npb25UZXN0
Um9vdCk7IH0pOworICAgIGFzc2VydF9lcXVhbHMod2luZG93Ll9feHBhdGhFeHByZXNzaW9uMkNh
bGxzX18sIDApOworfSwgIkNhbGxhYmxlIGNhbGxiYWNrIGludGVyZmFjZSwgb3JpZ2luYXRlZCBp
biBhbiA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVk
Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICB3aW5kb3cuX19ub2RlRmlsdGVy
M0NhbGxzX18gPSAwOworICAgIGNvbnN0IGlmcmFtZSA9IGF3YWl0IGNyZWF0ZUlmcmFtZSh0LCBJ
RlJBTUVfU1JDKTsKKyAgICBjb25zdCB0aHVuayA9IGlmcmFtZS5jb250ZW50V2luZG93LmNyZWF0
ZVRodW5rV2l0aE5vbkNhbGxhYmxlUmVzb2x2ZXIwKCJfX25vZGVGaWx0ZXIzQ2FsbHNfXyIpOwor
CisgICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFzc2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRX
aW5kb3csIG51bGwpOworCisgICAgYXNzZXJ0X3Rocm93cygoKSA9PiB7IHRodW5rKGRvY3VtZW50
LCB4cGF0aEV4cHJlc3Npb25UZXN0Um9vdCk7IH0pOworICAgIGFzc2VydF9lcXVhbHMod2luZG93
Ll9fbm9kZUZpbHRlcjNDYWxsc19fLCAwKTsKK30sICJOb24tY2FsbGFibGUgY2FsbGJhY2sgaW50
ZXJmYWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZpYSBvYmplY3QgbGl0ZXJhbCwgaXMg
bm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIGV2ZW4gaWYgaXRzICdhY2Nl
cHROb2RlJyBtZXRob2QgaXMgb2YgbWFpbiB3aW5kb3ciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
IHQgPT4geworICAgIHdpbmRvdy5fX25vZGVGaWx0ZXI0Q2FsbHNfXyA9IDA7CisgICAgY29uc3Qg
aWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IHRo
dW5rID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY3JlYXRlVGh1bmtXaXRoTm9uQ2FsbGFibGVSZXNv
bHZlcjEoIl9fbm9kZUZpbHRlcjRDYWxsc19fIiwgaWZyYW1lKTsKKworICAgIGFzc2VydF90aHJv
d3MoKCkgPT4geyB0aHVuayhkb2N1bWVudCwgeHBhdGhFeHByZXNzaW9uVGVzdFJvb3QpOyB9KTsK
KyAgICBhc3NlcnRfZXF1YWxzKGlmcmFtZS5jb250ZW50V2luZG93LCBudWxsKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHdpbmRvdy5fX25vZGVGaWx0ZXI0Q2FsbHNfXywgMCk7Cit9LCAiTm9uLWNhbGxh
YmxlIGNhbGxiYWNrIGludGVyZmFjZSwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgb2Jq
ZWN0IGxpdGVyYWwsIGlzIG5vdCBpbnZva2VkIGV2ZW4gaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVj
dGVkIGR1cmluZyAnYWNjZXB0Tm9kZScgbG9va3VwIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0
ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJhbWUodCwgSUZSQU1FX1NS
Qyk7CisgICAgY29uc3QgdGh1bmsgPSBpZnJhbWUuY29udGVudFdpbmRvdy5jcmVhdGVUaHVua1dp
dGhOb25DYWxsYWJsZVJlc29sdmVyMigpOworCisgICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFz
c2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRXaW5kb3csIG51bGwpOworCisgICAgdGh1bmsoZG9j
dW1lbnQsIHhwYXRoRXhwcmVzc2lvblRlc3RSb290KTsKKyAgICBhc3NlcnRfZXF1YWxzKHRodW5r
LmNhbGxiYWNrSW52b2NhdGlvbnMsIDEpOworfSwgIk5vbi1jYWxsYWJsZSBjYWxsYmFjayBpbnRl
cmZhY2UsIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4gdmlhIG1haW4gd2luZG93J3MgT2JqZWN0
IGNvbnN0cnVjdG9yLCBpcyBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZCBldmVu
IGlmIGl0cyAnYWNjZXB0Tm9kZScgbWV0aG9kIGlzIG9mIHRoZSA8aWZyYW1lPiIpOworCitmdW5j
dGlvbiBhc3NlcnRfdGhyb3dzKGZuKSB7CisgICAgbGV0IGNhdWdodEVycm9yID0gZmFsc2U7Cisg
ICAgdHJ5IHsgZm4oKTsgfSBjYXRjaCB7IGNhdWdodEVycm9yID0gdHJ1ZTsgfQorICAgIGFzc2Vy
dF90cnVlKGNhdWdodEVycm9yLCAiYXNzZXJ0X3Rocm93cyIpOworfQorPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNv
bnRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDI4ODE3OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNr
LXRvLWRlbGV0ZWQtY29udGV4dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyAr
NCw3IEBAIFRlc3RzIHRoYXQgd2hlbiBhIEdlb2xvY2F0aW9uIHJlcXVlc3QgaXMKIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIFN1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZAorUEFT
UyBObyBjYWxsYmFja3MgaW52b2tlZAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9j
YWxsYmFjay10by1kZWxldGVkLWNvbnRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQuaHRtbAko
cmV2aXNpb24gMjg4MTc5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2Fs
bGJhY2stdG8tZGVsZXRlZC1jb250ZXh0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEzLDcgKzEz
LDcgQEAgZnVuY3Rpb24gb25GaXJzdElmcmFtZUxvYWRlZCgpIHsKIAogZnVuY3Rpb24gb25TZWNv
bmRJZnJhbWVMb2FkZWQoKSB7CiAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHRlc3RGYWlsZWQoJ05vIGNhbGxiYWNrcyBpbnZva2VkJyk7CisgICAgICAgIHRlc3RQ
YXNzZWQoJ05vIGNhbGxiYWNrcyBpbnZva2VkJyk7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwog
ICAgIH0sIDUwMCk7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9k
aXNjb25uZWN0ZWQtZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nvbm5lY3RlZC1mcmFtZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI4ODE3OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nv
bm5lY3RlZC1mcmFtZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw5IEBA
IFRlc3RzIHRoYXQgd2hlbiBhIHJlcXVlc3QgaXMgbWFkZSBvbiBhIEcKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIAogCi1QQVNTIE5vIGNhbGxiYWNrcyBpbnZva2VkCitQQVNTIHN1Y2Nlc3ND
YWxsYmFja0ludm9rZWQgaXMgZmFsc2UKK1BBU1MgcG9zaXRpb25FcnJvci5jb2RlIGlzIEdlb2xv
Y2F0aW9uUG9zaXRpb25FcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRQorUEFTUyBwb3NpdGlvbkVy
cm9yLm1lc3NhZ2UgaXMgJ0dlb2xvY2F0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBk
b2N1bWVudHMnCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nvbm5lY3RlZC1m
cmFtZS1wZXJtaXNzaW9uLWRlbmllZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLXBlcm1pc3Npb24t
ZGVuaWVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjg4MTc5KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLXBlcm1pc3Npb24tZGVuaWVkLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCwxMCArNCwxMiBAQCBUZXN0cyB0aGF0IHdo
ZW4gYSByZXF1ZXN0IGlzIG1hZGUgb24gYSBHCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAK
IAotUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBFUk1JU1NJT05fREVOSUVECi1QQVNTIGVycm9y
Lm1lc3NhZ2UgaXMgIlVzZXIgZGVuaWVkIEdlb2xvY2F0aW9uIgogCi1QQVNTIE5vIGNhbGxiYWNr
cyBpbnZva2VkCitQQVNTIHN1Y2Nlc3NDYWxsYmFja0ludm9rZWQgaXMgZmFsc2UKK1BBU1MgZmly
c3RQb3NpdGlvbkVycm9yLmNvZGUgaXMgR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yLlBFUk1JU1NJ
T05fREVOSUVECitQQVNTIGZpcnN0UG9zaXRpb25FcnJvci5tZXNzYWdlIGlzICdVc2VyIGRlbmll
ZCBHZW9sb2NhdGlvbicKK1BBU1Mgc2Vjb25kUG9zaXRpb25FcnJvci5jb2RlIGlzIEdlb2xvY2F0
aW9uUG9zaXRpb25FcnJvci5QRVJNSVNTSU9OX0RFTklFRAorUEFTUyBzZWNvbmRQb3NpdGlvbkVy
cm9yLm1lc3NhZ2UgaXMgJ1VzZXIgZGVuaWVkIEdlb2xvY2F0aW9uJwogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUtcGVybWlzc2lvbi1kZW5pZWQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25u
ZWN0ZWQtZnJhbWUtcGVybWlzc2lvbi1kZW5pZWQuaHRtbAkocmV2aXNpb24gMjg4MTc5KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLXBlcm1p
c3Npb24tZGVuaWVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE1LDE2ICsxNSwxMyBAQCBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKIH0gZWxzZQogICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5v
dCBiZSBydW4gd2l0aG91dCB0aGUgdGVzdFJ1bm5lcicpOwogCi12YXIgZXJyb3I7Cit3aW5kb3cu
c3VjY2Vzc0NhbGxiYWNrSW52b2tlZCA9IGZhbHNlOwogZnVuY3Rpb24gb25JZnJhbWVMb2FkZWQo
KSB7CiAgICAgaWZyYW1lR2VvbG9jYXRpb24gPSBpZnJhbWUuY29udGVudFdpbmRvdy5uYXZpZ2F0
b3IuZ2VvbG9jYXRpb247CiAgICAgaWZyYW1lR2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9r
ZWQgdW5leHBlY3RlZGx5Jyk7Ci0gICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB3aW5k
b3cuc3VjY2Vzc0NhbGxiYWNrSW52b2tlZCA9IHRydWU7CiAgICAgfSwgZnVuY3Rpb24oZSkgewot
ICAgICAgICBlcnJvciA9IGU7Ci0gICAgICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9y
LlBFUk1JU1NJT05fREVOSUVEJyk7Ci0gICAgICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywg
JyJVc2VyIGRlbmllZCBHZW9sb2NhdGlvbiInKTsKKyAgICAgICAgd2luZG93LnNlY29uZFBvc2l0
aW9uRXJyb3IgPSBlOwogICAgICAgICBkZWJ1ZygnJyk7CiAgICAgICAgIGlmcmFtZS5zcmMgPSAn
ZGF0YTp0ZXh0L2h0bWwsVGhpcyBmcmFtZSBzaG91bGQgYmUgdmlzaWJsZSB3aGVuIHRoZSB0ZXN0
IGNvbXBsZXRlcyc7CiAgICAgfSk7CkBAIC0zMywxNiArMzAsMTggQEAgZnVuY3Rpb24gb25JZnJh
bWVMb2FkZWQoKSB7CiBmdW5jdGlvbiBvbklmcmFtZVVubG9hZGVkKCkgewogICAgIC8vIE1ha2Ug
YW5vdGhlciByZXF1ZXN0LCB3aXRoIHBlcm1pc3Npb24gYWxyZWFkeSBkZW5pZWQuCiAgICAgaWZy
YW1lR2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
dGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwotICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgd2luZG93LnN1Y2Nlc3NDYWxsYmFja0ludm9r
ZWQgPSB0cnVlOwogICAgIH0sIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgnRXJy
b3IgY2FsbGJhY2sgaW52b2tlZCcpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
d2luZG93LmZpcnN0UG9zaXRpb25FcnJvciA9IGU7CiAgICAgfSk7CiAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgnTm8gY2FsbGJhY2tzIGludm9rZWQnKTsK
KyAgICAgICAgc2hvdWxkQmUoInN1Y2Nlc3NDYWxsYmFja0ludm9rZWQiLCAiZmFsc2UiKTsKKyAg
ICAgICAgc2hvdWxkQmUoImZpcnN0UG9zaXRpb25FcnJvci5jb2RlIiwgIkdlb2xvY2F0aW9uUG9z
aXRpb25FcnJvci5QRVJNSVNTSU9OX0RFTklFRCIpOworICAgICAgICBzaG91bGRCZSgiZmlyc3RQ
b3NpdGlvbkVycm9yLm1lc3NhZ2UiLCAiJ1VzZXIgZGVuaWVkIEdlb2xvY2F0aW9uJyIpOworICAg
ICAgICBzaG91bGRCZSgic2Vjb25kUG9zaXRpb25FcnJvci5jb2RlIiwgIkdlb2xvY2F0aW9uUG9z
aXRpb25FcnJvci5QRVJNSVNTSU9OX0RFTklFRCIpOworICAgICAgICBzaG91bGRCZSgic2Vjb25k
UG9zaXRpb25FcnJvci5tZXNzYWdlIiwgIidVc2VyIGRlbmllZCBHZW9sb2NhdGlvbiciKTsKICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwgMTAwKTsKKyAgICB9LCAxMDAwKTsKIH0KIAog
dmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVk
LWZyYW1lLmh0bWwJKHJldmlzaW9uIDI4ODE3OSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL2Rpc2Nvbm5lY3RlZC1mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNywx
OSArMTcsMTkgQEAgZnVuY3Rpb24gb25JZnJhbWVMb2FkZWQoKSB7CiAgICAgaWZyYW1lLnNyYyA9
ICdkYXRhOnRleHQvaHRtbCxUaGlzIGZyYW1lIHNob3VsZCBiZSB2aXNpYmxlIHdoZW4gdGhlIHRl
c3QgY29tcGxldGVzJzsKIH0KIAotdmFyIGVycm9yOword2luZG93LnN1Y2Nlc3NDYWxsYmFja0lu
dm9rZWQgPSBmYWxzZTsKIGZ1bmN0aW9uIG9uSWZyYW1lVW5sb2FkZWQoKSB7CiAgICAgaWZyYW1l
R2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdGVz
dEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgd2luZG93LnN1Y2Nlc3NDYWxsYmFja0ludm9rZWQg
PSB0cnVlOwogICAgIH0sIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgnRXJyb3Ig
Y2FsbGJhY2sgaW52b2tlZCcpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgd2lu
ZG93LnBvc2l0aW9uRXJyb3IgPSBlOwogICAgIH0pOwogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoJ05vIGNhbGxiYWNrcyBpbnZva2VkJyk7CisgICAgICAg
IHNob3VsZEJlKCJzdWNjZXNzQ2FsbGJhY2tJbnZva2VkIiwgImZhbHNlIik7CisgICAgICAgIHNo
b3VsZEJlKCJwb3NpdGlvbkVycm9yLmNvZGUiLCAiR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yLlBP
U0lUSU9OX1VOQVZBSUxBQkxFIik7CisgICAgICAgIHNob3VsZEJlKCJwb3NpdGlvbkVycm9yLm1l
c3NhZ2UiLCAiJ0dlb2xvY2F0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVu
dHMnIik7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgIH0sIDEwMCk7CisgICAgfSwgMTAw
MCk7CiB9CiAKIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy9jYWxsYmFj
ay10by1kZWxldGVkLWNvbnRleHQtaW5uZXIxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29u
dGV4dC1pbm5lcjEuaHRtbAkocmV2aXNpb24gMjg4MTc5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1pbm5l
cjEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsNyArMTMsNyBAQAogICAgICAgICAgIC8vIE1h
a2UgcmVxdWVzdCBmcm9tIHJlbW90ZSBmcmFtZSwgdGhpcyBmcmFtZSB3aWxsIGJlIGdvbmUgYnkg
dGhlIHRpbWUgdGhlIEdlb2xvY2F0aW9uCiAgICAgICAgICAgLy8gb2JqZWN0IGF0dGVtcHRzIHRv
IGludm9rZSB0aGUgY2FsbGJhY2suCiAgICAgICAgICAgd2luZG93LnBhcmVudC5uYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICBwYXJlbnQudGVzdFBhc3NlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkJyk7CisgICAgICAg
ICAgICAgIHBhcmVudC50ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQnKTsKICAg
ICAgICAgICAgICAgcGFyZW50LmZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgIH0sIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICBwYXJlbnQudGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52
b2tlZCB1bmV4cGVjdGVkbHknKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNl
cy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1jb21tb24uanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFj
aGVkLWZyYW1lLWNvbW1vbi5qcwkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9yZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtY29tbW9uLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIHNsZWVwKG1zKSB7CisgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4geyBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKTsg
fSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUlmcmFtZSh0LCBzcmMpIHsKKyAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICBpZnJhbWUub25sb2FkID0gKCkgPT4geyBy
ZXNvbHZlKGlmcmFtZSk7IH07CisgICAgICAgIGlmcmFtZS5zcmMgPSBzcmM7CisKKyAgICAgICAg
dC5hZGRfY2xlYW51cCgoKSA9PiB7IGlmcmFtZS5yZW1vdmUoKTsgfSk7CisgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kKGlmcmFtZSk7CisgICAgfSk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtaW50ZXJz
ZWN0aW9uLW9ic2VydmVyLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1pbnRlcnNl
Y3Rpb24tb2JzZXJ2ZXItaWZyYW1lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLWludGVy
c2VjdGlvbi1vYnNlcnZlci1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIw
IEBACis8IURPQ1RZUEUgaHRtbD4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZUludGVyc2Vj
dGlvbk9ic2VydmVyKEZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbikgeworICAgIGNvbnN0
IGludGVyc2VjdGlvbk9ic2VydmVyID0gbmV3IHBhcmVudC5JbnRlcnNlY3Rpb25PYnNlcnZlcihu
ZXcgRnVuY3Rpb25Db25zdHJ1Y3RvcihgCisgICAgICAgIGlmICh0aGlzLmlzSW5pdGlhbEVudHJ5
KSB7CisgICAgICAgICAgICB0aGlzLmlzSW5pdGlhbEVudHJ5ID0gZmFsc2U7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmNhbGxiYWNrSW52b2NhdGlvbnMr
KzsKKyAgICBgKSk7CisKKyAgICBpbnRlcnNlY3Rpb25PYnNlcnZlci5pc0luaXRpYWxFbnRyeSA9
IHRydWU7CisgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY2FsbGJhY2tJbnZvY2F0aW9ucyA9IDA7
CisgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShwYXJlbnQuaW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXJUZXN0Um9vdCwgeyB0aHJlc2hvbGQ6IDEgfSk7CisKKyAgICByZXR1cm4gaW50ZXJzZWN0
aW9uT2JzZXJ2ZXI7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jl
c291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1tdXRhdGlvbi1vYnNlcnZl
ci1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJj
ZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtbXV0YXRpb24tb2JzZXJ2ZXItaWZy
YW1lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2Vz
L2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLW11dGF0aW9uLW9ic2VydmVyLWlmcmFt
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgor
Cis8c2NyaXB0PgorZnVuY3Rpb24gY3JlYXRlTXV0YXRpb25PYnNlcnZlcihGdW5jdGlvbkNvbnN0
cnVjdG9yID0gRnVuY3Rpb24pIHsKKyAgICBjb25zdCBtdXRhdGlvbk9ic2VydmVyID0gbmV3IHBh
cmVudC5NdXRhdGlvbk9ic2VydmVyKG5ldyBGdW5jdGlvbkNvbnN0cnVjdG9yKGAKKyAgICAgICAg
dGhpcy5jYWxsYmFja0ludm9jYXRpb25zKys7CisgICAgYCkpOworCisgICAgbXV0YXRpb25PYnNl
cnZlci5jYWxsYmFja0ludm9jYXRpb25zID0gMDsKKyAgICBtdXRhdGlvbk9ic2VydmVyLm9ic2Vy
dmUocGFyZW50Lm11dGF0aW9uT2JzZXJ2ZXJUZXN0Um9vdCwgeyBjaGlsZExpc3Q6IHRydWUgfSk7
CisKKyAgICByZXR1cm4gbXV0YXRpb25PYnNlcnZlcjsKK30KKzwvc2NyaXB0PgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZy
YW1lLXBlcmZvcm1hbmNlLW9ic2VydmVyLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFt
ZS1wZXJmb3JtYW5jZS1vYnNlcnZlci1pZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJh
bWUtcGVyZm9ybWFuY2Utb2JzZXJ2ZXItaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBjcmVhdGVQ
ZXJmb3JtYW5jZU9ic2VydmVyKEZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbikgeworICAg
IGNvbnN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBuZXcgcGFyZW50LlBlcmZvcm1hbmNlT2JzZXJ2
ZXIobmV3IEZ1bmN0aW9uQ29uc3RydWN0b3IoYAorICAgICAgICB0aGlzLmNhbGxiYWNrSW52b2Nh
dGlvbnMrKzsKKyAgICBgKSk7CisKKyAgICBwZXJmb3JtYW5jZU9ic2VydmVyLmNhbGxiYWNrSW52
b2NhdGlvbnMgPSAwOworICAgIHBlcmZvcm1hbmNlT2JzZXJ2ZXIub2JzZXJ2ZSh7IGVudHJ5VHlw
ZXM6IFsibWFyayJdIH0pOworCisgICAgcmV0dXJuIHBlcmZvcm1hbmNlT2JzZXJ2ZXI7Cit9Cis8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1m
dW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1yYWYtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZy
YW1lLXJhZi1pZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9yZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcmFmLWlmcmFtZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxz
Y3JpcHQ+CitmdW5jdGlvbiByYWYoa2V5LCBGdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb24p
IHsKKyAgICBwYXJlbnQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKEZ1bmN0aW9uQ29uc3RydWN0b3Io
YAorICAgICAgICB0b3BbIiR7a2V5fSJdKys7CisgICAgYCkpOworfQorPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNo
ZWQtZnJhbWUtcmVzaXplLW9ic2VydmVyLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFt
ZS1yZXNpemUtb2JzZXJ2ZXItaWZyYW1lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXJl
c2l6ZS1vYnNlcnZlci1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZVJlc2l6ZU9ic2Vy
dmVyKEZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbikgeworICAgIGNvbnN0IHJlc2l6ZU9i
c2VydmVyID0gbmV3IHBhcmVudC5SZXNpemVPYnNlcnZlcihuZXcgRnVuY3Rpb25Db25zdHJ1Y3Rv
cihgCisgICAgICAgIGlmICh0aGlzLmlzSW5pdGlhbEVudHJ5KSB7CisgICAgICAgICAgICB0aGlz
LmlzSW5pdGlhbEVudHJ5ID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICB0aGlzLmNhbGxiYWNrSW52b2NhdGlvbnMrKzsKKyAgICBgKSk7CisKKyAgICBy
ZXNpemVPYnNlcnZlci5pc0luaXRpYWxFbnRyeSA9IHRydWU7CisgICAgcmVzaXplT2JzZXJ2ZXIu
Y2FsbGJhY2tJbnZvY2F0aW9ucyA9IDA7CisgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShwYXJl
bnQucmVzaXplT2JzZXJ2ZXJUZXN0Um9vdCk7CisKKyAgICByZXR1cm4gcmVzaXplT2JzZXJ2ZXI7
Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxs
YmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS10by1ibG9iLWlmcmFtZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1k
ZXRhY2hlZC1mcmFtZS10by1ibG9iLWlmcmFtZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFt
ZS10by1ibG9iLWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorPCFE
T0NUWVBFIGh0bWw+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiB0b0Jsb2Ioa2V5LCBGdW5jdGlvbkNv
bnN0cnVjdG9yID0gRnVuY3Rpb24pIHsKKyAgICBwYXJlbnQudG9CbG9iVGVzdFJvb3QudG9CbG9i
KEZ1bmN0aW9uQ29uc3RydWN0b3IoYAorICAgICAgICB0b3BbIiR7a2V5fSJdKys7CisgICAgYCkp
OworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2Fs
bGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLW5vZGUtZmlsdGVyLWlmcmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1pbnRl
cmZhY2UtZGV0YWNoZWQtZnJhbWUtbm9kZS1maWx0ZXItaWZyYW1lLmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNrLWludGVyZmFjZS1k
ZXRhY2hlZC1mcmFtZS1ub2RlLWZpbHRlci1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0
ZU5vZGVJdGVyYXRvcldpdGhDYWxsYWJsZUZpbHRlcihrZXksIEZ1bmN0aW9uQ29uc3RydWN0b3Ig
PSBGdW5jdGlvbikgeworICAgIHJldHVybiBwYXJlbnQuZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJh
dG9yKHBhcmVudC5ub2RlSXRlcmF0b3JUZXN0Um9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQs
IG5ldyBGdW5jdGlvbkNvbnN0cnVjdG9yKGAKKyAgICAgICAgdG9wWyIke2tleX0iXSsrOworICAg
ICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOworICAgIGApKTsKK30KKworZnVu
Y3Rpb24gY3JlYXRlTm9kZUl0ZXJhdG9yV2l0aE5vbkNhbGxhYmxlRmlsdGVyMChrZXkpIHsKKyAg
ICBjb25zdCBub2RlRmlsdGVyID0geworICAgICAgICBhY2NlcHROb2RlOiBuZXcgcGFyZW50LkZ1
bmN0aW9uKGAKKyAgICAgICAgICAgIHRvcFsiJHtrZXl9Il0rKzsKKyAgICAgICAgICAgIHJldHVy
biBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7CisgICAgICAgIGApLAorICAgIH07CisKKyAgICBy
ZXR1cm4gcGFyZW50LmRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihwYXJlbnQubm9kZUl0ZXJh
dG9yVGVzdFJvb3QsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCBub2RlRmlsdGVyKTsKK30KKwor
ZnVuY3Rpb24gY3JlYXRlTm9kZUl0ZXJhdG9yV2l0aE5vbkNhbGxhYmxlRmlsdGVyMShrZXksIGlm
cmFtZSkgeworICAgIGNvbnN0IG5vZGVGaWx0ZXIgPSB7CisgICAgICAgIGdldCBhY2NlcHROb2Rl
KCkgeworICAgICAgICAgICAgaWZyYW1lLnJlbW92ZSgpOworCisgICAgICAgICAgICByZXR1cm4g
KCkgPT4geworICAgICAgICAgICAgICAgIHRvcFtrZXldKys7CisgICAgICAgICAgICAgICAgcmV0
dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0s
CisgICAgfTsKKworICAgIHJldHVybiBwYXJlbnQuZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9y
KHBhcmVudC5ub2RlSXRlcmF0b3JUZXN0Um9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIG5v
ZGVGaWx0ZXIpOworfQorCitmdW5jdGlvbiBjcmVhdGVOb2RlSXRlcmF0b3JXaXRoTm9uQ2FsbGFi
bGVGaWx0ZXIyKCkgeworICAgIGNvbnN0IG5vZGVGaWx0ZXIgPSBuZXcgcGFyZW50Lk9iamVjdDsK
KyAgICBub2RlRmlsdGVyLmNhbGxiYWNrSW52b2NhdGlvbnMgPSAwOworICAgIG5vZGVGaWx0ZXIu
YWNjZXB0Tm9kZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBub2RlSXRlcmF0b3IuY2FsbGJhY2tJ
bnZvY2F0aW9ucysrOworICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOwor
ICAgIH07CisKKyAgICBjb25zdCBub2RlSXRlcmF0b3IgPSBwYXJlbnQuZG9jdW1lbnQuY3JlYXRl
Tm9kZUl0ZXJhdG9yKHBhcmVudC5ub2RlSXRlcmF0b3JUZXN0Um9vdCwgTm9kZUZpbHRlci5TSE9X
X0VMRU1FTlQsIG5vZGVGaWx0ZXIpOworICAgIG5vZGVJdGVyYXRvci5jYWxsYmFja0ludm9jYXRp
b25zID0gMDsKKyAgICByZXR1cm4gbm9kZUl0ZXJhdG9yOworfQorPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVk
LWZyYW1lLXhwYXRobnNyZXNvbHZlci1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1l
LXhwYXRobnNyZXNvbHZlci1pZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLXhw
YXRobnNyZXNvbHZlci1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKworPHNjcmlwdD4KK2NvbnN0IG5zID0gImh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvZm9vIjsKKworZnVuY3Rpb24gY3JlYXRlVGh1bmtXaXRoQ2FsbGFibGVSZXNvbHZl
cihrZXksIEZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbikgeworICAgIGNvbnN0IHJlc29s
dmVyID0gbmV3IEZ1bmN0aW9uQ29uc3RydWN0b3IoYAorICAgICAgICB0b3BbIiR7a2V5fSJdKys7
CisgICAgICAgIHJldHVybiAiJHtuc30iOworICAgIGApOworCisgICAgcmV0dXJuIChwYXJlbnRE
b2N1bWVudCwgY29udGV4dE5vZGUpID0+IHBhcmVudERvY3VtZW50LmV2YWx1YXRlKCIvZm9vOmJh
ciIsIGNvbnRleHROb2RlLCByZXNvbHZlcik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVRodW5rV2l0
aE5vbkNhbGxhYmxlUmVzb2x2ZXIwKGtleSkgeworICAgIGNvbnN0IHJlc29sdmVyID0geworICAg
ICAgICBsb29rdXBOYW1lc3BhY2VVUkk6IG5ldyBwYXJlbnQuRnVuY3Rpb24oYAorICAgICAgICAg
ICAgdG9wWyIke2tleX0iXSsrOworICAgICAgICAgICAgcmV0dXJuICIke25zfSI7CisgICAgICAg
IGApLAorICAgIH07CisKKyAgICByZXR1cm4gKHBhcmVudERvY3VtZW50LCBjb250ZXh0Tm9kZSkg
PT4gcGFyZW50RG9jdW1lbnQuZXZhbHVhdGUoIi9mb286YmFyIiwgY29udGV4dE5vZGUsIHJlc29s
dmVyKTsKK30KKworZnVuY3Rpb24gY3JlYXRlVGh1bmtXaXRoTm9uQ2FsbGFibGVSZXNvbHZlcjEo
a2V5LCBpZnJhbWUpIHsKKyAgICBjb25zdCByZXNvbHZlciA9IHsKKyAgICAgICAgZ2V0IGxvb2t1
cE5hbWVzcGFjZVVSSSgpIHsKKyAgICAgICAgICAgIGlmcmFtZS5yZW1vdmUoKTsKKworICAgICAg
ICAgICAgcmV0dXJuICgpID0+IHsKKyAgICAgICAgICAgICAgICB0b3Bba2V5XSsrOworICAgICAg
ICAgICAgICAgIHJldHVybiBuczsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0sCisgICAgfTsK
KworICAgIHJldHVybiAocGFyZW50RG9jdW1lbnQsIGNvbnRleHROb2RlKSA9PiBwYXJlbnREb2N1
bWVudC5ldmFsdWF0ZSgiL2ZvbzpiYXIiLCBjb250ZXh0Tm9kZSwgcmVzb2x2ZXIpOworfQorCitm
dW5jdGlvbiBjcmVhdGVUaHVua1dpdGhOb25DYWxsYWJsZVJlc29sdmVyMigpIHsKKyAgICBjb25z
dCByZXNvbHZlciA9IG5ldyBwYXJlbnQuT2JqZWN0OworICAgIHJlc29sdmVyLmxvb2t1cE5hbWVz
cGFjZVVSSSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0aHVuay5jYWxsYmFja0ludm9jYXRpb25z
Kys7CisgICAgICAgIHJldHVybiBuczsKKyAgICB9OworCisgICAgY29uc3QgdGh1bmsgPSAocGFy
ZW50RG9jdW1lbnQsIGNvbnRleHROb2RlKSA9PiBwYXJlbnREb2N1bWVudC5ldmFsdWF0ZSgiL2Zv
bzpiYXIiLCBjb250ZXh0Tm9kZSwgcmVzb2x2ZXIpOworICAgIHRodW5rLmNhbGxiYWNrSW52b2Nh
dGlvbnMgPSAwOworCisgICAgcmV0dXJuIHRodW5rOworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9kZXRhY2hlZC1zdmctcGFyZW50LXdpbmRvdy1ldmVudHMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RldGFjaGVk
LXN2Zy1wYXJlbnQtd2luZG93LWV2ZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI4ODE3OSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2RldGFjaGVkLXN2Zy1wYXJlbnQtd2luZG93LWV2
ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACi1DT05TT0xF
IE1FU1NBR0U6IGVycm9yCiBUaGlzIHRlc3RzIGNyZWF0aW5nIGEgZGlzY29ubmVjdGVkIFNWRyBl
bGVtZW50IHdpdGggcmVzaXplIGV2ZW50IGhhbmRsZXIuIFRoZSBldmVudCBoYW5kbGVyIHNob3Vs
ZCBub3QgZ2V0IGRpc3BhdGNoZWQgdW5sZXNzIHRoZSBlbGVtZW50IGlzIGNvbm5lY3RlZAogCiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5l
dmFsKCd0aHJvdyAiZXJyb3IiJykgdGhyZXcgZXhjZXB0aW9uIGVycm9yLgogUEFTUyBkaWRGaXJl
UmVzaXplIGlzIGZhbHNlCiBQQVNTIGRpZEZpcmVPbkVycm9yIGlzIGZhbHNlCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kZXRh
Y2hlZC1zdmctcGFyZW50LXdpbmRvdy1ldmVudHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9kZXRhY2hlZC1zdmctcGFyZW50LXdpbmRvdy1ldmVudHMuaHRtbAko
cmV2aXNpb24gMjg4MTc5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGV0YWNoZWQtc3Zn
LXBhcmVudC13aW5kb3ctZXZlbnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoJ2RpZEZpcmVPbkVycm9y
Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmcmFtZS5jb250ZW50V2luZG93LmV2
YWwoJ3Rocm93ICJlcnJvciInKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coYGlm
cmFtZS5jb250ZW50V2luZG93LmV2YWwoJ3Rocm93ICJlcnJvciInKWAsIGAiZXJyb3IiYCk7CiAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChpZnJhbWUpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMv
ZnJhbWUtd2luZG93LWFzLWNhbGxiYWNrLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aW5kb3ctYXMtY2FsbGJhY2stZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyODgxNzkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aW5k
b3ctYXMtY2FsbGJhY2stZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBA
QCBUZXN0cyB0aGF0IHdlIGFyZSB1c2luZyB0aGUgcmlnaHQgZ2xvYmFsCiBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCiAKIAotUEFTUzogR2xvYmFsIG9iamVjdCB3YXMgdGhlIHJpZ2h0IG9uZS4K
K1BBU1MgbmV4dE5vZGVFcnJvci5jb25zdHJ1Y3RvciBpcyBmLmNvbnRlbnRXaW5kb3cuVHlwZUVy
cm9yCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXdpbmRvdy1hcy1jYWxsYmFjay5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2ZyYW1lLXdpbmRvdy1hcy1j
YWxsYmFjay5odG1sCShyZXZpc2lvbiAyODgxNzkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9mcmFtZS13aW5kb3ctYXMtY2FsbGJhY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2
LDYgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHdlIGFyZSB1c2luZyB0aGUgcmlnaHQgZ2xv
YmFsIG9iamVjdCBmb3IgRE9NIGNhbGxiYWNrcy4iKTsKIGpzVGVzdElzQXN5bmMgPSB0cnVlOwog
Ci1kb2N1bWVudC5yZXN1bHQgPSAiUEFTUzogR2xvYmFsIG9iamVjdCB3YXMgdGhlIHJpZ2h0IG9u
ZS4iOwogdmFyIGYgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlmcmFtZSIpKTsKIGYub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgZi5vbmxvYWQg
PSBudWxsOwpAQCAtMTUsMTMgKzE0LDE0IEBAIGYub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAg
ICAgIHZhciBpdGVyYXRvciA9IGRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihkb2N1bWVudCwg
Tm9kZUZpbHRlci5TSE9XX0FMTCwgZi5jb250ZW50V2luZG93KTsKICAgICAgICAgaXRlcmF0b3Iu
bmV4dE5vZGUoKTsKICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgZS5jb25zdHJ1Y3Rvci5jb25z
dHJ1Y3RvcigiZGVidWcoZG9jdW1lbnQucmVzdWx0KSIpKCk7CisgICAgICAgIHdpbmRvdy5uZXh0
Tm9kZUVycm9yID0gZTsKICAgICB9CiAKKyAgICBzaG91bGRCZSgibmV4dE5vZGVFcnJvci5jb25z
dHJ1Y3RvciIsICJmLmNvbnRlbnRXaW5kb3cuVHlwZUVycm9yIik7CiAgICAgZmluaXNoSlNUZXN0
KCk7CiB9OwogCi1mLnNyYyA9ICJyZXNvdXJjZXMvd3JvbmctZ2xvYmFsLW9iamVjdC5odG1sIjsK
K2Yuc3JjID0gInJlc291cmNlcy9lbXB0eS1ib2R5Lmh0bWwiOwogPC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvd3JvbmctZ2xvYmFsLW9i
amVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy93cm9uZy1nbG9iYWwtb2JqZWN0Lmh0bWwJKHJldmlzaW9uIDI4ODE3OSkKKysrIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy93cm9uZy1nbG9iYWwtb2JqZWN0Lmh0bWwJKG5vbmV4
aXN0ZW50KQpAQCAtMSw0ICswLDAgQEAKLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRvY3VtZW50LnJlc3VsdCA9ICJG
QUlMOiBXcm9uZyBnbG9iYWwgb2JqZWN0IHdhcyB1c2VkLiI7Ci08L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjg4MTc5KQorKysgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDIyLTAxLTE4ICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KKworICAg
ICAgICBDYWxsYmFjayBmdW5jdGlvbnMgLyBpbnRlcmZhY2VzIHNob3VsZCB1c2UgZ2xvYmFsIG9i
amVjdCBvZiBpdHMgX3ZhbHVlXyBmb3IgZXJyb3JzIGFuZCBsaWZlY3ljbGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM4NworCisgICAgICAgIFJl
dmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEltcG9ydHMgV1BUIFBSIChzZWUgYnVn
IGRlc2NyaXB0aW9uKS4KKworICAgICAgICBUaGUgcmVtYWluaW5nIGZhaWx1cmVzIGFyZSBkdWUg
dG8gdW5yZWxhdGVkIHNwZWMgY29tcGF0IGlzc3VlIHdpdGggY2FsbGluZyBjcm9zcy1yZWFsbSBQ
cm94eU9iamVjdCAvIEpTQm91bmRGdW5jdGlvbi4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9kb20vZXZlbnRzL0V2ZW50TGlzdGVuZXItaGFuZGxlRXZlbnQtY3Jvc3MtcmVhbG0tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50
cy9FdmVudExpc3RlbmVyLWhhbmRsZUV2ZW50LWNyb3NzLXJlYWxtLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL3Jlc291cmNlcy9lbXB0eS1kb2N1
bWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZl
cnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2Vy
LWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3NpbmctY29udGV4dC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJl
ZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dzaW5nLWNvbnRl
eHQuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVl
V2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLmh0bWw6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvc3VwcG9ydC9UcmVlV2Fsa2VyLWFjY2VwdE5v
ZGUtZmlsdGVyLWNyb3NzLXJlYWxtLXN1YmZyYW1lLmh0bWw6CisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvc3VwcG9ydC9lbXB0eS1kb2N1bWVudC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9teHBhdGgvcmVzb2x2ZXItY2FsbGJh
Y2staW50ZXJmYWNlLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL2RvbXhwYXRoL3Jlc29sdmVyLWNhbGxiYWNrLWludGVyZmFjZS1j
cm9zcy1yZWFsbS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9t
eHBhdGgvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9t
eHBhdGgvcmVzb3VyY2VzL2VtcHR5LWRvY3VtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9kb214cGF0aC9yZXNvdXJjZXMvaW52YWxpZF9uYW1lc3BhY2VfdGVz
dC5qczogQWRkZWQuCisKIDIwMjItMDEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBXaGVuIGluc2VydGluZyBhIHNlbGVjdGVkIDxvcHRpb24+IGluIGEgPHNl
bGVjdD4gZWxlbWVudCwgaXRzIHNlbGVjdGVkIHN0YXRlIHNob3VsZCByZW1haW4KSW5kZXg6IExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9FdmVu
dExpc3RlbmVyLWhhbmRsZUV2ZW50LWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ldmVu
dHMvRXZlbnRMaXN0ZW5lci1oYW5kbGVFdmVudC1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9kb20vZXZlbnRzL0V2ZW50TGlzdGVuZXItaGFuZGxlRXZlbnQtY3Jvc3MtcmVhbG0tZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTcgQEAKK0NPTlNPTEUgTUVTU0FHRTog
VHlwZUVycm9yOiAnaGFuZGxlRXZlbnQnIHByb3BlcnR5IG9mIGV2ZW50IGxpc3RlbmVyIHNob3Vs
ZCBiZSBjYWxsYWJsZQorQ09OU09MRSBNRVNTQUdFOiBUeXBlRXJyb3I6ICdoYW5kbGVFdmVudCcg
cHJvcGVydHkgb2YgZXZlbnQgbGlzdGVuZXIgc2hvdWxkIGJlIGNhbGxhYmxlCitDT05TT0xFIE1F
U1NBR0U6IFR5cGVFcnJvcjogUHJveHkgaGFzIGFscmVhZHkgYmVlbiByZXZva2VkLiBObyBtb3Jl
IG9wZXJhdGlvbnMgYXJlIGFsbG93ZWQgdG8gYmUgcGVyZm9ybWVkIG9uIGl0CitDT05TT0xFIE1F
U1NBR0U6IFR5cGVFcnJvcjogUHJveHkgaGFzIGFscmVhZHkgYmVlbiByZXZva2VkLiBObyBtb3Jl
IG9wZXJhdGlvbnMgYXJlIGFsbG93ZWQgdG8gYmUgcGVyZm9ybWVkIG9uIGl0CitDT05TT0xFIE1F
U1NBR0U6IFR5cGVFcnJvcjogUHJveHkgaGFzIGFscmVhZHkgYmVlbiByZXZva2VkLiBObyBtb3Jl
IG9wZXJhdGlvbnMgYXJlIGFsbG93ZWQgdG8gYmUgcGVyZm9ybWVkIG9uIGl0CisKKworUEFTUyBF
dmVudExpc3RlbmVyIGlzIGNyb3NzLXJlYWxtIHBsYWluIG9iamVjdCB3aXRob3V0ICdoYW5kbGVF
dmVudCcgcHJvcGVydHkKK1BBU1MgRXZlbnRMaXN0ZW5lciBpcyBjcm9zcy1yZWFsbSBwbGFpbiBv
YmplY3Qgd2l0aCBub24tY2FsbGFibGUgJ2hhbmRsZUV2ZW50JyBwcm9wZXJ0eQorRkFJTCBFdmVu
dExpc3RlbmVyIGlzIGNyb3NzLXJlYWxtIHBsYWluIG9iamVjdCB3aXRoIHJldm9rZWQgUHJveHkg
YXMgJ2hhbmRsZUV2ZW50JyBwcm9wZXJ0eSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmdW5jdGlv
biAiZnVuY3Rpb24gVHlwZUVycm9yKCkgeworICAgIFtuYXRpdmUgY29kZV0KK30iIGJ1dCBnb3Qg
ZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9Igor
UEFTUyBFdmVudExpc3RlbmVyIGlzIGNyb3NzLXJlYWxtIG5vbi1jYWxsYWJsZSByZXZva2VkIFBy
b3h5CitQQVNTIEV2ZW50TGlzdGVuZXIgaXMgY3Jvc3MtcmVhbG0gY2FsbGFibGUgcmV2b2tlZCBQ
cm94eQorCkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2RvbS9ldmVudHMvRXZlbnRMaXN0ZW5lci1oYW5kbGVFdmVudC1jcm9zcy1yZWFsbS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZG9tL2V2ZW50cy9FdmVudExpc3RlbmVyLWhhbmRsZUV2ZW50LWNyb3NzLXJlYWxtLmh0bWwJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9kb20vZXZlbnRzL0V2ZW50TGlzdGVuZXItaGFuZGxlRXZlbnQtY3Jvc3MtcmVhbG0uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5Dcm9zcy1yZWFsbSBFdmVudExpc3RlbmVyIHRocm93cyBU
eXBlRXJyb3Igb2YgaXRzIGFzc29jaWF0ZWQgUmVhbG08L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI3JlZi1mb3ItcHJlcGFyZS10
by1ydW4tc2NyaXB0Ij4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKworPGlmcmFtZSBuYW1lPSJldmVudExpc3RlbmVyR2xvYmFsT2JqZWN0IiBzcmM9
InN1cHBvcnQvZW1wdHktZG9jdW1lbnQuaHRtbCI+PC9pZnJhbWU+CisKKzxzY3JpcHQ+CitzZXR1
cCh7IGFsbG93X3VuY2F1Z2h0X2V4Y2VwdGlvbjogdHJ1ZSB9KTsKKwordGVzdF9vbmxvYWQoKCkg
PT4geworICAgIGNvbnN0IGV2ZW50VGFyZ2V0ID0gbmV3IEV2ZW50VGFyZ2V0OworICAgIGNvbnN0
IGV2ZW50TGlzdGVuZXIgPSBuZXcgZXZlbnRMaXN0ZW5lckdsb2JhbE9iamVjdC5PYmplY3Q7CisK
KyAgICBldmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJmb28iLCBldmVudExpc3RlbmVyKTsK
KyAgICBhc3NlcnRfcmVwb3J0c19leGNlcHRpb24oZXZlbnRMaXN0ZW5lckdsb2JhbE9iamVjdC5U
eXBlRXJyb3IsICgpID0+IHsgZXZlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImZv
byIpKTsgfSk7Cit9LCAiRXZlbnRMaXN0ZW5lciBpcyBjcm9zcy1yZWFsbSBwbGFpbiBvYmplY3Qg
d2l0aG91dCAnaGFuZGxlRXZlbnQnIHByb3BlcnR5Iik7CisKK3Rlc3Rfb25sb2FkKCgpID0+IHsK
KyAgICBjb25zdCBldmVudFRhcmdldCA9IG5ldyBFdmVudFRhcmdldDsKKyAgICBjb25zdCBldmVu
dExpc3RlbmVyID0gbmV3IGV2ZW50TGlzdGVuZXJHbG9iYWxPYmplY3QuT2JqZWN0OworICAgIGV2
ZW50TGlzdGVuZXIuaGFuZGxlRXZlbnQgPSB7fTsKKworICAgIGV2ZW50VGFyZ2V0LmFkZEV2ZW50
TGlzdGVuZXIoImZvbyIsIGV2ZW50TGlzdGVuZXIpOworICAgIGFzc2VydF9yZXBvcnRzX2V4Y2Vw
dGlvbihldmVudExpc3RlbmVyR2xvYmFsT2JqZWN0LlR5cGVFcnJvciwgKCkgPT4geyBldmVudFRh
cmdldC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiZm9vIikpOyB9KTsKK30sICJFdmVudExpc3Rl
bmVyIGlzIGNyb3NzLXJlYWxtIHBsYWluIG9iamVjdCB3aXRoIG5vbi1jYWxsYWJsZSAnaGFuZGxl
RXZlbnQnIHByb3BlcnR5Iik7CisKK3Rlc3Rfb25sb2FkKCgpID0+IHsKKyAgICBjb25zdCBldmVu
dFRhcmdldCA9IG5ldyBFdmVudFRhcmdldDsKKyAgICBjb25zdCB7IHByb3h5LCByZXZva2UgfSA9
IFByb3h5LnJldm9jYWJsZSgoKSA9PiB7fSwge30pOworICAgIHJldm9rZSgpOworCisgICAgY29u
c3QgZXZlbnRMaXN0ZW5lciA9IG5ldyBldmVudExpc3RlbmVyR2xvYmFsT2JqZWN0Lk9iamVjdDsK
KyAgICBldmVudExpc3RlbmVyLmhhbmRsZUV2ZW50ID0gcHJveHk7CisKKyAgICBldmVudFRhcmdl
dC5hZGRFdmVudExpc3RlbmVyKCJmb28iLCBldmVudExpc3RlbmVyKTsKKyAgICBhc3NlcnRfcmVw
b3J0c19leGNlcHRpb24oZXZlbnRMaXN0ZW5lckdsb2JhbE9iamVjdC5UeXBlRXJyb3IsICgpID0+
IHsgZXZlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImZvbyIpKTsgfSk7Cit9LCAi
RXZlbnRMaXN0ZW5lciBpcyBjcm9zcy1yZWFsbSBwbGFpbiBvYmplY3Qgd2l0aCByZXZva2VkIFBy
b3h5IGFzICdoYW5kbGVFdmVudCcgcHJvcGVydHkiKTsKKwordGVzdF9vbmxvYWQoKCkgPT4gewor
ICAgIGNvbnN0IGV2ZW50VGFyZ2V0ID0gbmV3IEV2ZW50VGFyZ2V0OworICAgIGNvbnN0IHsgcHJv
eHksIHJldm9rZSB9ID0gZXZlbnRMaXN0ZW5lckdsb2JhbE9iamVjdC5Qcm94eS5yZXZvY2FibGUo
e30sIHt9KTsKKyAgICByZXZva2UoKTsKKworICAgIGV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVu
ZXIoImZvbyIsIHByb3h5KTsKKyAgICBhc3NlcnRfcmVwb3J0c19leGNlcHRpb24oZXZlbnRMaXN0
ZW5lckdsb2JhbE9iamVjdC5UeXBlRXJyb3IsICgpID0+IHsgZXZlbnRUYXJnZXQuZGlzcGF0Y2hF
dmVudChuZXcgRXZlbnQoImZvbyIpKTsgfSk7Cit9LCAiRXZlbnRMaXN0ZW5lciBpcyBjcm9zcy1y
ZWFsbSBub24tY2FsbGFibGUgcmV2b2tlZCBQcm94eSIpOworCit0ZXN0X29ubG9hZCgoKSA9PiB7
CisgICAgY29uc3QgZXZlbnRUYXJnZXQgPSBuZXcgRXZlbnRUYXJnZXQ7CisgICAgY29uc3QgeyBw
cm94eSwgcmV2b2tlIH0gPSBldmVudExpc3RlbmVyR2xvYmFsT2JqZWN0LlByb3h5LnJldm9jYWJs
ZSgoKSA9PiB7fSwge30pOworICAgIHJldm9rZSgpOworCisgICAgZXZlbnRUYXJnZXQuYWRkRXZl
bnRMaXN0ZW5lcigiZm9vIiwgcHJveHkpOworICAgIGFzc2VydF9yZXBvcnRzX2V4Y2VwdGlvbihl
dmVudExpc3RlbmVyR2xvYmFsT2JqZWN0LlR5cGVFcnJvciwgKCkgPT4geyBldmVudFRhcmdldC5k
aXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiZm9vIikpOyB9KTsKK30sICJFdmVudExpc3RlbmVyIGlz
IGNyb3NzLXJlYWxtIGNhbGxhYmxlIHJldm9rZWQgUHJveHkiKTsKKworZnVuY3Rpb24gdGVzdF9v
bmxvYWQoZm4sIGRlc2MpIHsKKyAgICBhc3luY190ZXN0KHQgPT4geyB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIHQuc3RlcF9mdW5jX2RvbmUoZm4pKTsgfSwgZGVzYyk7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydF9yZXBvcnRzX2V4Y2VwdGlvbihleHBlY3RlZENvbnN0cnVjdG9yLCBmbikg
eworICAgIGxldCBlcnJvcjsKKyAgICBjb25zdCBvbkVycm9ySGFuZGxlciA9IGV2ZW50ID0+IHsg
ZXJyb3IgPSBldmVudC5lcnJvcjsgfTsKKworICAgIGV2ZW50TGlzdGVuZXJHbG9iYWxPYmplY3Qu
YWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBvbkVycm9ySGFuZGxlcik7CisgICAgZm4oKTsKKyAg
ICBldmVudExpc3RlbmVyR2xvYmFsT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIiwg
b25FcnJvckhhbmRsZXIpOworCisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgZXJyb3IsICJvYmpl
Y3QiKTsKKyAgICBhc3NlcnRfZXF1YWxzKGVycm9yLmNvbnN0cnVjdG9yLCBleHBlY3RlZENvbnN0
cnVjdG9yKTsKK30KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL3Jlc291cmNlcy9lbXB0eS1kb2N1bWVudC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZG9tL2V2ZW50cy9yZXNvdXJjZXMvZW1wdHktZG9jdW1lbnQuaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ldmVu
dHMvcmVzb3VyY2VzL2VtcHR5LWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxib2R5PgpJ
bmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJh
dmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJl
YWxtLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjg4MTc5KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0
Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDExICsxLDEwIEBACiAKIAotUEFTUyBwYXJlbnQncyB8dGhpc3wsIHBhcmVudCdzIG1ldGhvZCwg
cGFyZW50J3MgZmlsdGVyLCBwYXJlbnQncyByb290Ci1QQVNTIHBhcmVudCdzIHx0aGlzfCwgcGFy
ZW50J3MgbWV0aG9kLCBwYXJlbnQncyBmaWx0ZXIsIGlmcmFtZSdzIHJvb3QKLVBBU1MgcGFyZW50
J3MgfHRoaXN8LCBwYXJlbnQncyBtZXRob2QsIGlmcmFtZSdzIGZpbHRlciwgaWZyYW1lJ3Mgcm9v
dAotRkFJTCBwYXJlbnQncyB8dGhpc3wsIGlmcmFtZXMncyBtZXRob2QsIGlmcmFtZSdzIGZpbHRl
ciwgaWZyYW1lJ3Mgcm9vdCBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rp
b24gVHlwZUVycm9yKCkgeworUEFTUyBOb2RlRmlsdGVyIGlzIGNyb3NzLXJlYWxtIHBsYWluIG9i
amVjdCB3aXRob3V0ICdhY2NlcHROb2RlJyBwcm9wZXJ0eQorUEFTUyBOb2RlRmlsdGVyIGlzIGNy
b3NzLXJlYWxtIHBsYWluIG9iamVjdCB3aXRoIG5vbi1jYWxsYWJsZSAnYWNjZXB0Tm9kZScgcHJv
cGVydHkKK0ZBSUwgTm9kZUZpbHRlciBpcyBjcm9zcy1yZWFsbSBwbGFpbiBvYmplY3Qgd2l0aCBy
ZXZva2VkIFByb3h5IGFzICdhY2NlcHROb2RlJyBwcm9wZXJ0eSBhc3NlcnRfdGhyb3dzX2pzOiBm
dW5jdGlvbiAiKCkgPT4geyB3YWxrZXIuZmlyc3RDaGlsZCgpOyB9IiB0aHJldyBvYmplY3QgIlR5
cGVFcnJvcjogUHJveHkgaGFzIGFscmVhZHkgYmVlbiByZXZva2VkLiBObyBtb3JlIG9wZXJhdGlv
bnMgYXJlIGFsbG93ZWQgdG8gYmUgcGVyZm9ybWVkIG9uIGl0IiAoIlR5cGVFcnJvciIpIGV4cGVj
dGVkIGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CiAgICAgW25h
dGl2ZSBjb2RlXQotfSIgYnV0IGdvdCBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkgewot
ICAgIFtuYXRpdmUgY29kZV0KLX0iCit9IiAoIlR5cGVFcnJvciIpCitQQVNTIE5vZGVGaWx0ZXIg
aXMgY3Jvc3MtcmVhbG0gbm9uLWNhbGxhYmxlIHJldm9rZWQgUHJveHkKK1BBU1MgTm9kZUZpbHRl
ciBpcyBjcm9zcy1yZWFsbSBjYWxsYWJsZSByZXZva2VkIFByb3h5CiAKSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fs
a2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3NpbmctY29udGV4dC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXIt
Y3Jvc3MtcmVhbG0tbnVsbC1icm93c2luZy1jb250ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
Mjg4MTc5KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9k
b20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tbnVs
bC1icm93c2luZy1jb250ZXh0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDMgQEAKIAotUEFTUyBUcmVlV2Fsa2VyOiBOb2RlRmlsdGVyIGZyb20gZGV0YWNoZWQgaWZyYW1l
IHdvcmtzIGFzIGV4cGVjdGVkCitQQVNTIFRyZWVXYWxrZXI6IE5vZGVGaWx0ZXIgZnJvbSBkZXRh
Y2hlZCBpZnJhbWUgZG9lc24ndCBnZXQgY2FsbGVkCiAKSW5kZXg6IExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2Vw
dE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3NpbmctY29udGV4dC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9t
L3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwt
YnJvd3NpbmctY29udGV4dC5odG1sCShyZXZpc2lvbiAyODgxNzkpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1h
Y2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dzaW5nLWNvbnRleHQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSwxMiBAQAogPCFET0NUWVBFIGh0bWw+CiA8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci08dGl0bGU+VHJlZVdhbGtlcjogTm9kZUZpbHRlciBmcm9tIGRldGFj
aGVkIGlmcmFtZSB3b3JrcyBhcyBleHBlY3RlZDwvdGl0bGU+Ci08bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jcmVmLWZvci1jYWxsLWEtdXNlci1vYmpl
Y3RzLW9wZXJhdGlvbiVFMiU5MSVBMCI+Cis8dGl0bGU+VHJlZVdhbGtlcjogTm9kZUZpbHRlciBm
cm9tIGRldGFjaGVkIGlmcmFtZSBkb2Vzbid0IGdldCBjYWxsZWQ8L3RpdGxlPgogPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgogCiA8Ym9keT4KKzxkaXY+
PC9kaXY+CisKIDxzY3JpcHQ+CiBjb25zdCB0ID0gYXN5bmNfdGVzdCgpOwogCkBAIC0xNiw4ICsx
NywxMyBAQCBpZnJhbWUub25sb2FkID0gdC5zdGVwX2Z1bmNfZG9uZSgoKSA9PiB7CiAgICAgaWZy
YW1lLnJlbW92ZSgpOwogCiAgICAgYXNzZXJ0X2VxdWFscyhpZnJhbWUuY29udGVudFdpbmRvdywg
bnVsbCk7Ci0gICAgYXNzZXJ0X2VxdWFscyhub2RlSXRlcmF0b3IubmV4dE5vZGUoKSwgZG9jdW1l
bnQuYm9keSk7Ci0gICAgYXNzZXJ0X3RydWUobm9kZUl0ZXJhdG9yLmR1bW15RmlsdGVyQ2FsbGVk
KTsKKworICAgIGxldCBlcnJvcldhc1Rocm93biA9IGZhbHNlOworICAgIHRyeSB7IG5vZGVJdGVy
YXRvci5uZXh0Tm9kZSgpOyB9CisgICAgY2F0Y2ggeyBlcnJvcldhc1Rocm93biA9IHRydWU7IH0K
KworICAgIGFzc2VydF90cnVlKGVycm9yV2FzVGhyb3duKTsKKyAgICBhc3NlcnRfZmFsc2Uobm9k
ZUl0ZXJhdG9yLmR1bW15RmlsdGVyQ2FsbGVkKTsKIH0pOwogCiBkb2N1bWVudC5ib2R5LmFwcGVu
ZChpZnJhbWUpOwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVh
bG0uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9z
cy1yZWFsbS5odG1sCShyZXZpc2lvbiAyODgxNzkpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2Rl
LWZpbHRlci1jcm9zcy1yZWFsbS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIxICsxLDYwIEBA
CiA8IURPQ1RZUEUgaHRtbD4KLTx0aXRsZT5UcmVlV2Fsa2VyOiBjcm9zcy1yZWFsbSBOb2RlRmls
dGVyIHRocm93cyBUeXBlRXJyb3Igb2YgY3VycmVudCByZWFsbTwvdGl0bGU+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+VHJlZVdhbGtlcjogY3Jvc3MtcmVhbG0gTm9kZUZpbHRlciB0
aHJvd3MgVHlwZUVycm9yIG9mIGl0cyBhc3NvY2lhdGVkIFJlYWxtPC90aXRsZT4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNyZWYtZm9yLXBy
ZXBhcmUtdG8tcnVuLXNjcmlwdCI+CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Ci08bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vd2ViaWRsLnNw
ZWMud2hhdHdnLm9yZy8jY2FsbC1hLXVzZXItb2JqZWN0cy1vcGVyYXRpb24iPgogCi08Ym9keSBp
ZD0idHJlZVdhbGtlclJvb3QiPgotPGRpdj48L2Rpdj4KKzxpZnJhbWUgbmFtZT0ibm9kZUZpbHRl
ckdsb2JhbE9iamVjdCIgc3JjPSJzdXBwb3J0L2VtcHR5LWRvY3VtZW50Lmh0bWwiPjwvaWZyYW1l
PgorCis8ZGl2IGlkPSJ0cmVlV2Fsa2VyUm9vdCI+CisgICAgPGRpdiBjbGFzcz0iZmlyc3RDaGls
ZCI+PC9kaXY+Cis8L2Rpdj4KIAogPHNjcmlwdD4KLWNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwotaWZyYW1lLnNyYyA9ICJzdXBwb3J0L1RyZWVXYWxrZXIt
YWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tc3ViZnJhbWUuaHRtbCI7Ci1pZnJhbWUub25s
b2FkID0gKCkgPT4gewotICAgIGZvciAoY29uc3QgdGVzdENhc2Ugb2YgaWZyYW1lLmNvbnRlbnRX
aW5kb3cudGVzdENhc2VzKSB7Ci0gICAgICAgIHRlc3QodCA9PiB7Ci0gICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKHRlc3RDYXNlLmFjdHVhbC5jb25zdHJ1Y3RvciwgdGVzdENhc2UuZXhwZWN0ZWQp
OwotICAgICAgICB9LCB0ZXN0Q2FzZS5kZXNjcmlwdGlvbik7Ci0gICAgfQotfTsKLWRvY3VtZW50
LmJvZHkuYXBwZW5kKGlmcmFtZSk7Cit0ZXN0X29ubG9hZCgoKSA9PiB7CisgICAgY29uc3Qgbm9k
ZUZpbHRlciA9IG5ldyBub2RlRmlsdGVyR2xvYmFsT2JqZWN0Lk9iamVjdDsKKworICAgIGNvbnN0
IHdhbGtlciA9IGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodHJlZVdhbGtlclJvb3QsIE5vZGVG
aWx0ZXIuU0hPV19FTEVNRU5ULCBub2RlRmlsdGVyKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG5v
ZGVGaWx0ZXJHbG9iYWxPYmplY3QuVHlwZUVycm9yLCAoKSA9PiB7IHdhbGtlci5maXJzdENoaWxk
KCk7IH0pOworfSwgIk5vZGVGaWx0ZXIgaXMgY3Jvc3MtcmVhbG0gcGxhaW4gb2JqZWN0IHdpdGhv
dXQgJ2FjY2VwdE5vZGUnIHByb3BlcnR5Iik7CisKK3Rlc3Rfb25sb2FkKCgpID0+IHsKKyAgICBj
b25zdCBub2RlRmlsdGVyID0gbmV3IG5vZGVGaWx0ZXJHbG9iYWxPYmplY3QuT2JqZWN0OworICAg
IG5vZGVGaWx0ZXIuYWNjZXB0Tm9kZSA9IHt9OworCisgICAgY29uc3Qgd2Fsa2VyID0gZG9jdW1l
bnQuY3JlYXRlVHJlZVdhbGtlcih0cmVlV2Fsa2VyUm9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1F
TlQsIG5vZGVGaWx0ZXIpOworICAgIGFzc2VydF90aHJvd3NfanMobm9kZUZpbHRlckdsb2JhbE9i
amVjdC5UeXBlRXJyb3IsICgpID0+IHsgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsgfSk7Cit9LCAiTm9k
ZUZpbHRlciBpcyBjcm9zcy1yZWFsbSBwbGFpbiBvYmplY3Qgd2l0aCBub24tY2FsbGFibGUgJ2Fj
Y2VwdE5vZGUnIHByb3BlcnR5Iik7CisKK3Rlc3Rfb25sb2FkKCgpID0+IHsKKyAgICBjb25zdCB7
IHByb3h5LCByZXZva2UgfSA9IFByb3h5LnJldm9jYWJsZSgoKSA9PiB7fSwge30pOworICAgIHJl
dm9rZSgpOworCisgICAgY29uc3Qgbm9kZUZpbHRlciA9IG5ldyBub2RlRmlsdGVyR2xvYmFsT2Jq
ZWN0Lk9iamVjdDsKKyAgICBub2RlRmlsdGVyLmFjY2VwdE5vZGUgPSBwcm94eTsKKworICAgIGNv
bnN0IHdhbGtlciA9IGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodHJlZVdhbGtlclJvb3QsIE5v
ZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCBub2RlRmlsdGVyKTsKKyAgICBhc3NlcnRfdGhyb3dzX2pz
KG5vZGVGaWx0ZXJHbG9iYWxPYmplY3QuVHlwZUVycm9yLCAoKSA9PiB7IHdhbGtlci5maXJzdENo
aWxkKCk7IH0pOworfSwgIk5vZGVGaWx0ZXIgaXMgY3Jvc3MtcmVhbG0gcGxhaW4gb2JqZWN0IHdp
dGggcmV2b2tlZCBQcm94eSBhcyAnYWNjZXB0Tm9kZScgcHJvcGVydHkiKTsKKwordGVzdF9vbmxv
YWQoKCkgPT4geworICAgIGNvbnN0IHsgcHJveHksIHJldm9rZSB9ID0gbm9kZUZpbHRlckdsb2Jh
bE9iamVjdC5Qcm94eS5yZXZvY2FibGUoe30sIHt9KTsKKyAgICByZXZva2UoKTsKKworICAgIGNv
bnN0IHdhbGtlciA9IGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodHJlZVdhbGtlclJvb3QsIE5v
ZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCBwcm94eSk7CisgICAgYXNzZXJ0X3Rocm93c19qcyhub2Rl
RmlsdGVyR2xvYmFsT2JqZWN0LlR5cGVFcnJvciwgKCkgPT4geyB3YWxrZXIuZmlyc3RDaGlsZCgp
OyB9KTsKK30sICJOb2RlRmlsdGVyIGlzIGNyb3NzLXJlYWxtIG5vbi1jYWxsYWJsZSByZXZva2Vk
IFByb3h5Iik7CisKK3Rlc3Rfb25sb2FkKCgpID0+IHsKKyAgICBjb25zdCB7IHByb3h5LCByZXZv
a2UgfSA9IG5vZGVGaWx0ZXJHbG9iYWxPYmplY3QuUHJveHkucmV2b2NhYmxlKCgpID0+IHt9LCB7
fSk7CisgICAgcmV2b2tlKCk7CisKKyAgICBjb25zdCB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVU
cmVlV2Fsa2VyKHRyZWVXYWxrZXJSb290LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgcHJveHkp
OworICAgIGFzc2VydF90aHJvd3NfanMobm9kZUZpbHRlckdsb2JhbE9iamVjdC5UeXBlRXJyb3Is
ICgpID0+IHsgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsgfSk7Cit9LCAiTm9kZUZpbHRlciBpcyBjcm9z
cy1yZWFsbSBjYWxsYWJsZSByZXZva2VkIFByb3h5Iik7CisKK2Z1bmN0aW9uIHRlc3Rfb25sb2Fk
KGZuLCBkZXNjKSB7CisgICAgYXN5bmNfdGVzdCh0ID0+IHsgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoImxvYWQiLCB0LnN0ZXBfZnVuY19kb25lKGZuKSk7IH0sIGRlc2MpOworfQogPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90
cmF2ZXJzYWwvc3VwcG9ydC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxt
LXN1YmZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL3N1cHBvcnQvVHJlZVdhbGtlci1hY2NlcHRO
b2RlLWZpbHRlci1jcm9zcy1yZWFsbS1zdWJmcmFtZS5odG1sCShyZXZpc2lvbiAyODgxNzkpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJz
YWwvc3VwcG9ydC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLXN1YmZy
YW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsMTYgKzcsNiBAQAogd2luZG93LnRlc3RDYXNl
cyA9IFtdOwogCiAoZnVuY3Rpb24oKSB7Ci0gICAgbGV0IHdhbGtlciA9IHBhcmVudC5kb2N1bWVu
dC5jcmVhdGVUcmVlV2Fsa2VyKHBhcmVudC50cmVlV2Fsa2VyUm9vdCwgTm9kZUZpbHRlci5TSE9X
X0VMRU1FTlQsIG5ldyBwYXJlbnQuT2JqZWN0KTsKLSAgICB0cnkgeyB3YWxrZXIuZmlyc3RDaGls
ZCgpOyB9IGNhdGNoIChlcnIpIHsgdGVzdENhc2VzLnB1c2goeyBhY3R1YWw6IGVyciwgZXhwZWN0
ZWQ6IHBhcmVudC5UeXBlRXJyb3IsIGRlc2NyaXB0aW9uOiAicGFyZW50J3MgfHRoaXN8LCBwYXJl
bnQncyBtZXRob2QsIHBhcmVudCdzIGZpbHRlciwgcGFyZW50J3Mgcm9vdCIgfSk7IH0KIAotICAg
IHdhbGtlciA9IHBhcmVudC5kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHRyZWVXYWxrZXJSb290
LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgbmV3IHBhcmVudC5PYmplY3QpOwotICAgIHRyeSB7
IHdhbGtlci5maXJzdENoaWxkKCk7IH0gY2F0Y2ggKGVycikgeyB0ZXN0Q2FzZXMucHVzaCh7IGFj
dHVhbDogZXJyLCBleHBlY3RlZDogcGFyZW50LlR5cGVFcnJvciwgZGVzY3JpcHRpb246ICJwYXJl
bnQncyB8dGhpc3wsIHBhcmVudCdzIG1ldGhvZCwgcGFyZW50J3MgZmlsdGVyLCBpZnJhbWUncyBy
b290IiB9KTsgfQotCi0gICAgd2Fsa2VyID0gcGFyZW50LmRvY3VtZW50LmNyZWF0ZVRyZWVXYWxr
ZXIodHJlZVdhbGtlclJvb3QsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCB7fSk7Ci0gICAgdHJ5
IHsgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsgfSBjYXRjaCAoZXJyKSB7IHRlc3RDYXNlcy5wdXNoKHsg
YWN0dWFsOiBlcnIsIGV4cGVjdGVkOiBwYXJlbnQuVHlwZUVycm9yLCBkZXNjcmlwdGlvbjogInBh
cmVudCdzIHx0aGlzfCwgcGFyZW50J3MgbWV0aG9kLCBpZnJhbWUncyBmaWx0ZXIsIGlmcmFtZSdz
IHJvb3QiIH0pOyB9Ci0KLSAgICB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyLmNh
bGwocGFyZW50LmRvY3VtZW50LCB0cmVlV2Fsa2VyUm9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1F
TlQsIHt9KTsKLSAgICB0cnkgeyB3YWxrZXIuZmlyc3RDaGlsZCgpOyB9IGNhdGNoIChlcnIpIHsg
dGVzdENhc2VzLnB1c2goeyBhY3R1YWw6IGVyciwgZXhwZWN0ZWQ6IFR5cGVFcnJvciwgZGVzY3Jp
cHRpb246ICJwYXJlbnQncyB8dGhpc3wsIGlmcmFtZXMncyBtZXRob2QsIGlmcmFtZSdzIGZpbHRl
ciwgaWZyYW1lJ3Mgcm9vdCIgfSk7IH0KIH0pKCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9zdXBwb3J0
L2VtcHR5LWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL3N1cHBvcnQvZW1wdHktZG9jdW1l
bnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvc3VwcG9ydC9lbXB0eS1kb2N1bWVudC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZG9teHBhdGgvcmVzb2x2ZXItY2FsbGJhY2staW50ZXJmYWNlLWNyb3Nz
LXJlYWxtLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbXhwYXRoL3Jlc29sdmVyLWNhbGxiYWNrLWludGVyZmFj
ZS1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb214cGF0aC9yZXNvbHZlci1jYWxsYmFj
ay1pbnRlcmZhY2UtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTUgQEAKK0NPTlNPTEUgTUVTU0FHRTogVHlwZUVycm9yOiAnbG9va3VwTmFtZXNwYWNl
VVJJJyBwcm9wZXJ0eSBvZiBjYWxsYmFjayBpbnRlcmZhY2Ugc2hvdWxkIGJlIGNhbGxhYmxlCitD
T05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogJ2xvb2t1cE5hbWVzcGFjZVVSSScgcHJvcGVydHkg
b2YgY2FsbGJhY2sgaW50ZXJmYWNlIHNob3VsZCBiZSBjYWxsYWJsZQorQ09OU09MRSBNRVNTQUdF
OiBUeXBlRXJyb3I6IFByb3h5IGhhcyBhbHJlYWR5IGJlZW4gcmV2b2tlZC4gTm8gbW9yZSBvcGVy
YXRpb25zIGFyZSBhbGxvd2VkIHRvIGJlIHBlcmZvcm1lZCBvbiBpdAorQ09OU09MRSBNRVNTQUdF
OiBUeXBlRXJyb3I6IFByb3h5IGhhcyBhbHJlYWR5IGJlZW4gcmV2b2tlZC4gTm8gbW9yZSBvcGVy
YXRpb25zIGFyZSBhbGxvd2VkIHRvIGJlIHBlcmZvcm1lZCBvbiBpdAorQ09OU09MRSBNRVNTQUdF
OiBUeXBlRXJyb3I6IFByb3h5IGhhcyBhbHJlYWR5IGJlZW4gcmV2b2tlZC4gTm8gbW9yZSBvcGVy
YXRpb25zIGFyZSBhbGxvd2VkIHRvIGJlIHBlcmZvcm1lZCBvbiBpdAorCisKK1BBU1MgWFBhdGhO
U1Jlc29sdmVyIGlzIGNyb3NzLXJlYWxtIHBsYWluIG9iamVjdCB3aXRob3V0ICdsb29rdXBOYW1l
c3BhY2VVUkknIHByb3BlcnR5CitQQVNTIFhQYXRoTlNSZXNvbHZlciBpcyBjcm9zcy1yZWFsbSBw
bGFpbiBvYmplY3Qgd2l0aCBub24tY2FsbGFibGUgJ2xvb2t1cE5hbWVzcGFjZVVSSScgcHJvcGVy
dHkKK0ZBSUwgWFBhdGhOU1Jlc29sdmVyIGlzIGNyb3NzLXJlYWxtIHBsYWluIG9iamVjdCB3aXRo
IHJldm9rZWQgUHJveHkgYXMgJ2xvb2t1cE5hbWVzcGFjZVVSSScgcHJvcGVydHkgcHJvbWlzZV9y
ZWplY3RzX2pzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVj
dCAiVHlwZUVycm9yOiBQcm94eSBoYXMgYWxyZWFkeSBiZWVuIHJldm9rZWQuIE5vIG1vcmUgb3Bl
cmF0aW9ucyBhcmUgYWxsb3dlZCB0byBiZSBwZXJmb3JtZWQgb24gaXQiICgiVHlwZUVycm9yIikg
ZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKKyAg
ICBbbmF0aXZlIGNvZGVdCit9IiAoIlR5cGVFcnJvciIpCitQQVNTIFhQYXRoTlNSZXNvbHZlciBp
cyBjcm9zcy1yZWFsbSBub24tY2FsbGFibGUgcmV2b2tlZCBQcm94eQorUEFTUyBYUGF0aE5TUmVz
b2x2ZXIgaXMgY3Jvc3MtcmVhbG0gY2FsbGFibGUgcmV2b2tlZCBQcm94eQorCkluZGV4OiBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbXhwYXRoL3Jlc29sdmVy
LWNhbGxiYWNrLWludGVyZmFjZS1jcm9zcy1yZWFsbS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9teHBhdGgvcmVzb2x2ZXIt
Y2FsbGJhY2staW50ZXJmYWNlLWNyb3NzLXJlYWxtLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb214cGF0aC9yZXNvbHZl
ci1jYWxsYmFjay1pbnRlcmZhY2UtY3Jvc3MtcmVhbG0uaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDY3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5Dcm9zcy1yZWFsbSBYUGF0aE5TUmVzb2x2ZXIgdGhyb3dzIFR5cGVFcnJvciBvZiBpdHMg
YXNzb2NpYXRlZCBSZWFsbTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8v
d2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jcmVmLWZvci1wcmVwYXJlLXRvLXJ1bi1zY3JpcHQiPgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9pbnZhbGlkX25hbWVzcGFjZV90ZXN0LmpzIj48L3NjcmlwdD4KKwor
PGlmcmFtZSBuYW1lPSJyZXNvbHZlckdsb2JhbE9iamVjdCIgc3JjPSJyZXNvdXJjZXMvZW1wdHkt
ZG9jdW1lbnQuaHRtbCI+PC9pZnJhbWU+CisKKzxzY3JpcHQ+CitzZXR1cCh7IGFsbG93X3VuY2F1
Z2h0X2V4Y2VwdGlvbjogdHJ1ZSB9KTsKKworY29uc3QgaWZyYW1lTG9hZGVkID0gbmV3IFByb21p
c2UocmVzb2x2ZSA9PiB7IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgcmVzb2x2ZSk7
IH0pOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGF3YWl0IGlmcmFtZUxvYWRlZDsK
KyAgY29uc3QgcmVzb2x2ZXIgPSBuZXcgcmVzb2x2ZXJHbG9iYWxPYmplY3QuT2JqZWN0OworCisg
IHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgcmVzb2x2ZXJHbG9iYWxPYmplY3QuVHlwZUVy
cm9yLAorICAgIGludmFsaWRfbmFtZXNwYWNlX3Rlc3QodCwgcmVzb2x2ZXIsIHJlc29sdmVyR2xv
YmFsT2JqZWN0KQorICApOworfSwgIlhQYXRoTlNSZXNvbHZlciBpcyBjcm9zcy1yZWFsbSBwbGFp
biBvYmplY3Qgd2l0aG91dCAnbG9va3VwTmFtZXNwYWNlVVJJJyBwcm9wZXJ0eSIpOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGF3YWl0IGlmcmFtZUxvYWRlZDsKKyAgY29uc3QgcmVz
b2x2ZXIgPSBuZXcgcmVzb2x2ZXJHbG9iYWxPYmplY3QuT2JqZWN0OworICByZXNvbHZlci5sb29r
dXBOYW1lc3BhY2VVUkkgPSB7fTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIHJl
c29sdmVyR2xvYmFsT2JqZWN0LlR5cGVFcnJvciwKKyAgICBpbnZhbGlkX25hbWVzcGFjZV90ZXN0
KHQsIHJlc29sdmVyLCByZXNvbHZlckdsb2JhbE9iamVjdCkKKyAgKTsKK30sICJYUGF0aE5TUmVz
b2x2ZXIgaXMgY3Jvc3MtcmVhbG0gcGxhaW4gb2JqZWN0IHdpdGggbm9uLWNhbGxhYmxlICdsb29r
dXBOYW1lc3BhY2VVUkknIHByb3BlcnR5Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
KyAgYXdhaXQgaWZyYW1lTG9hZGVkOworICBjb25zdCB7IHByb3h5LCByZXZva2UgfSA9IFByb3h5
LnJldm9jYWJsZSgoKSA9PiB7fSwge30pOworICByZXZva2UoKTsKKworICBjb25zdCByZXNvbHZl
ciA9IG5ldyByZXNvbHZlckdsb2JhbE9iamVjdC5PYmplY3Q7CisgIHJlc29sdmVyLmxvb2t1cE5h
bWVzcGFjZVVSSSA9IHByb3h5OworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgcmVz
b2x2ZXJHbG9iYWxPYmplY3QuVHlwZUVycm9yLAorICAgIGludmFsaWRfbmFtZXNwYWNlX3Rlc3Qo
dCwgcmVzb2x2ZXIsIHJlc29sdmVyR2xvYmFsT2JqZWN0KQorICApOworfSwgIlhQYXRoTlNSZXNv
bHZlciBpcyBjcm9zcy1yZWFsbSBwbGFpbiBvYmplY3Qgd2l0aCByZXZva2VkIFByb3h5IGFzICds
b29rdXBOYW1lc3BhY2VVUkknIHByb3BlcnR5Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+
IHsKKyAgYXdhaXQgaWZyYW1lTG9hZGVkOworICBjb25zdCB7IHByb3h5LCByZXZva2UgfSA9IHJl
c29sdmVyR2xvYmFsT2JqZWN0LlByb3h5LnJldm9jYWJsZSh7fSwge30pOworICByZXZva2UoKTsK
KworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIHJlc29sdmVyR2xvYmFsT2JqZWN0LlR5
cGVFcnJvciwKKyAgICBpbnZhbGlkX25hbWVzcGFjZV90ZXN0KHQsIHByb3h5LCByZXNvbHZlckds
b2JhbE9iamVjdCkKKyAgKTsKK30sICJYUGF0aE5TUmVzb2x2ZXIgaXMgY3Jvc3MtcmVhbG0gbm9u
LWNhbGxhYmxlIHJldm9rZWQgUHJveHkiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICBhd2FpdCBpZnJhbWVMb2FkZWQ7CisgIGNvbnN0IHsgcHJveHksIHJldm9rZSB9ID0gcmVzb2x2
ZXJHbG9iYWxPYmplY3QuUHJveHkucmV2b2NhYmxlKCgpID0+IHt9LCB7fSk7CisgIHJldm9rZSgp
OworCisgIHJldHVybiBwcm9taXNlX3JlamVjdHNfanModCwgcmVzb2x2ZXJHbG9iYWxPYmplY3Qu
VHlwZUVycm9yLAorICAgIGludmFsaWRfbmFtZXNwYWNlX3Rlc3QodCwgcHJveHksIHJlc29sdmVy
R2xvYmFsT2JqZWN0KQorICApOworfSwgIlhQYXRoTlNSZXNvbHZlciBpcyBjcm9zcy1yZWFsbSBj
YWxsYWJsZSByZXZva2VkIFByb3h5Iik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9teHBhdGgvcmVzb3VyY2VzL2VtcHR5LWRv
Y3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9kb214cGF0aC9yZXNvdXJjZXMvZW1wdHktZG9jdW1lbnQuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2RvbXhwYXRoL3Jlc291cmNlcy9lbXB0eS1kb2N1bWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZG9teHBhdGgvcmVzb3VyY2VzL2ludmFsaWRfbmFtZXNwYWNlX3Rlc3QuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb214cGF0aC9y
ZXNvdXJjZXMvaW52YWxpZF9uYW1lc3BhY2VfdGVzdC5qcwkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbXhwYXRoL3Jlc291cmNl
cy9pbnZhbGlkX25hbWVzcGFjZV90ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjMg
QEAKKyJ1c2Ugc3RyaWN0IjsKK3NldHVwKHsgYWxsb3dfdW5jYXVnaHRfZXhjZXB0aW9uOiB0cnVl
IH0pOworCitjb25zdCBpbnZhbGlkX25hbWVzcGFjZV90ZXN0ID0gKHQsIHJlc29sdmVyLCByZXNv
bHZlcldpbmRvdyA9IHdpbmRvdykgPT4geworICBjb25zdCByZXN1bHQgPSBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgY29uc3QgaGFuZGxlciA9IGV2ZW50ID0+IHsKKyAg
ICAgIHJlamVjdChldmVudC5lcnJvcik7CisgICAgfTsKKworICAgIHJlc29sdmVyV2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgaGFuZGxlcik7CisgICAgdC5hZGRfY2xlYW51cCgoKSA9
PiB7CisgICAgICByZXNvbHZlcldpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJlcnJvciIsIGhh
bmRsZXIpOworICAgIH0pOworCisgICAgdC5zdGVwX3RpbWVvdXQocmVzb2x2ZSwgMCk7CisgIH0p
OworCisgIGFzc2VydF90aHJvd3NfZG9tKCJOQU1FU1BBQ0VfRVJSIiwgKCkgPT4geworICAgIGRv
Y3VtZW50LmV2YWx1YXRlKCIvZm9vOmJhciIsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgcmVz
b2x2ZXIpOworICB9KTsKKworICByZXR1cm4gcmVzdWx0OworfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449543</attachid>
            <date>2022-01-19 19:20:10 -0800</date>
            <delta_ts>2022-01-19 19:20:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232387-20220120032009.patch</filename>
            <type>text/plain</type>
            <size>172585</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4ODI2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMSBAQAorMjAyMi0wMS0xOSAgQWxleGV5
IFNodmF5a2EgIDxhc2h2YXlrYUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FsbGJhY2sgZnVuY3Rp
b25zIC8gaW50ZXJmYWNlcyBzaG91bGQgdXNlIGdsb2JhbCBvYmplY3Qgb2YgaXRzIF92YWx1ZV8g
Zm9yIGVycm9ycyBhbmQgbGlmZWN5Y2xlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzIzODcKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJl
bi4KKworICAgICAgICBCZWZvcmUgdGhpcyBjaGFuZ2UsIF9yZWxldmFudF8gZ2xvYmFsIG9iamVj
dCB3YXMgdXNlZCBhKSB0byB0aHJvdyBlcnJvcnMgaW4gd2hlbgorICAgICAgICBpbnZva2luZyBj
YWxsYmFjayBmdW5jdGlvbiAvIGludGVyZmFjZSwgd2hpY2ggaXNuJ3QgY29ycmVjdCBbMV0sIGFu
ZCBiKSB0byBjYWxsCisgICAgICAgIGNhbkludm9rZUNhbGxiYWNrKCkgb24gKGxpZmVjeWNsZSks
IHdoaWNoIGRvZXNuJ3QgbWF0Y2ggb3RoZXIgYnJvd3NlcnMgYW5kIG5vdAorICAgICAgICBxdWl0
ZSB1c2VmdWw6IF9yZWxldmFudF8gZXZlbnQgbG9vcCBzdG9wcyBpZiBkb2N1bWVudCBpcyBkZXRh
Y2hlZC4KKworICAgICAgICBUaGlzIHBhdGNoOgorCisgICAgICAgICAgMS4gUmVtb3ZlcyBbU2tp
cENhbGxiYWNrSW52b2tlQ2hlY2tdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgd2hpbGUgZW5zdXJpbmcg
RE9NCisgICAgICAgICAgICAgdHJhdmVyc2FsIGRvZXNuJ3QgY3Jhc2gsIHdoaWNoIGFsaWducyBX
ZWJLaXQgd2l0aCBvdGhlciBicm93c2Vycy4KKworICAgICAgICAgIDIuIEludm9rZXMgY2FuSW52
b2tlQ2FsbGJhY2soKSBvbiB0aGUgZ2xvYmFsIG9iamVjdCBvZiBfdmFsdWVfLCB3aGljaCBtYXRj
aGVzCisgICAgICAgICAgICAgIEdlY2tvIGJ1dCBub3QgQmxpbmssIHdoaWNoIHVzZXMgX2luY3Vt
YmVudF8gcmVhbG0gdG8gZGV0ZXJtaW5lIGlmIGNhbGxiYWNrCisgICAgICAgICAgICAgIGNhbiBz
dGlsbCBiZSBpbnZva2VkIChkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZSB0byBtZSkuCisKKyAgICAg
ICAgICAzLiBUaHJvd3MgY2FsbGJhY2sgaW52b2NhdGlvbiBlcnJvcnMgKGUuZy4gbm9uLWNhbGxh
YmxlIG1ldGhvZCwgcmV2b2tlZCBQcm94eSkKKyAgICAgICAgICAgICBpbiB0aGUgZ2xvYmFsIG9i
amVjdCBvZiBfdmFsdWVfLCB3aGljaCBtYXRjaGVzIHRoZSBzcGVjIFsxXSBhbmQgQmxpbmssIGJ1
dCBub3QgR2Vja28sCisgICAgICAgICAgICAgd2hpY2ggdXNlcyBfY3VycmVudF8gcmVhbG0gKG9m
IHRoZSBtZXRob2QgdGhhdCB3YXMgcGFzc2VkIGNhbGxiYWNrJ3MgX3ZhbHVlXykKKyAgICAgICAg
ICAgICB0byB0aHJvdyBUeXBlRXJyb3JzIGluLgorCisgICAgICAgICAgICAgVGhhdCBkb2Vzbid0
IG1ha2UgbXVjaCBzZW5zZSB0byBtZSBlaXRoZXI6ICJyZWdpc3RlcmluZyIgYSBjYWxsYmFjayBh
bmQgaW52b2tpbmcKKyAgICAgICAgICAgICBpdCBjb3VsZCBoYXBwZW4gaW4gZGlmZmVyZW50IHJl
YWxtcy4KKworICAgICAgICAgICAgIFRoZSBzcGVjIG9uIHRoaXMgaXMgd29yZGVkIHF1aXRlIHRy
aWNraWx5ICh5ZXQgSSB0aGluayBJJ3ZlIGZpZ3VyZWQgaXQgb3V0KToKKyAgICAgICAgICAgICBF
Q01BJ3MgInRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbiIgdXNlcyAicnVubmluZyBleGVjdXRp
b24gY29udGV4dCIgWzJdCisgICAgICAgICAgICAgdG8gY3JlYXRlIGFuIG9iamVjdCBpbiwgd2hp
Y2ggaXMgc3dpdGNoZWQgdG8gdGhlIHJlYWxtIG9mIF92YWx1ZV8gcGVyIFsxXS4KKworICAgICAg
ICBBdWRpb1dvcmtsZXQgY2hhbmdlcyBhcmUgdW5vYnNlcnZhYmxlIGFzIHdvcmtsZXRzIGNhbid0
IGFjcXVpcmUgYSBjcm9zcy1yZWFsbSBtZXRob2QuIAorICAgICAgICBJdCdzIGFsc28gbmljZXIg
bm90IHRvIHBhc3MgSlNDYWxsYmFja0RhdGFTdHJvbmcgYXJvdW5kLgorCisgICAgICAgIFsxXSBo
dHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI3JlZi1mb3ItcHJlcGFyZS10by1ydW4tc2Ny
aXB0CisgICAgICAgIFsyXSBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWVjbWFzY3JpcHQt
ZnVuY3Rpb24tb2JqZWN0cy1jYWxsLXRoaXNhcmd1bWVudC1hcmd1bWVudHNsaXN0IChzdGVwIDQp
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZy
YW1lLWludGVyc2VjdGlvbi1vYnNlcnZlci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9j
YWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1tdXRhdGlvbi1vYnNlcnZlci5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1w
ZXJmb3JtYW5jZS1vYnNlcnZlci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9jYWxsYmFj
ay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1yYWYuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9k
b20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9ic2VydmVyLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1l
LXRvLWJsb2IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vY2FsbGJhY2staW50ZXJmYWNl
LWRldGFjaGVkLWZyYW1lLW5vZGUtZmlsdGVyLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFtZS14cGF0aG5zcmVzb2x2ZXIuaHRtbAor
ICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVy
c2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tbnVsbC1icm93c2lu
Zy1jb250ZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJl
YWxtLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZG9tL2V2ZW50cy9FdmVudExpc3RlbmVyLWhhbmRsZUV2ZW50LWNyb3NzLXJlYWxtLmh0bWwKKyAg
ICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9teHBhdGgvcmVz
b2x2ZXItY2FsbGJhY2staW50ZXJmYWNlLWNyb3NzLXJlYWxtLmh0bWwKKworICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUHJvY2Vzc29yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldEdsb2JhbFNjb3BlOjpjcmVhdGVQcm9jZXNzb3IpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0UHJvY2Vzc29yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6QXVkaW9Xb3JrbGV0UHJvY2Vzc29yKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6cHJvY2Vzcyk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnNldFByb2Nlc3NDYWxsYmFjayk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6cHJvY2Vzc0NhbGxiYWNrV3Jh
cHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3JDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2sp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU0NhbGxiYWNrRGF0YTo6fkpTQ2FsbGJhY2tEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ2FsbGJhY2tEYXRhU3Ryb25nOjpKU0NhbGxiYWNrRGF0YVN0cm9uZyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0NhbGxiYWNrRGF0YVN0cm9uZzo6aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6SlNDYWxsYmFja0RhdGFXZWFrOjpKU0NhbGxiYWNrRGF0YVdlYWspOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGFXZWFrOjppbnZva2VDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6Z2xvYmFsT2JqZWN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjpKU0NhbGxiYWNrRGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Q2FsbGJhY2tzLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDb252ZXJ0ZXI8SURMQ2FsbGJhY2tGdW5jdGlvbjxUPj46OmNvbnZlcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udmVydGVyPElETENhbGxiYWNrSW50ZXJmYWNlPFQ+Pjo6Y29udmVy
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpDb252ZXJ0ZXI8SURMSW50ZXJmYWNlPFhQYXRoTlNSZXNvbHZl
cj4+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlvbl9vcGVuRGF0YWJhc2VCb2R5KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRl
Q2FsbGJhY2tIZWFkZXJDb250ZW50KToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1l
bnRhdGlvbkNvbnRlbnQpOgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlRE9NQ29udmVydE5lZWRz
R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvKjogVXBkYXRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrSW50ZXJmYWNlLmlkbDoK
KyAgICAgICAgKiBkb20vTm9kZUZpbHRlci5pZGw6CisgICAgICAgICogZG9tL1RyYXZlcnNhbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3JCYXNlOjphY2NlcHROb2RlKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmg6CisgICAgICAgICog
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQpOgorICAgICAgICAqIHhtbC9D
dXN0b21YUGF0aE5TUmVzb2x2ZXIuaWRsOgorCiAyMDIyLTAxLTE5ICBBbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBUdXJuIEVVbmljb2RlQmlkaSBpbnRvIGFuIGVudW0g
Y2xhc3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCShyZXZpc2lvbiAyODgyNjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldEdsb2JhbFNjb3BlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBdWRp
b1dvcmtsZXRHbG9iYWxTY29wCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0
ZWRFcnJvciwgIkEgcHJvY2Vzc29yIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgd2l0aCB0aGlzIG5h
bWUiX3MgfTsKIAogICAgIEpTQzo6SlNPYmplY3QqIGpzQ29uc3RydWN0b3IgPSBwcm9jZXNzb3JD
b250cnVjdG9yLT5jYWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTsKLSAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpOwogICAgIGF1
dG8mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIApAQCAtMTMzLDcgKzEzMyw3IEBAIFJlZlB0cjxBdWRpb1dvcmtsZXRQ
cm9jZXNzb3I+IEF1ZGlvV29ya2wKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBKU0M6
OkpTT2JqZWN0KiBqc0NvbnN0cnVjdG9yID0gY29uc3RydWN0b3ItPmNhbGxiYWNrRGF0YSgpLT5j
YWxsYmFjaygpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGNvbnN0cnVjdG9yLT5jYWxsYmFj
a0RhdGEoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKTsKICAgICBKU0M6OlZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayB7IGdsb2JhbE9iamVjdCB9OwpAQCAtMTU0
LDcgKzE1NCw3IEBAIFJlZlB0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+IEF1ZGlvV29ya2wKICAg
ICBpZiAoIWpzUHJvY2Vzc29yKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGpzUHJv
Y2Vzc29yLT53cmFwcGVkKCkuc2V0UHJvY2Vzc0NhbGxiYWNrKG1ha2VVbmlxdWU8SlNDYWxsYmFj
a0RhdGFTdHJvbmc+KGpzUHJvY2Vzc29yLCBnbG9iYWxPYmplY3QpKTsKKyAgICBqc1Byb2Nlc3Nv
ci0+d3JhcHBlZCgpLnNldFByb2Nlc3NDYWxsYmFjayhqc1Byb2Nlc3Nvcik7CiAKICAgICByZXR1
cm4gJmpzUHJvY2Vzc29yLT53cmFwcGVkKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNzb3IuY3BwCShy
ZXZpc2lvbiAyODgyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFByb2Nlc3Nvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMSwxMyArMjAxLDE0IEBA
IEV4Y2VwdGlvbk9yPFJlZjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+PiAKICAgICBpZiAoIWNvbnN0
cnVjdGlvbkRhdGEpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJObyBw
ZW5kaW5nIGNvbnN0cnVjdGlvbiBkYXRhIGZvciB0aGlzIHdvcmtsZXQgcHJvY2Vzc29yIl9zIH07
CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IoKmNvbnN0
cnVjdGlvbkRhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1dvcmtsZXRQcm9j
ZXNzb3IoY29udGV4dCwgKmNvbnN0cnVjdGlvbkRhdGEpKTsKIH0KIAogQXVkaW9Xb3JrbGV0UHJv
Y2Vzc29yOjp+QXVkaW9Xb3JrbGV0UHJvY2Vzc29yKCkgPSBkZWZhdWx0OwogCi1BdWRpb1dvcmts
ZXRQcm9jZXNzb3I6OkF1ZGlvV29ya2xldFByb2Nlc3Nvcihjb25zdCBBdWRpb1dvcmtsZXRQcm9j
ZXNzb3JDb25zdHJ1Y3Rpb25EYXRhJiBjb25zdHJ1Y3Rpb25EYXRhKQotICAgIDogbV9uYW1lKGNv
bnN0cnVjdGlvbkRhdGEubmFtZSgpKQorQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpBdWRpb1dvcmts
ZXRQcm9jZXNzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgQXVkaW9X
b3JrbGV0UHJvY2Vzc29yQ29uc3RydWN0aW9uRGF0YSYgY29uc3RydWN0aW9uRGF0YSkKKyAgICA6
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KQorICAgICwgbV9uYW1lKGNvbnN0cnVj
dGlvbkRhdGEubmFtZSgpKQogICAgICwgbV9wb3J0KGNvbnN0cnVjdGlvbkRhdGEucG9ydCgpKQog
ewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtMjM2LDcgKzIzNyw3IEBAIGJvb2wg
QXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpwcm9jZXNzKGNvbnMKICAgICBEaXNhYmxlTWFsbG9jUmVz
dHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlIGRpc2FibGVNYWxsb2NSZXN0cmljdGlvbnM7
CiAKICAgICBBU1NFUlQobV9wcm9jZXNzQ2FsbGJhY2spOwotICAgIGF1dG8mIGdsb2JhbE9iamVj
dCA9ICptX3Byb2Nlc3NDYWxsYmFjay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFs
T2JqZWN0ID0gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5nbG9iYWxPYmplY3QoKSk7CiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdC5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CiAKQEAgLTI0Nyw3ICsyNDgsNyBAQCBib29s
IEF1ZGlvV29ya2xldFByb2Nlc3Nvcjo6cHJvY2Vzcyhjb25zCiAgICAgYnVpbGRKU0FyZ3VtZW50
cyh2bSwgZ2xvYmFsT2JqZWN0LCBhcmdzLCBpbnB1dHMsIG91dHB1dHMsIHBhcmFtVmFsdWVzTWFw
KTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAg
ICBhdXRvIHJlc3VsdCA9IG1fcHJvY2Vzc0NhbGxiYWNrLT5pbnZva2VDYWxsYmFjayhqc1VuZGVm
aW5lZCgpLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm9jZXNzIiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayh2bSwgYXNPYmpl
Y3QobV9wcm9jZXNzQ2FsbGJhY2spLCBqc1VuZGVmaW5lZCgpLCBhcmdzLCBKU0NhbGxiYWNrRGF0
YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwcm9j
ZXNzIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsK
ICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZnbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9u
KTsKICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOwpAQCAtMjU5LDkgKzI2MCw5IEBAIGJv
b2wgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yOjpwcm9jZXNzKGNvbnMKICAgICByZXR1cm4gcmVzdWx0
LnRvQm9vbGVhbigmZ2xvYmFsT2JqZWN0KTsKIH0KIAotdm9pZCBBdWRpb1dvcmtsZXRQcm9jZXNz
b3I6OnNldFByb2Nlc3NDYWxsYmFjayhzdGQ6OnVuaXF1ZV9wdHI8SlNDYWxsYmFja0RhdGFTdHJv
bmc+JiYgcHJvY2Vzc0NhbGxiYWNrKQordm9pZCBBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnNldFBy
b2Nlc3NDYWxsYmFjayhKU09iamVjdCogcHJvY2Vzc0NhbGxiYWNrKQogewotICAgIG1fcHJvY2Vz
c0NhbGxiYWNrID0gV1RGTW92ZShwcm9jZXNzQ2FsbGJhY2spOworICAgIG1fcHJvY2Vzc0NhbGxi
YWNrID0geyBwcm9jZXNzQ2FsbGJhY2sgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXRQcm9jZXNz
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
V29ya2xldFByb2Nlc3Nvci5oCShyZXZpc2lvbiAyODgyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldFByb2Nlc3Nvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OSwxOSArNTksMjEgQEAgcHVibGljOgogCiAgICAgYm9vbCBwcm9jZXNzKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8QXVkaW9CdXM+PiYgaW5wdXRzLCBWZWN0b3I8UmVmPEF1ZGlvQnVzPj4mIG91dHB1
dHMsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9GbG9hdEFycmF5
Pj4mIHBhcmFtVmFsdWVzTWFwLCBib29sJiB0aHJld0V4Y2VwdGlvbik7CiAKLSAgICB2b2lkIHNl
dFByb2Nlc3NDYWxsYmFjayhzdGQ6OnVuaXF1ZV9wdHI8SlNDYWxsYmFja0RhdGFTdHJvbmc+JiYp
OworICAgIHZvaWQgc2V0UHJvY2Vzc0NhbGxiYWNrKEpTQzo6SlNPYmplY3QqKTsKIAorICAgIEpT
VmFsdWVJbldyYXBwZWRPYmplY3QmIHByb2Nlc3NDYWxsYmFja1dyYXBwZXIoKSB7IHJldHVybiBt
X3Byb2Nlc3NDYWxsYmFjazsgfQogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGpzSW5wdXRz
V3JhcHBlcigpIHsgcmV0dXJuIG1fanNJbnB1dHM7IH0KICAgICBKU1ZhbHVlSW5XcmFwcGVkT2Jq
ZWN0JiBqc091dHB1dHNXcmFwcGVyKCkgeyByZXR1cm4gbV9qc091dHB1dHM7IH0KICAgICBKU1Zh
bHVlSW5XcmFwcGVkT2JqZWN0JiBqc1BhcmFtVmFsdWVzV3JhcHBlcigpIHsgcmV0dXJuIG1fanNQ
YXJhbVZhbHVlczsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEF1ZGlvV29ya2xldFByb2Nl
c3Nvcihjb25zdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhJik7CisgICAg
ZXhwbGljaXQgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBBdWRpb1dvcmtsZXRQcm9jZXNzb3JDb25zdHJ1Y3Rpb25EYXRhJik7CiAgICAgdm9pZCBi
dWlsZEpTQXJndW1lbnRzKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpNYXJr
ZWRBcmd1bWVudEJ1ZmZlckJhc2UmLCBjb25zdCBWZWN0b3I8UmVmUHRyPEF1ZGlvQnVzPj4mIGlu
cHV0cywgVmVjdG9yPFJlZjxBdWRpb0J1cz4+JiBvdXRwdXRzLCBjb25zdCBIYXNoTWFwPFN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRmxvYXRBcnJheT4+JiBwYXJhbVZhbHVlc01hcCk7CiAK
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAg
ICAgU3RyaW5nIG1fbmFtZTsKICAgICBSZWY8TWVzc2FnZVBvcnQ+IG1fcG9ydDsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SlNDYWxsYmFja0RhdGFTdHJvbmc+IG1fcHJvY2Vzc0NhbGxiYWNrOworICAg
IEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9wcm9jZXNzQ2FsbGJhY2s7CiAgICAgSlNWYWx1ZUlu
V3JhcHBlZE9iamVjdCBtX2pzSW5wdXRzOwogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgbV9q
c091dHB1dHM7CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX2pzUGFyYW1WYWx1ZXM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvV29ya2xldFByb2Nlc3NvckN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRp
b1dvcmtsZXRQcm9jZXNzb3JDdXN0b20uY3BwCShyZXZpc2lvbiAyODgyNjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvV29ya2xldFByb2Nlc3NvckN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4K
IHZvaWQgSlNBdWRpb1dvcmtsZXRQcm9jZXNzb3I6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFZp
c2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgYXV0byYgcHJvY2Vzc29yID0gd3JhcHBlZCgpOworICAg
IHByb2Nlc3Nvci5wcm9jZXNzQ2FsbGJhY2tXcmFwcGVyKCkudmlzaXQodmlzaXRvcik7CiAgICAg
cHJvY2Vzc29yLmpzSW5wdXRzV3JhcHBlcigpLnZpc2l0KHZpc2l0b3IpOwogICAgIHByb2Nlc3Nv
ci5qc091dHB1dHNXcmFwcGVyKCkudmlzaXQodmlzaXRvcik7CiAgICAgcHJvY2Vzc29yLmpzUGFy
YW1WYWx1ZXNXcmFwcGVyKCkudmlzaXQodmlzaXRvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCShyZXZpc2lvbiAyODgyNjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM5LDEyICszOSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiAvLyBodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI2NhbGwtYS11c2Vy
LW9iamVjdHMtb3BlcmF0aW9uCi1KU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFj
ayhKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogY2FsbGJhY2ssIEpT
VmFsdWUgdGhpc1ZhbHVlLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJhY2tUeXBl
IG1ldGhvZCwgUHJvcGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+JiByZXR1cm5lZEV4Y2VwdGlvbikKK0pTVmFsdWUgSlNDYWxsYmFja0RhdGE6Omludm9rZUNh
bGxiYWNrKFZNJiB2bSwgSlNPYmplY3QqIGNhbGxiYWNrLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTWFy
a2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIENhbGxiYWNrVHlwZSBtZXRob2QsIFByb3BlcnR5TmFt
ZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRp
b24pCiB7CiAgICAgQVNTRVJUKGNhbGxiYWNrKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0ID0gJmdsb2JhbE9iamVjdDsKLSAgICBWTSYgdm0gPSBsZXhpY2FsR2xv
YmFsT2JqZWN0LT52bSgpOworICAgIC8vIGh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8j
cmVmLWZvci1wcmVwYXJlLXRvLXJ1bi1zY3JpcHQgbWFrZXMgY2FsbGJhY2sncyBbW1JlYWxtXV0g
YSBydW5uaW5nIEphdmFTY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQsCisgICAgLy8gd2hpY2ggaXMg
dXNlZCBmb3IgY3JlYXRpbmcgVHlwZUVycm9yIG9iamVjdHM6IGh0dHBzOi8vdGMzOS5lcy9lY21h
MjYyLyNzZWMtZWNtYXNjcmlwdC1mdW5jdGlvbi1vYmplY3RzLWNhbGwtdGhpc2FyZ3VtZW50LWFy
Z3VtZW50c2xpc3QgKHN0ZXAgNCkuCisgICAgSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QgPSBjYWxsYmFjay0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uOwpAQCAtODAsNyAr
ODEsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhKCiAgICAgQVNT
RVJUKCFmdW5jdGlvbi5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChjYWxsRGF0YS50eXBlICE9IENh
bGxEYXRhOjpUeXBlOjpOb25lKTsKIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQgPSBnbG9iYWxPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhp
Y2FsR2xvYmFsT2JqZWN0KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIC8vIFdlIHdp
bGwgZmFpbCB0byBnZXQgdGhlIGNvbnRleHQgaWYgdGhlIGZyYW1lIGhhcyBiZWVuIGRldGFjaGVk
LgogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAkocmV2aXNpb24gMjg4
MjYyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09i
amVjdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgpAQCAtNDcsMTMgKzQ2
LDEwIEBAIGNsYXNzIEpTQ2FsbGJhY2tEYXRhIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIENh
bGxiYWNrVHlwZSB7IEZ1bmN0aW9uLCBPYmplY3QsIEZ1bmN0aW9uT3JPYmplY3QgfTsKIAotICAg
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVybiBtX2dsb2JhbE9iamVj
dC5nZXQoKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBKU0M6OkpTVmFsdWUgaW52b2tl
Q2FsbGJhY2soSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0M6OkpTVmFsdWUg
dGhpc1ZhbHVlLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiwgQ2FsbGJhY2tUeXBlLCBKU0M6
OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0
dXJuZWRFeGNlcHRpb24pOwogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgSlNDYWxsYmFja0Rh
dGEoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICAgICAgOiBtX2dsb2JhbE9i
amVjdChnbG9iYWxPYmplY3QpCi0gICAgewotICAgIH0KKyAgICBleHBsaWNpdCBKU0NhbGxiYWNr
RGF0YSgpID0gZGVmYXVsdDsKICAgICAKICAgICB+SlNDYWxsYmFja0RhdGEoKQogICAgIHsKQEAg
LTYxLDExICs1Nyw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgQVNTRVJUKG1fdGhyZWFkLnB0cigp
ID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKICAgICB9Ci0gICAgCi0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0RPTUdsb2JhbE9i
amVjdCYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBK
U0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiwgQ2FsbGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5TmFt
ZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRp
b24pOwogCiBwcml2YXRlOgotICAgIEpTQzo6V2VhazxKU0RPTUdsb2JhbE9iamVjdD4gbV9nbG9i
YWxPYmplY3Q7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBSZWY8VGhyZWFkPiBtX3RocmVhZCB7
IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKQEAgLTczLDIxICs2NiwxNiBAQCBwcml2YXRl
OgogCiBjbGFzcyBKU0NhbGxiYWNrRGF0YVN0cm9uZyA6IHB1YmxpYyBKU0NhbGxiYWNrRGF0YSB7
CiBwdWJsaWM6Ci0gICAgSlNDYWxsYmFja0RhdGFTdHJvbmcoSlNDOjpKU09iamVjdCogY2FsbGJh
Y2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHZvaWQqID0gbnVsbHB0cikKLSAg
ICAgICAgOiBKU0NhbGxiYWNrRGF0YShnbG9iYWxPYmplY3QpCi0gICAgICAgICwgbV9jYWxsYmFj
ayhnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxiYWNrKQorICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25n
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgdm9pZCogPSBudWxscHRyKQor
ICAgICAgICA6IG1fY2FsbGJhY2sodm0sIGNhbGxiYWNrKQogICAgIHsKICAgICB9CiAKICAgICBK
U0M6OkpTT2JqZWN0KiBjYWxsYmFjaygpIHsgcmV0dXJuIG1fY2FsbGJhY2suZ2V0KCk7IH0KIAot
ICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBK
U0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFja1R5cGUgY2FsbGJhY2tUeXBl
LCBKU0M6OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiYgcmV0dXJuZWRFeGNlcHRpb24pCisgICAgSlNDOjpKU1ZhbHVlIGludm9rZUNhbGxiYWNrKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVm
ZmVyJiBhcmdzLCBDYWxsYmFja1R5cGUgY2FsbGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5TmFtZSBm
dW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24p
CiAgICAgewotICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3Qo
KTsKLSAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4geyB9Owot
Ci0gICAgICAgIHJldHVybiBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soKmdsb2JhbE9i
amVjdCwgY2FsbGJhY2soKSwgdGhpc1ZhbHVlLCBhcmdzLCBjYWxsYmFja1R5cGUsIGZ1bmN0aW9u
TmFtZSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgICAgICByZXR1cm4gSlNDYWxsYmFja0RhdGE6
Omludm9rZUNhbGxiYWNrKHZtLCBjYWxsYmFjaygpLCB0aGlzVmFsdWUsIGFyZ3MsIGNhbGxiYWNr
VHlwZSwgZnVuY3Rpb25OYW1lLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgfQogCiBwcml2YXRl
OgpAQCAtOTYsMjEgKzg0LDE2IEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTQ2FsbGJhY2tEYXRhV2Vh
ayA6IHB1YmxpYyBKU0NhbGxiYWNrRGF0YSB7CiBwdWJsaWM6Ci0gICAgSlNDYWxsYmFja0RhdGFX
ZWFrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCB2b2lkKiBvd25lcikKLSAgICAgICAgOiBKU0NhbGxiYWNrRGF0YShnbG9iYWxPYmplY3Qp
Ci0gICAgICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaywgJm1fd2Vha093bmVyLCBvd25lcikKKyAg
ICBKU0NhbGxiYWNrRGF0YVdlYWsoSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCB2
b2lkKiBvd25lcikKKyAgICAgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrLCAmbV93ZWFrT3duZXIs
IG93bmVyKQogICAgIHsKICAgICB9CiAKICAgICBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaygpIHsg
cmV0dXJuIG1fY2FsbGJhY2suZ2V0KCk7IH0KIAotICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxs
YmFjayhKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiBh
cmdzLCBDYWxsYmFja1R5cGUgY2FsbGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5TmFtZSBmdW5jdGlv
bk5hbWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCisgICAg
SlNDOjpKU1ZhbHVlIGludm9rZUNhbGxiYWNrKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdGhp
c1ZhbHVlLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFja1R5cGUgY2Fs
bGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCiAgICAgewotICAgICAgICBhdXRvKiBnbG9i
YWxPYmplY3QgPSB0aGlzLT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgaWYgKCFnbG9iYWxPYmpl
Y3QpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIHJldHVybiBKU0NhbGxiYWNr
RGF0YTo6aW52b2tlQ2FsbGJhY2soKmdsb2JhbE9iamVjdCwgY2FsbGJhY2soKSwgdGhpc1ZhbHVl
LCBhcmdzLCBjYWxsYmFja1R5cGUsIGZ1bmN0aW9uTmFtZSwgcmV0dXJuZWRFeGNlcHRpb24pOwor
ICAgICAgICByZXR1cm4gSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKHZtLCBjYWxsYmFj
aygpLCB0aGlzVmFsdWUsIGFyZ3MsIGNhbGxiYWNrVHlwZSwgZnVuY3Rpb25OYW1lLCByZXR1cm5l
ZEV4Y2VwdGlvbik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4gdm9p
ZCB2aXNpdEpTRnVuY3Rpb24oVmlzaXRvciYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0Q2FsbGJhY2tzLmgJKHJldmlzaW9uIDI4ODI2MikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydENhbGxiYWNrcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVj
dCBDb252ZXJ0ZXI8SUQKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgY29udmVyc2lvbkhhc1Np
ZGVFZmZlY3RzID0gZmFsc2U7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb25UaHJv
d2VyID0gRGVmYXVsdEV4Y2VwdGlvblRocm93ZXI+Ci0gICAgc3RhdGljIFJlZlB0cjxUPiBjb252
ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSB2YWx1ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgRXhjZXB0aW9uVGhyb3dl
ciYmIGV4Y2VwdGlvblRocm93ZXIgPSBFeGNlcHRpb25UaHJvd2VyKCkpCisgICAgc3RhdGljIFJl
ZlB0cjxUPiBjb252ZXJ0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSwgRXhjZXB0aW9uVGhyb3dlciYmIGV4Y2VwdGlvblRocm93ZXIg
PSBFeGNlcHRpb25UaHJvd2VyKCkpCiAgICAgewogICAgICAgICBKU0M6OlZNJiB2bSA9IEpTQzo6
Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CkBAIC00Niw3ICs0Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBDb252ZXJ0ZXI8SUQKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9CiAKLSAgICAgICAgcmV0dXJuIFQ6OmNyZWF0ZShKU0M6OmFzT2JqZWN0KHZhbHVlKSwgJmds
b2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBUOjpjcmVhdGUodm0sIEpTQzo6YXNPYmplY3Qo
dmFsdWUpKTsKICAgICB9CiB9OwogCkBAIC03MCw3ICs3MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBKU0NvbnZlcnRlcjwKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENv
bnZlcnRlcjxJRExDYWxsYmFja0ludGVyZmFjZTxUPj4gOiBEZWZhdWx0Q29udmVydGVyPElETENh
bGxiYWNrSW50ZXJmYWNlPFQ+PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRXhjZXB0aW9uVGhy
b3dlciA9IERlZmF1bHRFeGNlcHRpb25UaHJvd2VyPgotICAgIHN0YXRpYyBSZWZQdHI8VD4gY29u
dmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgdmFsdWUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEV4Y2VwdGlvblRocm93
ZXImJiBleGNlcHRpb25UaHJvd2VyID0gRXhjZXB0aW9uVGhyb3dlcigpKQorICAgIHN0YXRpYyBS
ZWZQdHI8VD4gY29udmVydChKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgdmFsdWUsIEV4Y2VwdGlvblRocm93ZXImJiBleGNlcHRpb25UaHJvd2Vy
ID0gRXhjZXB0aW9uVGhyb3dlcigpKQogICAgIHsKICAgICAgICAgSlNDOjpWTSYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODAsNyArODAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ29udmVydGVyPElECiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgfQogCi0gICAgICAgIHJldHVybiBUOjpjcmVhdGUoSlNDOjphc09iamVjdCh2YWx1ZSksICZn
bG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gVDo6Y3JlYXRlKHZtLCBKU0M6OmFzT2JqZWN0
KHZhbHVlKSk7CiAgICAgfQogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0WFBhdGhOU1Jlc29sdmVyLmgJKHJldmlzaW9uIDI4
ODI2MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFhQYXRoTlNS
ZXNvbHZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IENvbnZlcnRlcjxJRExJbnRlcmZhY2UKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8
SlNYUGF0aE5TUmVzb2x2ZXI+KHZtKSkKICAgICAgICAgICAgIHJldHVybiAmSlNDOjpqc0Nhc3Q8
SlNYUGF0aE5TUmVzb2x2ZXIqPihvYmplY3QpLT53cmFwcGVkKCk7CiAKLSAgICAgICAgcmV0dXJu
IEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpjcmVhdGUob2JqZWN0LCBKU0M6OmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJldHVybiBK
U0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRlKHZtLCBvYmplY3QpOwogICAgIH0KIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAJKHJldmlzaW9uIDI4ODI2MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk0LDggKzE5NCw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTih3aGVuU2lnbmFsQWJvcnQKICAgICBpZiAoVU5MSUtFTFko
IWFib3J0U2lnbmFsKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKEpT
Qzo6SlNWYWx1ZTo6SlNGYWxzZSkpOwogCi0gICAgYXV0byoganNET01HbG9iYWxPYmplY3QgPSBK
U0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCk7Ci0gICAgUmVmPEFi
b3J0QWxnb3JpdGhtPiBhYm9ydEFsZ29yaXRobSA9IEpTQWJvcnRBbGdvcml0aG06OmNyZWF0ZShj
YWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLmdldE9iamVjdCgpLCBqc0RPTUdsb2JhbE9i
amVjdCk7CisgICAgUmVmPEFib3J0QWxnb3JpdGhtPiBhYm9ydEFsZ29yaXRobSA9IEpTQWJvcnRB
bGdvcml0aG06OmNyZWF0ZSh2bSwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS5nZXRP
YmplY3QoKSk7CiAKICAgICBib29sIHJlc3VsdCA9IEFib3J0U2lnbmFsOjp3aGVuU2lnbmFsQWJv
cnRlZChhYm9ydFNpZ25hbC0+d3JhcHBlZCgpLCBXVEZNb3ZlKGFib3J0QWxnb3JpdGhtKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQgPyBKU1ZhbHVlKEpTQzo6SlNWYWx1ZTo6
SlNUcnVlKSA6IEpTVmFsdWUoSlNDOjpKU1ZhbHVlOjpKU0ZhbHNlKSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lv
biAyODgyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNiw3ICs2MDYsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNET01XCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
Y29uc3RydWN0RW1wdHlPYmplY3QobGV4aWNhbEdsb2JhbE9iamVjdCwgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSk7CiAgICAgfQogCi0gICAgYXV0byBjcmVh
dGlvbkNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpT
RGF0YWJhc2VDYWxsYmFjaz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1
bWVudCg0KSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7CisgICAg
YXV0byBjcmVhdGlvbkNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1
bmN0aW9uPEpTRGF0YWJhc2VDYWxsYmFjaz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCg0KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgewogICAgICAgICB0aHJvd0FyZ3VtZW50TXVz
dEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgNCwgImNyZWF0aW9u
Q2FsbGJhY2siLCAiV2luZG93IiwgIm9wZW5EYXRhYmFzZSIpOwogICAgIH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
cmV2aXNpb24gMjg4MjYyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTYzODQsOSArNjM4NCw5IEBAIHN1YiBH
ZW5lcmF0ZUNhbGxiYWNrSGVhZGVyQ29udGVudAogICAgIHB1c2goQCRjb250ZW50UmVmLCAicHVi
bGljOlxuIik7CiAKICAgICAjIFRoZSBzdGF0aWMgY3JlYXRlKCkgbWV0aG9kLgotICAgIHB1c2go
QCRjb250ZW50UmVmLCAiICAgIHN0YXRpYyBSZWY8JGNsYXNzTmFtZT4gY3JlYXRlKEpTQzo6SlNP
YmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7Cisg
ICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgc3RhdGljIFJlZjwkY2xhc3NOYW1lPiBjcmVhdGUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrKVxuIik7CiAgICAgcHVzaChAJGNv
bnRlbnRSZWYsICIgICAge1xuIik7Ci0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3ICR7Y2xhc3NOYW1lfShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7
XG4iKTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgJHtjbGFzc05hbWV9KHZtLCBjYWxsYmFjaykpO1xuIik7CiAgICAgcHVzaChAJGNvbnRlbnRS
ZWYsICIgICAgfVxuXG4iKTsKIAogICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9XG5c
biIpOwpAQCAtNjQyNyw3ICs2NDI3LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tIZWFkZXJDb250
ZW50CiAKICAgICBwdXNoKEAkY29udGVudFJlZiwgIlxucHJpdmF0ZTpcbiIpOwogCi0gICAgcHVz
aChAJGNvbnRlbnRSZWYsICIgICAgJHtjbGFzc05hbWV9KEpTQzo6SlNPYmplY3QqLCBKU0RPTUds
b2JhbE9iamVjdCopO1xuXG4iKTsKKyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAke2NsYXNz
TmFtZX0oSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrKTtcblxuIik7CiAKICAgICBp
ZiAoJGludGVyZmFjZU9yQ2FsbGJhY2stPmV4dGVuZGVkQXR0cmlidXRlcy0+e0lzV2Vha0NhbGxi
YWNrfSkgewogICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBib29sIGhhc0NhbGxiYWNr
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9kYXRhICYmIG1fZGF0YS0+Y2FsbGJhY2soKTsgfVxu
XG4iKTsKQEAgLTY0NTYsOSArNjQ1Niw5IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50
YXRpb25Db250ZW4KICAgICAkaW5jbHVkZXNSZWYtPnsiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
In0gPSAxOwogCiAgICAgIyBDb25zdHJ1Y3RvcgotICAgIHB1c2goQCRjb250ZW50UmVmLCAiJHtj
bGFzc05hbWV9Ojoke2NsYXNzTmFtZX0oSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KVxuIik7Ci0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgOiAk
e25hbWV9KGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKVxuIik7Ci0gICAg
cHVzaChAJGNvbnRlbnRSZWYsICIgICAgLCBtX2RhdGEobmV3ICR7Y2FsbGJhY2tEYXRhVHlwZX0o
Y2FsbGJhY2ssIGdsb2JhbE9iamVjdCwgdGhpcykpXG4iKTsKKyAgICBwdXNoKEAkY29udGVudFJl
ZiwgIiR7Y2xhc3NOYW1lfTo6JHtjbGFzc05hbWV9KFZNJiB2bSwgSlNPYmplY3QqIGNhbGxiYWNr
KVxuIik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgOiAke25hbWV9KGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGNhbGxiYWNrLT5nbG9iYWxPYmplY3Qodm0pKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKVxuIik7CisgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgLCBtX2RhdGEo
bmV3ICR7Y2FsbGJhY2tEYXRhVHlwZX0odm0sIGNhbGxiYWNrLCB0aGlzKSlcbiIpOwogICAgIHB1
c2goQCRjb250ZW50UmVmLCAie1xuIik7CiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJ9XG5cbiIp
OwogCkBAIC02NTYxLDE1ICs2NTYxLDExIEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50
YXRpb25Db250ZW4KICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiJHtuYXRpdmVSZXR1
cm5UeXBlfSAke2NsYXNzTmFtZX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9KCIgLiBq
b2luKCIsICIsIEBhcmd1bWVudHMpIC4gIilcbiIpOwogICAgICAgICAgICAgcHVzaChAJGNvbnRl
bnRSZWYsICJ7XG4iKTsKIAotICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBuZWVkZWQgZm9y
IE5vZGVGaWx0ZXIsIHdoaWNoIHdvcmtzIGV2ZW4gZm9yIGRpc2Nvbm5lY3RlZCBpZnJhbWVzLiBX
ZSBzaG91bGQgaW52ZXN0aWdhdGUKLSAgICAgICAgICAgICMgaWYgdGhhdCBiZWhhdmlvciBpcyBu
ZWVkZWQgZm9yIG90aGVyIGNhbGxiYWNrcy4KLSAgICAgICAgICAgIGlmICghJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2tpcENhbGxiYWNrSW52b2tlQ2hlY2t9KSB7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygp
KVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgICAgIHJldHVy
biBDYWxsYmFja1Jlc3VsdFR5cGU6OlVuYWJsZVRvRXhlY3V0ZTtcblxuIik7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBpZiAoIWNhbkludm9rZUNh
bGxiYWNrKCkpXG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICAgICBy
ZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpVbmFibGVUb0V4ZWN1dGU7XG5cbiIpOwogCiAgICAg
ICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBSZWY8JGNsYXNzTmFtZT4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7XG5cbiIpOwotICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAg
YXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9i
amVjdCgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgYXV0byYg
dm0gPSBnbG9iYWxPYmplY3Qudm0oKTtcblxuIik7CiAgICAgICAgICAgICBwdXNoKEAkY29udGVu
dFJlZiwgIiAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7XG4iKTsKIApAQCAtNjU4NywxMCArNjU4
MywxMCBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uQ29udGVuCiAKICAgICAg
ICAgICAgIG15ICRjYWxsYmFja0ludm9jYXRpb247CiAgICAgICAgICAgICBpZiAocmVmKCRpbnRl
cmZhY2VPckNhbGxiYWNrKSBlcSAiSURMQ2FsbGJhY2tGdW5jdGlvbiIpIHsKLSAgICAgICAgICAg
ICAgICAkY2FsbGJhY2tJbnZvY2F0aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1Zh
bHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRp
ZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbikiOworICAgICAgICAgICAgICAgICRjYWxsYmFja0lu
dm9jYXRpb24gPSAibV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBK
U0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1
cm5lZEV4Y2VwdGlvbikiOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBt
eSAkY2FsbGJhY2tUeXBlID0gJG51bU9wZXJhdGlvbnMgPiAxID8gIk9iamVjdCIgOiAiRnVuY3Rp
b25Pck9iamVjdCI7Ci0gICAgICAgICAgICAgICAgJGNhbGxiYWNrSW52b2NhdGlvbiA9ICJtX2Rh
dGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxi
YWNrVHlwZTo6JHtjYWxsYmFja1R5cGV9LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBcIiR7
ZnVuY3Rpb25OYW1lfVwiKSwgcmV0dXJuZWRFeGNlcHRpb24pIjsKKyAgICAgICAgICAgICAgICAk
Y2FsbGJhY2tJbnZvY2F0aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1
ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6JHtjYWxsYmFja1R5cGV9LCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBcIiR7ZnVuY3Rpb25OYW1lfVwiKSwgcmV0dXJuZWRF
eGNlcHRpb24pIjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCRvcGVyYXRpb24t
PnR5cGUtPm5hbWUgZXEgInVuZGVmaW5lZCIpIHsKQEAgLTcwNDEsOCArNzAzNyw2IEBAIHN1YiBK
U1ZhbHVlVG9OYXRpdmVET01Db252ZXJ0TmVlZHNHbG9iYWwKIHsKICAgICBteSAkdHlwZSA9IHNo
aWZ0OwogCi0gICAgcmV0dXJuIDEgaWYgJGNvZGVHZW5lcmF0b3ItPklzQ2FsbGJhY2tJbnRlcmZh
Y2UoJHR5cGUpOwotICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrRnVu
Y3Rpb24oJHR5cGUpOwogICAgIHJldHVybiBKU1ZhbHVlVG9OYXRpdmVET01Db252ZXJ0TmVlZHNH
bG9iYWxPYmplY3QoQHskdHlwZS0+c3VidHlwZXN9WzFdKSBpZiAkY29kZUdlbmVyYXRvci0+SXNS
ZWNvcmRUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiU2NoZWR1
bGVkQWN0aW9uIjsKICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCShyZXZpc2lvbiAyODgyNjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgkod29y
a2luZyBjb3B5KQpAQCAtNDg3LDkgKzQ4Nyw2IEBACiAgICAgICAgICAgICAidmFsdWVzIjogWyIq
Il0sCiAgICAgICAgICAgICAic3VwcG9ydHNDb25qdW5jdGlvbiI6IHRydWUKICAgICAgICAgfSwK
LSAgICAgICAgIlNraXBDYWxsYmFja0ludm9rZUNoZWNrIjogewotICAgICAgICAgICAgImNvbnRl
eHRzQWxsb3dlZCI6IFsib3BlcmF0aW9uIiwgImNhbGxiYWNrLWZ1bmN0aW9uIl0KLSAgICAgICAg
fSwKICAgICAgICAgIlNraXBWVGFibGVWYWxpZGF0aW9uIjogewogICAgICAgICAgICAgImNvbnRl
eHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0KICAgICAgICAgfSwKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tJbnRlcmZhY2UuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJh
Y2tJbnRlcmZhY2UuaWRsCShyZXZpc2lvbiAyODgyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrSW50ZXJmYWNlLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsNSBAQCBkaWN0aW9uYXJ5IFRlc3RDYWxsYmFja0ludGVyZmFjZURpY3Rp
b25hCiAgICAgdW5kZWZpbmVkIGNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzKGxvbmcgbG9uZ1Bh
cmFtLCBUZXN0Tm9kZSB0ZXN0Tm9kZVBhcmFtKTsKICAgICBET01TdHJpbmcgY2FsbGJhY2tXaXRo
QVJldHVyblZhbHVlKCk7CiAgICAgW1JldGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyBjYWxsYmFj
a1RoYXRSZXRocm93c0V4Y2VwdGlvbnMoVGVzdENhbGxiYWNrSW50ZXJmYWNlRW51bSBlbnVtUGFy
YW0pOwotICAgIFtTa2lwQ2FsbGJhY2tJbnZva2VDaGVja10gRE9NU3RyaW5nIGNhbGxiYWNrVGhh
dFNraXBzSW52b2tlQ2hlY2soVGVzdENhbGxiYWNrSW50ZXJmYWNlRGljdGlvbmFyeSBkaWN0aW9u
YXJ5UGFyYW0pOwogICAgIFtDYWxsYmFja1RoaXNPYmplY3Q9VGVzdE5vZGVdIERPTVN0cmluZyBj
YWxsYmFja1dpdGhUaGlzT2JqZWN0KFRlc3RPYmogdGVzdE9ialBhcmFtKTsKIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyODgyNjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDkgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLUpTVGVzdENhbGxiYWNrRnVuY3Rpb246OkpT
VGVzdENhbGxiYWNrRnVuY3Rpb24oSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQotICAgIDogVGVzdENhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tE
YXRhU3Ryb25nKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QsIHRoaXMpKQorSlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbjo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbihWTSYgdm0sIEpTT2JqZWN0KiBjYWxsYmFj
aykKKyAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGNhbGxiYWNrLT5nbG9iYWxPYmplY3Qodm0pKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQor
ICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyh2bSwgY2FsbGJhY2ssIHRoaXMp
KQogewogfQogCkBAIC01Nyw3ICs1Nyw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERP
TVN0cmluZzo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9i
amVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsKICAgICBhdXRv
JiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpA
QCAtNjgsNyArNjgsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6Oklt
CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6
OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0
YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJh
Y2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAg
YXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1ZSwgYXJn
cywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6RnVuY3Rpb24sIElkZW50aWZpZXIoKSwg
cmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAg
ICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9u
KTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxi
YWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAyODgyNjIpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbiBmaW5hbCA6IHB1YmxpYyBUZXN0
Q2FsbGJhY2tGdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
PiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbihjYWxsYmFj
aywgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENh
bGxiYWNrRnVuY3Rpb24odm0sIGNhbGxiYWNrKSk7CiAgICAgfQogCiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KQEAgLTQz
LDcgKzQzLDcgQEAgcHVibGljOgogICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0
cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExMb25nOjpQ
YXJhbWV0ZXJUeXBlIGFyZ3VtZW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBKU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uKEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAg
IEpTVGVzdENhbGxiYWNrRnVuY3Rpb24oSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNr
KTsKIAogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25S
ZXRocm93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuY3BwCShyZXZpc2lvbiAyODgy
NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvblJldGhyb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw5IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1KU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uUmV0aHJvdzo6SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3coSlNPYmpl
Y3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogVGVz
dENhbGxiYWNrRnVuY3Rpb25SZXRocm93KGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQotICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywg
Z2xvYmFsT2JqZWN0LCB0aGlzKSkKK0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93OjpKU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdyhWTSYgdm0sIEpTT2JqZWN0KiBjYWxsYmFjaykKKyAg
ICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdyhqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihjYWxsYmFjay0+Z2xvYmFsT2JqZWN0KHZtKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcodm0sIGNhbGxiYWNrLCB0aGlz
KSkKIHsKIH0KIApAQCAtNjAsNyArNjAsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExE
T01TdHJpbmc6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3c+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+
Z2xvYmFsT2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKmpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOwog
ICAgIGF1dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7CkBAIC03MSw3ICs3MSw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0
cmluZzo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5ha2Vk
UHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0
ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9u
KTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1Zh
bHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRp
ZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7
CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
ICAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgcmV0
dXJuZWRFeGNlcHRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rp
b25SZXRocm93LmgJKHJldmlzaW9uIDI4ODI2MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw5ICsyOSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cgZmluYWwgOiBwdWJsaWMgVGVzdENhbGxiYWNrRnVu
Y3Rpb25SZXRocm93IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb25SZXRocm93PiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uUmV0aHJvdz4gY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaykK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrRnVuY3Rp
b25SZXRocm93KGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3codm0sIGNhbGxiYWNrKSk7CiAg
ICAgfQogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7IH0KQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIENhbGxiYWNr
UmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVF
dmVudCh0eXBlbmFtZSBJRExTZXF1ZW5jZTxJRExMb25nPjo6UGFyYW1ldGVyVHlwZSBhcmd1bWVu
dCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhy
b3coSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvblJldGhyb3coSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrKTsKIAog
ICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7CiB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhp
c09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5jcHAJKHJldmlz
aW9uIDI4ODI2MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw5ICszNCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCi1KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3Q6OkpTVGVzdENhbGxiYWNr
RnVuY3Rpb25XaXRoVGhpc09iamVjdChKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2Jq
ZWN0KGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9kYXRh
KG5ldyBKU0NhbGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0LCB0aGlzKSkK
K0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdDo6SlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbldpdGhUaGlzT2JqZWN0KFZNJiB2bSwgSlNPYmplY3QqIGNhbGxiYWNrKQorICAgIDogVGVz
dENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihjYWxsYmFjay0+Z2xvYmFsT2JqZWN0KHZtKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
KyAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcodm0sIGNhbGxiYWNrLCB0aGlz
KSkKIHsKIH0KIApAQCAtNjEsNyArNjEsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExV
bmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2Jq
ZWN0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpt
X2RhdGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVj
dCgpKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwpAQCAtNzIsNyArNzIsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJ
RExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAg
ICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9kYXRh
LT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFj
a1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBt
X2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9u
KTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9u
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVy
biBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRo
aXNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmgJKHJldmlzaW9u
IDI4ODI2MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
OSArMjksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb25XaXRoVGhpc09iamVjdCBmaW5hbCA6IHB1YmxpYyBUZXN0Q2FsbGJhY2tGdW5jdGlvbldp
dGhUaGlzT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb25XaXRoVGhpc09iamVjdD4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBSZWY8SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0PiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNPYmpl
Y3QqIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0
Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0KGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhU
aGlzT2JqZWN0KHZtLCBjYWxsYmFjaykpOwogICAgIH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CkBAIC00Myw3ICs0
Myw3IEBAIHB1YmxpYzoKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6
OkltcGxlbWVudGF0aW9uVHlwZT4gaGFuZGxlRXZlbnQodHlwZW5hbWUgSURMSW50ZXJmYWNlPFRl
c3ROb2RlPjo6UGFyYW1ldGVyVHlwZSB0aGlzT2JqZWN0LCB0eXBlbmFtZSBJRExTZXF1ZW5jZTxJ
RExJbnRlcmZhY2U8VGVzdE5vZGU+Pjo6UGFyYW1ldGVyVHlwZSBwYXJhbWV0ZXIpIG92ZXJyaWRl
OwogCiBwcml2YXRlOgotICAgIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdChK
U0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqKTsKKyAgICBKU1Rlc3RDYWxsYmFja0Z1
bmN0aW9uV2l0aFRoaXNPYmplY3QoSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrKTsK
IAogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRo
VHlwZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmNwcAkocmV2aXNp
b24gMjg4MjYyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw5ICszNCw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwog
Ci1KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzOjpKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uV2l0aFR5cGVkZWZzKEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKLSAgICA6IFRlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzKGdsb2Jh
bE9iamVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9kYXRhKG5ldyBKU0Nh
bGxiYWNrRGF0YVN0cm9uZyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0LCB0aGlzKSkKK0pTVGVzdENh
bGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnM6OkpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlw
ZWRlZnMoVk0mIHZtLCBKU09iamVjdCogY2FsbGJhY2spCisgICAgOiBUZXN0Q2FsbGJhY2tGdW5j
dGlvbldpdGhUeXBlZGVmcyhqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihjYWxsYmFjay0+Z2xv
YmFsT2JqZWN0KHZtKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1fZGF0YShu
ZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcodm0sIGNhbGxiYWNrLCB0aGlzKSkKIHsKIH0KIApAQCAt
NjEsNyArNjEsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAK
ICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcz4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgYXV0byYg
dm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAg
LTczLDcgKzczLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQog
ICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2so
dGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwg
SWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxs
YmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpG
dW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVy
bmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9i
amVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRU
eXBlOjpFeGNlcHRpb25UaHJvd247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmgJKHJldmlzaW9uIDI4ODI2MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0
aFR5cGVkZWZzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzIGZpbmFs
IDogcHVibGljIFRlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnM+IGNyZWF0ZShK
U0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICBzdGF0aWMgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnM+IGNyZWF0
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU09iamVjdCogY2FsbGJhY2spCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzKGNh
bGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyh2bSwgY2FsbGJhY2spKTsKICAgICB9CiAK
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsgfQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgQ2FsbGJhY2tSZXN1bHQ8
dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbXBsZW1lbnRhdGlvblR5cGU+IGhhbmRsZUV2ZW50KHR5
cGVuYW1lIElETFNlcXVlbmNlPElETE51bGxhYmxlPElETExvbmc+Pjo6UGFyYW1ldGVyVHlwZSBz
ZXF1ZW5jZUFyZywgdHlwZW5hbWUgSURMTG9uZzo6UGFyYW1ldGVyVHlwZSBsb25nQXJnKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKLSAgICBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZz
KEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdENhbGxiYWNr
RnVuY3Rpb25XaXRoVHlwZWRlZnMoSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrKTsK
IAogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7CiB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiAyODgyNjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsOSArMTIwLDkgQEAgdGVtcGxhdGU8PiBUZXN0Q2Fs
bGJhY2tJbnRlcmZhY2U6OkRpY3RpbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUpTVGVzdENh
bGxiYWNrSW50ZXJmYWNlOjpKU1Rlc3RDYWxsYmFja0ludGVyZmFjZShKU09iamVjdCogY2FsbGJh
Y2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgOiBUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2UoZ2xvYmFsT2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBt
X2RhdGEobmV3IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QsIHRo
aXMpKQorSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkpTVGVzdENhbGxiYWNrSW50ZXJmYWNlKFZN
JiB2bSwgSlNPYmplY3QqIGNhbGxiYWNrKQorICAgIDogVGVzdENhbGxiYWNrSW50ZXJmYWNlKGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGNhbGxiYWNrLT5nbG9iYWxPYmplY3Qodm0pKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICwgbV9kYXRhKG5ldyBKU0NhbGxiYWNrRGF0YVN0
cm9uZyh2bSwgY2FsbGJhY2ssIHRoaXMpKQogewogfQogCkBAIC0xODMsNyArMTgzLDcgQEAgQ2Fs
bGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogCiAgICAgUmVmPEpTVGVzdENh
bGxiYWNrSW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2Jh
bE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVj
dCA9ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
Pmdsb2JhbE9iamVjdCgpKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtMTkzLDcgKzE5Myw3IEBAIENhbGxiYWNrUmVz
dWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZs
b3dlZCgpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlv
bjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFj
a0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
Y2FsbGJhY2tXaXRoTm9QYXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5p
bnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJh
Y2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhO
b1BhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24p
IHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5l
ZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlv
blRocm93bjsKQEAgLTIwOSw3ICsyMDksNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExV
bmRlZmluZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFs
T2JqZWN0KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGF1
dG8mIHZtID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7
CkBAIC0yMjAsNyArMjIwLDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVk
OjpJbQogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8
SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2Fs
bGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhBcnJheVBhcmFtIiks
IHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlz
VmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aEFycmF5UGFyYW0iKSwgcmV0dXJuZWRF
eGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRF
eGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAg
ICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAtMjM2LDcg
KzIzNiw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KIAogICAg
IFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAg
ICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRv
JiBnbG9iYWxPYmplY3QgPSAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmpl
Y3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTI0OCw3ICsyNDgsNyBA
QCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFh
cmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0
dXJuZWRFeGNlcHRpb247Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFy
Z3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtIiksIHJl
dHVybmVkRXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFs
dWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFt
IiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAg
ICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2Vw
dGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93
bjsKQEAgLTI2NCw3ICsyNjQsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmlu
ZWQ6OkltCiAKICAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2JqZWN0
KCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGF1dG8mIHZt
ID0gZ2xvYmFsT2JqZWN0LnZtKCk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CkBAIC0y
NzUsNyArMjc1LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQog
ICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2so
dGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhTdHJpbmdMaXN0IiksIHJldHVy
bmVkRXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUs
IGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrV2l0aFN0cmluZ0xpc3QiKSwgcmV0dXJuZWRFeGNlcHRp
b24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRp
b24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0
dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAtMjkxLDcgKzI5MSw3
IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW0KIAogICAgIFJlZjxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRv
JiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9i
YWxPYmplY3QgPSAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0o
KTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAgLTMwMiw3ICszMDIsNyBAQCBDYWxs
YmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhh
c092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRF
eGNlcHRpb247Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpT
Q2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgImNhbGxiYWNrV2l0aEJvb2xlYW4iKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1f
ZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6
OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJh
Y2tXaXRoQm9vbGVhbiIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhj
ZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwg
cmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpF
eGNlcHRpb25UaHJvd247CkBAIC0zMTgsNyArMzE4LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5h
bWUgSURMVW5kZWZpbmVkOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICptX2RhdGEt
Pmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsK
ICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sodm0pOwpAQCAtMzMwLDcgKzMzMCw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVu
ZGVmaW5lZDo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAogICAgIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmlu
dm9rZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlw
ZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tSZXF1aXJlc1Ro
aXNUb1Bhc3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJh
Y2sodm0sIHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bh
c3MiKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewog
ICAgICAgICByZXBvcnRFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHJldHVybmVkRXhj
ZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhy
b3duOwpAQCAtMzQ2LDcgKzM0Niw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0
cmluZzo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgYXV0byYg
dm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKQEAg
LTM1Niw3ICszNTYsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6Oklt
CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6
OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0
YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJh
Y2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja1dpdGhB
UmV0dXJuVmFsdWUiKSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIGF1dG8ganNSZXN1bHQgPSBt
X2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRh
OjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxi
YWNrV2l0aEFSZXR1cm5WYWx1ZSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVy
bmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9i
amVjdCwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRU
eXBlOjpFeGNlcHRpb25UaHJvd247CkBAIC0zNzUsNyArMzc1LDcgQEAgQ2FsbGJhY2tSZXN1bHQ8
dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbQogCiAgICAgUmVmPEpTVGVzdENhbGxiYWNrSW50ZXJm
YWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpt
X2RhdGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmdsb2JhbE9iamVj
dCgpKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgpOwogCiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2sodm0pOwpAQCAtMzg2LDcgKzM4Niw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1l
IElETERPTVN0cmluZzo6SW0KICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKIAog
ICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRv
IGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2Fs
bGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgImNhbGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0aW9ucyIpLCByZXR1cm5lZEV4Y2VwdGlvbik7
CisgICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodm0sIHRoaXNWYWx1
ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tUaGF0UmV0aHJvd3NFeGNlcHRpb25zIiksIHJldHVy
bmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIHRocm93RXhj
ZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCByZXR1cm5lZEV4Y2VwdGlv
bik7CkBAIC0zOTksMzMgKzM5OSw2IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0
cmluZzo6SW0KICAgICByZXR1cm4geyBXVEZNb3ZlKHJldHVyblZhbHVlKSB9OwogfQogCi1DYWxs
YmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhbGxiYWNrVGhhdFNraXBzSW52b2tlQ2hlY2sodHlwZW5h
bWUgSURMRGljdGlvbmFyeTxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkRpY3Rpb25hcnk+OjpQYXJh
bWV0ZXJUeXBlIGRpY3Rpb25hcnlQYXJhbSkKLXsKLSAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwotCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0g
Km1fZGF0YS0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0o
KTsKLQotICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKLSAgICBhdXRvJiBsZXhpY2FsR2xvYmFs
T2JqZWN0ID0gZ2xvYmFsT2JqZWN0OwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmlu
ZWQoKTsKLSAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHRv
SlM8SURMRGljdGlvbmFyeTxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkRpY3Rpb25hcnk+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIGRpY3Rpb25hcnlQYXJhbSkpOwotICAgIEFT
U0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwotCi0gICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIGF1dG8ganNSZXN1bHQgPSBtX2RhdGEtPmludm9r
ZUNhbGxiYWNrKHRoaXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tUaGF0U2tpcHNJbnZv
a2VDaGVjayIpLCByZXR1cm5lZEV4Y2VwdGlvbik7Ci0gICAgaWYgKHJldHVybmVkRXhjZXB0aW9u
KSB7Ci0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgcmV0dXJu
ZWRFeGNlcHRpb24pOwotICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRp
b25UaHJvd247Ci0gICAgIH0KLQotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4o
bGV4aWNhbEdsb2JhbE9iamVjdCwganNSZXN1bHQpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd24pOwotICAgIHJl
dHVybiB7IFdURk1vdmUocmV0dXJuVmFsdWUpIH07Ci19Ci0KIENhbGxiYWNrUmVzdWx0PHR5cGVu
YW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVy
ZmFjZTo6Y2FsbGJhY2tXaXRoVGhpc09iamVjdCh0eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVzdE5v
ZGU+OjpQYXJhbWV0ZXJUeXBlIHRoaXNPYmplY3QsIHR5cGVuYW1lIElETEludGVyZmFjZTxUZXN0
T2JqPjo6UGFyYW1ldGVyVHlwZSB0ZXN0T2JqUGFyYW0pCiB7CiAgICAgaWYgKCFjYW5JbnZva2VD
YWxsYmFjaygpKQpAQCAtNDMzLDcgKzQwNiw3IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElE
TERPTVN0cmluZzo6SW0KIAogICAgIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gcHJvdGVj
dGVkVGhpcygqdGhpcyk7CiAKLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqbV9kYXRhLT5nbG9i
YWxPYmplY3QoKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxPYmplY3QoKSk7CiAgICAg
YXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZt
KTsKQEAgLTQ0NCw3ICs0MTcsNyBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJp
bmc6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0byBqc1Jlc3VsdCA9
IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6
Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFj
a1dpdGhUaGlzT2JqZWN0IiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBhdXRvIGpzUmVzdWx0
ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh2bSwgdGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNr
RGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJj
YWxsYmFja1dpdGhUaGlzT2JqZWN0IiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0
dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3Vs
dFR5cGU6OkV4Y2VwdGlvblRocm93bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVy
ZmFjZS5oCShyZXZpc2lvbiAyODgyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsOSArMzMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpTVGVzdENhbGxiYWNr
SW50ZXJmYWNlIGZpbmFsIDogcHVibGljIFRlc3RDYWxsYmFja0ludGVyZmFjZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4gY3JlYXRlKEpTQzo6SlNP
YmplY3QqIGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0
YXRpYyBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlND
OjpKU09iamVjdCogY2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZShjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlKHZtLCBjYWxs
YmFjaykpOwogICAgIH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CkBAIC01NCwxMSArNTQsMTAgQEAgcHVibGljOgog
ICAgIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFVuZGVmaW5lZDo6SW1wbGVtZW50YXRpb25U
eXBlPiBjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyh0eXBlbmFtZSBJRExMb25nOjpQYXJhbWV0
ZXJUeXBlIGxvbmdQYXJhbSwgdHlwZW5hbWUgSURMSW50ZXJmYWNlPFRlc3ROb2RlPjo6UGFyYW1l
dGVyVHlwZSB0ZXN0Tm9kZVBhcmFtKSBvdmVycmlkZTsKICAgICBDYWxsYmFja1Jlc3VsdDx0eXBl
bmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gY2FsbGJhY2tXaXRoQVJldHVy
blZhbHVlKCkgb3ZlcnJpZGU7CiAgICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3Ry
aW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IGNhbGxiYWNrVGhhdFJldGhyb3dzRXhjZXB0aW9ucyh0
eXBlbmFtZSBJRExFbnVtZXJhdGlvbjxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+OjpQYXJh
bWV0ZXJUeXBlIGVudW1QYXJhbSkgb3ZlcnJpZGU7Ci0gICAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5h
bWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IGNhbGxiYWNrVGhhdFNraXBzSW52
b2tlQ2hlY2sodHlwZW5hbWUgSURMRGljdGlvbmFyeTxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkRp
Y3Rpb25hcnk+OjpQYXJhbWV0ZXJUeXBlIGRpY3Rpb25hcnlQYXJhbSkgb3ZlcnJpZGU7CiAgICAg
Q2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+
IGNhbGxiYWNrV2l0aFRoaXNPYmplY3QodHlwZW5hbWUgSURMSW50ZXJmYWNlPFRlc3ROb2RlPjo6
UGFyYW1ldGVyVHlwZSB0aGlzT2JqZWN0LCB0eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVzdE9iaj46
OlBhcmFtZXRlclR5cGUgdGVzdE9ialBhcmFtKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZShKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3Qq
KTsKKyAgICBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZShKU0M6OlZNJiwgSlNDOjpKU09iamVjdCog
Y2FsbGJhY2spOwogCiAgICAgSlNDYWxsYmFja0RhdGFTdHJvbmcqIG1fZGF0YTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERp
Y3Rpb25hcnkyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNwcAkocmV2aXNpb24gMjg4MjYy
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2
ZWREaWN0aW9uYXJ5Mi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgdGVtcGxh
dGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkyIGNvbnZlcgogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJW
YWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNv
bnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigm
bGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBj
b252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHN0cmluZ01lbWJlclZhbHVl
OwpAQCAtMTUzLDcgKzE1Myw3IEBAIHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6
RGljdGkKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAg
IH0KICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAg
ICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNW
b2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCAq
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAg
ICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpT
Vm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAg
ICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlOwpAQCAtMTg4LDcgKzE4OCw3IEBA
IHRlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGkKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIXBhcnRpYWxD
YWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LnBhcnRp
YWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxs
YmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLCAq
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAg
ICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5j
dGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxDYWxsYmFj
a01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1ZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJp
dmVkRGljdGlvbmFyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMjg4
MjYyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
cml2ZWREaWN0aW9uYXJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCB0ZW1w
bGF0ZTw+IFRlc3REZXJpdmVkRGljdGlvbmFyeSBjb252ZXJ0CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgaWYgKCFjYWxsYmFja01lbWJl
clZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0g
Y29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIGNhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIEpTVmFsdWUgcGFydGlhbEJvb2xlYW5N
ZW1iZXJWYWx1ZTsKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZW1wbGF0ZTw+IFRlc3REZXJpdmVkRGlj
dGlvbmFyeSBjb252ZXJ0CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKICAgICB9CiAgICAgaWYgKCFwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVm
aW5lZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0
PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tN
ZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBw
YXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmhlcml0ZWREaWN0aW9uYXJ5Mi5jcHAJKHJldmlzaW9uIDI4ODI2MikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgdGVtcGxhdGU8PiBUZXN0SW5oZXJp
dGVkRGljdGlvbmFyeTIgY29udgogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghY2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7Ci0gICAgICAgIHJlc3VsdC5jYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGNhbGxiYWNr
TWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNhbEdsb2JhbE9i
amVjdCkpOworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxi
YWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFj
a01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHN0cmluZ01lbWJlclZhbHVlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25h
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5LmNwcAkocmV2aXNpb24gMjg4MjYyKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERp
Y3Rpb25hcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIHRlbXBsYXRlPD4g
VGVzdEluaGVyaXRlZERpY3Rpb25hcnkgY29udmUKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBpZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUu
aXNVbmRlZmluZWQoKSkgewotICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0
PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBjYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGlj
YWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVtYmVyID0gY29udmVy
dDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVj
dCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJlclZh
bHVlOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHRlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25h
cnkgY29udmUKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwog
ICAgIH0KICAgICBpZiAoIXBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKLSAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9IGNvbnZlcnQ8SURMQ2Fs
bGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRp
YWxDYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxleGlj
YWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxDYWxsYmFja01lbWJlciA9
IGNvbnZlcnQ8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHBhcnRpYWxDYWxsYmFja01lbWJlclZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBKU1ZhbHVlIHBhcnRpYWxS
ZXF1aXJlZExvbmdNZW1iZXJWYWx1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCShyZXZpc2lvbiAyODgyNjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjAxMiwxMCArMjAxMiwxMCBAQCB0ZW1wbGF0ZTw+IEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfCiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQo
KSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpOwog
ICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwotICAgIGF1dG8gdGVzdENhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFj
a0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0
LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNj
b3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBzY29wZSwgMCwgInRlc3RDYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgbnVsbHB0cik7IH0pOwor
ICAgIGF1dG8gdGVzdENhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rl
c3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFs
dWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpU
aHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNh
bEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9iamVjdCIsIG51
bGxwdHIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEgPSBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gdGVzdENhbGxiYWNrRnVuY3Rpb24g
PSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAi
VGVzdE9iamVjdCIsIG51bGxwdHIpOyB9KTsKKyAgICBhdXRvIHRlc3RDYWxsYmFja0Z1bmN0aW9u
ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pigq
bGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhy
b3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUs
IDEsICJ0ZXN0Q2FsbGJhY2tGdW5jdGlvbiIsICJUZXN0T2JqZWN0IiwgbnVsbHB0cik7IH0pOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAg
ICAgYXV0byBvYmplY3QgPSBUZXN0T2JqOjpjcmVhdGUoZG9jdW1lbnQsIHRlc3RDYWxsYmFjay5y
ZWxlYXNlTm9uTnVsbCgpLCB0ZXN0Q2FsbGJhY2tGdW5jdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsK
ICAgICBpZiBjb25zdGV4cHIgKElzRXhjZXB0aW9uT3I8ZGVjbHR5cGUob2JqZWN0KT4pCkBAIC0z
NDUxLDcgKzM0NTEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqX3N0cmluZ1Zv
CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMUmVjb3JkPElETERPTVN0cmluZywgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFj
az4+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgKnRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0
KCkpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETFJlY29yZDxJRExET01TdHJp
bmcsIElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Pj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2Up
OwogICAgIGludm9rZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgIHJldHVybiBpbXBsLnNl
dFN0cmluZ1ZvaWRDYWxsYmFja1JlY29yZEF0dHIoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwpAQCAt
NzAyMCw3ICs3MDIwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIGlmIChVTkxJS0VMWShjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAg
ICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRB
cmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVy
ZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aENhbGxiYWNrSW50ZXJm
YWNlQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrSW50
ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFy
Z3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmpl
Y3QiLCAibWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4o
KmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8p
IHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aENhbGxiYWNrSW50ZXJmYWNlQXJnKGNhbGxiYWNrLnJl
bGVhc2VOb25OdWxsKCkpOyB9KSkpOwogfQpAQCAtNzA0MCw3ICs3MDQwLDcgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGlmIChVTkxJS0VMWShjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJn
dW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxi
YWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxs
YmFja0ludGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCks
ICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50
TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFj
ayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJn
Iik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxi
YWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
T2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhOdWxsYWJsZUNhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tJ
bnRlcmZhY2VBcmcoV1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzA2Myw3ICs3MDYz
LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIGF1dG8g
bm9uQ2FsbGJhY2sgPSBjb252ZXJ0PElETExvbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1
bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNv
ZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQxID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVy
dDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRo
cm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzY29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9k
V2l0aE5vbkNhbGxiYWNrSW50ZXJmYWNlQXJnQW5kQ2FsbGJhY2tJbnRlcmZhY2VBcmciKTsgfSk7
CisgICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVl
KCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhy
b3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxH
bG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RX
aXRoTm9uQ2FsbGJhY2tJbnRlcmZhY2VBcmdBbmRDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0ludGVyZmFj
ZUFyZ0FuZENhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUobm9uQ2FsbGJhY2spLCBjYWxsYmFj
ay5yZWxlYXNlTm9uTnVsbCgpKTsgfSkpKTsKIH0KQEAgLTcwODEsNyArNzA4MSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2Fs
bEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwot
ICAgIGF1dG8gY2FsbGJhY2sgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gQ29u
dmVydGVyPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj46OlJl
dHVyblR5cGUoKSA6IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
T2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJU
ZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnIik7IH0p
OworICAgIGF1dG8gY2FsbGJhY2sgPSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8g
Q29udmVydGVyPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlPj46
OlJldHVyblR5cGUoKSA6IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJh
Y2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtd
KEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29w
ZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0
aW9uYWxDYWxsYmFja0ludGVyZmFjZUFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0
aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrSW50ZXJmYWNlQXJnKFdURk1vdmUoY2FsbGJh
Y2spKTsgfSkpKTsKIH0KQEAgLTcwOTksNyArNzA5OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJh
Y2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxi
YWNrSW50ZXJmYWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwg
KmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRN
dXN0QmVPYmplY3RFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNr
IiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVDYWxsYmFja0ludGVy
ZmFjZUFyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJ
RExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVu
dE11c3RCZU9iamVjdEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJh
Y2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrSW50
ZXJmYWNlQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9w
dGlvbmFsTnVsbGFibGVDYWxsYmFja0ludGVyZmFjZUFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0p
KSk7CiB9CkBAIC03MTE5LDcgKzcxMTksNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElLRUxZKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENh
bGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoQ2Fs
bGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExD
YWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RC
ZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIs
ICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVu
ZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0
eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcoY2Fs
bGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9CkBAIC03MTM5LDcgKzcxMzksNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgaWYgKFVOTElLRUxZ
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVT
Y29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwotICAgIGF1
dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrRnVuY3Rpb248SlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvbj4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0Fy
Z3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwg
ImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE51bGxhYmxlQ2FsbGJhY2tGdW5j
dGlvbkFyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJ
RExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pj4oKmxleGljYWxHbG9i
YWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRN
dXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJh
Y2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoTnVsbGFibGVDYWxsYmFja0Z1bmN0aW9uQXJn
Iik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE51bGxhYmxlQ2Fs
bGJhY2tGdW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CkBAIC03MTYyLDcg
KzcxNjIsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
YXV0byBub25DYWxsYmFjayA9IGNvbnZlcnQ8SURMTG9uZz4oKmxleGljYWxHbG9iYWxPYmplY3Qs
IGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDEg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBj
b252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4+KCpsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6
OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAxLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJt
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0pOworICAg
IGF1dG8gY2FsbGJhY2sgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDEudmFsdWUoKSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBzY29wZSwgMSwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAibWV0aG9kV2l0aE5v
bkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7
IHJldHVybiBpbXBsLm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25B
cmcoV1RGTW92ZShub25DYWxsYmFjayksIGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9KSkp
OwogfQpAQCAtNzE4MCw3ICs3MTgwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3Vt
ZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGFyZ3Vt
ZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tGdW5jdGlv
bjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj46OlJldHVyblR5cGUoKSA6IGNvbnZlcnQ8SURMQ2Fs
bGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRp
b25hbENhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CisgICAgYXV0byBjYWxsYmFjayA9IGFyZ3Vt
ZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBDb252ZXJ0ZXI8SURMQ2FsbGJhY2tGdW5jdGlv
bjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj46OlJldHVyblR5cGUoKSA6IGNvbnZlcnQ8SURMQ2Fs
bGJhY2tGdW5jdGlvbjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVG
dW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAi
VGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFja0Z1bmN0aW9uQXJnIik7IH0p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSgpIC0+
IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2tG
dW5jdGlvbkFyZyhXVEZNb3ZlKGNhbGxiYWNrKSk7IH0pKSk7CiB9CkBAIC03MTk4LDcgKzcxOTgs
NyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgVU5VU0VE
X1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxs
YmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+Pj4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50MC52YWx1ZSgpLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFtdKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYg
c2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgIm1ldGhvZFdpdGhPcHRp
b25hbE51bGxhYmxlQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNr
ID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVGVzdENhbGxiYWNr
RnVuY3Rpb24+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKGxleGljYWxHbG9iYWxP
YmplY3QsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJtZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25BcmciKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC5tZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZUNhbGxiYWNrRnVuY3Rpb25Bcmco
V1RGTW92ZShjYWxsYmFjaykpOyB9KSkpOwogfQpAQCAtNzIxNSw3ICs3MjE1LDcgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICBhdXRvIGNh
bGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RD
YWxsYmFja0ludGVyZmFjZT4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVl
KCksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgW10o
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdp
dGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIik7IH0pOworICAgIGF1dG8gY2FsbGJhY2sgPSBjb252
ZXJ0PElETE51bGxhYmxlPElETENhbGxiYWNrSW50ZXJmYWNlPEpTVGVzdENhbGxiYWNrSW50ZXJm
YWNlPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29w
ZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
c2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdpdGhDYWxs
YmFja0FuZE9wdGlvbmFsQXJnIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2Nv
cGUsIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIFRlc3RPYmo6
OnN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKFdURk1vdmUoY2FsbGJhY2sp
KTsgfSkpKTsKIH0KQEAgLTcyMzQsNyArNzIzNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBpZiAoVU5MSUtFTFkoY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihsZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7Ci0gICAgYXV0byBjYWxsYmFjayA9IGNvbnZlcnQ8
SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJl
T2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJU
ZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyIpOyB9KTsKKyAgICBhdXRv
IGNhbGxiYWNrID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0lu
dGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgc2NvcGUsIDAsICJjYWxsYmFjayIsICJUZXN0T2JqZWN0IiwgInN0YXRpY01ldGhvZFdpdGhD
YWxsYmFja0FyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1Zh
bHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShhdXRvKSB7IHJldHVybiBUZXN0T2JqOjpzdGF0aWNN
ZXRob2RXaXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2sucmVsZWFzZU5vbk51bGwoKSk7IH0pKSk7CiB9
CkBAIC03MzY0LDcgKzczNjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQw
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKLSAgICBhdXRvIGNhbGxiYWNrID0g
Y29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgKmNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRNdXN0QmVPYmplY3RFcnJvcihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmplY3QiLCAi
b3ZlcmxvYWRlZE1ldGhvZCIpOyB9KTsKKyAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExD
YWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFs
T2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVz
dEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJjYWxsYmFjayIs
ICJUZXN0T2JqZWN0IiwgIm92ZXJsb2FkZWRNZXRob2QiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyBy
ZXR1cm4gaW1wbC5vdmVybG9hZGVkTWV0aG9kKGNhbGxiYWNrLnJlbGVhc2VOb25OdWxsKCkpOyB9
KSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3Bw
CShyZXZpc2lvbiAyODgyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25hcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NSw3ICs3NSw3IEBAIHRlbXBsYXRlPD4gRGljdGlvbmFyeUltcGxOYW1lIGNvbnZlcnREaWMKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwogICAgIH0KICAgICBp
ZiAoIWNhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICByZXN1bHQu
Y2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJh
Y2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgcmVzdWx0
LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxi
YWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSk7CiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9CiAgICAgSlNWYWx1
ZSBlbnVtTWVtYmVyVmFsdWU7CkBAIC0xMzYsNyArMTM2LDcgQEAgdGVtcGxhdGU8PiBEaWN0aW9u
YXJ5SW1wbE5hbWUgY29udmVydERpYwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CiAgICAgfQogICAgIGlmICghcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUu
aXNVbmRlZmluZWQoKSkgewotICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNrTWVtYmVyID0g
Y29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPigmbGV4aWNhbEdsb2JhbE9iamVjdCkpOworICAgICAgICByZXN1bHQucGFydGlhbENh
bGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNr
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CiAgICAgfQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHJldmlzaW9uIDI4ODI2MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2OCwxMCArMTY4LDEwIEBAIHRlbXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTF8KICAgICBhdXRvIGhlbGxvID0gY29udmVydDxJRExET01TdHJpbmc+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFs
aXZlU2NvcGUgYXJndW1lbnQxID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKLSAg
ICBhdXRvIHRlc3RDYWxsYmFja0Z1bmN0aW9uID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9u
PEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQx
LnZhbHVlKCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwg
MSwgInRlc3RDYWxsYmFja0Z1bmN0aW9uIiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOyB9KTsK
KyAgICBhdXRvIHRlc3RDYWxsYmFja0Z1bmN0aW9uID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0
aW9uPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQxLnZhbHVlKCksIFtdKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3Qs
IEpTQzo6VGhyb3dTY29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDEsICJ0ZXN0Q2FsbGJhY2tGdW5jdGlvbiIs
ICJUZXN0VHlwZWRlZnMiLCBudWxscHRyKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0
aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKLSAgICBhdXRvIHRl
c3RDYWxsYmFja0ludGVyZmFjZSA9IGNvbnZlcnQ8SURMQ2FsbGJhY2tJbnRlcmZhY2U8SlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2U+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQyLnZhbHVl
KCksICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYg
bGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3Vt
ZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDIsICJ0ZXN0
Q2FsbGJhY2tJbnRlcmZhY2UiLCAiVGVzdFR5cGVkZWZzIiwgbnVsbHB0cik7IH0pOworICAgIGF1
dG8gdGVzdENhbGxiYWNrSW50ZXJmYWNlID0gY29udmVydDxJRExDYWxsYmFja0ludGVyZmFjZTxK
U1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDIu
dmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlND
OjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJvd0FyZ3VtZW50TXVzdEJlT2JqZWN0RXJyb3IobGV4
aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDIsICJ0ZXN0Q2FsbGJhY2tJbnRlcmZhY2UiLCAiVGVz
dFR5cGVkZWZzIiwgbnVsbHB0cik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgYXV0byBvYmplY3QgPSBUZXN0VHlwZWRlZnM6
OmNyZWF0ZShXVEZNb3ZlKGhlbGxvKSwgdGVzdENhbGxiYWNrRnVuY3Rpb24ucmVsZWFzZU5vbk51
bGwoKSwgdGVzdENhbGxiYWNrSW50ZXJmYWNlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGlmIGNv
bnN0ZXhwciAoSXNFeGNlcHRpb25PcjxkZWNsdHlwZShvYmplY3QpPikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMjg4MjYyKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFZvaWRDYWxsYmFj
a0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsOSBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotSlNUZXN0Vm9pZENhbGxiYWNrRnVu
Y3Rpb246OkpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uKEpTT2JqZWN0KiBjYWxsYmFjaywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLSAgICA6IFRlc3RWb2lkQ2FsbGJhY2tGdW5j
dGlvbihnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fZGF0
YShuZXcgSlNDYWxsYmFja0RhdGFTdHJvbmcoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCwgdGhpcykp
CitKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbjo6SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24o
Vk0mIHZtLCBKU09iamVjdCogY2FsbGJhY2spCisgICAgOiBUZXN0Vm9pZENhbGxiYWNrRnVuY3Rp
b24oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oY2FsbGJhY2stPmdsb2JhbE9iamVjdCh2bSkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX2RhdGEobmV3IEpTQ2FsbGJhY2tE
YXRhU3Ryb25nKHZtLCBjYWxsYmFjaywgdGhpcykpCiB7CiB9CiAKQEAgLTY4LDcgKzY4LDcgQEAg
Q2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVW5kZWZpbmVkOjpJbQogCiAgICAgUmVmPEpTVGVz
dFZvaWRDYWxsYmFja0Z1bmN0aW9uPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGF1dG8m
IGdsb2JhbE9iamVjdCA9ICptX2RhdGEtPmdsb2JhbE9iamVjdCgpOworICAgIGF1dG8mIGdsb2Jh
bE9iamVjdCA9ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmdsb2JhbE9iamVjdCgpKTsKICAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgp
OwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwpAQCAtODQsNyArODQsNyBAQCBDYWxsYmFj
a1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltCiAgICAgQVNTRVJUKCFhcmdzLmhhc092
ZXJmbG93ZWQoKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNl
cHRpb247Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2Fs
bGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVk
RXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHZtLCB0aGlzVmFsdWUsIGFy
Z3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCks
IHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAg
ICAgcmVwb3J0RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXR1cm5lZEV4Y2VwdGlv
bik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lk
Q2FsbGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAy
ODgyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Vm9pZENhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uIGZp
bmFsIDogcHVibGljIFRlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbj4gY3JlYXRlKEpTQzo6SlNPYmplY3Qq
IGNhbGxiYWNrLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBS
ZWY8SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24+IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpK
U09iamVjdCogY2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBK
U1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbihjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uKHZtLCBj
YWxsYmFjaykpOwogICAgIH0KIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExVbmRlZmluZWQ6OkltcGxlbWVudGF0aW9u
VHlwZT4gaGFuZGxlRXZlbnQodHlwZW5hbWUgSURMRmxvYXQzMkFycmF5OjpQYXJhbWV0ZXJUeXBl
IGFycmF5UGFyYW0sIHR5cGVuYW1lIElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+OjpQYXJhbWV0ZXJUeXBlIHNyelBhcmFtLCB0eXBlbmFtZSBJRExET01TdHJp
bmc6OlBhcmFtZXRlclR5cGUgc3RyQXJnLCB0eXBlbmFtZSBJRExCb29sZWFuOjpQYXJhbWV0ZXJU
eXBlIGJvb2xQYXJhbSwgdHlwZW5hbWUgSURMTG9uZzo6UGFyYW1ldGVyVHlwZSBsb25nUGFyYW0s
IHR5cGVuYW1lIElETEludGVyZmFjZTxUZXN0Tm9kZT46OlBhcmFtZXRlclR5cGUgdGVzdE5vZGVQ
YXJhbSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rp
b24oSlNDOjpKU09iamVjdCosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Vm9pZENh
bGxiYWNrRnVuY3Rpb24oSlNDOjpWTSYsIEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrKTsKIAogICAg
IEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBtX2RhdGE7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVGaWx0ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
RmlsdGVyLmlkbAkocmV2aXNpb24gMjg4MjYyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVG
aWx0ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00Miw1ICs0Miw1IEBACiAgICAgY29uc3QgdW5z
aWduZWQgbG9uZyBTSE9XX0RPQ1VNRU5UX0ZSQUdNRU5UID0gMHgwMDAwMDQwMDsKICAgICBjb25z
dCB1bnNpZ25lZCBsb25nIFNIT1dfTk9UQVRJT04gPSAweDAwMDAwODAwOyAvLyBIaXN0b3JpY2Fs
LgogCi0gICAgW1NraXBDYWxsYmFja0ludm9rZUNoZWNrLCBSZXRocm93RXhjZXB0aW9uXSB1bnNp
Z25lZCBzaG9ydCBhY2NlcHROb2RlKE5vZGUgbm9kZSk7CisgICAgW1JldGhyb3dFeGNlcHRpb25d
IHVuc2lnbmVkIHNob3J0IGFjY2VwdE5vZGUoTm9kZSBub2RlKTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vVHJhdmVyc2FsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vVHJhdmVyc2FsLmNwcAkocmV2aXNpb24gMjg4MjYyKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1RyYXZlcnNhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgRXhjZXB0aW9u
T3I8dW5zaWduZWQgc2hvcnQ+IE5vZGVJdGVyYXRvcgogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4g
aXNBY3RpdmUobV9pc0FjdGl2ZSwgdHJ1ZSk7CiAgICAgYXV0byBjYWxsYmFja1Jlc3VsdCA9IG1f
ZmlsdGVyLT5hY2NlcHROb2RlKG5vZGUpOworICAgIGlmIChjYWxsYmFja1Jlc3VsdC50eXBlKCkg
PT0gQ2FsbGJhY2tSZXN1bHRUeXBlOjpVbmFibGVUb0V4ZWN1dGUpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RBbGxvd2VkRXJyb3IsICJGYWlsZWQgdG8gZXhlY3V0ZSAnYWNjZXB0Tm9k
ZScgb24gJ05vZGVGaWx0ZXInOiBUaGUgcHJvdmlkZWQgY2FsbGJhY2sgaXMgbm8gbG9uZ2VyIHJ1
bm5hYmxlLiJfcyB9OwogICAgIGlmIChjYWxsYmFja1Jlc3VsdC50eXBlKCkgPT0gQ2FsbGJhY2tS
ZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd24pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBF
eGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07CiAgICAgcmV0dXJuIGNhbGxiYWNrUmVzdWx0LnJlbGVh
c2VSZXR1cm5WYWx1ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25P
YnNlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rp
b25PYnNlcnZlci5jcHAJKHJldmlzaW9uIDI4ODI2MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNyArMTE2LDgg
QEAgRXhjZXB0aW9uT3I8UmVmPEludGVyc2VjdGlvbk9ic2VydmVyPj4gSQogfQogCiBJbnRlcnNl
Y3Rpb25PYnNlcnZlcjo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjaz4mJiBjYWxsYmFjaywgQ29udGFpbmVyTm9k
ZSogcm9vdCwgTGVuZ3RoQm94JiYgcGFyc2VkUm9vdE1hcmdpbiwgVmVjdG9yPGRvdWJsZT4mJiB0
aHJlc2hvbGRzKQotICAgIDogbV9yb290KHJvb3QpCisgICAgOiBtX2Fzc29jaWF0ZWREb2N1bWVu
dCgmZG9jdW1lbnQpCisgICAgLCBtX3Jvb3Qocm9vdCkKICAgICAsIG1fcm9vdE1hcmdpbihXVEZN
b3ZlKHBhcnNlZFJvb3RNYXJnaW4pKQogICAgICwgbV90aHJlc2hvbGRzKFdURk1vdmUodGhyZXNo
b2xkcykpCiAgICAgLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQpAQCAtMjUxLDE3ICsy
NTIsMTAgQEAgdm9pZCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6cm9vdERlc3Ryb3llZAogCiBzdGQ6
Om9wdGlvbmFsPFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcz4gSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6
Om5vd1RpbWVzdGFtcCgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2NhbGxiYWNrKQotICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgYXV0byogY29udGV4dCA9IG1fY2FsbGJhY2stPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLSAg
ICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCk7Ci0gICAgaWYg
KGF1dG8qIHdpbmRvdyA9IGRvY3VtZW50LmRvbVdpbmRvdygpKQotICAgICAgICByZXR1cm4gd2lu
ZG93LT5mcm96ZW5Ob3dUaW1lc3RhbXAoKTsKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2Fz
c29jaWF0ZWREb2N1bWVudC5nZXQoKSkgeworICAgICAgICBpZiAoYXV0byogd2luZG93ID0gZG9j
dW1lbnQtPmRvbVdpbmRvdygpKQorICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy0+ZnJvemVuTm93
VGltZXN0YW1wKCk7CisgICAgfQogICAgIAogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oCShyZXZpc2lv
biAyODgyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVt
b3ZlVGFyZ2V0UmVnaXN0cmF0aW9uKEVsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFRhcmdl
dHMoKTsKIAorICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fYXNzb2NpYXRlZERvY3VtZW50OwogICAg
IFdlYWtQdHI8RG9jdW1lbnQ+IG1faW1wbGljaXRSb290RG9jdW1lbnQ7CiAgICAgV2Vha1B0cjxD
b250YWluZXJOb2RlPiBtX3Jvb3Q7CiAgICAgTGVuZ3RoQm94IG1fcm9vdE1hcmdpbjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLmgJKHJldmlzaW9uIDI4ODI2MikKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQCBw
dWJsaWM6CiAgICAgU2NyaXB0TW9kdWxlTG9hZGVyJiBtb2R1bGVMb2FkZXIoKSB7IHJldHVybiAq
bV9tb2R1bGVMb2FkZXI7IH0KIAogICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqPih0aGlz
KTsgfQogICAgIEV2ZW50TG9vcFRhc2tHcm91cCYgZXZlbnRMb29wKCkgZmluYWw7CiAgICAgYm9v
bCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHBvc3RUYXNrKFRhc2sm
JikgZmluYWw7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNvbnRleHQncyB0aHJlYWQgYXN5bmNo
cm9ub3VzbHkuCkBAIC05MCw3ICs5MSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZXJlZlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAogICAgIC8vIEV2ZW50VGFy
Z2V0LgotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBjb25zdF9jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKj4odGhpcyk7IH0KICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsg
fQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUuY3BwCShyZXZpc2lvbiAyODgyNjIpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw3ICsxMzMsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wCiAgICAgICAgIGlmIChw
YWludFZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
VHlwZUVycm9yLCAiVGhlIGNsYXNzIG11c3QgaGF2ZSBhIHBhaW50IG1ldGhvZCIgfTsKIAotICAg
ICAgICBSZWZQdHI8SlNDU1NQYWludENhbGxiYWNrPiBwYWludCA9IGNvbnZlcnQ8SURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU0NTU1BhaW50Q2FsbGJhY2s+PihnbG9iYWxPYmplY3QsIHBhaW50VmFsdWUs
ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJl
ZlB0cjxKU0NTU1BhaW50Q2FsbGJhY2s+IHBhaW50ID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0
aW9uPEpTQ1NTUGFpbnRDYWxsYmFjaz4+KGdsb2JhbE9iamVjdCwgcGFpbnRWYWx1ZSk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0
aW9uRXJyb3IgfSk7CiAKICAgICAgICAgYXV0byBwYWludERlZmluaXRpb24gPSBtYWtlVW5pcXVl
PFBhaW50RGVmaW5pdGlvbj4obmFtZSwgcGFpbnRDb25zdHJ1Y3Rvci5nZXQoKSwgcGFpbnQucmVs
ZWFzZU5vbk51bGwoKSwgV1RGTW92ZShpbnB1dFByb3BlcnRpZXMpLCBXVEZNb3ZlKGlucHV0QXJn
dW1lbnRzKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS94bWwvQ3VzdG9tWFBhdGhOU1Jlc29sdmVy
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyLmlkbAkocmV2aXNpb24gMjg4MjYyKQorKysgU291cmNlL1dlYkNvcmUveG1sL0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDUgKzI1LDUgQEAKIAogLy8g
Tm90IHVzaW5nIFtJc1dlYWtDYWxsYmFja10gaGVyZSBhcyBYUGF0aE5TUmVzb2x2ZXIgd3JhcHBl
cnMgYWx3YXlzIHRlbXBvcmFyeSAobm8gcmVmZXJlbmNlIGlzIGtlcHQpCiBjYWxsYmFjayBpbnRl
cmZhY2UgQ3VzdG9tWFBhdGhOU1Jlc29sdmVyIHsKLSAgICBbSW1wbGVtZW50ZWRBcz1sb29rdXBO
YW1lc3BhY2VVUklGb3JCaW5kaW5ncywgU2tpcENhbGxiYWNrSW52b2tlQ2hlY2tdIERPTVN0cmlu
Zz8gbG9va3VwTmFtZXNwYWNlVVJJKERPTVN0cmluZz8gcHJlZml4KTsKKyAgICBbSW1wbGVtZW50
ZWRBcz1sb29rdXBOYW1lc3BhY2VVUklGb3JCaW5kaW5nc10gRE9NU3RyaW5nPyBsb29rdXBOYW1l
c3BhY2VVUkkoRE9NU3RyaW5nPyBwcmVmaXgpOwogfTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4ODI2
MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0
IEBACisyMDIyLTAxLTE5ICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KKwor
ICAgICAgICBDYWxsYmFjayBmdW5jdGlvbnMgLyBpbnRlcmZhY2VzIHNob3VsZCB1c2UgZ2xvYmFs
IG9iamVjdCBvZiBpdHMgX3ZhbHVlXyBmb3IgZXJyb3JzIGFuZCBsaWZlY3ljbGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjM4NworCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRp
b24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvY2FsbGJhY2stdG8tZGVsZXRl
ZC1jb250ZXh0LWlubmVyMS5odG1sOgorICAgICAgICBBbGlnbnMgdGVzdCBhc3NlcnRpb25zIHdp
dGggYmVoYXZpb3Igb2YgQmxpbmsgYW5kIEdlY2tvLgorCisgICAgICAgICogZmFzdC9kb20vR2Vv
bG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUtcGVybWlzc2lvbi1kZW5pZWQtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nvbm5lY3RlZC1m
cmFtZS1wZXJtaXNzaW9uLWRlbmllZC5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0
aW9uL2Rpc2Nvbm5lY3RlZC1mcmFtZS5odG1sOgorICAgICAgICBBbGlnbnMgdGVzdHMgYXNzZXJ0
aW9ucyB3aXRoIHRoZWlyIGluaXRpYWwgZGVzY3JpcHRpb25zLgorICAgICAgICBXaGlsZSBvdGhl
ciBicm93c2VycyBkb24ndCBjYWxsIGVycm9yIGNhbGxiYWNrIGZvciBhIGRpc2Nvbm5lY3RlZCBm
cmFtZSwKKyAgICAgICAgaXQgc2VlbXMgbGlrZSBhIHVzZWZ1bCB0aGluZyB0byBkby4KKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL2RldGFjaGVkLXN2Zy1wYXJlbnQtd2luZG93LWV2ZW50cy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9ldmVudHMvZGV0YWNoZWQtc3ZnLXBhcmVudC13aW5k
b3ctZXZlbnRzLmh0bWw6CisgICAgICAgIEFsaWducyB0ZXN0IGFzc2VydGlvbiB3aXRoIG90aGVy
IGJyb3dzZXJzLgorICAgICAgICBUaGVyZSBpcyBubyByZWFzb24gd2h5IGV2YWwoKSB3b3VsZG4n
dCB0aHJvdyBhbiBlcnJvciBnaXZlbiB0aGUgPGlmcmFtZT4gaXMgY29ubmVjdGVkLgorCisgICAg
ICAgICogZmFzdC9mcmFtZXMvcmVzb3VyY2VzL3dyb25nLWdsb2JhbC1vYmplY3QuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9mcmFtZS13aW5kb3ctYXMtY2FsbGJhY2stZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZnJhbWVzL2ZyYW1lLXdpbmRvdy1hcy1jYWxsYmFj
ay5odG1sOgorICAgICAgICBBbGlnbnMgdGVzdCBhc3NlcnRpb25zIHdpdGggdGhlIHNwZWMgYW5k
IEJsaW5rIC8gR2Vja28uCisKKyAgICAgICAgKiBmYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1k
ZXRhY2hlZC1mcmFtZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1pbnRl
cnNlY3Rpb24tb2JzZXJ2ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY2FsbGJh
Y2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtbXV0YXRpb24tb2JzZXJ2ZXItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1m
cmFtZS1tdXRhdGlvbi1vYnNlcnZlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9j
YWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1wZXJmb3JtYW5jZS1vYnNlcnZlci1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRl
dGFjaGVkLWZyYW1lLXBlcmZvcm1hbmNlLW9ic2VydmVyLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXJhZi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVk
LWZyYW1lLXJhZi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9jYWxsYmFjay1mdW5j
dGlvbi1kZXRhY2hlZC1mcmFtZS1yZXNpemUtb2JzZXJ2ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1yZXNp
emUtb2JzZXJ2ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY2FsbGJhY2stZnVu
Y3Rpb24tZGV0YWNoZWQtZnJhbWUtdG8tYmxvYi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXRvLWJsb2IuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVk
LWZyYW1lLW5vZGUtZmlsdGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLW5vZGUtZmlsdGVyLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFt
ZS14cGF0aG5zcmVzb2x2ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9jYWxsYmFjay1pbnRlcmZhY2UtZGV0YWNoZWQtZnJhbWUteHBhdGhuc3Jlc29sdmVyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1k
ZXRhY2hlZC1mcmFtZS1jb21tb24uanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jlc291
cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1pbnRlcnNlY3Rpb24tb2JzZXJ2
ZXItaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9jYWxs
YmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1tdXRhdGlvbi1vYnNlcnZlci1pZnJhbWUuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNrLWZ1bmN0aW9u
LWRldGFjaGVkLWZyYW1lLXBlcmZvcm1hbmNlLW9ic2VydmVyLWlmcmFtZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQt
ZnJhbWUtcmFmLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yZXNvdXJj
ZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9ic2VydmVyLWlmcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2stZnVu
Y3Rpb24tZGV0YWNoZWQtZnJhbWUtdG8tYmxvYi1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFtZS1u
b2RlLWZpbHRlci1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmVzb3Vy
Y2VzL2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFtZS14cGF0aG5zcmVzb2x2ZXItaWZy
YW1lLmh0bWw6IEFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIEludGVyc2Vj
dGlvbk9ic2VydmVyIC8gUmVzaXplT2JzZXJ2ZXIgYXJlIG5vdCBlbmFibGVkIG9uIHRoZXNlIHBs
YXRmb3Jtcy4KKwogMjAyMi0wMS0xOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nIGFmdGVyIGFmdGVyIHIyODgx
ODMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVk
LWZyYW1lLWludGVyc2VjdGlvbi1vYnNlcnZlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtaW50
ZXJzZWN0aW9uLW9ic2VydmVyLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1pbnRlcnNlY3Rp
b24tb2JzZXJ2ZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAor
CitQQVNTIENhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBp
bnZva2VkIGlmIDxpZnJhbWU+IGlzIGNvbm5lY3RlZAorUEFTUyBDYWxsYmFjayBmdW5jdGlvbiwg
b3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFpbiB3aW5kb3cncyBGdW5jdGlvbiBjb25z
dHJ1Y3RvciwgaXMgaW52b2tlZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZAorUEFT
UyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90IGlu
dm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLWludGVyc2VjdGlvbi1vYnNl
cnZlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1
bmN0aW9uLWRldGFjaGVkLWZyYW1lLWludGVyc2VjdGlvbi1vYnNlcnZlci5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVk
LWZyYW1lLWludGVyc2VjdGlvbi1vYnNlcnZlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtY29t
bW9uLmpzIj48L3NjcmlwdD4KKworPGJvZHk+CisKKzxkaXYgaWQ9ImludGVyc2VjdGlvbk9ic2Vy
dmVyVGVzdFJvb3QiIGhpZGRlbj48L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IElGUkFNRV9TUkMg
PSAicmVzb3VyY2VzL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLWludGVyc2VjdGlv
bi1vYnNlcnZlci1pZnJhbWUuaHRtbCI7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAg
ICBjb25zdCBpZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJhbWUodCwgSUZSQU1FX1NSQyk7CisgICAg
Y29uc3QgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBpZnJhbWUuY29udGVudFdpbmRvdy5jcmVhdGVJ
bnRlcnNlY3Rpb25PYnNlcnZlcigpOworCisgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKGludGVyc2VjdGlvbk9ic2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDApOwor
ICAgIHNjaGVkdWxlT2JzZXJ2ZWRJbnRlcnNlY3Rpb24oKTsKKworICAgIGF3YWl0IHNsZWVwKDEw
MCk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnRlcnNlY3Rpb25PYnNlcnZlci5jYWxsYmFja0ludm9j
YXRpb25zLCAxKTsKK30sICJDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZy
YW1lPiwgaXMgaW52b2tlZCBpZiA8aWZyYW1lPiBpcyBjb25uZWN0ZWQiKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0IGlmcmFtZSA9IGF3YWl0IGNyZWF0ZUlmcmFtZSh0
LCBJRlJBTUVfU1JDKTsKKyAgICBjb25zdCBpbnRlcnNlY3Rpb25PYnNlcnZlciA9IGlmcmFtZS5j
b250ZW50V2luZG93LmNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyKEZ1bmN0aW9uKTsKKworICAg
IGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnRlcnNlY3Rpb25PYnNlcnZl
ci5jYWxsYmFja0ludm9jYXRpb25zLCAwKTsKKworICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGlmcmFtZS5jb250ZW50V2luZG93LCBudWxsKTsKKworICAgIHNjaGVkdWxl
T2JzZXJ2ZWRJbnRlcnNlY3Rpb24oKTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhpbnRlcnNlY3Rpb25PYnNlcnZlci5jYWxsYmFja0ludm9jYXRpb25zLCAxKTsK
K30sICJDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFp
biB3aW5kb3cncyBGdW5jdGlvbiBjb25zdHJ1Y3RvciwgaXMgaW52b2tlZCBldmVuIGlmIDxpZnJh
bWU+IGlzIGRpc2Nvbm5lY3RlZCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAg
Y29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNv
bnN0IGludGVyc2VjdGlvbk9ic2VydmVyID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY3JlYXRlSW50
ZXJzZWN0aW9uT2JzZXJ2ZXIoKTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0
X2VxdWFscyhpbnRlcnNlY3Rpb25PYnNlcnZlci5jYWxsYmFja0ludm9jYXRpb25zLCAwKTsKKwor
ICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGlmcmFtZS5jb250ZW50V2lu
ZG93LCBudWxsKTsKKworICAgIHNjaGVkdWxlT2JzZXJ2ZWRJbnRlcnNlY3Rpb24oKTsKKworICAg
IGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0X2VxdWFscyhpbnRlcnNlY3Rpb25PYnNlcnZl
ci5jYWxsYmFja0ludm9jYXRpb25zLCAwKTsKK30sICJDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2lu
YXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29u
bmVjdGVkIik7CisKK2Z1bmN0aW9uIHNjaGVkdWxlT2JzZXJ2ZWRJbnRlcnNlY3Rpb24oKSB7Cisg
ICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJUZXN0Um9vdC5oaWRkZW4gPSAhaW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXJUZXN0Um9vdC5oaWRkZW47Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLW11dGF0aW9uLW9ic2VydmVy
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFj
ay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1tdXRhdGlvbi1vYnNlcnZlci1leHBlY3RlZC50eHQJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24t
ZGV0YWNoZWQtZnJhbWUtbXV0YXRpb24tb2JzZXJ2ZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNSBAQAorCitQQVNTIENhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVk
IGluIGFuIDxpZnJhbWU+LCBpcyBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGNvbm5lY3RlZAorUEFT
UyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFpbiB3
aW5kb3cncyBGdW5jdGlvbiBjb25zdHJ1Y3RvciwgaXMgaW52b2tlZCBldmVuIGlmIDxpZnJhbWU+
IGlzIGRpc2Nvbm5lY3RlZAorUEFTUyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBh
biA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZy
YW1lLW11dGF0aW9uLW9ic2VydmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtbXV0YXRpb24tb2JzZXJ2ZXIu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1mdW5j
dGlvbi1kZXRhY2hlZC1mcmFtZS1tdXRhdGlvbi1vYnNlcnZlci5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgi
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQt
ZnJhbWUtY29tbW9uLmpzIj48L3NjcmlwdD4KKworPGJvZHk+CisKKzxkaXYgaWQ9Im11dGF0aW9u
T2JzZXJ2ZXJUZXN0Um9vdCIgaGlkZGVuPjwvZGl2PgorCis8c2NyaXB0PgorY29uc3QgSUZSQU1F
X1NSQyA9ICJyZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtbXV0YXRp
b24tb2JzZXJ2ZXItaWZyYW1lLmh0bWwiOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7Cisg
ICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAg
IGNvbnN0IG11dGF0aW9uT2JzZXJ2ZXIgPSBpZnJhbWUuY29udGVudFdpbmRvdy5jcmVhdGVNdXRh
dGlvbk9ic2VydmVyKCk7CisKKyAgICBhd2FpdCBzbGVlcCgxMDApOworICAgIGFzc2VydF9lcXVh
bHMobXV0YXRpb25PYnNlcnZlci5jYWxsYmFja0ludm9jYXRpb25zLCAwKTsKKyAgICBzY2hlZHVs
ZU9ic2VydmVkTXV0YXRpb24oKTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0
X2VxdWFscyhtdXRhdGlvbk9ic2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDEpOworfSwgIkNh
bGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBpbnZva2VkIGlm
IDxpZnJhbWU+IGlzIGNvbm5lY3RlZCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7Cisg
ICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAg
IGNvbnN0IG11dGF0aW9uT2JzZXJ2ZXIgPSBpZnJhbWUuY29udGVudFdpbmRvdy5jcmVhdGVNdXRh
dGlvbk9ic2VydmVyKEZ1bmN0aW9uKTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhtdXRhdGlvbk9ic2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDApOworCisg
ICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFzc2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRXaW5k
b3csIG51bGwpOworCisgICAgc2NoZWR1bGVPYnNlcnZlZE11dGF0aW9uKCk7CisKKyAgICBhd2Fp
dCBzbGVlcCgxMDApOworICAgIGFzc2VydF9lcXVhbHMobXV0YXRpb25PYnNlcnZlci5jYWxsYmFj
a0ludm9jYXRpb25zLCAxKTsKK30sICJDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBh
biA8aWZyYW1lPiB2aWEgbWFpbiB3aW5kb3cncyBGdW5jdGlvbiBjb25zdHJ1Y3RvciwgaXMgaW52
b2tlZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZCIpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElG
UkFNRV9TUkMpOworICAgIGNvbnN0IG11dGF0aW9uT2JzZXJ2ZXIgPSBpZnJhbWUuY29udGVudFdp
bmRvdy5jcmVhdGVNdXRhdGlvbk9ic2VydmVyKCk7CisKKyAgICBhd2FpdCBzbGVlcCgxMDApOwor
ICAgIGFzc2VydF9lcXVhbHMobXV0YXRpb25PYnNlcnZlci5jYWxsYmFja0ludm9jYXRpb25zLCAw
KTsKKworICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGlmcmFtZS5jb250
ZW50V2luZG93LCBudWxsKTsKKworICAgIHNjaGVkdWxlT2JzZXJ2ZWRNdXRhdGlvbigpOworCisg
ICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKG11dGF0aW9uT2JzZXJ2ZXIu
Y2FsbGJhY2tJbnZvY2F0aW9ucywgMCk7Cit9LCAiQ2FsbGJhY2sgZnVuY3Rpb24sIG9yaWdpbmF0
ZWQgaW4gYW4gPGlmcmFtZT4sIGlzIG5vdCBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5l
Y3RlZCIpOworCitmdW5jdGlvbiBzY2hlZHVsZU9ic2VydmVkTXV0YXRpb24oKSB7CisgICAgbXV0
YXRpb25PYnNlcnZlclRlc3RSb290LmFwcGVuZCgiZm9vIik7Cit9Cis8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXBl
cmZvcm1hbmNlLW9ic2VydmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1wZXJmb3JtYW5jZS1v
YnNlcnZlci1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcGVyZm9ybWFuY2Utb2JzZXJ2ZXIt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorCitQQVNTIENhbGxi
YWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBpbnZva2VkIGlmIDxp
ZnJhbWU+IGlzIGNvbm5lY3RlZAorUEFTUyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBp
biBhbiA8aWZyYW1lPiB2aWEgbWFpbiB3aW5kb3cncyBGdW5jdGlvbiBjb25zdHJ1Y3RvciwgaXMg
aW52b2tlZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZAorUEFTUyBDYWxsYmFjayBm
dW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQgaWYgPGlm
cmFtZT4gaXMgZGlzY29ubmVjdGVkCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxi
YWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXBlcmZvcm1hbmNlLW9ic2VydmVyLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNo
ZWQtZnJhbWUtcGVyZm9ybWFuY2Utb2JzZXJ2ZXIuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1wZXJmb3Jt
YW5jZS1vYnNlcnZlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9D
VFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtY29tbW9uLmpzIj48L3Njcmlw
dD4KKworPGJvZHk+CisKKzxzY3JpcHQ+Citjb25zdCBJRlJBTUVfU1JDID0gInJlc291cmNlcy9j
YWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1wZXJmb3JtYW5jZS1vYnNlcnZlci1pZnJh
bWUuaHRtbCI7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUg
PSBhd2FpdCBjcmVhdGVJZnJhbWUodCwgSUZSQU1FX1NSQyk7CisgICAgY29uc3QgcGVyZm9ybWFu
Y2VPYnNlcnZlciA9IGlmcmFtZS5jb250ZW50V2luZG93LmNyZWF0ZVBlcmZvcm1hbmNlT2JzZXJ2
ZXIoKTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0X2VxdWFscyhwZXJmb3Jt
YW5jZU9ic2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDApOworICAgIHBlcmZvcm1hbmNlLm1h
cmsoImZvbyIpOworCisgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHBl
cmZvcm1hbmNlT2JzZXJ2ZXIuY2FsbGJhY2tJbnZvY2F0aW9ucywgMSk7Cit9LCAiQ2FsbGJhY2sg
ZnVuY3Rpb24sIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4sIGlzIGludm9rZWQgaWYgPGlmcmFt
ZT4gaXMgY29ubmVjdGVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25z
dCBpZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJhbWUodCwgSUZSQU1FX1NSQyk7CisgICAgY29uc3Qg
cGVyZm9ybWFuY2VPYnNlcnZlciA9IGlmcmFtZS5jb250ZW50V2luZG93LmNyZWF0ZVBlcmZvcm1h
bmNlT2JzZXJ2ZXIoRnVuY3Rpb24pOworCisgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHBlcmZvcm1hbmNlT2JzZXJ2ZXIuY2FsbGJhY2tJbnZvY2F0aW9ucywgMCk7CisK
KyAgICBpZnJhbWUucmVtb3ZlKCk7CisgICAgYXNzZXJ0X2VxdWFscyhpZnJhbWUuY29udGVudFdp
bmRvdywgbnVsbCk7CisKKyAgICBwZXJmb3JtYW5jZS5tYXJrKCJmb28iKTsKKworICAgIGF3YWl0
IHNsZWVwKDEwMCk7CisgICAgYXNzZXJ0X2VxdWFscyhwZXJmb3JtYW5jZU9ic2VydmVyLmNhbGxi
YWNrSW52b2NhdGlvbnMsIDEpOworfSwgIkNhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGlu
IGFuIDxpZnJhbWU+IHZpYSBtYWluIHdpbmRvdydzIEZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBpcyBp
bnZva2VkIGV2ZW4gaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIik7CisKK3Byb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJhbWUodCwg
SUZSQU1FX1NSQyk7CisgICAgY29uc3QgcGVyZm9ybWFuY2VPYnNlcnZlciA9IGlmcmFtZS5jb250
ZW50V2luZG93LmNyZWF0ZVBlcmZvcm1hbmNlT2JzZXJ2ZXIoKTsKKworICAgIGF3YWl0IHNsZWVw
KDEwMCk7CisgICAgYXNzZXJ0X2VxdWFscyhwZXJmb3JtYW5jZU9ic2VydmVyLmNhbGxiYWNrSW52
b2NhdGlvbnMsIDApOworCisgICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFzc2VydF9lcXVhbHMo
aWZyYW1lLmNvbnRlbnRXaW5kb3csIG51bGwpOworCisgICAgcGVyZm9ybWFuY2UubWFyaygiZm9v
Iik7CisKKyAgICBhd2FpdCBzbGVlcCgxMDApOworICAgIGFzc2VydF9lcXVhbHMocGVyZm9ybWFu
Y2VPYnNlcnZlci5jYWxsYmFja0ludm9jYXRpb25zLCAwKTsKK30sICJDYWxsYmFjayBmdW5jdGlv
biwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4g
aXMgZGlzY29ubmVjdGVkIik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXJhZi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQt
ZnJhbWUtcmFmLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1yYWYtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNSBAQAorCitQQVNTIENhbGxiYWNrIGZ1bmN0aW9uLCBv
cmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGNvbm5l
Y3RlZAorUEFTUyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2
aWEgbWFpbiB3aW5kb3cncyBGdW5jdGlvbiBjb25zdHJ1Y3RvciwgaXMgaW52b2tlZCBldmVuIGlm
IDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZAorUEFTUyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2lu
YXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29u
bmVjdGVkCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRl
dGFjaGVkLWZyYW1lLXJhZi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXJhZi5odG1sCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1l
LXJhZi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKzwhRE9DVFlQRSBodG1s
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2Fs
bGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtY29tbW9uLmpzIj48L3NjcmlwdD4KKworPGJv
ZHk+CisKKzxkaXYgaWQ9InJhZlRlc3RSb290IiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6
IDEwMHB4Ij48L2Rpdj4KKworPHNjcmlwdD4KK2NvbnN0IElGUkFNRV9TUkMgPSAicmVzb3VyY2Vz
L2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXJhZi1pZnJhbWUuaHRtbCI7CisKK3By
b21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICB3aW5kb3cuX19yYWYwQ2FsbHNfXyA9IDA7CisK
KyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJhbWUodCwgSUZSQU1FX1NSQyk7Cisg
ICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cucmFmKCJfX3JhZjBDYWxsc19fIik7CisKKyAgICBzY2hl
ZHVsZVJlcGFpbnQoKTsKKyAgICBhd2FpdCBzbGVlcCgxMDApOworCisgICAgYXNzZXJ0X2VxdWFs
cyh3aW5kb3cuX19yYWYwQ2FsbHNfXywgMSk7Cit9LCAiQ2FsbGJhY2sgZnVuY3Rpb24sIG9yaWdp
bmF0ZWQgaW4gYW4gPGlmcmFtZT4sIGlzIGludm9rZWQgaWYgPGlmcmFtZT4gaXMgY29ubmVjdGVk
Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICB3aW5kb3cuX19yYWYxQ2FsbHNf
XyA9IDA7CisKKyAgICBjb25zdCBpZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJhbWUodCwgSUZSQU1F
X1NSQyk7CisgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cucmFmKCJfX3JhZjFDYWxsc19fIiwgRnVu
Y3Rpb24pOworCisgICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFzc2VydF9lcXVhbHMoaWZyYW1l
LmNvbnRlbnRXaW5kb3csIG51bGwpOworCisgICAgc2NoZWR1bGVSZXBhaW50KCk7CisgICAgYXdh
aXQgc2xlZXAoMTAwKTsKKworICAgIGFzc2VydF9lcXVhbHMod2luZG93Ll9fcmFmMUNhbGxzX18s
IDEpOworfSwgIkNhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZp
YSBtYWluIHdpbmRvdydzIEZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBpcyBpbnZva2VkIGV2ZW4gaWYg
PGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
KyAgICB3aW5kb3cuX19yYWYyQ2FsbHNfXyA9IDA7CisKKyAgICBjb25zdCBpZnJhbWUgPSBhd2Fp
dCBjcmVhdGVJZnJhbWUodCwgSUZSQU1FX1NSQyk7CisgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cu
cmFmKCJfX3JhZjJDYWxsc19fIik7CisKKyAgICBpZnJhbWUucmVtb3ZlKCk7CisgICAgYXNzZXJ0
X2VxdWFscyhpZnJhbWUuY29udGVudFdpbmRvdywgbnVsbCk7CisKKyAgICBzY2hlZHVsZVJlcGFp
bnQoKTsKKyAgICBhd2FpdCBzbGVlcCgxMDApOworCisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cu
X19yYWYyQ2FsbHNfXywgMCk7Cit9LCAiQ2FsbGJhY2sgZnVuY3Rpb24sIG9yaWdpbmF0ZWQgaW4g
YW4gPGlmcmFtZT4sIGlzIG5vdCBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZCIp
OworCitmdW5jdGlvbiBzY2hlZHVsZVJlcGFpbnQoKSB7CisgICAgcmFmVGVzdFJvb3Quc3R5bGUu
aGVpZ2h0ID0gYCR7cGFyc2VJbnQocmFmVGVzdFJvb3Quc3R5bGUuaGVpZ2h0KSArIDEwfXB4YDsK
K30KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rp
b24tZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9ic2VydmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFt
ZS1yZXNpemUtb2JzZXJ2ZXItZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXJlc2l6ZS1vYnNl
cnZlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1IEBACisKK1BBU1Mg
Q2FsbGJhY2sgZnVuY3Rpb24sIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4sIGlzIGludm9rZWQg
aWYgPGlmcmFtZT4gaXMgY29ubmVjdGVkCitQQVNTIENhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5h
dGVkIGluIGFuIDxpZnJhbWU+IHZpYSBtYWluIHdpbmRvdydzIEZ1bmN0aW9uIGNvbnN0cnVjdG9y
LCBpcyBpbnZva2VkIGV2ZW4gaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkCitQQVNTIENhbGxi
YWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBub3QgaW52b2tlZCBp
ZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
Y2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9ic2VydmVyLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNo
ZWQtZnJhbWUtcmVzaXplLW9ic2VydmVyLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9ic2Vy
dmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYWxs
YmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1jb21tb24uanMiPjwvc2NyaXB0PgorCis8Ym9k
eT4KKworPGRpdiBpZD0icmVzaXplT2JzZXJ2ZXJUZXN0Um9vdCIgc3R5bGU9IndpZHRoOiAxMDBw
eDsgaGVpZ2h0OiAxMDBweDsiPjwvZGl2PgorCis8c2NyaXB0PgorY29uc3QgSUZSQU1FX1NSQyA9
ICJyZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9ic2Vy
dmVyLWlmcmFtZS5odG1sIjsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIGNvbnN0
IGlmcmFtZSA9IGF3YWl0IGNyZWF0ZUlmcmFtZSh0LCBJRlJBTUVfU1JDKTsKKyAgICBjb25zdCBy
ZXNpemVPYnNlcnZlciA9IGlmcmFtZS5jb250ZW50V2luZG93LmNyZWF0ZVJlc2l6ZU9ic2VydmVy
KCk7CisKKyAgICBhd2FpdCBzbGVlcCgxMDApOworICAgIGFzc2VydF9lcXVhbHMocmVzaXplT2Jz
ZXJ2ZXIuY2FsbGJhY2tJbnZvY2F0aW9ucywgMCk7CisgICAgc2NoZWR1bGVPYnNlcnZlZFJlc2l6
ZSgpOworCisgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc2l6ZU9i
c2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDEpOworfSwgIkNhbGxiYWNrIGZ1bmN0aW9uLCBv
cmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGNvbm5l
Y3RlZCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgaWZyYW1lID0g
YXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IHJlc2l6ZU9ic2Vy
dmVyID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY3JlYXRlUmVzaXplT2JzZXJ2ZXIoRnVuY3Rpb24p
OworCisgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc2l6ZU9ic2Vy
dmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDApOworCisgICAgaWZyYW1lLnJlbW92ZSgpOworICAg
IGFzc2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRXaW5kb3csIG51bGwpOworCisgICAgc2NoZWR1
bGVPYnNlcnZlZFJlc2l6ZSgpOworCisgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKHJlc2l6ZU9ic2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDEpOworfSwgIkNhbGxi
YWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZpYSBtYWluIHdpbmRvdydz
IEZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBpcyBpbnZva2VkIGV2ZW4gaWYgPGlmcmFtZT4gaXMgZGlz
Y29ubmVjdGVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBpZnJh
bWUgPSBhd2FpdCBjcmVhdGVJZnJhbWUodCwgSUZSQU1FX1NSQyk7CisgICAgY29uc3QgcmVzaXpl
T2JzZXJ2ZXIgPSBpZnJhbWUuY29udGVudFdpbmRvdy5jcmVhdGVSZXNpemVPYnNlcnZlcigpOwor
CisgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc2l6ZU9ic2VydmVy
LmNhbGxiYWNrSW52b2NhdGlvbnMsIDApOworCisgICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFz
c2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRXaW5kb3csIG51bGwpOworCisgICAgc2NoZWR1bGVP
YnNlcnZlZFJlc2l6ZSgpOworCisgICAgYXdhaXQgc2xlZXAoMTAwKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHJlc2l6ZU9ic2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMsIDApOworfSwgIkNhbGxiYWNr
IGZ1bmN0aW9uLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBub3QgaW52b2tlZCBpZiA8
aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQiKTsKKworZnVuY3Rpb24gc2NoZWR1bGVPYnNlcnZlZFJl
c2l6ZSgpIHsKKyAgICByZXNpemVPYnNlcnZlclRlc3RSb290LnN0eWxlLndpZHRoID0gYCR7cGFy
c2VJbnQocmVzaXplT2JzZXJ2ZXJUZXN0Um9vdC5zdHlsZS53aWR0aCkgKyAxMH1weGA7Cit9Cis8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRl
dGFjaGVkLWZyYW1lLXRvLWJsb2ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXRvLWJsb2ItZXhw
ZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNr
LWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXRvLWJsb2ItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNSBAQAorCitQQVNTIENhbGxiYWNrIGZ1bmN0aW9uLCBvcmlnaW5hdGVk
IGluIGFuIDxpZnJhbWU+LCBpcyBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGNvbm5lY3RlZAorUEFT
UyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFpbiB3
aW5kb3cncyBGdW5jdGlvbiBjb25zdHJ1Y3RvciwgaXMgaW52b2tlZCBldmVuIGlmIDxpZnJhbWU+
IGlzIGRpc2Nvbm5lY3RlZAorUEFTUyBDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBh
biA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZy
YW1lLXRvLWJsb2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxs
YmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS10by1ibG9iLmh0bWwJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUt
dG8tYmxvYi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtY29tbW9uLmpzIj48L3NjcmlwdD4KKwor
PGJvZHk+CisKKzxjYW52YXMgaWQ9InRvQmxvYlRlc3RSb290IiB3aWR0aD0iMTAwIiBoZWlnaHQ9
IjEwMCI+PC9jYW52YXM+CisKKzxzY3JpcHQ+Citjb25zdCBJRlJBTUVfU1JDID0gInJlc291cmNl
cy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS10by1ibG9iLWlmcmFtZS5odG1sIjsK
KworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIHdpbmRvdy5fX3RvQmxvYjBDYWxsc19f
ID0gMDsKKworICAgIGNvbnN0IGlmcmFtZSA9IGF3YWl0IGNyZWF0ZUlmcmFtZSh0LCBJRlJBTUVf
U1JDKTsKKyAgICBpZnJhbWUuY29udGVudFdpbmRvdy50b0Jsb2IoIl9fdG9CbG9iMENhbGxzX18i
KTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5f
X3RvQmxvYjBDYWxsc19fLCAxKTsKK30sICJDYWxsYmFjayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBp
biBhbiA8aWZyYW1lPiwgaXMgaW52b2tlZCBpZiA8aWZyYW1lPiBpcyBjb25uZWN0ZWQiKTsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIHdpbmRvdy5fX3RvQmxvYjFDYWxsc19fID0g
MDsKKworICAgIGNvbnN0IGlmcmFtZSA9IGF3YWl0IGNyZWF0ZUlmcmFtZSh0LCBJRlJBTUVfU1JD
KTsKKyAgICBpZnJhbWUuY29udGVudFdpbmRvdy50b0Jsb2IoIl9fdG9CbG9iMUNhbGxzX18iLCBG
dW5jdGlvbik7CisKKyAgICBpZnJhbWUucmVtb3ZlKCk7CisgICAgYXNzZXJ0X2VxdWFscyhpZnJh
bWUuY29udGVudFdpbmRvdywgbnVsbCk7CisKKyAgICBhd2FpdCBzbGVlcCgxMDApOworCisgICAg
YXNzZXJ0X2VxdWFscyh3aW5kb3cuX190b0Jsb2IxQ2FsbHNfXywgMSk7Cit9LCAiQ2FsbGJhY2sg
ZnVuY3Rpb24sIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4gdmlhIG1haW4gd2luZG93J3MgRnVu
Y3Rpb24gY29uc3RydWN0b3IsIGlzIGludm9rZWQgZXZlbiBpZiA8aWZyYW1lPiBpcyBkaXNjb25u
ZWN0ZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIHdpbmRvdy5fX3RvQmxv
YjJDYWxsc19fID0gMDsKKworICAgIGNvbnN0IGlmcmFtZSA9IGF3YWl0IGNyZWF0ZUlmcmFtZSh0
LCBJRlJBTUVfU1JDKTsKKyAgICBpZnJhbWUuY29udGVudFdpbmRvdy50b0Jsb2IoIl9fdG9CbG9i
MkNhbGxzX18iKTsKKworICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGlm
cmFtZS5jb250ZW50V2luZG93LCBudWxsKTsKKworICAgIGF3YWl0IHNsZWVwKDEwMCk7CisKKyAg
ICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5fX3RvQmxvYjJDYWxsc19fLCAwKTsKK30sICJDYWxsYmFj
ayBmdW5jdGlvbiwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQgaWYg
PGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFtZS1ub2RlLWZpbHRlci1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2st
aW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLW5vZGUtZmlsdGVyLWV4cGVjdGVkLnR4dAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jYWxsYmFjay1pbnRlcmZhY2UtZGV0YWNo
ZWQtZnJhbWUtbm9kZS1maWx0ZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOCBAQAorCitQQVNTIENhbGxhYmxlIGNhbGxiYWNrIGludGVyZmFjZSwgb3JpZ2luYXRlZCBp
biBhbiA8aWZyYW1lPiwgaXMgaW52b2tlZCBpZiA8aWZyYW1lPiBpcyBjb25uZWN0ZWQKK1BBU1Mg
Q2FsbGFibGUgY2FsbGJhY2sgaW50ZXJmYWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZp
YSBtYWluIHdpbmRvdydzIEZ1bmN0aW9uIGNvbnN0cnVjdG9yLCBpcyBpbnZva2VkIGV2ZW4gaWYg
PGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkCitQQVNTIENhbGxhYmxlIGNhbGxiYWNrIGludGVyZmFj
ZSwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4g
aXMgZGlzY29ubmVjdGVkCitQQVNTIE5vbi1jYWxsYWJsZSBjYWxsYmFjayBpbnRlcmZhY2UsIG9y
aWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4gdmlhIG9iamVjdCBsaXRlcmFsLCBpcyBub3QgaW52b2tl
ZCBpZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQgZXZlbiBpZiBpdHMgJ2FjY2VwdE5vZGUnIG1l
dGhvZCBpcyBvZiBtYWluIHdpbmRvdworUEFTUyBOb24tY2FsbGFibGUgY2FsbGJhY2sgaW50ZXJm
YWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZpYSBvYmplY3QgbGl0ZXJhbCwgaXMgbm90
IGludm9rZWQgZXZlbiBpZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQgZHVyaW5nICdhY2NlcHRO
b2RlJyBsb29rdXAKK1BBU1MgTm9uLWNhbGxhYmxlIGNhbGxiYWNrIGludGVyZmFjZSwgb3JpZ2lu
YXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgbWFpbiB3aW5kb3cncyBPYmplY3QgY29uc3RydWN0b3Is
IGlzIGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIGV2ZW4gaWYgaXRzICdhY2Nl
cHROb2RlJyBtZXRob2QgaXMgb2YgdGhlIDxpZnJhbWU+CisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFtZS1ub2RlLWZpbHRlci5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWludGVyZmFjZS1k
ZXRhY2hlZC1mcmFtZS1ub2RlLWZpbHRlci5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFtZS1ub2RlLWZpbHRl
ci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQRSBodG1sPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FsbGJh
Y2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtY29tbW9uLmpzIj48L3NjcmlwdD4KKworPGJvZHk+
CisKKzxkaXYgaWQ9Im5vZGVJdGVyYXRvclRlc3RSb290Ij48L2Rpdj4KKworPHNjcmlwdD4KK2Nv
bnN0IElGUkFNRV9TUkMgPSAicmVzb3VyY2VzL2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1m
cmFtZS1ub2RlLWZpbHRlci1pZnJhbWUuaHRtbCI7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+
IHsKKyAgICB3aW5kb3cuX19ub2RlRmlsdGVyMENhbGxzX18gPSAwOworICAgIGNvbnN0IGlmcmFt
ZSA9IGF3YWl0IGNyZWF0ZUlmcmFtZSh0LCBJRlJBTUVfU1JDKTsKKyAgICBjb25zdCBub2RlSXRl
cmF0b3IgPSBpZnJhbWUuY29udGVudFdpbmRvdy5jcmVhdGVOb2RlSXRlcmF0b3JXaXRoQ2FsbGFi
bGVGaWx0ZXIoIl9fbm9kZUZpbHRlcjBDYWxsc19fIik7CisKKyAgICBhc3NlcnRfZXF1YWxzKG5v
ZGVJdGVyYXRvci5uZXh0Tm9kZSgpLCBub2RlSXRlcmF0b3JUZXN0Um9vdCk7CisgICAgYXNzZXJ0
X2VxdWFscyh3aW5kb3cuX19ub2RlRmlsdGVyMENhbGxzX18sIDEpOworfSwgIkNhbGxhYmxlIGNh
bGxiYWNrIGludGVyZmFjZSwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgaW52b2tlZCBp
ZiA8aWZyYW1lPiBpcyBjb25uZWN0ZWQiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICAgIHdpbmRvdy5fX25vZGVGaWx0ZXIxQ2FsbHNfXyA9IDA7CisgICAgY29uc3QgaWZyYW1lID0g
YXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IG5vZGVJdGVyYXRv
ciA9IGlmcmFtZS5jb250ZW50V2luZG93LmNyZWF0ZU5vZGVJdGVyYXRvcldpdGhDYWxsYWJsZUZp
bHRlcigiX19ub2RlRmlsdGVyMUNhbGxzX18iLCBGdW5jdGlvbik7CisKKyAgICBpZnJhbWUucmVt
b3ZlKCk7CisgICAgYXNzZXJ0X2VxdWFscyhpZnJhbWUuY29udGVudFdpbmRvdywgbnVsbCk7CisK
KyAgICBhc3NlcnRfZXF1YWxzKG5vZGVJdGVyYXRvci5uZXh0Tm9kZSgpLCBub2RlSXRlcmF0b3JU
ZXN0Um9vdCk7CisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuX19ub2RlRmlsdGVyMUNhbGxzX18s
IDEpOworfSwgIkNhbGxhYmxlIGNhbGxiYWNrIGludGVyZmFjZSwgb3JpZ2luYXRlZCBpbiBhbiA8
aWZyYW1lPiB2aWEgbWFpbiB3aW5kb3cncyBGdW5jdGlvbiBjb25zdHJ1Y3RvciwgaXMgaW52b2tl
ZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZCIpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgICAgd2luZG93Ll9fbm9kZUZpbHRlcjJDYWxsc19fID0gMDsKKyAgICBjb25z
dCBpZnJhbWUgPSBhd2FpdCBjcmVhdGVJZnJhbWUodCwgSUZSQU1FX1NSQyk7CisgICAgY29uc3Qg
bm9kZUl0ZXJhdG9yID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY3JlYXRlTm9kZUl0ZXJhdG9yV2l0
aENhbGxhYmxlRmlsdGVyKCJfX25vZGVGaWx0ZXIyQ2FsbHNfXyIpOworCisgICAgaWZyYW1lLnJl
bW92ZSgpOworICAgIGFzc2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRXaW5kb3csIG51bGwpOwor
CisgICAgYXNzZXJ0X3Rocm93cygoKSA9PiB7IG5vZGVJdGVyYXRvci5uZXh0Tm9kZSgpOyB9KTsK
KyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5fX25vZGVGaWx0ZXIyQ2FsbHNfXywgMCk7Cit9LCAi
Q2FsbGFibGUgY2FsbGJhY2sgaW50ZXJmYWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBp
cyBub3QgaW52b2tlZCBpZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQiKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICAgIHdpbmRvdy5fX25vZGVGaWx0ZXIzQ2FsbHNfXyA9IDA7Cisg
ICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAg
IGNvbnN0IG5vZGVJdGVyYXRvciA9IGlmcmFtZS5jb250ZW50V2luZG93LmNyZWF0ZU5vZGVJdGVy
YXRvcldpdGhOb25DYWxsYWJsZUZpbHRlcjAoIl9fbm9kZUZpbHRlcjNDYWxsc19fIik7CisKKyAg
ICBpZnJhbWUucmVtb3ZlKCk7CisgICAgYXNzZXJ0X2VxdWFscyhpZnJhbWUuY29udGVudFdpbmRv
dywgbnVsbCk7CisKKyAgICBhc3NlcnRfdGhyb3dzKCgpID0+IHsgbm9kZUl0ZXJhdG9yLm5leHRO
b2RlKCk7IH0pOworICAgIGFzc2VydF9lcXVhbHMod2luZG93Ll9fbm9kZUZpbHRlcjNDYWxsc19f
LCAwKTsKK30sICJOb24tY2FsbGFibGUgY2FsbGJhY2sgaW50ZXJmYWNlLCBvcmlnaW5hdGVkIGlu
IGFuIDxpZnJhbWU+IHZpYSBvYmplY3QgbGl0ZXJhbCwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFt
ZT4gaXMgZGlzY29ubmVjdGVkIGV2ZW4gaWYgaXRzICdhY2NlcHROb2RlJyBtZXRob2QgaXMgb2Yg
bWFpbiB3aW5kb3ciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIHdpbmRvdy5f
X25vZGVGaWx0ZXI0Q2FsbHNfXyA9IDA7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRl
SWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IG5vZGVJdGVyYXRvciA9IGlmcmFtZS5j
b250ZW50V2luZG93LmNyZWF0ZU5vZGVJdGVyYXRvcldpdGhOb25DYWxsYWJsZUZpbHRlcjEoIl9f
bm9kZUZpbHRlcjRDYWxsc19fIiwgaWZyYW1lKTsKKworICAgIGFzc2VydF90aHJvd3MoKCkgPT4g
eyBub2RlSXRlcmF0b3IubmV4dE5vZGUoKTsgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhpZnJhbWUu
Y29udGVudFdpbmRvdywgbnVsbCk7CisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuX19ub2RlRmls
dGVyNENhbGxzX18sIDApOworfSwgIk5vbi1jYWxsYWJsZSBjYWxsYmFjayBpbnRlcmZhY2UsIG9y
aWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4gdmlhIG9iamVjdCBsaXRlcmFsLCBpcyBub3QgaW52b2tl
ZCBldmVuIGlmIDxpZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZCBkdXJpbmcgJ2FjY2VwdE5vZGUnIGxv
b2t1cCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgY29uc3QgaWZyYW1lID0g
YXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IG5vZGVJdGVyYXRv
ciA9IGlmcmFtZS5jb250ZW50V2luZG93LmNyZWF0ZU5vZGVJdGVyYXRvcldpdGhOb25DYWxsYWJs
ZUZpbHRlcjIoKTsKKworICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGlm
cmFtZS5jb250ZW50V2luZG93LCBudWxsKTsKKworICAgIGFzc2VydF9lcXVhbHMobm9kZUl0ZXJh
dG9yLm5leHROb2RlKCksIG5vZGVJdGVyYXRvclRlc3RSb290KTsKKyAgICBhc3NlcnRfZXF1YWxz
KG5vZGVJdGVyYXRvci5jYWxsYmFja0ludm9jYXRpb25zLCAxKTsKK30sICJOb24tY2FsbGFibGUg
Y2FsbGJhY2sgaW50ZXJmYWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZpYSBtYWluIHdp
bmRvdydzIE9iamVjdCBjb25zdHJ1Y3RvciwgaXMgaW52b2tlZCBpZiA8aWZyYW1lPiBpcyBkaXNj
b25uZWN0ZWQgZXZlbiBpZiBpdHMgJ2FjY2VwdE5vZGUnIG1ldGhvZCBpcyBvZiB0aGUgPGlmcmFt
ZT4iKTsKKworZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhmbikgeworICAgIGxldCBjYXVnaHRFcnJv
ciA9IGZhbHNlOworICAgIHRyeSB7IGZuKCk7IH0gY2F0Y2ggeyBjYXVnaHRFcnJvciA9IHRydWU7
IH0KKyAgICBhc3NlcnRfdHJ1ZShjYXVnaHRFcnJvciwgImFzc2VydF90aHJvd3MiKTsKK30KKzwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2staW50ZXJmYWNlLWRl
dGFjaGVkLWZyYW1lLXhwYXRobnNyZXNvbHZlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLXhw
YXRobnNyZXNvbHZlci1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLXhwYXRobnNyZXNvbHZl
ci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4IEBACisKK1BBU1MgQ2Fs
bGFibGUgY2FsbGJhY2sgaW50ZXJmYWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+LCBpcyBp
bnZva2VkIGlmIDxpZnJhbWU+IGlzIGNvbm5lY3RlZAorUEFTUyBDYWxsYWJsZSBjYWxsYmFjayBp
bnRlcmZhY2UsIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4gdmlhIG1haW4gd2luZG93J3MgRnVu
Y3Rpb24gY29uc3RydWN0b3IsIGlzIGludm9rZWQgZXZlbiBpZiA8aWZyYW1lPiBpcyBkaXNjb25u
ZWN0ZWQKK1BBU1MgQ2FsbGFibGUgY2FsbGJhY2sgaW50ZXJmYWNlLCBvcmlnaW5hdGVkIGluIGFu
IDxpZnJhbWU+LCBpcyBub3QgaW52b2tlZCBpZiA8aWZyYW1lPiBpcyBkaXNjb25uZWN0ZWQKK1BB
U1MgTm9uLWNhbGxhYmxlIGNhbGxiYWNrIGludGVyZmFjZSwgb3JpZ2luYXRlZCBpbiBhbiA8aWZy
YW1lPiB2aWEgb2JqZWN0IGxpdGVyYWwsIGlzIG5vdCBpbnZva2VkIGlmIDxpZnJhbWU+IGlzIGRp
c2Nvbm5lY3RlZCBldmVuIGlmIGl0cyAnYWNjZXB0Tm9kZScgbWV0aG9kIGlzIG9mIG1haW4gd2lu
ZG93CitQQVNTIE5vbi1jYWxsYWJsZSBjYWxsYmFjayBpbnRlcmZhY2UsIG9yaWdpbmF0ZWQgaW4g
YW4gPGlmcmFtZT4gdmlhIG9iamVjdCBsaXRlcmFsLCBpcyBub3QgaW52b2tlZCBldmVuIGlmIDxp
ZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZCBkdXJpbmcgJ2FjY2VwdE5vZGUnIGxvb2t1cAorUEFTUyBO
b24tY2FsbGFibGUgY2FsbGJhY2sgaW50ZXJmYWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+
IHZpYSBtYWluIHdpbmRvdydzIE9iamVjdCBjb25zdHJ1Y3RvciwgaXMgaW52b2tlZCBpZiA8aWZy
YW1lPiBpcyBkaXNjb25uZWN0ZWQgZXZlbiBpZiBpdHMgJ2FjY2VwdE5vZGUnIG1ldGhvZCBpcyBv
ZiB0aGUgPGlmcmFtZT4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY2FsbGJhY2staW50
ZXJmYWNlLWRldGFjaGVkLWZyYW1lLXhwYXRobnNyZXNvbHZlci5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFtZS14
cGF0aG5zcmVzb2x2ZXIuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jYWxsYmFjay1pbnRlcmZhY2UtZGV0YWNoZWQtZnJhbWUteHBhdGhuc3Jlc29sdmVyLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYWxsYmFjay1mdW5j
dGlvbi1kZXRhY2hlZC1mcmFtZS1jb21tb24uanMiPjwvc2NyaXB0PgorCis8Ym9keT4KKworPGRp
diBpZD0ieHBhdGhFeHByZXNzaW9uVGVzdFJvb3QiPjwvZGl2PgorCis8c2NyaXB0PgorY29uc3Qg
SUZSQU1FX1NSQyA9ICJyZXNvdXJjZXMvY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1l
LXhwYXRobnNyZXNvbHZlci1pZnJhbWUuaHRtbCI7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+
IHsKKyAgICB3aW5kb3cuX194cGF0aEV4cHJlc3Npb24wQ2FsbHNfXyA9IDA7CisgICAgY29uc3Qg
aWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IHRo
dW5rID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY3JlYXRlVGh1bmtXaXRoQ2FsbGFibGVSZXNvbHZl
cigiX194cGF0aEV4cHJlc3Npb24wQ2FsbHNfXyIpOworCisgICAgdGh1bmsoZG9jdW1lbnQsIHhw
YXRoRXhwcmVzc2lvblRlc3RSb290KTsKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5fX3hwYXRo
RXhwcmVzc2lvbjBDYWxsc19fLCAxKTsKK30sICJDYWxsYWJsZSBjYWxsYmFjayBpbnRlcmZhY2Us
IG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFtZT4sIGlzIGludm9rZWQgaWYgPGlmcmFtZT4gaXMgY29u
bmVjdGVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICB3aW5kb3cuX194cGF0
aEV4cHJlc3Npb24xQ2FsbHNfXyA9IDA7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRl
SWZyYW1lKHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IHRodW5rID0gaWZyYW1lLmNvbnRlbnRX
aW5kb3cuY3JlYXRlVGh1bmtXaXRoQ2FsbGFibGVSZXNvbHZlcigiX194cGF0aEV4cHJlc3Npb24x
Q2FsbHNfXyIsIEZ1bmN0aW9uKTsKKworICAgIGlmcmFtZS5yZW1vdmUoKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGlmcmFtZS5jb250ZW50V2luZG93LCBudWxsKTsKKworICAgIHRodW5rKGRvY3VtZW50
LCB4cGF0aEV4cHJlc3Npb25UZXN0Um9vdCk7CisgICAgYXNzZXJ0X2VxdWFscyh3aW5kb3cuX194
cGF0aEV4cHJlc3Npb24xQ2FsbHNfXywgMSk7Cit9LCAiQ2FsbGFibGUgY2FsbGJhY2sgaW50ZXJm
YWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJhbWU+IHZpYSBtYWluIHdpbmRvdydzIEZ1bmN0aW9u
IGNvbnN0cnVjdG9yLCBpcyBpbnZva2VkIGV2ZW4gaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVk
Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICB3aW5kb3cuX194cGF0aEV4cHJl
c3Npb24yQ2FsbHNfXyA9IDA7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1l
KHQsIElGUkFNRV9TUkMpOworICAgIGNvbnN0IHRodW5rID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cu
Y3JlYXRlVGh1bmtXaXRoQ2FsbGFibGVSZXNvbHZlcigiX194cGF0aEV4cHJlc3Npb24yQ2FsbHNf
XyIpOworCisgICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFzc2VydF9lcXVhbHMoaWZyYW1lLmNv
bnRlbnRXaW5kb3csIG51bGwpOworCisgICAgYXNzZXJ0X3Rocm93cygoKSA9PiB7IHRodW5rKGRv
Y3VtZW50LCB4cGF0aEV4cHJlc3Npb25UZXN0Um9vdCk7IH0pOworICAgIGFzc2VydF9lcXVhbHMo
d2luZG93Ll9feHBhdGhFeHByZXNzaW9uMkNhbGxzX18sIDApOworfSwgIkNhbGxhYmxlIGNhbGxi
YWNrIGludGVyZmFjZSwgb3JpZ2luYXRlZCBpbiBhbiA8aWZyYW1lPiwgaXMgbm90IGludm9rZWQg
aWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+
IHsKKyAgICB3aW5kb3cuX19ub2RlRmlsdGVyM0NhbGxzX18gPSAwOworICAgIGNvbnN0IGlmcmFt
ZSA9IGF3YWl0IGNyZWF0ZUlmcmFtZSh0LCBJRlJBTUVfU1JDKTsKKyAgICBjb25zdCB0aHVuayA9
IGlmcmFtZS5jb250ZW50V2luZG93LmNyZWF0ZVRodW5rV2l0aE5vbkNhbGxhYmxlUmVzb2x2ZXIw
KCJfX25vZGVGaWx0ZXIzQ2FsbHNfXyIpOworCisgICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFz
c2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRXaW5kb3csIG51bGwpOworCisgICAgYXNzZXJ0X3Ro
cm93cygoKSA9PiB7IHRodW5rKGRvY3VtZW50LCB4cGF0aEV4cHJlc3Npb25UZXN0Um9vdCk7IH0p
OworICAgIGFzc2VydF9lcXVhbHMod2luZG93Ll9fbm9kZUZpbHRlcjNDYWxsc19fLCAwKTsKK30s
ICJOb24tY2FsbGFibGUgY2FsbGJhY2sgaW50ZXJmYWNlLCBvcmlnaW5hdGVkIGluIGFuIDxpZnJh
bWU+IHZpYSBvYmplY3QgbGl0ZXJhbCwgaXMgbm90IGludm9rZWQgaWYgPGlmcmFtZT4gaXMgZGlz
Y29ubmVjdGVkIGV2ZW4gaWYgaXRzICdhY2NlcHROb2RlJyBtZXRob2QgaXMgb2YgbWFpbiB3aW5k
b3ciKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgIHdpbmRvdy5fX25vZGVGaWx0
ZXI0Q2FsbHNfXyA9IDA7CisgICAgY29uc3QgaWZyYW1lID0gYXdhaXQgY3JlYXRlSWZyYW1lKHQs
IElGUkFNRV9TUkMpOworICAgIGNvbnN0IHRodW5rID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuY3Jl
YXRlVGh1bmtXaXRoTm9uQ2FsbGFibGVSZXNvbHZlcjEoIl9fbm9kZUZpbHRlcjRDYWxsc19fIiwg
aWZyYW1lKTsKKworICAgIGFzc2VydF90aHJvd3MoKCkgPT4geyB0aHVuayhkb2N1bWVudCwgeHBh
dGhFeHByZXNzaW9uVGVzdFJvb3QpOyB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKGlmcmFtZS5jb250
ZW50V2luZG93LCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKHdpbmRvdy5fX25vZGVGaWx0ZXI0
Q2FsbHNfXywgMCk7Cit9LCAiTm9uLWNhbGxhYmxlIGNhbGxiYWNrIGludGVyZmFjZSwgb3JpZ2lu
YXRlZCBpbiBhbiA8aWZyYW1lPiB2aWEgb2JqZWN0IGxpdGVyYWwsIGlzIG5vdCBpbnZva2VkIGV2
ZW4gaWYgPGlmcmFtZT4gaXMgZGlzY29ubmVjdGVkIGR1cmluZyAnYWNjZXB0Tm9kZScgbG9va3Vw
Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICBjb25zdCBpZnJhbWUgPSBhd2Fp
dCBjcmVhdGVJZnJhbWUodCwgSUZSQU1FX1NSQyk7CisgICAgY29uc3QgdGh1bmsgPSBpZnJhbWUu
Y29udGVudFdpbmRvdy5jcmVhdGVUaHVua1dpdGhOb25DYWxsYWJsZVJlc29sdmVyMigpOworCisg
ICAgaWZyYW1lLnJlbW92ZSgpOworICAgIGFzc2VydF9lcXVhbHMoaWZyYW1lLmNvbnRlbnRXaW5k
b3csIG51bGwpOworCisgICAgdGh1bmsoZG9jdW1lbnQsIHhwYXRoRXhwcmVzc2lvblRlc3RSb290
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHRodW5rLmNhbGxiYWNrSW52b2NhdGlvbnMsIDEpOworfSwg
Ik5vbi1jYWxsYWJsZSBjYWxsYmFjayBpbnRlcmZhY2UsIG9yaWdpbmF0ZWQgaW4gYW4gPGlmcmFt
ZT4gdmlhIG1haW4gd2luZG93J3MgT2JqZWN0IGNvbnN0cnVjdG9yLCBpcyBpbnZva2VkIGlmIDxp
ZnJhbWU+IGlzIGRpc2Nvbm5lY3RlZCBldmVuIGlmIGl0cyAnYWNjZXB0Tm9kZScgbWV0aG9kIGlz
IG9mIHRoZSA8aWZyYW1lPiIpOworCitmdW5jdGlvbiBhc3NlcnRfdGhyb3dzKGZuKSB7CisgICAg
bGV0IGNhdWdodEVycm9yID0gZmFsc2U7CisgICAgdHJ5IHsgZm4oKTsgfSBjYXRjaCB7IGNhdWdo
dEVycm9yID0gdHJ1ZTsgfQorICAgIGFzc2VydF90cnVlKGNhdWdodEVycm9yLCAiYXNzZXJ0X3Ro
cm93cyIpOworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQt
Y29udGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI4ODI2MikKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRlc3RzIHRoYXQgd2hlbiBhIEdlb2xv
Y2F0aW9uIHJlcXVlc3QgaXMKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIFN1
Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZAorUEFTUyBObyBjYWxsYmFja3MgaW52b2tlZAogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9jYWxsYmFj
ay10by1kZWxldGVkLWNvbnRleHQuaHRtbAkocmV2aXNpb24gMjg4MjYyKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vY2FsbGJhY2stdG8tZGVsZXRlZC1jb250ZXh0Lmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEzLDcgKzEzLDcgQEAgZnVuY3Rpb24gb25GaXJzdElmcmFtZUxv
YWRlZCgpIHsKIAogZnVuY3Rpb24gb25TZWNvbmRJZnJhbWVMb2FkZWQoKSB7CiAgICAgd2luZG93
LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoJ05vIGNhbGxiYWNr
cyBpbnZva2VkJyk7CisgICAgICAgIHRlc3RQYXNzZWQoJ05vIGNhbGxiYWNrcyBpbnZva2VkJyk7
CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0sIDUwMCk7CiB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nvbm5l
Y3RlZC1mcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI4ODI2MikKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nvbm5lY3RlZC1mcmFtZS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQsNyArNCw5IEBAIFRlc3RzIHRoYXQgd2hlbiBhIHJlcXVlc3QgaXMg
bWFkZSBvbiBhIEcKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIE5vIGNhbGxi
YWNrcyBpbnZva2VkCitQQVNTIHN1Y2Nlc3NDYWxsYmFja0ludm9rZWQgaXMgZmFsc2UKK1BBU1Mg
cG9zaXRpb25FcnJvci5jb2RlIGlzIEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvci5QT1NJVElPTl9V
TkFWQUlMQUJMRQorUEFTUyBwb3NpdGlvbkVycm9yLm1lc3NhZ2UgaXMgJ0dlb2xvY2F0aW9uIGNh
bm5vdCBiZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMnCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL2Rpc2Nvbm5lY3RlZC1mcmFtZS1wZXJtaXNzaW9uLWRlbmllZC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGlz
Y29ubmVjdGVkLWZyYW1lLXBlcm1pc3Npb24tZGVuaWVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
Mjg4MjYyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVk
LWZyYW1lLXBlcm1pc3Npb24tZGVuaWVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NCwxMCArNCwxMiBAQCBUZXN0cyB0aGF0IHdoZW4gYSByZXF1ZXN0IGlzIG1hZGUgb24gYSBHCiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBF
Uk1JU1NJT05fREVOSUVECi1QQVNTIGVycm9yLm1lc3NhZ2UgaXMgIlVzZXIgZGVuaWVkIEdlb2xv
Y2F0aW9uIgogCi1QQVNTIE5vIGNhbGxiYWNrcyBpbnZva2VkCitQQVNTIHN1Y2Nlc3NDYWxsYmFj
a0ludm9rZWQgaXMgZmFsc2UKK1BBU1MgZmlyc3RQb3NpdGlvbkVycm9yLmNvZGUgaXMgR2VvbG9j
YXRpb25Qb3NpdGlvbkVycm9yLlBFUk1JU1NJT05fREVOSUVECitQQVNTIGZpcnN0UG9zaXRpb25F
cnJvci5tZXNzYWdlIGlzICdVc2VyIGRlbmllZCBHZW9sb2NhdGlvbicKK1BBU1Mgc2Vjb25kUG9z
aXRpb25FcnJvci5jb2RlIGlzIEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvci5QRVJNSVNTSU9OX0RF
TklFRAorUEFTUyBzZWNvbmRQb3NpdGlvbkVycm9yLm1lc3NhZ2UgaXMgJ1VzZXIgZGVuaWVkIEdl
b2xvY2F0aW9uJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQt
ZnJhbWUtcGVybWlzc2lvbi1kZW5pZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUtcGVybWlzc2lvbi1kZW5pZWQu
aHRtbAkocmV2aXNpb24gMjg4MjYyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vZGlzY29ubmVjdGVkLWZyYW1lLXBlcm1pc3Npb24tZGVuaWVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTE1LDE2ICsxNSwxMyBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKIH0gZWxzZQog
ICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgdGVzdFJ1bm5l
cicpOwogCi12YXIgZXJyb3I7Cit3aW5kb3cuc3VjY2Vzc0NhbGxiYWNrSW52b2tlZCA9IGZhbHNl
OwogZnVuY3Rpb24gb25JZnJhbWVMb2FkZWQoKSB7CiAgICAgaWZyYW1lR2VvbG9jYXRpb24gPSBp
ZnJhbWUuY29udGVudFdpbmRvdy5uYXZpZ2F0b3IuZ2VvbG9jYXRpb247CiAgICAgaWZyYW1lR2Vv
bG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKCkgewotICAgICAgICB0ZXN0RmFp
bGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7Ci0gICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB3aW5kb3cuc3VjY2Vzc0NhbGxiYWNrSW52b2tlZCA9IHRy
dWU7CiAgICAgfSwgZnVuY3Rpb24oZSkgewotICAgICAgICBlcnJvciA9IGU7Ci0gICAgICAgIHNo
b3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBFUk1JU1NJT05fREVOSUVEJyk7Ci0gICAgICAg
IHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJyJVc2VyIGRlbmllZCBHZW9sb2NhdGlvbiInKTsK
KyAgICAgICAgd2luZG93LnNlY29uZFBvc2l0aW9uRXJyb3IgPSBlOwogICAgICAgICBkZWJ1Zygn
Jyk7CiAgICAgICAgIGlmcmFtZS5zcmMgPSAnZGF0YTp0ZXh0L2h0bWwsVGhpcyBmcmFtZSBzaG91
bGQgYmUgdmlzaWJsZSB3aGVuIHRoZSB0ZXN0IGNvbXBsZXRlcyc7CiAgICAgfSk7CkBAIC0zMywx
NiArMzAsMTggQEAgZnVuY3Rpb24gb25JZnJhbWVMb2FkZWQoKSB7CiBmdW5jdGlvbiBvbklmcmFt
ZVVubG9hZGVkKCkgewogICAgIC8vIE1ha2UgYW5vdGhlciByZXF1ZXN0LCB3aXRoIHBlcm1pc3Np
b24gYWxyZWFkeSBkZW5pZWQuCiAgICAgaWZyYW1lR2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBp
bnZva2VkIHVuZXhwZWN0ZWRseScpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
d2luZG93LnN1Y2Nlc3NDYWxsYmFja0ludm9rZWQgPSB0cnVlOwogICAgIH0sIGZ1bmN0aW9uKGUp
IHsKLSAgICAgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCcpOwotICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgd2luZG93LmZpcnN0UG9zaXRpb25FcnJvciA9IGU7
CiAgICAgfSk7CiAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgdGVzdFBhc3Nl
ZCgnTm8gY2FsbGJhY2tzIGludm9rZWQnKTsKKyAgICAgICAgc2hvdWxkQmUoInN1Y2Nlc3NDYWxs
YmFja0ludm9rZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgc2hvdWxkQmUoImZpcnN0UG9zaXRpb25F
cnJvci5jb2RlIiwgIkdlb2xvY2F0aW9uUG9zaXRpb25FcnJvci5QRVJNSVNTSU9OX0RFTklFRCIp
OworICAgICAgICBzaG91bGRCZSgiZmlyc3RQb3NpdGlvbkVycm9yLm1lc3NhZ2UiLCAiJ1VzZXIg
ZGVuaWVkIEdlb2xvY2F0aW9uJyIpOworICAgICAgICBzaG91bGRCZSgic2Vjb25kUG9zaXRpb25F
cnJvci5jb2RlIiwgIkdlb2xvY2F0aW9uUG9zaXRpb25FcnJvci5QRVJNSVNTSU9OX0RFTklFRCIp
OworICAgICAgICBzaG91bGRCZSgic2Vjb25kUG9zaXRpb25FcnJvci5tZXNzYWdlIiwgIidVc2Vy
IGRlbmllZCBHZW9sb2NhdGlvbiciKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSwg
MTAwKTsKKyAgICB9LCAxMDAwKTsKIH0KIAogdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2lmcmFtZScpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
ZGlzY29ubmVjdGVkLWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLmh0bWwJKHJldmlzaW9uIDI4ODI2MikK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nvbm5lY3RlZC1mcmFtZS5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNywxOSArMTcsMTkgQEAgZnVuY3Rpb24gb25JZnJhbWVM
b2FkZWQoKSB7CiAgICAgaWZyYW1lLnNyYyA9ICdkYXRhOnRleHQvaHRtbCxUaGlzIGZyYW1lIHNo
b3VsZCBiZSB2aXNpYmxlIHdoZW4gdGhlIHRlc3QgY29tcGxldGVzJzsKIH0KIAotdmFyIGVycm9y
Oword2luZG93LnN1Y2Nlc3NDYWxsYmFja0ludm9rZWQgPSBmYWxzZTsKIGZ1bmN0aW9uIG9uSWZy
YW1lVW5sb2FkZWQoKSB7CiAgICAgaWZyYW1lR2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZv
a2VkIHVuZXhwZWN0ZWRseScpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgd2lu
ZG93LnN1Y2Nlc3NDYWxsYmFja0ludm9rZWQgPSB0cnVlOwogICAgIH0sIGZ1bmN0aW9uKGUpIHsK
LSAgICAgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCcpOwotICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgd2luZG93LnBvc2l0aW9uRXJyb3IgPSBlOwogICAgIH0p
OwogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoJ05vIGNh
bGxiYWNrcyBpbnZva2VkJyk7CisgICAgICAgIHNob3VsZEJlKCJzdWNjZXNzQ2FsbGJhY2tJbnZv
a2VkIiwgImZhbHNlIik7CisgICAgICAgIHNob3VsZEJlKCJwb3NpdGlvbkVycm9yLmNvZGUiLCAi
R2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFIik7CisgICAgICAg
IHNob3VsZEJlKCJwb3NpdGlvbkVycm9yLm1lc3NhZ2UiLCAiJ0dlb2xvY2F0aW9uIGNhbm5vdCBi
ZSB1c2VkIGluIGZyYW1lbGVzcyBkb2N1bWVudHMnIik7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OwotICAgIH0sIDEwMCk7CisgICAgfSwgMTAwMCk7CiB9CiAKIHZhciBpZnJhbWUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3Jlc291cmNlcy9jYWxsYmFjay10by1kZWxldGVkLWNvbnRleHQtaW5uZXIxLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3Vy
Y2VzL2NhbGxiYWNrLXRvLWRlbGV0ZWQtY29udGV4dC1pbm5lcjEuaHRtbAkocmV2aXNpb24gMjg4
MjYyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2NhbGxi
YWNrLXRvLWRlbGV0ZWQtY29udGV4dC1pbm5lcjEuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMs
NyArMTMsNyBAQAogICAgICAgICAgIC8vIE1ha2UgcmVxdWVzdCBmcm9tIHJlbW90ZSBmcmFtZSwg
dGhpcyBmcmFtZSB3aWxsIGJlIGdvbmUgYnkgdGhlIHRpbWUgdGhlIEdlb2xvY2F0aW9uCiAgICAg
ICAgICAgLy8gb2JqZWN0IGF0dGVtcHRzIHRvIGludm9rZSB0aGUgY2FsbGJhY2suCiAgICAgICAg
ICAgd2luZG93LnBhcmVudC5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICBwYXJlbnQudGVzdFBhc3NlZCgnU3VjY2VzcyBj
YWxsYmFjayBpbnZva2VkJyk7CisgICAgICAgICAgICAgIHBhcmVudC50ZXN0RmFpbGVkKCdTdWNj
ZXNzIGNhbGxiYWNrIGludm9rZWQnKTsKICAgICAgICAgICAgICAgcGFyZW50LmZpbmlzaEpTVGVz
dCgpOwogICAgICAgICAgIH0sIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICBwYXJlbnQudGVz
dEZhaWxlZCgnRXJyb3IgY2FsbGJhY2sgaW52b2tlZCB1bmV4cGVjdGVkbHknKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1m
cmFtZS1jb21tb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3Vy
Y2VzL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLWNvbW1vbi5qcwkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24t
ZGV0YWNoZWQtZnJhbWUtY29tbW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAK
K2Z1bmN0aW9uIHNsZWVwKG1zKSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eyBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKTsgfSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUlmcmFt
ZSh0LCBzcmMpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAg
IGNvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAg
ICBpZnJhbWUub25sb2FkID0gKCkgPT4geyByZXNvbHZlKGlmcmFtZSk7IH07CisgICAgICAgIGlm
cmFtZS5zcmMgPSBzcmM7CisKKyAgICAgICAgdC5hZGRfY2xlYW51cCgoKSA9PiB7IGlmcmFtZS5y
ZW1vdmUoKTsgfSk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKGlmcmFtZSk7CisgICAg
fSk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2stZnVu
Y3Rpb24tZGV0YWNoZWQtZnJhbWUtaW50ZXJzZWN0aW9uLW9ic2VydmVyLWlmcmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5j
dGlvbi1kZXRhY2hlZC1mcmFtZS1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXItaWZyYW1lLmh0bWwJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNrLWZ1
bmN0aW9uLWRldGFjaGVkLWZyYW1lLWludGVyc2VjdGlvbi1vYnNlcnZlci1pZnJhbWUuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPHNjcmlw
dD4KK2Z1bmN0aW9uIGNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyKEZ1bmN0aW9uQ29uc3RydWN0
b3IgPSBGdW5jdGlvbikgeworICAgIGNvbnN0IGludGVyc2VjdGlvbk9ic2VydmVyID0gbmV3IHBh
cmVudC5JbnRlcnNlY3Rpb25PYnNlcnZlcihuZXcgRnVuY3Rpb25Db25zdHJ1Y3RvcihgCisgICAg
ICAgIGlmICh0aGlzLmlzSW5pdGlhbEVudHJ5KSB7CisgICAgICAgICAgICB0aGlzLmlzSW5pdGlh
bEVudHJ5ID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICB0aGlzLmNhbGxiYWNrSW52b2NhdGlvbnMrKzsKKyAgICBgKSk7CisKKyAgICBpbnRlcnNlY3Rp
b25PYnNlcnZlci5pc0luaXRpYWxFbnRyeSA9IHRydWU7CisgICAgaW50ZXJzZWN0aW9uT2JzZXJ2
ZXIuY2FsbGJhY2tJbnZvY2F0aW9ucyA9IDA7CisgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2Jz
ZXJ2ZShwYXJlbnQuaW50ZXJzZWN0aW9uT2JzZXJ2ZXJUZXN0Um9vdCwgeyB0aHJlc2hvbGQ6IDEg
fSk7CisKKyAgICByZXR1cm4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXI7Cit9Cis8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRh
Y2hlZC1mcmFtZS1tdXRhdGlvbi1vYnNlcnZlci1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQt
ZnJhbWUtbXV0YXRpb24tb2JzZXJ2ZXItaWZyYW1lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZy
YW1lLW11dGF0aW9uLW9ic2VydmVyLWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8c2NyaXB0PgorZnVuY3Rpb24gY3JlYXRlTXV0
YXRpb25PYnNlcnZlcihGdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb24pIHsKKyAgICBjb25z
dCBtdXRhdGlvbk9ic2VydmVyID0gbmV3IHBhcmVudC5NdXRhdGlvbk9ic2VydmVyKG5ldyBGdW5j
dGlvbkNvbnN0cnVjdG9yKGAKKyAgICAgICAgdGhpcy5jYWxsYmFja0ludm9jYXRpb25zKys7Cisg
ICAgYCkpOworCisgICAgbXV0YXRpb25PYnNlcnZlci5jYWxsYmFja0ludm9jYXRpb25zID0gMDsK
KyAgICBtdXRhdGlvbk9ic2VydmVyLm9ic2VydmUocGFyZW50Lm11dGF0aW9uT2JzZXJ2ZXJUZXN0
Um9vdCwgeyBjaGlsZExpc3Q6IHRydWUgfSk7CisKKyAgICByZXR1cm4gbXV0YXRpb25PYnNlcnZl
cjsKK30KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2Nh
bGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXBlcmZvcm1hbmNlLW9ic2VydmVyLWlmcmFt
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxs
YmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1wZXJmb3JtYW5jZS1vYnNlcnZlci1pZnJhbWUu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2Fs
bGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcGVyZm9ybWFuY2Utb2JzZXJ2ZXItaWZyYW1l
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+CisK
KzxzY3JpcHQ+CitmdW5jdGlvbiBjcmVhdGVQZXJmb3JtYW5jZU9ic2VydmVyKEZ1bmN0aW9uQ29u
c3RydWN0b3IgPSBGdW5jdGlvbikgeworICAgIGNvbnN0IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgPSBu
ZXcgcGFyZW50LlBlcmZvcm1hbmNlT2JzZXJ2ZXIobmV3IEZ1bmN0aW9uQ29uc3RydWN0b3IoYAor
ICAgICAgICB0aGlzLmNhbGxiYWNrSW52b2NhdGlvbnMrKzsKKyAgICBgKSk7CisKKyAgICBwZXJm
b3JtYW5jZU9ic2VydmVyLmNhbGxiYWNrSW52b2NhdGlvbnMgPSAwOworICAgIHBlcmZvcm1hbmNl
T2JzZXJ2ZXIub2JzZXJ2ZSh7IGVudHJ5VHlwZXM6IFsibWFyayJdIH0pOworCisgICAgcmV0dXJu
IHBlcmZvcm1hbmNlT2JzZXJ2ZXI7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1yYWYtaWZy
YW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2Nh
bGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXJhZi1pZnJhbWUuaHRtbAkobm9uZXhpc3Rl
bnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2stZnVuY3Rpb24t
ZGV0YWNoZWQtZnJhbWUtcmFmLWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OSBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiByYWYoa2V5LCBGdW5j
dGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb24pIHsKKyAgICBwYXJlbnQucmVxdWVzdEFuaW1hdGlv
bkZyYW1lKEZ1bmN0aW9uQ29uc3RydWN0b3IoYAorICAgICAgICB0b3BbIiR7a2V5fSJdKys7Cisg
ICAgYCkpOworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJj
ZXMvY2FsbGJhY2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9ic2VydmVyLWlmcmFt
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxs
YmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1yZXNpemUtb2JzZXJ2ZXItaWZyYW1lLmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2NhbGxiYWNr
LWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXJlc2l6ZS1vYnNlcnZlci1pZnJhbWUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDIwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPHNjcmlwdD4K
K2Z1bmN0aW9uIGNyZWF0ZVJlc2l6ZU9ic2VydmVyKEZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5j
dGlvbikgeworICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IHBhcmVudC5SZXNpemVPYnNl
cnZlcihuZXcgRnVuY3Rpb25Db25zdHJ1Y3RvcihgCisgICAgICAgIGlmICh0aGlzLmlzSW5pdGlh
bEVudHJ5KSB7CisgICAgICAgICAgICB0aGlzLmlzSW5pdGlhbEVudHJ5ID0gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmNhbGxiYWNrSW52b2Nh
dGlvbnMrKzsKKyAgICBgKSk7CisKKyAgICByZXNpemVPYnNlcnZlci5pc0luaXRpYWxFbnRyeSA9
IHRydWU7CisgICAgcmVzaXplT2JzZXJ2ZXIuY2FsbGJhY2tJbnZvY2F0aW9ucyA9IDA7CisgICAg
cmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShwYXJlbnQucmVzaXplT2JzZXJ2ZXJUZXN0Um9vdCk7CisK
KyAgICByZXR1cm4gcmVzaXplT2JzZXJ2ZXI7Cit9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS10
by1ibG9iLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jl
c291cmNlcy9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS10by1ibG9iLWlmcmFtZS5o
dG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9jYWxs
YmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS10by1ibG9iLWlmcmFtZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxzY3JpcHQ+CitmdW5j
dGlvbiB0b0Jsb2Ioa2V5LCBGdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb24pIHsKKyAgICBw
YXJlbnQudG9CbG9iVGVzdFJvb3QudG9CbG9iKEZ1bmN0aW9uQ29uc3RydWN0b3IoYAorICAgICAg
ICB0b3BbIiR7a2V5fSJdKys7CisgICAgYCkpOworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1l
LW5vZGUtZmlsdGVyLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL3Jlc291cmNlcy9jYWxsYmFjay1pbnRlcmZhY2UtZGV0YWNoZWQtZnJhbWUtbm9kZS1maWx0
ZXItaWZyYW1lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVz
b3VyY2VzL2NhbGxiYWNrLWludGVyZmFjZS1kZXRhY2hlZC1mcmFtZS1ub2RlLWZpbHRlci1pZnJh
bWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4K
KworPHNjcmlwdD4KK2Z1bmN0aW9uIGNyZWF0ZU5vZGVJdGVyYXRvcldpdGhDYWxsYWJsZUZpbHRl
cihrZXksIEZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbikgeworICAgIHJldHVybiBwYXJl
bnQuZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKHBhcmVudC5ub2RlSXRlcmF0b3JUZXN0Um9v
dCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIG5ldyBGdW5jdGlvbkNvbnN0cnVjdG9yKGAKKyAg
ICAgICAgdG9wWyIke2tleX0iXSsrOworICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJf
QUNDRVBUOworICAgIGApKTsKK30KKworZnVuY3Rpb24gY3JlYXRlTm9kZUl0ZXJhdG9yV2l0aE5v
bkNhbGxhYmxlRmlsdGVyMChrZXkpIHsKKyAgICBjb25zdCBub2RlRmlsdGVyID0geworICAgICAg
ICBhY2NlcHROb2RlOiBuZXcgcGFyZW50LkZ1bmN0aW9uKGAKKyAgICAgICAgICAgIHRvcFsiJHtr
ZXl9Il0rKzsKKyAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7Cisg
ICAgICAgIGApLAorICAgIH07CisKKyAgICByZXR1cm4gcGFyZW50LmRvY3VtZW50LmNyZWF0ZU5v
ZGVJdGVyYXRvcihwYXJlbnQubm9kZUl0ZXJhdG9yVGVzdFJvb3QsIE5vZGVGaWx0ZXIuU0hPV19F
TEVNRU5ULCBub2RlRmlsdGVyKTsKK30KKworZnVuY3Rpb24gY3JlYXRlTm9kZUl0ZXJhdG9yV2l0
aE5vbkNhbGxhYmxlRmlsdGVyMShrZXksIGlmcmFtZSkgeworICAgIGNvbnN0IG5vZGVGaWx0ZXIg
PSB7CisgICAgICAgIGdldCBhY2NlcHROb2RlKCkgeworICAgICAgICAgICAgaWZyYW1lLnJlbW92
ZSgpOworCisgICAgICAgICAgICByZXR1cm4gKCkgPT4geworICAgICAgICAgICAgICAgIHRvcFtr
ZXldKys7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDsK
KyAgICAgICAgICAgIH07CisgICAgICAgIH0sCisgICAgfTsKKworICAgIHJldHVybiBwYXJlbnQu
ZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKHBhcmVudC5ub2RlSXRlcmF0b3JUZXN0Um9vdCwg
Tm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIG5vZGVGaWx0ZXIpOworfQorCitmdW5jdGlvbiBjcmVh
dGVOb2RlSXRlcmF0b3JXaXRoTm9uQ2FsbGFibGVGaWx0ZXIyKCkgeworICAgIGNvbnN0IG5vZGVG
aWx0ZXIgPSBuZXcgcGFyZW50Lk9iamVjdDsKKyAgICBub2RlRmlsdGVyLmNhbGxiYWNrSW52b2Nh
dGlvbnMgPSAwOworICAgIG5vZGVGaWx0ZXIuYWNjZXB0Tm9kZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICBub2RlSXRlcmF0b3IuY2FsbGJhY2tJbnZvY2F0aW9ucysrOworICAgICAgICByZXR1cm4g
Tm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOworICAgIH07CisKKyAgICBjb25zdCBub2RlSXRlcmF0
b3IgPSBwYXJlbnQuZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKHBhcmVudC5ub2RlSXRlcmF0
b3JUZXN0Um9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIG5vZGVGaWx0ZXIpOworICAgIG5v
ZGVJdGVyYXRvci5jYWxsYmFja0ludm9jYXRpb25zID0gMDsKKyAgICByZXR1cm4gbm9kZUl0ZXJh
dG9yOworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMv
Y2FsbGJhY2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLXhwYXRobnNyZXNvbHZlci1pZnJhbWUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJh
Y2staW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLXhwYXRobnNyZXNvbHZlci1pZnJhbWUuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvY2FsbGJhY2st
aW50ZXJmYWNlLWRldGFjaGVkLWZyYW1lLXhwYXRobnNyZXNvbHZlci1pZnJhbWUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKworPHNjcmlwdD4K
K2NvbnN0IG5zID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvZm9vIjsKKworZnVuY3Rpb24gY3Jl
YXRlVGh1bmtXaXRoQ2FsbGFibGVSZXNvbHZlcihrZXksIEZ1bmN0aW9uQ29uc3RydWN0b3IgPSBG
dW5jdGlvbikgeworICAgIGNvbnN0IHJlc29sdmVyID0gbmV3IEZ1bmN0aW9uQ29uc3RydWN0b3Io
YAorICAgICAgICB0b3BbIiR7a2V5fSJdKys7CisgICAgICAgIHJldHVybiAiJHtuc30iOworICAg
IGApOworCisgICAgcmV0dXJuIChwYXJlbnREb2N1bWVudCwgY29udGV4dE5vZGUpID0+IHBhcmVu
dERvY3VtZW50LmV2YWx1YXRlKCIvZm9vOmJhciIsIGNvbnRleHROb2RlLCByZXNvbHZlcik7Cit9
CisKK2Z1bmN0aW9uIGNyZWF0ZVRodW5rV2l0aE5vbkNhbGxhYmxlUmVzb2x2ZXIwKGtleSkgewor
ICAgIGNvbnN0IHJlc29sdmVyID0geworICAgICAgICBsb29rdXBOYW1lc3BhY2VVUkk6IG5ldyBw
YXJlbnQuRnVuY3Rpb24oYAorICAgICAgICAgICAgdG9wWyIke2tleX0iXSsrOworICAgICAgICAg
ICAgcmV0dXJuICIke25zfSI7CisgICAgICAgIGApLAorICAgIH07CisKKyAgICByZXR1cm4gKHBh
cmVudERvY3VtZW50LCBjb250ZXh0Tm9kZSkgPT4gcGFyZW50RG9jdW1lbnQuZXZhbHVhdGUoIi9m
b286YmFyIiwgY29udGV4dE5vZGUsIHJlc29sdmVyKTsKK30KKworZnVuY3Rpb24gY3JlYXRlVGh1
bmtXaXRoTm9uQ2FsbGFibGVSZXNvbHZlcjEoa2V5LCBpZnJhbWUpIHsKKyAgICBjb25zdCByZXNv
bHZlciA9IHsKKyAgICAgICAgZ2V0IGxvb2t1cE5hbWVzcGFjZVVSSSgpIHsKKyAgICAgICAgICAg
IGlmcmFtZS5yZW1vdmUoKTsKKworICAgICAgICAgICAgcmV0dXJuICgpID0+IHsKKyAgICAgICAg
ICAgICAgICB0b3Bba2V5XSsrOworICAgICAgICAgICAgICAgIHJldHVybiBuczsKKyAgICAgICAg
ICAgIH07CisgICAgICAgIH0sCisgICAgfTsKKworICAgIHJldHVybiAocGFyZW50RG9jdW1lbnQs
IGNvbnRleHROb2RlKSA9PiBwYXJlbnREb2N1bWVudC5ldmFsdWF0ZSgiL2ZvbzpiYXIiLCBjb250
ZXh0Tm9kZSwgcmVzb2x2ZXIpOworfQorCitmdW5jdGlvbiBjcmVhdGVUaHVua1dpdGhOb25DYWxs
YWJsZVJlc29sdmVyMigpIHsKKyAgICBjb25zdCByZXNvbHZlciA9IG5ldyBwYXJlbnQuT2JqZWN0
OworICAgIHJlc29sdmVyLmxvb2t1cE5hbWVzcGFjZVVSSSA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICB0aHVuay5jYWxsYmFja0ludm9jYXRpb25zKys7CisgICAgICAgIHJldHVybiBuczsKKyAgICB9
OworCisgICAgY29uc3QgdGh1bmsgPSAocGFyZW50RG9jdW1lbnQsIGNvbnRleHROb2RlKSA9PiBw
YXJlbnREb2N1bWVudC5ldmFsdWF0ZSgiL2ZvbzpiYXIiLCBjb250ZXh0Tm9kZSwgcmVzb2x2ZXIp
OworICAgIHRodW5rLmNhbGxiYWNrSW52b2NhdGlvbnMgPSAwOworCisgICAgcmV0dXJuIHRodW5r
OworfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kZXRhY2hlZC1z
dmctcGFyZW50LXdpbmRvdy1ldmVudHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2RldGFjaGVkLXN2Zy1wYXJlbnQtd2luZG93LWV2ZW50cy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDI4ODI2MikKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Rl
dGFjaGVkLXN2Zy1wYXJlbnQtd2luZG93LWV2ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsOSArMSw5IEBACi1DT05TT0xFIE1FU1NBR0U6IGVycm9yCiBUaGlzIHRlc3RzIGNy
ZWF0aW5nIGEgZGlzY29ubmVjdGVkIFNWRyBlbGVtZW50IHdpdGggcmVzaXplIGV2ZW50IGhhbmRs
ZXIuIFRoZSBldmVudCBoYW5kbGVyIHNob3VsZCBub3QgZ2V0IGRpc3BhdGNoZWQgdW5sZXNzIHRo
ZSBlbGVtZW50IGlzIGNvbm5lY3RlZAogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAor
UEFTUyBpZnJhbWUuY29udGVudFdpbmRvdy5ldmFsKCd0aHJvdyAiZXJyb3IiJykgdGhyZXcgZXhj
ZXB0aW9uIGVycm9yLgogUEFTUyBkaWRGaXJlUmVzaXplIGlzIGZhbHNlCiBQQVNTIGRpZEZpcmVP
bkVycm9yIGlzIGZhbHNlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kZXRhY2hlZC1zdmctcGFyZW50LXdpbmRvdy1ldmVudHMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kZXRhY2hlZC1zdmct
cGFyZW50LXdpbmRvdy1ldmVudHMuaHRtbAkocmV2aXNpb24gMjg4MjYyKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvZGV0YWNoZWQtc3ZnLXBhcmVudC13aW5kb3ctZXZlbnRzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlRmFsc2UoJ2RpZEZpcmVPbkVycm9yJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmcmFtZS5jb250ZW50V2luZG93LmV2YWwoJ3Rocm93ICJlcnJvciInKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkVGhyb3coYGlmcmFtZS5jb250ZW50V2luZG93LmV2YWwoJ3Rocm93
ICJlcnJvciInKWAsIGAiZXJyb3IiYCk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICB9OwogICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvZnJhbWUtd2luZG93LWFzLWNhbGxiYWNrLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aW5k
b3ctYXMtY2FsbGJhY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyODgyNjIpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aW5kb3ctYXMtY2FsbGJhY2stZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQCBUZXN0cyB0aGF0IHdlIGFyZSB1c2luZyB0aGUg
cmlnaHQgZ2xvYmFsCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUzogR2xvYmFs
IG9iamVjdCB3YXMgdGhlIHJpZ2h0IG9uZS4KK1BBU1MgbmV4dE5vZGVFcnJvci5jb25zdHJ1Y3Rv
ciBpcyBmLmNvbnRlbnRXaW5kb3cuVHlwZUVycm9yCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL2Zy
YW1lLXdpbmRvdy1hcy1jYWxsYmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZnJhbWVzL2ZyYW1lLXdpbmRvdy1hcy1jYWxsYmFjay5odG1sCShyZXZpc2lvbiAyODgyNjIp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9mcmFtZS13aW5kb3ctYXMtY2FsbGJhY2suaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDYgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0
IHdlIGFyZSB1c2luZyB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgRE9NIGNhbGxiYWNrcy4i
KTsKIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCi1kb2N1bWVudC5yZXN1bHQgPSAiUEFTUzogR2xv
YmFsIG9iamVjdCB3YXMgdGhlIHJpZ2h0IG9uZS4iOwogdmFyIGYgPSBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpKTsKIGYub25sb2FkID0g
ZnVuY3Rpb24oKSB7CiAgICAgZi5vbmxvYWQgPSBudWxsOwpAQCAtMTUsMTMgKzE0LDE0IEBAIGYu
b25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBpdGVyYXRvciA9IGRvY3VtZW50LmNy
ZWF0ZU5vZGVJdGVyYXRvcihkb2N1bWVudCwgTm9kZUZpbHRlci5TSE9XX0FMTCwgZi5jb250ZW50
V2luZG93KTsKICAgICAgICAgaXRlcmF0b3IubmV4dE5vZGUoKTsKICAgICB9IGNhdGNoKGUpIHsK
LSAgICAgICAgZS5jb25zdHJ1Y3Rvci5jb25zdHJ1Y3RvcigiZGVidWcoZG9jdW1lbnQucmVzdWx0
KSIpKCk7CisgICAgICAgIHdpbmRvdy5uZXh0Tm9kZUVycm9yID0gZTsKICAgICB9CiAKKyAgICBz
aG91bGRCZSgibmV4dE5vZGVFcnJvci5jb25zdHJ1Y3RvciIsICJmLmNvbnRlbnRXaW5kb3cuVHlw
ZUVycm9yIik7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9OwogCi1mLnNyYyA9ICJyZXNvdXJjZXMv
d3JvbmctZ2xvYmFsLW9iamVjdC5odG1sIjsKK2Yuc3JjID0gInJlc291cmNlcy9lbXB0eS1ib2R5
Lmh0bWwiOwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9yZXNvdXJjZXMvd3JvbmctZ2xvYmFsLW9iamVjdC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy93cm9uZy1nbG9iYWwtb2JqZWN0Lmh0bWwJKHJl
dmlzaW9uIDI4ODI2MikKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy93cm9u
Zy1nbG9iYWwtb2JqZWN0Lmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw0ICswLDAgQEAKLTxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNj
cmlwdD4KLWRvY3VtZW50LnJlc3VsdCA9ICJGQUlMOiBXcm9uZyBnbG9iYWwgb2JqZWN0IHdhcyB1
c2VkLiI7Ci08L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2
aXNpb24gMjg4MjYyKQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAxLTE5ICBBbGV4ZXkgU2h2YXlrYSAg
PGFzaHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBDYWxsYmFjayBmdW5jdGlvbnMgLyBpbnRl
cmZhY2VzIHNob3VsZCB1c2UgZ2xvYmFsIG9iamVjdCBvZiBpdHMgX3ZhbHVlXyBmb3IgZXJyb3Jz
IGFuZCBsaWZlY3ljbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMjM4NworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAg
ICAgIEltcG9ydCBXUFQgdGVzdHMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdC9wdWxsLzMyNDQ5LgorCisgICAgICAgIFRoZSByZW1haW5pbmcgZmFpbHVyZXMg
YXJlIGR1ZSB0byB1bnJlbGF0ZWQgc3BlYyBjb21wYXQgaXNzdWUgd2l0aCBjYWxsaW5nIGNyb3Nz
LXJlYWxtIFByb3h5T2JqZWN0IC8gSlNCb3VuZEZ1bmN0aW9uLgorCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2RvbS9ldmVudHMvRXZlbnRMaXN0ZW5lci1oYW5kbGVFdmVudC1jcm9zcy1y
ZWFsbS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9k
b20vZXZlbnRzL0V2ZW50TGlzdGVuZXItaGFuZGxlRXZlbnQtY3Jvc3MtcmVhbG0uaHRtbDogQWRk
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ldmVudHMvcmVzb3VyY2VzL2Vt
cHR5LWRvY3VtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9k
b20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1Ry
ZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tbnVsbC1icm93c2luZy1jb250
ZXh0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZl
cnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLW51bGwtYnJvd3Np
bmctY29udGV4dC5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVy
c2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0uaHRtbDoKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9zdXBwb3J0L1RyZWVXYWxrZXIt
YWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tc3ViZnJhbWUuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9zdXBwb3J0L2VtcHR5LWRv
Y3VtZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb214cGF0
aC9yZXNvbHZlci1jYWxsYmFjay1pbnRlcmZhY2UtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9teHBhdGgvcmVzb2x2ZXItY2Fs
bGJhY2staW50ZXJmYWNlLWNyb3NzLXJlYWxtLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9kb214cGF0aC9yZXNvdXJjZXM6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9kb214cGF0aC9yZXNvdXJjZXMvZW1wdHktZG9jdW1lbnQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2RvbXhwYXRoL3Jlc291cmNlcy9pbnZh
bGlkX25hbWVzcGFjZV90ZXN0LmpzOiBBZGRlZC4KKwogMjAyMi0wMS0xOSAgVGltIE5ndXllbiAg
PG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB2aXNpYmlsaXR5OiB2aXNpYmxlIHRvIG1v
ZGFsIGRpYWxvZ3MgaW4gVUEgc2hlZXQKSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9FdmVudExpc3RlbmVyLWhhbmRsZUV2ZW50LWNy
b3NzLXJlYWxtLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ldmVudHMvRXZlbnRMaXN0ZW5lci1oYW5kbGVF
dmVudC1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL0V2ZW50TGlzdGVu
ZXItaGFuZGxlRXZlbnQtY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTcgQEAKK0NPTlNPTEUgTUVTU0FHRTogVHlwZUVycm9yOiAnaGFuZGxlRXZlbnQn
IHByb3BlcnR5IG9mIGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZSBjYWxsYWJsZQorQ09OU09MRSBN
RVNTQUdFOiBUeXBlRXJyb3I6ICdoYW5kbGVFdmVudCcgcHJvcGVydHkgb2YgZXZlbnQgbGlzdGVu
ZXIgc2hvdWxkIGJlIGNhbGxhYmxlCitDT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogUHJveHkg
aGFzIGFscmVhZHkgYmVlbiByZXZva2VkLiBObyBtb3JlIG9wZXJhdGlvbnMgYXJlIGFsbG93ZWQg
dG8gYmUgcGVyZm9ybWVkIG9uIGl0CitDT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogUHJveHkg
aGFzIGFscmVhZHkgYmVlbiByZXZva2VkLiBObyBtb3JlIG9wZXJhdGlvbnMgYXJlIGFsbG93ZWQg
dG8gYmUgcGVyZm9ybWVkIG9uIGl0CitDT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogUHJveHkg
aGFzIGFscmVhZHkgYmVlbiByZXZva2VkLiBObyBtb3JlIG9wZXJhdGlvbnMgYXJlIGFsbG93ZWQg
dG8gYmUgcGVyZm9ybWVkIG9uIGl0CisKKworUEFTUyBFdmVudExpc3RlbmVyIGlzIGNyb3NzLXJl
YWxtIHBsYWluIG9iamVjdCB3aXRob3V0ICdoYW5kbGVFdmVudCcgcHJvcGVydHkKK1BBU1MgRXZl
bnRMaXN0ZW5lciBpcyBjcm9zcy1yZWFsbSBwbGFpbiBvYmplY3Qgd2l0aCBub24tY2FsbGFibGUg
J2hhbmRsZUV2ZW50JyBwcm9wZXJ0eQorRkFJTCBFdmVudExpc3RlbmVyIGlzIGNyb3NzLXJlYWxt
IHBsYWluIG9iamVjdCB3aXRoIHJldm9rZWQgUHJveHkgYXMgJ2hhbmRsZUV2ZW50JyBwcm9wZXJ0
eSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBmdW5jdGlvbiAiZnVuY3Rpb24gVHlwZUVycm9yKCkg
eworICAgIFtuYXRpdmUgY29kZV0KK30iIGJ1dCBnb3QgZnVuY3Rpb24gImZ1bmN0aW9uIFR5cGVF
cnJvcigpIHsKKyAgICBbbmF0aXZlIGNvZGVdCit9IgorUEFTUyBFdmVudExpc3RlbmVyIGlzIGNy
b3NzLXJlYWxtIG5vbi1jYWxsYWJsZSByZXZva2VkIFByb3h5CitQQVNTIEV2ZW50TGlzdGVuZXIg
aXMgY3Jvc3MtcmVhbG0gY2FsbGFibGUgcmV2b2tlZCBQcm94eQorCkluZGV4OiBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9ldmVudHMvRXZlbnRMaXN0ZW5l
ci1oYW5kbGVFdmVudC1jcm9zcy1yZWFsbS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9FdmVudExpc3RlbmVy
LWhhbmRsZUV2ZW50LWNyb3NzLXJlYWxtLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL0V2ZW50TGlzdGVu
ZXItaGFuZGxlRXZlbnQtY3Jvc3MtcmVhbG0uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDc1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5D
cm9zcy1yZWFsbSBFdmVudExpc3RlbmVyIHRocm93cyBUeXBlRXJyb3Igb2YgaXRzIGFzc29jaWF0
ZWQgUmVhbG08L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3dlYmlkbC5z
cGVjLndoYXR3Zy5vcmcvI3JlZi1mb3ItcHJlcGFyZS10by1ydW4tc2NyaXB0Ij4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKworPGlmcmFtZSBuYW1l
PSJldmVudExpc3RlbmVyR2xvYmFsT2JqZWN0IiBzcmM9InJlc291cmNlcy9lbXB0eS1kb2N1bWVu
dC5odG1sIj48L2lmcmFtZT4KKworPHNjcmlwdD4KK3NldHVwKHsgYWxsb3dfdW5jYXVnaHRfZXhj
ZXB0aW9uOiB0cnVlIH0pOworCit0ZXN0X29ubG9hZCgoKSA9PiB7CisgICAgY29uc3QgZXZlbnRU
YXJnZXQgPSBuZXcgRXZlbnRUYXJnZXQ7CisgICAgY29uc3QgZXZlbnRMaXN0ZW5lciA9IG5ldyBl
dmVudExpc3RlbmVyR2xvYmFsT2JqZWN0Lk9iamVjdDsKKworICAgIGV2ZW50VGFyZ2V0LmFkZEV2
ZW50TGlzdGVuZXIoImZvbyIsIGV2ZW50TGlzdGVuZXIpOworICAgIGFzc2VydF9yZXBvcnRzX2V4
Y2VwdGlvbihldmVudExpc3RlbmVyR2xvYmFsT2JqZWN0LlR5cGVFcnJvciwgKCkgPT4geyBldmVu
dFRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiZm9vIikpOyB9KTsKK30sICJFdmVudExp
c3RlbmVyIGlzIGNyb3NzLXJlYWxtIHBsYWluIG9iamVjdCB3aXRob3V0ICdoYW5kbGVFdmVudCcg
cHJvcGVydHkiKTsKKwordGVzdF9vbmxvYWQoKCkgPT4geworICAgIGNvbnN0IGV2ZW50VGFyZ2V0
ID0gbmV3IEV2ZW50VGFyZ2V0OworICAgIGNvbnN0IGV2ZW50TGlzdGVuZXIgPSBuZXcgZXZlbnRM
aXN0ZW5lckdsb2JhbE9iamVjdC5PYmplY3Q7CisgICAgZXZlbnRMaXN0ZW5lci5oYW5kbGVFdmVu
dCA9IHt9OworCisgICAgZXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiZm9vIiwgZXZlbnRM
aXN0ZW5lcik7CisgICAgYXNzZXJ0X3JlcG9ydHNfZXhjZXB0aW9uKGV2ZW50TGlzdGVuZXJHbG9i
YWxPYmplY3QuVHlwZUVycm9yLCAoKSA9PiB7IGV2ZW50VGFyZ2V0LmRpc3BhdGNoRXZlbnQobmV3
IEV2ZW50KCJmb28iKSk7IH0pOworfSwgIkV2ZW50TGlzdGVuZXIgaXMgY3Jvc3MtcmVhbG0gcGxh
aW4gb2JqZWN0IHdpdGggbm9uLWNhbGxhYmxlICdoYW5kbGVFdmVudCcgcHJvcGVydHkiKTsKKwor
dGVzdF9vbmxvYWQoKCkgPT4geworICAgIGNvbnN0IGV2ZW50VGFyZ2V0ID0gbmV3IEV2ZW50VGFy
Z2V0OworICAgIGNvbnN0IHsgcHJveHksIHJldm9rZSB9ID0gUHJveHkucmV2b2NhYmxlKCgpID0+
IHt9LCB7fSk7CisgICAgcmV2b2tlKCk7CisKKyAgICBjb25zdCBldmVudExpc3RlbmVyID0gbmV3
IGV2ZW50TGlzdGVuZXJHbG9iYWxPYmplY3QuT2JqZWN0OworICAgIGV2ZW50TGlzdGVuZXIuaGFu
ZGxlRXZlbnQgPSBwcm94eTsKKworICAgIGV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImZv
byIsIGV2ZW50TGlzdGVuZXIpOworICAgIGFzc2VydF9yZXBvcnRzX2V4Y2VwdGlvbihldmVudExp
c3RlbmVyR2xvYmFsT2JqZWN0LlR5cGVFcnJvciwgKCkgPT4geyBldmVudFRhcmdldC5kaXNwYXRj
aEV2ZW50KG5ldyBFdmVudCgiZm9vIikpOyB9KTsKK30sICJFdmVudExpc3RlbmVyIGlzIGNyb3Nz
LXJlYWxtIHBsYWluIG9iamVjdCB3aXRoIHJldm9rZWQgUHJveHkgYXMgJ2hhbmRsZUV2ZW50JyBw
cm9wZXJ0eSIpOworCit0ZXN0X29ubG9hZCgoKSA9PiB7CisgICAgY29uc3QgZXZlbnRUYXJnZXQg
PSBuZXcgRXZlbnRUYXJnZXQ7CisgICAgY29uc3QgeyBwcm94eSwgcmV2b2tlIH0gPSBldmVudExp
c3RlbmVyR2xvYmFsT2JqZWN0LlByb3h5LnJldm9jYWJsZSh7fSwge30pOworICAgIHJldm9rZSgp
OworCisgICAgZXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiZm9vIiwgcHJveHkpOworICAg
IGFzc2VydF9yZXBvcnRzX2V4Y2VwdGlvbihldmVudExpc3RlbmVyR2xvYmFsT2JqZWN0LlR5cGVF
cnJvciwgKCkgPT4geyBldmVudFRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgiZm9vIikp
OyB9KTsKK30sICJFdmVudExpc3RlbmVyIGlzIGNyb3NzLXJlYWxtIG5vbi1jYWxsYWJsZSByZXZv
a2VkIFByb3h5Iik7CisKK3Rlc3Rfb25sb2FkKCgpID0+IHsKKyAgICBjb25zdCBldmVudFRhcmdl
dCA9IG5ldyBFdmVudFRhcmdldDsKKyAgICBjb25zdCB7IHByb3h5LCByZXZva2UgfSA9IGV2ZW50
TGlzdGVuZXJHbG9iYWxPYmplY3QuUHJveHkucmV2b2NhYmxlKCgpID0+IHt9LCB7fSk7CisgICAg
cmV2b2tlKCk7CisKKyAgICBldmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJmb28iLCBwcm94
eSk7CisgICAgYXNzZXJ0X3JlcG9ydHNfZXhjZXB0aW9uKGV2ZW50TGlzdGVuZXJHbG9iYWxPYmpl
Y3QuVHlwZUVycm9yLCAoKSA9PiB7IGV2ZW50VGFyZ2V0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50
KCJmb28iKSk7IH0pOworfSwgIkV2ZW50TGlzdGVuZXIgaXMgY3Jvc3MtcmVhbG0gY2FsbGFibGUg
cmV2b2tlZCBQcm94eSIpOworCitmdW5jdGlvbiB0ZXN0X29ubG9hZChmbiwgZGVzYykgeworICAg
IGFzeW5jX3Rlc3QodCA9PiB7IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdC5zdGVw
X2Z1bmNfZG9uZShmbikpOyB9LCBkZXNjKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0X3JlcG9ydHNf
ZXhjZXB0aW9uKGV4cGVjdGVkQ29uc3RydWN0b3IsIGZuKSB7CisgICAgbGV0IGVycm9yOworICAg
IGNvbnN0IG9uRXJyb3JIYW5kbGVyID0gZXZlbnQgPT4geyBlcnJvciA9IGV2ZW50LmVycm9yOyB9
OworCisgICAgZXZlbnRMaXN0ZW5lckdsb2JhbE9iamVjdC5hZGRFdmVudExpc3RlbmVyKCJlcnJv
ciIsIG9uRXJyb3JIYW5kbGVyKTsKKyAgICBmbigpOworICAgIGV2ZW50TGlzdGVuZXJHbG9iYWxP
YmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBvbkVycm9ySGFuZGxlcik7CisKKyAg
ICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBlcnJvciwgIm9iamVjdCIpOworICAgIGFzc2VydF9lcXVh
bHMoZXJyb3IuY29uc3RydWN0b3IsIGV4cGVjdGVkQ29uc3RydWN0b3IpOworfQorPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9l
dmVudHMvcmVzb3VyY2VzL2VtcHR5LWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vZXZlbnRzL3Jlc291cmNl
cy9lbXB0eS1kb2N1bWVudC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2V2ZW50cy9yZXNvdXJjZXMvZW1wdHktZG9j
dW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2Nl
cHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1Ry
ZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAyODgyNjIpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFs
bS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsMTAgQEAKIAogCi1QQVNT
IHBhcmVudCdzIHx0aGlzfCwgcGFyZW50J3MgbWV0aG9kLCBwYXJlbnQncyBmaWx0ZXIsIHBhcmVu
dCdzIHJvb3QKLVBBU1MgcGFyZW50J3MgfHRoaXN8LCBwYXJlbnQncyBtZXRob2QsIHBhcmVudCdz
IGZpbHRlciwgaWZyYW1lJ3Mgcm9vdAotUEFTUyBwYXJlbnQncyB8dGhpc3wsIHBhcmVudCdzIG1l
dGhvZCwgaWZyYW1lJ3MgZmlsdGVyLCBpZnJhbWUncyByb290Ci1GQUlMIHBhcmVudCdzIHx0aGlz
fCwgaWZyYW1lcydzIG1ldGhvZCwgaWZyYW1lJ3MgZmlsdGVyLCBpZnJhbWUncyByb290IGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CitQQVNT
IE5vZGVGaWx0ZXIgaXMgY3Jvc3MtcmVhbG0gcGxhaW4gb2JqZWN0IHdpdGhvdXQgJ2FjY2VwdE5v
ZGUnIHByb3BlcnR5CitQQVNTIE5vZGVGaWx0ZXIgaXMgY3Jvc3MtcmVhbG0gcGxhaW4gb2JqZWN0
IHdpdGggbm9uLWNhbGxhYmxlICdhY2NlcHROb2RlJyBwcm9wZXJ0eQorRkFJTCBOb2RlRmlsdGVy
IGlzIGNyb3NzLXJlYWxtIHBsYWluIG9iamVjdCB3aXRoIHJldm9rZWQgUHJveHkgYXMgJ2FjY2Vw
dE5vZGUnIHByb3BlcnR5IGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiB7IHdhbGtl
ci5maXJzdENoaWxkKCk7IH0iIHRocmV3IG9iamVjdCAiVHlwZUVycm9yOiBQcm94eSBoYXMgYWxy
ZWFkeSBiZWVuIHJldm9rZWQuIE5vIG1vcmUgb3BlcmF0aW9ucyBhcmUgYWxsb3dlZCB0byBiZSBw
ZXJmb3JtZWQgb24gaXQiICgiVHlwZUVycm9yIikgZXhwZWN0ZWQgaW5zdGFuY2Ugb2YgZnVuY3Rp
b24gImZ1bmN0aW9uIFR5cGVFcnJvcigpIHsKICAgICBbbmF0aXZlIGNvZGVdCi19IiBidXQgZ290
IGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7Ci0gICAgW25hdGl2ZSBjb2RlXQotfSIK
K30iICgiVHlwZUVycm9yIikKK1BBU1MgTm9kZUZpbHRlciBpcyBjcm9zcy1yZWFsbSBub24tY2Fs
bGFibGUgcmV2b2tlZCBQcm94eQorUEFTUyBOb2RlRmlsdGVyIGlzIGNyb3NzLXJlYWxtIGNhbGxh
YmxlIHJldm9rZWQgUHJveHkKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXIt
Y3Jvc3MtcmVhbG0tbnVsbC1icm93c2luZy1jb250ZXh0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2
ZXJzYWwvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dz
aW5nLWNvbnRleHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyODgyNjIpCisrKyBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJlZVdhbGtl
ci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS1udWxsLWJyb3dzaW5nLWNvbnRleHQtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMyBAQAogCi1QQVNTIFRyZWVXYWxr
ZXI6IE5vZGVGaWx0ZXIgZnJvbSBkZXRhY2hlZCBpZnJhbWUgd29ya3MgYXMgZXhwZWN0ZWQKK1BB
U1MgVHJlZVdhbGtlcjogTm9kZUZpbHRlciBmcm9tIGRldGFjaGVkIGlmcmFtZSBkb2Vzbid0IGdl
dCBjYWxsZWQKIApJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVh
bG0tbnVsbC1icm93c2luZy1jb250ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vdHJhdmVyc2FsL1RyZWVXYWxrZXIt
YWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tbnVsbC1icm93c2luZy1jb250ZXh0Lmh0bWwJ
KHJldmlzaW9uIDI4ODI2MikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3Nz
LXJlYWxtLW51bGwtYnJvd3NpbmctY29udGV4dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEx
ICsxLDEyIEBACiA8IURPQ1RZUEUgaHRtbD4KIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTx0aXRs
ZT5UcmVlV2Fsa2VyOiBOb2RlRmlsdGVyIGZyb20gZGV0YWNoZWQgaWZyYW1lIHdvcmtzIGFzIGV4
cGVjdGVkPC90aXRsZT4KLTxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9kb20uc3BlYy53
aGF0d2cub3JnLyNyZWYtZm9yLWNhbGwtYS11c2VyLW9iamVjdHMtb3BlcmF0aW9uJUUyJTkxJUEw
Ij4KKzx0aXRsZT5UcmVlV2Fsa2VyOiBOb2RlRmlsdGVyIGZyb20gZGV0YWNoZWQgaWZyYW1lIGRv
ZXNuJ3QgZ2V0IGNhbGxlZDwvdGl0bGU+CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+CiAKIDxib2R5PgorPGRpdj48L2Rpdj4KKwogPHNjcmlwdD4KIGNv
bnN0IHQgPSBhc3luY190ZXN0KCk7CiAKQEAgLTE2LDggKzE3LDEzIEBAIGlmcmFtZS5vbmxvYWQg
PSB0LnN0ZXBfZnVuY19kb25lKCgpID0+IHsKICAgICBpZnJhbWUucmVtb3ZlKCk7CiAKICAgICBh
c3NlcnRfZXF1YWxzKGlmcmFtZS5jb250ZW50V2luZG93LCBudWxsKTsKLSAgICBhc3NlcnRfZXF1
YWxzKG5vZGVJdGVyYXRvci5uZXh0Tm9kZSgpLCBkb2N1bWVudC5ib2R5KTsKLSAgICBhc3NlcnRf
dHJ1ZShub2RlSXRlcmF0b3IuZHVtbXlGaWx0ZXJDYWxsZWQpOworCisgICAgbGV0IGVycm9yV2Fz
VGhyb3duID0gZmFsc2U7CisgICAgdHJ5IHsgbm9kZUl0ZXJhdG9yLm5leHROb2RlKCk7IH0KKyAg
ICBjYXRjaCB7IGVycm9yV2FzVGhyb3duID0gdHJ1ZTsgfQorCisgICAgYXNzZXJ0X3RydWUoZXJy
b3JXYXNUaHJvd24pOworICAgIGFzc2VydF9mYWxzZShub2RlSXRlcmF0b3IuZHVtbXlGaWx0ZXJD
YWxsZWQpOwogfSk7CiAKIGRvY3VtZW50LmJvZHkuYXBwZW5kKGlmcmFtZSk7CkluZGV4OiBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvVHJl
ZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9zcy1yZWFsbS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNh
bC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLmh0bWwJKHJldmlzaW9u
IDI4ODI2MikKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZG9tL3RyYXZlcnNhbC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxtLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMjEgKzEsNjAgQEAKIDwhRE9DVFlQRSBodG1sPgotPHRp
dGxlPlRyZWVXYWxrZXI6IGNyb3NzLXJlYWxtIE5vZGVGaWx0ZXIgdGhyb3dzIFR5cGVFcnJvciBv
ZiBjdXJyZW50IHJlYWxtPC90aXRsZT4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5U
cmVlV2Fsa2VyOiBjcm9zcy1yZWFsbSBOb2RlRmlsdGVyIHRocm93cyBUeXBlRXJyb3Igb2YgaXRz
IGFzc29jaWF0ZWQgUmVhbG08L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczov
L3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI3JlZi1mb3ItcHJlcGFyZS10by1ydW4tc2NyaXB0Ij4K
IDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KLTxsaW5r
IHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly93ZWJpZGwuc3BlYy53aGF0d2cub3JnLyNjYWxsLWEt
dXNlci1vYmplY3RzLW9wZXJhdGlvbiI+CiAKLTxib2R5IGlkPSJ0cmVlV2Fsa2VyUm9vdCI+Ci08
ZGl2PjwvZGl2PgorPGlmcmFtZSBuYW1lPSJub2RlRmlsdGVyR2xvYmFsT2JqZWN0IiBzcmM9InN1
cHBvcnQvZW1wdHktZG9jdW1lbnQuaHRtbCI+PC9pZnJhbWU+CisKKzxkaXYgaWQ9InRyZWVXYWxr
ZXJSb290Ij4KKyAgICA8ZGl2IGNsYXNzPSJmaXJzdENoaWxkIj48L2Rpdj4KKzwvZGl2PgogCiA8
c2NyaXB0PgotY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7
Ci1pZnJhbWUuc3JjID0gInN1cHBvcnQvVHJlZVdhbGtlci1hY2NlcHROb2RlLWZpbHRlci1jcm9z
cy1yZWFsbS1zdWJmcmFtZS5odG1sIjsKLWlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7Ci0gICAgZm9y
IChjb25zdCB0ZXN0Q2FzZSBvZiBpZnJhbWUuY29udGVudFdpbmRvdy50ZXN0Q2FzZXMpIHsKLSAg
ICAgICAgdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHModGVzdENhc2UuYWN0
dWFsLmNvbnN0cnVjdG9yLCB0ZXN0Q2FzZS5leHBlY3RlZCk7Ci0gICAgICAgIH0sIHRlc3RDYXNl
LmRlc2NyaXB0aW9uKTsKLSAgICB9Ci19OwotZG9jdW1lbnQuYm9keS5hcHBlbmQoaWZyYW1lKTsK
K3Rlc3Rfb25sb2FkKCgpID0+IHsKKyAgICBjb25zdCBub2RlRmlsdGVyID0gbmV3IG5vZGVGaWx0
ZXJHbG9iYWxPYmplY3QuT2JqZWN0OworCisgICAgY29uc3Qgd2Fsa2VyID0gZG9jdW1lbnQuY3Jl
YXRlVHJlZVdhbGtlcih0cmVlV2Fsa2VyUm9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIG5v
ZGVGaWx0ZXIpOworICAgIGFzc2VydF90aHJvd3NfanMobm9kZUZpbHRlckdsb2JhbE9iamVjdC5U
eXBlRXJyb3IsICgpID0+IHsgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsgfSk7Cit9LCAiTm9kZUZpbHRl
ciBpcyBjcm9zcy1yZWFsbSBwbGFpbiBvYmplY3Qgd2l0aG91dCAnYWNjZXB0Tm9kZScgcHJvcGVy
dHkiKTsKKwordGVzdF9vbmxvYWQoKCkgPT4geworICAgIGNvbnN0IG5vZGVGaWx0ZXIgPSBuZXcg
bm9kZUZpbHRlckdsb2JhbE9iamVjdC5PYmplY3Q7CisgICAgbm9kZUZpbHRlci5hY2NlcHROb2Rl
ID0ge307CisKKyAgICBjb25zdCB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHRy
ZWVXYWxrZXJSb290LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgbm9kZUZpbHRlcik7CisgICAg
YXNzZXJ0X3Rocm93c19qcyhub2RlRmlsdGVyR2xvYmFsT2JqZWN0LlR5cGVFcnJvciwgKCkgPT4g
eyB3YWxrZXIuZmlyc3RDaGlsZCgpOyB9KTsKK30sICJOb2RlRmlsdGVyIGlzIGNyb3NzLXJlYWxt
IHBsYWluIG9iamVjdCB3aXRoIG5vbi1jYWxsYWJsZSAnYWNjZXB0Tm9kZScgcHJvcGVydHkiKTsK
KwordGVzdF9vbmxvYWQoKCkgPT4geworICAgIGNvbnN0IHsgcHJveHksIHJldm9rZSB9ID0gUHJv
eHkucmV2b2NhYmxlKCgpID0+IHt9LCB7fSk7CisgICAgcmV2b2tlKCk7CisKKyAgICBjb25zdCBu
b2RlRmlsdGVyID0gbmV3IG5vZGVGaWx0ZXJHbG9iYWxPYmplY3QuT2JqZWN0OworICAgIG5vZGVG
aWx0ZXIuYWNjZXB0Tm9kZSA9IHByb3h5OworCisgICAgY29uc3Qgd2Fsa2VyID0gZG9jdW1lbnQu
Y3JlYXRlVHJlZVdhbGtlcih0cmVlV2Fsa2VyUm9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQs
IG5vZGVGaWx0ZXIpOworICAgIGFzc2VydF90aHJvd3NfanMobm9kZUZpbHRlckdsb2JhbE9iamVj
dC5UeXBlRXJyb3IsICgpID0+IHsgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsgfSk7Cit9LCAiTm9kZUZp
bHRlciBpcyBjcm9zcy1yZWFsbSBwbGFpbiBvYmplY3Qgd2l0aCByZXZva2VkIFByb3h5IGFzICdh
Y2NlcHROb2RlJyBwcm9wZXJ0eSIpOworCit0ZXN0X29ubG9hZCgoKSA9PiB7CisgICAgY29uc3Qg
eyBwcm94eSwgcmV2b2tlIH0gPSBub2RlRmlsdGVyR2xvYmFsT2JqZWN0LlByb3h5LnJldm9jYWJs
ZSh7fSwge30pOworICAgIHJldm9rZSgpOworCisgICAgY29uc3Qgd2Fsa2VyID0gZG9jdW1lbnQu
Y3JlYXRlVHJlZVdhbGtlcih0cmVlV2Fsa2VyUm9vdCwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQs
IHByb3h5KTsKKyAgICBhc3NlcnRfdGhyb3dzX2pzKG5vZGVGaWx0ZXJHbG9iYWxPYmplY3QuVHlw
ZUVycm9yLCAoKSA9PiB7IHdhbGtlci5maXJzdENoaWxkKCk7IH0pOworfSwgIk5vZGVGaWx0ZXIg
aXMgY3Jvc3MtcmVhbG0gbm9uLWNhbGxhYmxlIHJldm9rZWQgUHJveHkiKTsKKwordGVzdF9vbmxv
YWQoKCkgPT4geworICAgIGNvbnN0IHsgcHJveHksIHJldm9rZSB9ID0gbm9kZUZpbHRlckdsb2Jh
bE9iamVjdC5Qcm94eS5yZXZvY2FibGUoKCkgPT4ge30sIHt9KTsKKyAgICByZXZva2UoKTsKKwor
ICAgIGNvbnN0IHdhbGtlciA9IGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodHJlZVdhbGtlclJv
b3QsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCBwcm94eSk7CisgICAgYXNzZXJ0X3Rocm93c19q
cyhub2RlRmlsdGVyR2xvYmFsT2JqZWN0LlR5cGVFcnJvciwgKCkgPT4geyB3YWxrZXIuZmlyc3RD
aGlsZCgpOyB9KTsKK30sICJOb2RlRmlsdGVyIGlzIGNyb3NzLXJlYWxtIGNhbGxhYmxlIHJldm9r
ZWQgUHJveHkiKTsKKworZnVuY3Rpb24gdGVzdF9vbmxvYWQoZm4sIGRlc2MpIHsKKyAgICBhc3lu
Y190ZXN0KHQgPT4geyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHQuc3RlcF9mdW5j
X2RvbmUoZm4pKTsgfSwgZGVzYyk7Cit9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9zdXBwb3J0L1RyZWVX
YWxrZXItYWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tc3ViZnJhbWUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90
cmF2ZXJzYWwvc3VwcG9ydC9UcmVlV2Fsa2VyLWFjY2VwdE5vZGUtZmlsdGVyLWNyb3NzLXJlYWxt
LXN1YmZyYW1lLmh0bWwJKHJldmlzaW9uIDI4ODI2MikKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9zdXBwb3J0L1RyZWVXYWxrZXIt
YWNjZXB0Tm9kZS1maWx0ZXItY3Jvc3MtcmVhbG0tc3ViZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQp
CkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotCi08Ym9keSBpZD0idHJlZVdhbGtl
clJvb3QiPgotPGRpdj48L2Rpdj4KLQotPHNjcmlwdD4KLXdpbmRvdy50ZXN0Q2FzZXMgPSBbXTsK
LQotKGZ1bmN0aW9uKCkgewotICAgIGxldCB3YWxrZXIgPSBwYXJlbnQuZG9jdW1lbnQuY3JlYXRl
VHJlZVdhbGtlcihwYXJlbnQudHJlZVdhbGtlclJvb3QsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5U
LCBuZXcgcGFyZW50Lk9iamVjdCk7Ci0gICAgdHJ5IHsgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsgfSBj
YXRjaCAoZXJyKSB7IHRlc3RDYXNlcy5wdXNoKHsgYWN0dWFsOiBlcnIsIGV4cGVjdGVkOiBwYXJl
bnQuVHlwZUVycm9yLCBkZXNjcmlwdGlvbjogInBhcmVudCdzIHx0aGlzfCwgcGFyZW50J3MgbWV0
aG9kLCBwYXJlbnQncyBmaWx0ZXIsIHBhcmVudCdzIHJvb3QiIH0pOyB9Ci0KLSAgICB3YWxrZXIg
PSBwYXJlbnQuZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcih0cmVlV2Fsa2VyUm9vdCwgTm9kZUZp
bHRlci5TSE9XX0VMRU1FTlQsIG5ldyBwYXJlbnQuT2JqZWN0KTsKLSAgICB0cnkgeyB3YWxrZXIu
Zmlyc3RDaGlsZCgpOyB9IGNhdGNoIChlcnIpIHsgdGVzdENhc2VzLnB1c2goeyBhY3R1YWw6IGVy
ciwgZXhwZWN0ZWQ6IHBhcmVudC5UeXBlRXJyb3IsIGRlc2NyaXB0aW9uOiAicGFyZW50J3MgfHRo
aXN8LCBwYXJlbnQncyBtZXRob2QsIHBhcmVudCdzIGZpbHRlciwgaWZyYW1lJ3Mgcm9vdCIgfSk7
IH0KLQotICAgIHdhbGtlciA9IHBhcmVudC5kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKHRyZWVX
YWxrZXJSb290LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwge30pOwotICAgIHRyeSB7IHdhbGtl
ci5maXJzdENoaWxkKCk7IH0gY2F0Y2ggKGVycikgeyB0ZXN0Q2FzZXMucHVzaCh7IGFjdHVhbDog
ZXJyLCBleHBlY3RlZDogcGFyZW50LlR5cGVFcnJvciwgZGVzY3JpcHRpb246ICJwYXJlbnQncyB8
dGhpc3wsIHBhcmVudCdzIG1ldGhvZCwgaWZyYW1lJ3MgZmlsdGVyLCBpZnJhbWUncyByb290IiB9
KTsgfQotCi0gICAgd2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlci5jYWxsKHBhcmVu
dC5kb2N1bWVudCwgdHJlZVdhbGtlclJvb3QsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCB7fSk7
Ci0gICAgdHJ5IHsgd2Fsa2VyLmZpcnN0Q2hpbGQoKTsgfSBjYXRjaCAoZXJyKSB7IHRlc3RDYXNl
cy5wdXNoKHsgYWN0dWFsOiBlcnIsIGV4cGVjdGVkOiBUeXBlRXJyb3IsIGRlc2NyaXB0aW9uOiAi
cGFyZW50J3MgfHRoaXN8LCBpZnJhbWVzJ3MgbWV0aG9kLCBpZnJhbWUncyBmaWx0ZXIsIGlmcmFt
ZSdzIHJvb3QiIH0pOyB9Ci19KSgpOwotPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS90cmF2ZXJzYWwvc3VwcG9ydC9lbXB0eS1k
b2N1bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZG9tL3RyYXZlcnNhbC9zdXBwb3J0L2VtcHR5LWRvY3VtZW50Lmh0bWwJ
KG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9kb20vdHJhdmVyc2FsL3N1cHBvcnQvZW1wdHktZG9jdW1lbnQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRm
LTgiPgorPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2RvbXhwYXRoL3Jlc29sdmVyLWNhbGxiYWNrLWludGVyZmFjZS1jcm9zcy1yZWFsbS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9kb214cGF0aC9yZXNvbHZlci1jYWxsYmFjay1pbnRlcmZhY2UtY3Jvc3Mt
cmVhbG0tZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9teHBhdGgvcmVzb2x2ZXItY2FsbGJhY2staW50ZXJm
YWNlLWNyb3NzLXJlYWxtLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1
IEBACitDT05TT0xFIE1FU1NBR0U6IFR5cGVFcnJvcjogJ2xvb2t1cE5hbWVzcGFjZVVSSScgcHJv
cGVydHkgb2YgY2FsbGJhY2sgaW50ZXJmYWNlIHNob3VsZCBiZSBjYWxsYWJsZQorQ09OU09MRSBN
RVNTQUdFOiBUeXBlRXJyb3I6ICdsb29rdXBOYW1lc3BhY2VVUkknIHByb3BlcnR5IG9mIGNhbGxi
YWNrIGludGVyZmFjZSBzaG91bGQgYmUgY2FsbGFibGUKK0NPTlNPTEUgTUVTU0FHRTogVHlwZUVy
cm9yOiBQcm94eSBoYXMgYWxyZWFkeSBiZWVuIHJldm9rZWQuIE5vIG1vcmUgb3BlcmF0aW9ucyBh
cmUgYWxsb3dlZCB0byBiZSBwZXJmb3JtZWQgb24gaXQKK0NPTlNPTEUgTUVTU0FHRTogVHlwZUVy
cm9yOiBQcm94eSBoYXMgYWxyZWFkeSBiZWVuIHJldm9rZWQuIE5vIG1vcmUgb3BlcmF0aW9ucyBh
cmUgYWxsb3dlZCB0byBiZSBwZXJmb3JtZWQgb24gaXQKK0NPTlNPTEUgTUVTU0FHRTogVHlwZUVy
cm9yOiBQcm94eSBoYXMgYWxyZWFkeSBiZWVuIHJldm9rZWQuIE5vIG1vcmUgb3BlcmF0aW9ucyBh
cmUgYWxsb3dlZCB0byBiZSBwZXJmb3JtZWQgb24gaXQKKworCitQQVNTIFhQYXRoTlNSZXNvbHZl
ciBpcyBjcm9zcy1yZWFsbSBwbGFpbiBvYmplY3Qgd2l0aG91dCAnbG9va3VwTmFtZXNwYWNlVVJJ
JyBwcm9wZXJ0eQorUEFTUyBYUGF0aE5TUmVzb2x2ZXIgaXMgY3Jvc3MtcmVhbG0gcGxhaW4gb2Jq
ZWN0IHdpdGggbm9uLWNhbGxhYmxlICdsb29rdXBOYW1lc3BhY2VVUkknIHByb3BlcnR5CitGQUlM
IFhQYXRoTlNSZXNvbHZlciBpcyBjcm9zcy1yZWFsbSBwbGFpbiBvYmplY3Qgd2l0aCByZXZva2Vk
IFByb3h5IGFzICdsb29rdXBOYW1lc3BhY2VVUkknIHByb3BlcnR5IHByb21pc2VfcmVqZWN0c19q
czogZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhyb3cgZSB9IiB0aHJldyBvYmplY3QgIlR5cGVF
cnJvcjogUHJveHkgaGFzIGFscmVhZHkgYmVlbiByZXZva2VkLiBObyBtb3JlIG9wZXJhdGlvbnMg
YXJlIGFsbG93ZWQgdG8gYmUgcGVyZm9ybWVkIG9uIGl0IiAoIlR5cGVFcnJvciIpIGV4cGVjdGVk
IGluc3RhbmNlIG9mIGZ1bmN0aW9uICJmdW5jdGlvbiBUeXBlRXJyb3IoKSB7CisgICAgW25hdGl2
ZSBjb2RlXQorfSIgKCJUeXBlRXJyb3IiKQorUEFTUyBYUGF0aE5TUmVzb2x2ZXIgaXMgY3Jvc3Mt
cmVhbG0gbm9uLWNhbGxhYmxlIHJldm9rZWQgUHJveHkKK1BBU1MgWFBhdGhOU1Jlc29sdmVyIGlz
IGNyb3NzLXJlYWxtIGNhbGxhYmxlIHJldm9rZWQgUHJveHkKKwpJbmRleDogTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb214cGF0aC9yZXNvbHZlci1jYWxsYmFj
ay1pbnRlcmZhY2UtY3Jvc3MtcmVhbG0uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbXhwYXRoL3Jlc29sdmVyLWNhbGxiYWNr
LWludGVyZmFjZS1jcm9zcy1yZWFsbS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9teHBhdGgvcmVzb2x2ZXItY2FsbGJh
Y2staW50ZXJmYWNlLWNyb3NzLXJlYWxtLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2
NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+Q3Jv
c3MtcmVhbG0gWFBhdGhOU1Jlc29sdmVyIHRocm93cyBUeXBlRXJyb3Igb2YgaXRzIGFzc29jaWF0
ZWQgUmVhbG08L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3dlYmlkbC5z
cGVjLndoYXR3Zy5vcmcvI3JlZi1mb3ItcHJlcGFyZS10by1ydW4tc2NyaXB0Ij4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvaW52YWxpZF9uYW1lc3BhY2VfdGVzdC5qcyI+PC9zY3JpcHQ+CisKKzxpZnJhbWUg
bmFtZT0icmVzb2x2ZXJHbG9iYWxPYmplY3QiIHNyYz0icmVzb3VyY2VzL2VtcHR5LWRvY3VtZW50
Lmh0bWwiPjwvaWZyYW1lPgorCis8c2NyaXB0Pgorc2V0dXAoeyBhbGxvd191bmNhdWdodF9leGNl
cHRpb246IHRydWUgfSk7CisKK2NvbnN0IGlmcmFtZUxvYWRlZCA9IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4geyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIHJlc29sdmUpOyB9KTsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICBhd2FpdCBpZnJhbWVMb2FkZWQ7CisgIGNvbnN0
IHJlc29sdmVyID0gbmV3IHJlc29sdmVyR2xvYmFsT2JqZWN0Lk9iamVjdDsKKworICByZXR1cm4g
cHJvbWlzZV9yZWplY3RzX2pzKHQsIHJlc29sdmVyR2xvYmFsT2JqZWN0LlR5cGVFcnJvciwKKyAg
ICBpbnZhbGlkX25hbWVzcGFjZV90ZXN0KHQsIHJlc29sdmVyLCByZXNvbHZlckdsb2JhbE9iamVj
dCkKKyAgKTsKK30sICJYUGF0aE5TUmVzb2x2ZXIgaXMgY3Jvc3MtcmVhbG0gcGxhaW4gb2JqZWN0
IHdpdGhvdXQgJ2xvb2t1cE5hbWVzcGFjZVVSSScgcHJvcGVydHkiKTsKKworcHJvbWlzZV90ZXN0
KGFzeW5jIHQgPT4geworICBhd2FpdCBpZnJhbWVMb2FkZWQ7CisgIGNvbnN0IHJlc29sdmVyID0g
bmV3IHJlc29sdmVyR2xvYmFsT2JqZWN0Lk9iamVjdDsKKyAgcmVzb2x2ZXIubG9va3VwTmFtZXNw
YWNlVVJJID0ge307CisKKyAgcmV0dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCByZXNvbHZlckds
b2JhbE9iamVjdC5UeXBlRXJyb3IsCisgICAgaW52YWxpZF9uYW1lc3BhY2VfdGVzdCh0LCByZXNv
bHZlciwgcmVzb2x2ZXJHbG9iYWxPYmplY3QpCisgICk7Cit9LCAiWFBhdGhOU1Jlc29sdmVyIGlz
IGNyb3NzLXJlYWxtIHBsYWluIG9iamVjdCB3aXRoIG5vbi1jYWxsYWJsZSAnbG9va3VwTmFtZXNw
YWNlVVJJJyBwcm9wZXJ0eSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGF3YWl0
IGlmcmFtZUxvYWRlZDsKKyAgY29uc3QgeyBwcm94eSwgcmV2b2tlIH0gPSBQcm94eS5yZXZvY2Fi
bGUoKCkgPT4ge30sIHt9KTsKKyAgcmV2b2tlKCk7CisKKyAgY29uc3QgcmVzb2x2ZXIgPSBuZXcg
cmVzb2x2ZXJHbG9iYWxPYmplY3QuT2JqZWN0OworICByZXNvbHZlci5sb29rdXBOYW1lc3BhY2VV
UkkgPSBwcm94eTsKKworICByZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIHJlc29sdmVyR2xv
YmFsT2JqZWN0LlR5cGVFcnJvciwKKyAgICBpbnZhbGlkX25hbWVzcGFjZV90ZXN0KHQsIHJlc29s
dmVyLCByZXNvbHZlckdsb2JhbE9iamVjdCkKKyAgKTsKK30sICJYUGF0aE5TUmVzb2x2ZXIgaXMg
Y3Jvc3MtcmVhbG0gcGxhaW4gb2JqZWN0IHdpdGggcmV2b2tlZCBQcm94eSBhcyAnbG9va3VwTmFt
ZXNwYWNlVVJJJyBwcm9wZXJ0eSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgIGF3
YWl0IGlmcmFtZUxvYWRlZDsKKyAgY29uc3QgeyBwcm94eSwgcmV2b2tlIH0gPSByZXNvbHZlckds
b2JhbE9iamVjdC5Qcm94eS5yZXZvY2FibGUoe30sIHt9KTsKKyAgcmV2b2tlKCk7CisKKyAgcmV0
dXJuIHByb21pc2VfcmVqZWN0c19qcyh0LCByZXNvbHZlckdsb2JhbE9iamVjdC5UeXBlRXJyb3Is
CisgICAgaW52YWxpZF9uYW1lc3BhY2VfdGVzdCh0LCBwcm94eSwgcmVzb2x2ZXJHbG9iYWxPYmpl
Y3QpCisgICk7Cit9LCAiWFBhdGhOU1Jlc29sdmVyIGlzIGNyb3NzLXJlYWxtIG5vbi1jYWxsYWJs
ZSByZXZva2VkIFByb3h5Iik7CisKK3Byb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgYXdhaXQg
aWZyYW1lTG9hZGVkOworICBjb25zdCB7IHByb3h5LCByZXZva2UgfSA9IHJlc29sdmVyR2xvYmFs
T2JqZWN0LlByb3h5LnJldm9jYWJsZSgoKSA9PiB7fSwge30pOworICByZXZva2UoKTsKKworICBy
ZXR1cm4gcHJvbWlzZV9yZWplY3RzX2pzKHQsIHJlc29sdmVyR2xvYmFsT2JqZWN0LlR5cGVFcnJv
ciwKKyAgICBpbnZhbGlkX25hbWVzcGFjZV90ZXN0KHQsIHByb3h5LCByZXNvbHZlckdsb2JhbE9i
amVjdCkKKyAgKTsKK30sICJYUGF0aE5TUmVzb2x2ZXIgaXMgY3Jvc3MtcmVhbG0gY2FsbGFibGUg
cmV2b2tlZCBQcm94eSIpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbXhwYXRoL3Jlc291cmNlcy9lbXB0eS1kb2N1bWVudC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9teHBhdGgvcmVzb3VyY2VzL2VtcHR5LWRvY3VtZW50Lmh0bWwJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb214cGF0
aC9yZXNvdXJjZXMvZW1wdHktZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPGJvZHk+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbXhwYXRo
L3Jlc291cmNlcy9pbnZhbGlkX25hbWVzcGFjZV90ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9teHBhdGgvcmVzb3VyY2Vz
L2ludmFsaWRfbmFtZXNwYWNlX3Rlc3QuanMJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb214cGF0aC9yZXNvdXJjZXMvaW52YWxp
ZF9uYW1lc3BhY2VfdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACisidXNl
IHN0cmljdCI7CitzZXR1cCh7IGFsbG93X3VuY2F1Z2h0X2V4Y2VwdGlvbjogdHJ1ZSB9KTsKKwor
Y29uc3QgaW52YWxpZF9uYW1lc3BhY2VfdGVzdCA9ICh0LCByZXNvbHZlciwgcmVzb2x2ZXJXaW5k
b3cgPSB3aW5kb3cpID0+IHsKKyAgY29uc3QgcmVzdWx0ID0gbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4geworICAgIGNvbnN0IGhhbmRsZXIgPSBldmVudCA9PiB7CisgICAgICByZWpl
Y3QoZXZlbnQuZXJyb3IpOworICAgIH07CisKKyAgICByZXNvbHZlcldpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJlcnJvciIsIGhhbmRsZXIpOworICAgIHQuYWRkX2NsZWFudXAoKCkgPT4geworICAg
ICAgcmVzb2x2ZXJXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBoYW5kbGVyKTsK
KyAgICB9KTsKKworICAgIHQuc3RlcF90aW1lb3V0KHJlc29sdmUsIDApOworICB9KTsKKworICBh
c3NlcnRfdGhyb3dzX2RvbSgiTkFNRVNQQUNFX0VSUiIsICgpID0+IHsKKyAgICBkb2N1bWVudC5l
dmFsdWF0ZSgiL2ZvbzpiYXIiLCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHJlc29sdmVyKTsK
KyAgfSk7CisKKyAgcmV0dXJuIHJlc3VsdDsKK307CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyODgyNjIpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkK
QEAgLTE3Nyw2ICsxNzcsOSBAQCBodHRwL3Rlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlciBbIFNr
aXAgCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZl
ciBbIFNraXAgXQogaW50ZXJzZWN0aW9uLW9ic2VydmVyIFsgU2tpcCBdCiAKK2Zhc3QvZG9tL2Nh
bGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLWludGVyc2VjdGlvbi1vYnNlcnZlci5odG1s
IFsgU2tpcCBdCitmYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1yZXNp
emUtb2JzZXJ2ZXIuaHRtbCBbIFNraXAgXQorCiBodHRwL3Rlc3RzL2xhenlsb2FkIFsgU2tpcCBd
CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvdGhlLWltZy1lbGVtZW50L2JlbG93LXZpZXdwb3J0LWltYWdlLWxvYWRpbmctbGF6
eS1sb2FkLWV2ZW50Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtaW1nLWVsZW1lbnQvZGlzY29u
bmVjdGVkLWltYWdlLWxvYWRpbmctbGF6eS5odG1sIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjg4MjYyKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAg
LTE0Myw2ICsxNDMsOCBAQCB3ZWJraXQub3JnL2IvMTg1MDc2IGNzczMvY29sb3ItZmlsdGVycyBb
CiAjIEludGVyc2VjdGlvbk9ic2VydmVyIGlzIG9mZiBieSBkZWZhdWx0CiB3ZWJraXQub3JnL2Iv
MTg4NjEzIGludGVyc2VjdGlvbi1vYnNlcnZlciBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE4ODYx
MyBodHRwL3Rlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlciBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzE4ODYxMyBmYXN0L2RvbS9jYWxsYmFjay1mdW5jdGlvbi1kZXRhY2hlZC1mcmFtZS1pbnRlcnNl
Y3Rpb24tb2JzZXJ2ZXIuaHRtbCBbIFNraXAgXQorZmFzdC9kb20vY2FsbGJhY2stZnVuY3Rpb24t
ZGV0YWNoZWQtZnJhbWUtcmVzaXplLW9ic2VydmVyLmh0bWwgWyBTa2lwIF0KIAogIyBUT0RPIFNo
b3VsZCBiZSBtb3ZlZCB0byBwbGF0Zm9ybS9tYWMgPHJkYXI6Ly81NjIxNDI1PgogaHR0cC90ZXN0
cy9taXNjL3dpbGxDYWNoZVJlc3BvbnNlLWRlbGVnYXRlLWNhbGxiYWNrLmh0bWwgWyBTa2lwIF0K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Rlc3RFeHBlY3RhdGlvbnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVzdEV4cGVjdGF0aW9u
cwkocmV2aXNpb24gMjg4MjYyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vVGVz
dEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMTA4Niw2ICsxMDg2LDggQEAgd2Via2l0
Lm9yZy9iLzE4NTA3NiBjc3MzL2NvbG9yLWZpbHRlcnMgWwogIyBJbnRlcnNlY3Rpb25PYnNlcnZl
ciBpcyBvZmYgYnkgZGVmYXVsdAogd2Via2l0Lm9yZy9iLzE4ODYxMyBpbnRlcnNlY3Rpb24tb2Jz
ZXJ2ZXIgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xODg2MTMgaHR0cC90ZXN0cy9pbnRlcnNlY3Rp
b24tb2JzZXJ2ZXIgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8xODg2MTMgZmFzdC9kb20vY2FsbGJh
Y2stZnVuY3Rpb24tZGV0YWNoZWQtZnJhbWUtaW50ZXJzZWN0aW9uLW9ic2VydmVyLmh0bWwgWyBT
a2lwIF0KK2Zhc3QvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLWRldGFjaGVkLWZyYW1lLXJlc2l6ZS1v
YnNlcnZlci5odG1sIFsgU2tpcCBdCiAKIFsgRGVidWcgXSBjc3MyLjEvMjAxMTAzMjMvcmVwbGFj
ZWQtaW50cmluc2ljLXJhdGlvLTAwMS5odG0gWyBQYXNzIEZhaWx1cmUgXQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>