<?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>202188</bug_id>
          
          <creation_ts>2019-09-25 00:56:22 -0700</creation_ts>
          <short_desc>Handle the case of a service worker taking too much time to process a fetch event</short_desc>
          <delta_ts>2019-10-10 04:30:18 -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>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=202787</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1573977</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-25 00:56:22 -0700</bug_when>
    <thetext>Handle the case of a service worker taking too much time to process a fetch event</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573979</commentid>
    <comment_count>1</comment_count>
      <attachid>379531</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-25 01:05:52 -0700</bug_when>
    <thetext>Created attachment 379531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573980</commentid>
    <comment_count>2</comment_count>
      <attachid>379532</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-25 01:08:06 -0700</bug_when>
    <thetext>Created attachment 379532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574120</commentid>
    <comment_count>3</comment_count>
      <attachid>379532</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-09-25 11:08:36 -0700</bug_when>
    <thetext>Comment on attachment 379532
Patch

As discussed in email, I&apos;m working on this in parallel, have a different much more conservative approach, and we think this is the wrong time for refactoring tasks unrelated to bug fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576249</commentid>
    <comment_count>4</comment_count>
      <attachid>380072</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-02 16:57:05 -0700</bug_when>
    <thetext>Created attachment 380072
WIP fix

A lot of discussion IRL outside of this bug, and this is my resulting WIP patch. Obviously the test isn&apos;t done and there&apos;s more testing I want to do, but the code change can undergo preliminary review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576303</commentid>
    <comment_count>5</comment_count>
      <attachid>380072</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-02 23:54:57 -0700</bug_when>
    <thetext>Comment on attachment 380072
WIP fix

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

&gt; Source/WebCore/loader/FetchOptions.h:61
&gt; +    Seconds serviceWorkerTimeout { defaultServiceWorkerFetchTimeout };

A global value either at NetworkProcess or NetworkSession is probably sufficient.
This should remove the need to serialize this value for every request.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:54
&gt; +    , m_timeoutTimer { *this, &amp;ServiceWorkerFetchTask::timeoutTimerFired }

There are two main cases for timeouts:
- The service worker script is spinning when processing the fetch handler. This should be a short timeout. The result of this task is either that the fetch is didnothandle or fetch is to be handled by the service worker. If this timeout kicks in, this probably means the worker is mal-functioning and we should avoid this service worker.
- In case the service worker handles the fetch, the fetch response (or body) takes a long time to be received. In that case, it is not clear whether the service worker is mal-functioning. Maybe the network connection is very slow. We could try to mimick how CFNetwork is timing out. It is unclear whether we should actually avoid the service worker in that case.

We might want to add a test for the second case:
1. A scenario where the service worker is caching any response for future reuse. A while(1) is happening shortly after the fetch response promise is fulfilled, for instance just after adding the response to DOM cache
2. A scenario where service worker is doing the fetch and the fetch is taking a long long time to complete.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:56
&gt; +    m_timeoutTimer.startOneShot(m_timeout);

A ServiceWorkerFetchTask is only created if there is a context connection.
This timer will not catch any bug in our implementation resulting in time outs. For instance bugs in creating the context connection, pending job queue, running the service worker.
This seems ok to me, future refactoring will make the creation of ServiceWorkerFetchTask happen much sooner to actually catch these issues.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:93
&gt; +    WebSWServerConnection&amp; m_connection;

Could use WeakPtr&lt;WebSWServerConnection&gt; for safety.
I don&apos;t think m_connection is guaranteed to stay valid.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:94
&gt; +    WebSWServerToContextConnection&amp; m_contextConnection;

This seems a bit fragile, especially since ServiceWorkerFetchTask is refcounted.
Patch in https://bugs.webkit.org/show_bug.cgi?id=202309 is making ServiceWorkerFetchTask no longer refcounted which simplifies things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576423</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-03 08:45:06 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #5)
&gt; Comment on attachment 380072 [details]
&gt; WIP fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380072&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FetchOptions.h:61
&gt; &gt; +    Seconds serviceWorkerTimeout { defaultServiceWorkerFetchTimeout };
&gt; 
&gt; A global value either at NetworkProcess or NetworkSession is probably
&gt; sufficient.
&gt; This should remove the need to serialize this value for every request.

+1: This adds unnecessary complexity which is unfortunate, especially if we want to cherry-pick this to a branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576430</commentid>
    <comment_count>7</comment_count>
      <attachid>380072</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-03 09:08:29 -0700</bug_when>
    <thetext>Comment on attachment 380072
WIP fix

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

&gt;&gt;&gt; Source/WebCore/loader/FetchOptions.h:61
&gt;&gt;&gt; +    Seconds serviceWorkerTimeout { defaultServiceWorkerFetchTimeout };
&gt;&gt; 
&gt;&gt; A global value either at NetworkProcess or NetworkSession is probably sufficient.
&gt;&gt; This should remove the need to serialize this value for every request.
&gt; 
&gt; +1: This adds unnecessary complexity which is unfortunate, especially if we want to cherry-pick this to a branch.

To be clear, I realize that you need to change the value for layout testing but what we usually do then is have the testRunner utility function send an IPC to the NetworkProcess to update the timeout value.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:63
&gt; +    m_connection.ipcConnection().send(Messages::ServiceWorkerClientFetch::DidReceiveRedirectResponse { response }, m_identifier.fetchIdentifier);

WebSWServerConnection is an IPC::MessageSender so I do not think you need to get the ipcConnection(), you can call send() on m_connection directly.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:97
&gt; +    Seconds m_timeout;

As commented above, I think a global timeout value would suffice. Having one per fetch task adds unnecessary complexity.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:99
&gt; +    bool m_handled { false };

Boolean variables should have a prefix as per coding style.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:100
&gt; +    bool m_messagedTerminalState { false };

Boolean variables should have a prefix as per coding style. Also, the current naming is confusing to me, no idea what it means by simply looking at it.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:219
&gt; +    // Gather all other fetches in this service worker

Missing period at the end.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:220
&gt; +    HashSet&lt;Ref&lt;ServiceWorkerFetchTask&gt;&gt; otherFetches;

Why does this need to be a HashSet? Why cannot it be a Vector?

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:226
&gt; +    // Signal load failure for them

Missing period at the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576574</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-03 13:41:56 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #5)
&gt; Comment on attachment 380072 [details]
&gt; WIP fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380072&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FetchOptions.h:61
&gt; &gt; +    Seconds serviceWorkerTimeout { defaultServiceWorkerFetchTimeout };
&gt; 
&gt; A global value either at NetworkProcess or NetworkSession is probably
&gt; sufficient.
&gt; This should remove the need to serialize this value for every request.

A global value makes testing at best flaky, and at worst not possible.

I don&apos;t think attaching a timeout to the request increase complexity in an intractable manner.

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:54
&gt; &gt; +    , m_timeoutTimer { *this, &amp;ServiceWorkerFetchTask::timeoutTimerFired }
&gt; 
&gt; There are two main cases for timeouts:
&gt; - The service worker script is spinning when processing the fetch handler.
&gt; This should be a short timeout. The result of this task is either that the
&gt; fetch is didnothandle or fetch is to be handled by the service worker. If
&gt; this timeout kicks in, this probably means the worker is mal-functioning and
&gt; we should avoid this service worker.

That&apos;s what this patch implements.

For compatibility reasons, I disagree that it should be shorter than 60s, because that&apos;s what Chrome does.
Firefox does 5.5 minutes, which I would agree is too long.


&gt; - In case the service worker handles the fetch, the fetch response (or body)
&gt; takes a long time to be received. In that case, it is not clear whether the
&gt; service worker is mal-functioning. Maybe the network connection is very
&gt; slow. We could try to mimick how CFNetwork is timing out. It is unclear
&gt; whether we should actually avoid the service worker in that case.

CFNetwork either:
A - delivers at least one event every 60 seconds
B - Times out after 60 seconds.

I think ServiceWorkers that are dealing with a network failure lasting longer than 60 seconds need to signal the fetch failed.

&gt; We might want to add a test for the second case:

Working on such a test is why this patch is not ready for review.

&gt; 1. A scenario where the service worker is caching any response for future
&gt; reuse. A while(1) is happening shortly after the fetch response promise is
&gt; fulfilled, for instance just after adding the response to DOM cache
&gt; 2. A scenario where service worker is doing the fetch and the fetch is
&gt; taking a long long time to complete.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:56
&gt; &gt; +    m_timeoutTimer.startOneShot(m_timeout);
&gt; 
&gt; A ServiceWorkerFetchTask is only created if there is a context connection.
&gt; This timer will not catch any bug in our implementation resulting in time
&gt; outs. For instance bugs in creating the context connection, pending job
&gt; queue, running the service worker.
&gt; This seems ok to me, future refactoring will make the creation of
&gt; ServiceWorkerFetchTask happen much sooner to actually catch these issues.

Combined with your work on the process launch race, I think this is fine.

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:93
&gt; &gt; +    WebSWServerConnection&amp; m_connection;
&gt; 
&gt; Could use WeakPtr&lt;WebSWServerConnection&gt; for safety.
&gt; I don&apos;t think m_connection is guaranteed to stay valid.

The connection object soup is complicated. I reasoned through and figured it would. But a WeakPtr is safer.

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:94
&gt; &gt; +    WebSWServerToContextConnection&amp; m_contextConnection;
&gt; 
&gt; This seems a bit fragile, especially since ServiceWorkerFetchTask is
&gt; refcounted.

ServiceWorkerFetchTasks are owned by WebSWServerToContextConnection.

Fragile in theory, agreed. I don&apos;t think it&apos;s fragile in context.

&gt; Patch in https://bugs.webkit.org/show_bug.cgi?id=202309 is making
&gt; ServiceWorkerFetchTask no longer refcounted which simplifies things.

As we&apos;ve discussed, there&apos;s tons of great refactoring to do here.
Also as discussed we&apos;re trying to implement good timeouts for the branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576576</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-03 13:43:17 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to youenn fablet from comment #5)
&gt; &gt; Comment on attachment 380072 [details]
&gt; &gt; WIP fix
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=380072&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/loader/FetchOptions.h:61
&gt; &gt; &gt; +    Seconds serviceWorkerTimeout { defaultServiceWorkerFetchTimeout };
&gt; &gt; 
&gt; &gt; A global value either at NetworkProcess or NetworkSession is probably
&gt; &gt; sufficient.
&gt; &gt; This should remove the need to serialize this value for every request.
&gt; 
&gt; +1: This adds unnecessary complexity which is unfortunate, especially if we
&gt; want to cherry-pick this to a branch.

To be clear, I first implemented this as a global because it was the obvious thing to do.

It became apparent that per-fetch timeouts were necessary for testing within our testing infrastructure

We are not landing anything without appropriate testing - trunk or branch - per my r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576579</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-03 13:46:46 -0700</bug_when>
    <thetext>&gt; To be clear, I realize that you need to change the value for layout testing but what we usually do then is have the testRunner utility function send an IPC to the NetworkProcess to update the timeout value.

I missed that you pointed this out. To followup on it, doing so would&apos;ve made this patch more complicated by spreading the timeout implementation over two projects and way more files, since WebCore Internals has no concept of &quot;the Network Process&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576580</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-03 13:47:57 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #10)
&gt; &gt; To be clear, I realize that you need to change the value for layout testing but what we usually do then is have the testRunner utility function send an IPC to the NetworkProcess to update the timeout value.
&gt; 
&gt; I missed that you pointed this out. To followup on it, doing so would&apos;ve
&gt; made this patch more complicated by spreading the timeout implementation
&gt; over two projects and way more files, since WebCore Internals has no concept
&gt; of &quot;the Network Process&quot;

I said testRunner, not internals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576588</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-03 13:54:28 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #11)
&gt; (In reply to Brady Eidson from comment #10)
&gt; &gt; &gt; To be clear, I realize that you need to change the value for layout testing but what we usually do then is have the testRunner utility function send an IPC to the NetworkProcess to update the timeout value.
&gt; &gt; 
&gt; &gt; I missed that you pointed this out. To followup on it, doing so would&apos;ve
&gt; &gt; made this patch more complicated by spreading the timeout implementation
&gt; &gt; over two projects and way more files, since WebCore Internals has no concept
&gt; &gt; of &quot;the Network Process&quot;
&gt; 
&gt; I said testRunner, not internals.

testRunner already has plenty of utility functions that send IPC to the network process to update some state. I don&apos;t think internals is the right place to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576595</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-03 14:10:26 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; (In reply to Chris Dumez from comment #11)
&gt; &gt; (In reply to Brady Eidson from comment #10)
&gt; &gt; &gt; &gt; To be clear, I realize that you need to change the value for layout testing but what we usually do then is have the testRunner utility function send an IPC to the NetworkProcess to update the timeout value.
&gt; &gt; &gt; 
&gt; &gt; &gt; I missed that you pointed this out. To followup on it, doing so would&apos;ve
&gt; &gt; &gt; made this patch more complicated by spreading the timeout implementation
&gt; &gt; &gt; over two projects and way more files, since WebCore Internals has no concept
&gt; &gt; &gt; of &quot;the Network Process&quot;
&gt; &gt; 
&gt; &gt; I said testRunner, not internals.
&gt; 
&gt; testRunner already has plenty of utility functions that send IPC to the
&gt; network process to update some state. I don&apos;t think internals is the right
&gt; place to do this.

E.g. testRunner.setStorageAccessAPIEnabled() sends an IPC to the network process to update state with minimal code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576629</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-03 15:27:43 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; (In reply to Chris Dumez from comment #12)
&gt; &gt; (In reply to Chris Dumez from comment #11)
&gt; &gt; &gt; (In reply to Brady Eidson from comment #10)
&gt; &gt; &gt; &gt; &gt; To be clear, I realize that you need to change the value for layout testing but what we usually do then is have the testRunner utility function send an IPC to the NetworkProcess to update the timeout value.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I missed that you pointed this out. To followup on it, doing so would&apos;ve
&gt; &gt; &gt; &gt; made this patch more complicated by spreading the timeout implementation
&gt; &gt; &gt; &gt; over two projects and way more files, since WebCore Internals has no concept
&gt; &gt; &gt; &gt; of &quot;the Network Process&quot;
&gt; &gt; &gt; 
&gt; &gt; &gt; I said testRunner, not internals.
&gt; &gt; 
&gt; &gt; testRunner already has plenty of utility functions that send IPC to the
&gt; &gt; network process to update some state. I don&apos;t think internals is the right
&gt; &gt; place to do this.
&gt; 
&gt; E.g. testRunner.setStorageAccessAPIEnabled() sends an IPC to the network
&gt; process to update state with minimal code.

We would have to add SPI for this, correct?

Which means the code to change it is in the binary WebKit framework (unlike WebCore internals)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577077</commentid>
    <comment_count>15</comment_count>
      <attachid>380269</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-04 16:59:18 -0700</bug_when>
    <thetext>Created attachment 380269
Another WIP

Addresses the feedback, and stashing it so I can take it home to work on more later</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577415</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-07 11:55:25 -0700</bug_when>
    <thetext>&gt; &gt; - In case the service worker handles the fetch, the fetch response (or body)
&gt; &gt; takes a long time to be received. In that case, it is not clear whether the
&gt; &gt; service worker is mal-functioning. Maybe the network connection is very
&gt; &gt; slow. We could try to mimick how CFNetwork is timing out. It is unclear
&gt; &gt; whether we should actually avoid the service worker in that case.
&gt; 
&gt; CFNetwork either:
&gt; A - delivers at least one event every 60 seconds
&gt; B - Times out after 60 seconds.
&gt; 
&gt; I think ServiceWorkers that are dealing with a network failure lasting
&gt; longer than 60 seconds need to signal the fetch failed.

Service workers that are fetching+caching a response should have at least the same 60 seconds policy between events.
I would tend to increase a little bit since service worker adds some overhead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577442</commentid>
    <comment_count>17</comment_count>
      <attachid>380346</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-07 12:53:29 -0700</bug_when>
    <thetext>Created attachment 380346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577444</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-07 12:55:23 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #16)
&gt; &gt; &gt; - In case the service worker handles the fetch, the fetch response (or body)
&gt; &gt; &gt; takes a long time to be received. In that case, it is not clear whether the
&gt; &gt; &gt; service worker is mal-functioning. Maybe the network connection is very
&gt; &gt; &gt; slow. We could try to mimick how CFNetwork is timing out. It is unclear
&gt; &gt; &gt; whether we should actually avoid the service worker in that case.
&gt; &gt; 
&gt; &gt; CFNetwork either:
&gt; &gt; A - delivers at least one event every 60 seconds
&gt; &gt; B - Times out after 60 seconds.
&gt; &gt; 
&gt; &gt; I think ServiceWorkers that are dealing with a network failure lasting
&gt; &gt; longer than 60 seconds need to signal the fetch failed.
&gt; 
&gt; Service workers that are fetching+caching a response should have at least
&gt; the same 60 seconds policy between events.
&gt; I would tend to increase a little bit since service worker adds some
&gt; overhead.

That&apos;s fair. 70s?

Let&apos;s hash out a good number, and I&apos;ll update the constant in the patch before landing. Everything else is still ready for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577516</commentid>
    <comment_count>19</comment_count>
      <attachid>380362</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-07 14:32:50 -0700</bug_when>
    <thetext>Created attachment 380362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577520</commentid>
    <comment_count>20</comment_count>
      <attachid>380362</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-07 14:51:06 -0700</bug_when>
    <thetext>Comment on attachment 380362
Patch

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

&gt; LayoutTests/http/tests/workers/service/resources/basic-timeout.js:42
&gt; +            testRunner.setServiceWorkerFetchTimeout(60);

This should probably reset or be consistent with the default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577523</commentid>
    <comment_count>21</comment_count>
      <attachid>380362</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-07 14:59:12 -0700</bug_when>
    <thetext>Comment on attachment 380362
Patch

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

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:165
&gt;      send(Messages::WebSWContextManagerConnection::StartFetch { serverConnectionIdentifier, serviceWorkerIdentifier, fetchIdentifier, request, options, data, referrer });

I&apos;d feel a lot better if we dealt with send() returning false here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577676</commentid>
    <comment_count>22</comment_count>
      <attachid>380362</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-07 23:59:30 -0700</bug_when>
    <thetext>Comment on attachment 380362
Patch

Overall patch looks good to me too.

I am concerned by the case of restarting m_timeoutTimer in didReceiveResponse/didReceiveData.
This does not seem necessary to cover the bug reports we know of and might potentially create regressions in existing websites (since we fail the load in that case while otherwise we just go to the network process).

I would tend to land the restarting of m_timeoutTimer in receive response/receive data as a separate follow-up patch.
We should add a test covering these cases (see for instance LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-readable-stream.https.html and LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-readable-stream-chunk.https.html), and check what other browsers are doing in that area.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:114
&gt; +    m_didReachTerminalState = true;

I do not think that m_didReachTerminalState is necessary.
By design, if we have didFinish/didFail/didNotHandle, service worker process should not send any IPC for that particular fetch task.
This is also guaranteed by the fact that ServiceWorkerFetchTask will no longer receive any IPC message after receiving any of these messages.
See WebSWServerToContextConnection::didReceiveFetchTaskMessage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577809</commentid>
    <comment_count>23</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-08 10:05:13 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #20)
&gt; Comment on attachment 380362 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380362&amp;action=review
&gt; 
&gt; &gt; LayoutTests/http/tests/workers/service/resources/basic-timeout.js:42
&gt; &gt; +            testRunner.setServiceWorkerFetchTimeout(60);
&gt; 
&gt; This should probably reset or be consistent with the default.

TBH it just needs to be &quot;big enough to never time out&quot;

The value is reset between tests no matter what.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577810</commentid>
    <comment_count>24</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-08 10:08:01 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #22)
&gt; Comment on attachment 380362 [details]
&gt; Patch
&gt; 
&gt; Overall patch looks good to me too.
&gt; 
&gt; I am concerned by the case of restarting m_timeoutTimer in
&gt; didReceiveResponse/didReceiveData.
&gt; This does not seem necessary to cover the bug reports we know of and might
&gt; potentially create regressions in existing websites (since we fail the load
&gt; in that case while otherwise we just go to the network process).
&gt; 
&gt; I would tend to land the restarting of m_timeoutTimer in receive
&gt; response/receive data as a separate follow-up patch.
&gt; We should add a test covering these cases (see for instance
&gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/
&gt; fetch-event-respond-with-readable-stream.https.html and
&gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/
&gt; fetch-event-respond-with-readable-stream-chunk.https.html), and check what
&gt; other browsers are doing in that area.

Fair point, will leave that out!

&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:114
&gt; &gt; +    m_didReachTerminalState = true;
&gt; 
&gt; I do not think that m_didReachTerminalState is necessary.
&gt; By design, if we have didFinish/didFail/didNotHandle, service worker process
&gt; should not send any IPC for that particular fetch task.
&gt; This is also guaranteed by the fact that ServiceWorkerFetchTask will no
&gt; longer receive any IPC message after receiving any of these messages.
&gt; See WebSWServerToContextConnection::didReceiveFetchTaskMessage.

I added that because during development a very basic showed double messaging.

I do not recall details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577811</commentid>
    <comment_count>25</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-08 10:09:05 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #21)
&gt; Comment on attachment 380362 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=380362&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:165
&gt; &gt;      send(Messages::WebSWContextManagerConnection::StartFetch { serverConnectionIdentifier, serviceWorkerIdentifier, fetchIdentifier, request, options, data, referrer });
&gt; 
&gt; I&apos;d feel a lot better if we dealt with send() returning false here.

If send() failed, the timeout timer would catch those cases.

I agree it&apos;d be a nice optimization to make that failure be immediate..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577812</commentid>
    <comment_count>26</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-08 10:10:04 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #25)
&gt; (In reply to Chris Dumez from comment #21)
&gt; &gt; Comment on attachment 380362 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=380362&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:165
&gt; &gt; &gt;      send(Messages::WebSWContextManagerConnection::StartFetch { serverConnectionIdentifier, serviceWorkerIdentifier, fetchIdentifier, request, options, data, referrer });
&gt; &gt; 
&gt; &gt; I&apos;d feel a lot better if we dealt with send() returning false here.
&gt; 
&gt; If send() failed, the timeout timer would catch those cases.
&gt; 
&gt; I agree it&apos;d be a nice optimization to make that failure be immediate..

I&apos;ll make that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577813</commentid>
    <comment_count>27</comment_count>
      <attachid>380439</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-08 10:13:00 -0700</bug_when>
    <thetext>Created attachment 380439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577814</commentid>
    <comment_count>28</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-10-08 10:16:04 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #24)
&gt; (In reply to youenn fablet from comment #22)
&gt; &gt; Comment on attachment 380362 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Overall patch looks good to me too.
&gt; &gt; 
&gt; &gt; I am concerned by the case of restarting m_timeoutTimer in
&gt; &gt; didReceiveResponse/didReceiveData.
&gt; &gt; This does not seem necessary to cover the bug reports we know of and might
&gt; &gt; potentially create regressions in existing websites (since we fail the load
&gt; &gt; in that case while otherwise we just go to the network process).
&gt; &gt; 
&gt; &gt; I would tend to land the restarting of m_timeoutTimer in receive
&gt; &gt; response/receive data as a separate follow-up patch.
&gt; &gt; We should add a test covering these cases (see for instance
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/
&gt; &gt; fetch-event-respond-with-readable-stream.https.html and
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/
&gt; &gt; fetch-event-respond-with-readable-stream-chunk.https.html), and check what
&gt; &gt; other browsers are doing in that area.
&gt; 
&gt; Fair point, will leave that out!
&gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:114
&gt; &gt; &gt; +    m_didReachTerminalState = true;
&gt; &gt; 
&gt; &gt; I do not think that m_didReachTerminalState is necessary.
&gt; &gt; By design, if we have didFinish/didFail/didNotHandle, service worker process
&gt; &gt; should not send any IPC for that particular fetch task.
&gt; &gt; This is also guaranteed by the fact that ServiceWorkerFetchTask will no
&gt; &gt; longer receive any IPC message after receiving any of these messages.
&gt; &gt; See WebSWServerToContextConnection::didReceiveFetchTaskMessage.
&gt; 
&gt; I added that because during development a very basic showed double messaging.

Very basic test*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577887</commentid>
    <comment_count>29</comment_count>
      <attachid>380439</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-08 12:50:20 -0700</bug_when>
    <thetext>Comment on attachment 380439
Patch

Clearing flags on attachment: 380439

Committed r250852: &lt;https://trac.webkit.org/changeset/250852&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577888</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-08 12:50:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577889</commentid>
    <comment_count>31</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-08 12:51:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/56084814&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578096</commentid>
    <comment_count>32</comment_count>
      <attachid>380439</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-09 00:25:47 -0700</bug_when>
    <thetext>Comment on attachment 380439
Patch

Timer in didReceiveResponse should be stopped otherwise we will fail intercepted loads of more than 70 seconds.
Some nits below. 

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

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:62
&gt; +    m_wasHandled = true;

We could stop the timer here.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:70
&gt; +    m_wasHandled = true;

We NEED to stop the timer here.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:-58
&gt; -    m_connection-&gt;send(Messages::ServiceWorkerClientFetch::DidReceiveData { data, encodedDataLength }, m_identifier.fetchIdentifier);

We could add an ASSERT that the timer is not active.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:83
&gt; +    if (m_connection)

We could add an ASSERT that the timer is not active.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:78
&gt; +    const WebCore::ServiceWorkerIdentifier&amp; serviceWorkerIdentifier() const { return m_serviceWorkerIdentifier; }

We could return directly by value, that is what the constructor is taking as input.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:221
&gt; +    HashSet&lt;Ref&lt;ServiceWorkerFetchTask&gt;&gt; otherFetches;

A Vector is probably more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578600</commentid>
    <comment_count>33</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-10 04:30:13 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #32)
&gt; Comment on attachment 380439 [details]
&gt; Patch
&gt; 
&gt; Timer in didReceiveResponse should be stopped otherwise we will fail
&gt; intercepted loads of more than 70 seconds.

Patch up for review at bug 202787</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379531</attachid>
            <date>2019-09-25 01:05:52 -0700</date>
            <delta_ts>2019-09-25 01:08:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202188-20190925100551.patch</filename>
            <type>text/plain</type>
            <size>23897</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4NmUzZjE4ZDc0MWNk
NWE1MThmYWM2NDI2M2I5MTJjNzYwYTU3My4uYjcyYjBhODYxMTExZjM3YTA5YjVjYTlmZTVjMjRl
MTZjMTkzNGI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA5LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgdGhlIGNhc2Ug
b2YgYSBzZXJ2aWNlIHdvcmtlciB0YWtpbmcgdG9vIG11Y2ggdGltZSB0byBwcm9jZXNzIGEgZmV0
Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1hbnVhbGx5IHRlc3RlZC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0
Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6CisgICAgICAgIENhbGwgYSBjYWxsYmFjayB3aGVuIGZl
dGNoIGV2ZW50IGlzIGZpbmlzaGVkIHByb2Nlc3NpbmcuCisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oOgorCiAyMDE5LTA5LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2EgZG9lcyBub3QgbmVlZCB0byBtYW5pcHVsYXRlIHRoZSBhdWRpbyB1bml0IGluIHBsYXkvcGF1
c2UgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA4Nzc5NzQwZTg1MDU0NzNlMWE4MTE5YTU3NjFmN2QzOTZm
YjIxYWZlLi4zNDY3MjMyZDFhZDAyZjQ0YmZiZWQ5ZmFmZjMzYWU5MWIzN2NkNTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUxIEBACisyMDE5LTA5LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgdGhlIGNhc2Ugb2YgYSBzZXJ2aWNlIHdvcmtlciB0
YWtpbmcgdG9vIG11Y2ggdGltZSB0byBwcm9jZXNzIGEgZmV0Y2ggZXZlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjE4OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRpbWVyIHdoZW4gc2Vu
ZGluZyBhIGZldGNoIHRhc2sgdG8gc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4KKyAgICAgICAgSWYg
dGltZXIgaXMgZmlyZWQsIHRoZSBzZXJ2aWNlIHdvcmtlciB0b29rIHRvbyBtdWNoIHRpbWUgdG8g
dGVsbCB3aGV0aGVyIGl0IGlzIGhhbmRsaW5nIG9yIG5vdCB0aGUgZmV0Y2guCisgICAgICAgIElu
IHRoYXQgY2FzZSwgbmV0d29yayBwcm9jZXNzIGRlY2lkZXMgdG8gbGV0IHRoZSBmZXRjaCBnbyB0
aHJvdWdoIHRoZSBuZXR3b3JrLgorICAgICAgICBJbiBhZGRpdGlvbiwgaXQgdGVybWluYXRlcyB0
aGUgc2VydmljZSB3b3JrZXIuCisgICAgICAgIFRoZSB0aW1lb3V0IHZhbHVlIGlzIDEwIHNlY29u
ZHMuCisKKyAgICAgICAgTWFkZSBzb21lIHJlZmFjdG9yaW5nIHNvIHRoYXQgdGhlIFdlU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uIGlzIHRha2luZyBhIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIGRpcmVjdGx5LAorICAgICAgICBpbnN0ZWFkIG9mIGEgTmV0d29ya1Byb2Nlc3MgcmVm
ZXJlbmNlIGFuZCBhbiBJUEMgY29ubmVjdGlvbi4KKyAgICAgICAgVXBkYXRlZCB0aGUgbGlmZXRp
bWUgb2YgZmV0Y2ggdGFzayBieSBsZXR0aW5nIHRoZSBmZXRjaCB0YXNrIGRlY2lkZSB3aGVuIGl0
IGlzIGZpbmlzaGVkIGFuZCBub3RpZnlpbmcgdGhlIHNlcnZlciB0byBjb250ZXh0IGNvbm5lY3Rp
b24uCisgICAgICAgIFRoaXMgY29ubmVjdGlvbiB3aWxsIHRoZW4gZGVzdHJveSB0aGUgZmV0Y2gg
dGFzay4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2spOgor
ICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVkaXJl
Y3RSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRO
b3RIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp3aWxs
SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91
dCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6c3RhcnRUaW1lb3V0VGltZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c3Rh
cnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6Y2FuY2VsRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFRhc2tN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpmZXRjaFRhc2tGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6ZmV0Y2hUYXNrVGltZWRPdXQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojp3
aWxsSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oOgorCiAyMDE5LTA5LTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVhdGlvbiBvZiBhIHNlcnZpY2Ugd29ya2VyIGNvbm5l
Y3Rpb24gZm9yIGEgc2VydmljZSB3b3JrZXIgam9iIHNob3VsZCBiZSBiYXNlZCBvbiB0aGUgam9i
IHNjb3BlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0NDk2OWFmMDZmNGY4YzFlNzdh
NWMxZWJhOWZkNGIwMjIzYTA2N2EyLi5jNmFhOTU4MzI4ODYzMzY4MjU2NzAwNjYzNTdkMzIzY2Vl
MzRlMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTE4NSw3ICsxODUsOCBAQCB2
b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlJiBnbG9iYWxTYwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGNsaWVudC0+ZGlkTm90SGFuZGxlKCk7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAg
ICBjbGllbnQtPndpbGxIYW5kbGUoKTsKIAogICAgIGdsb2JhbFNjb3BlLnVwZGF0ZUV4dGVuZGVk
RXZlbnRzU2V0KGV2ZW50LnB0cigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCAzMTU1
ZDU2ZTlmZDZlOTJiZDYyMDgwYTc2YTQ3NDViMzg3ZWE0OTFiLi5hZDQxYjQ2MDhmM2JhMTAyODRk
NzVkMDk4ZDZiOGNlYzczNGZmYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNTUsNiAr
NTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWROb3RIYW5kbGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxIYW5kbGUo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDlkMmVhNGQ3OTA4Yzdh
MzdlNmQ4ZmM4MmQxNTNkM2Q3NjlmZmExZDEuLmYzZTM5NTllY2M3NjEwMGE3NThmN2E3ZDY1Nzgy
MmJkNzI0YTI2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFy
dFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgRmV0Y2hPcHRpb25zOjpD
YWNoZSk7CiAKICAgICB2b2lkIHVwZGF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwg
SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYp
OwotICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFNXU2VydmVyV29ya2VyJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lk
IHN5bmNUZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGZpcmVJbnN0
YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNX
U2VydmVyV29ya2VyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDA4MjE5MGQ0
ZWU0NWQ5NWMzMTI0OGNiM2ZkMDY0Y2ZjZjY5MGZhZTUuLjI2NDNjYWIyOWQxMGIzM2RmYWRhZGM4
NTE0MDliYWFkZmU1YmJhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC04NzIs
NyArODcyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNo
U1dTZXJ2ZXJDb25uZWN0aW9uKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbikKIHsKICAgICBpZiAoYXV0byogc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+
c3dTZXJ2ZXJGb3JTZXNzaW9uSWZFeGlzdHMobV9zZXNzaW9uSUQpKQotICAgICAgICBtX3N3Q29u
dGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bj4obV9uZXR3b3JrUHJvY2VzcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2ZXIs
IG1fY29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG1h
a2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2ZXIpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA1NTNjYmFkMTliYzVhMTk3ZTA2MjUyNzUw
ZjI4MmNlM2IwNDE2ZmIwLi4wNDY3Yzg1MzU2MzdiMjA5NTBiNjdjMTMwN2MzODhmYTE2ODcxM2Uz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisj
aW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAKICNkZWZpbmUgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9zZXNzaW9uSUQu
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRiht
X3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVw
IC0gU2VydmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBA
IC00MiwxNCArNDMsMjkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
KFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24sIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQorICAgIDogbV9zZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pCisgICAgLCBt
X3Nlc3Npb25JRChzZXNzaW9uSUQpCisgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0
aW9uKSkKKyAgICAsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50
aWZpZXIpCisgICAgLCBtX2lkZW50aWZpZXIoY29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRl
bnRpZmllcikKKyAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmU2VydmljZVdvcmtlckZldGNo
VGFzazo6dGltZW91dCkKK3sKKyAgICBzdGFydFRpbWVvdXRUaW1lcigpOworfQorCiB2b2lkIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50
aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVkaXJl
Y3RSZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwor
CisgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmZldGNoVGFza0ZpbmlzaGVkKCp0aGlz
KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7CisgICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworCiAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6
OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIApAQCAt
NjcsMTggKzgzLDM3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkK
IHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hGZXRjaDogZmV0Y2hJZGVu
dGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyKTsKKworICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5mZXRjaFRhc2tGaW5p
c2hlZCgqdGhpcyk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIu
ZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFp
bCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworCisgICAgbV9zZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmZldGNoVGFza0ZpbmlzaGVkKCp0aGlzKTsKIH0KIAogdm9p
ZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUoKQogewogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZE5vdEhhbmRsZUZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwg
bV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwor
CisgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmZldGNoVGFza0ZpbmlzaGVkKCp0aGlz
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp3aWxsSGFuZGxlKCkKK3sKKyAg
ICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6dGltZW91dCgpCit7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgidGltZW91
dDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBtX2lkZW50
aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKworICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5mZXRjaFRhc2tUaW1lZE91dCgqdGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKaW5kZXggZjExNmNjNzQ5ZTZjMDU3
N2E5OWQwOTU0NDFhYTgyZDk2ZmU4YzQ4Ny4uZDIzMGExZjI1YTFhMzFjYTE0OTFlZTg1ZDU4ODIw
OTE1ODYxMGUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9U
aW1lci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCkBAIC00Niw5ICs0NywxMSBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjsKKwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZl
dGNoSWRlbnRpZmllcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrKHNlc3Npb25JRCwgV1RGTW92ZShjb25uZWN0aW9uKSwgY29ubmVjdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllcikpOyB9CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrPiBjcmVhdGUoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBzZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZjxJUEM6OkNvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBj
b25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckZldGNoVGFzayhzZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBzZXNzaW9uSUQsIFdURk1vdmUoY29ubmVjdGlvbiksIGNv
bm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSk7IH0KIAogICAgIHZvaWQgZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvcikgeyBkaWRGYWlsKGVycm9yKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBAIC02NywxMyArNzAsMTMgQEAgcHVibGlj
OgogICAgIH07CiAKICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOyB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgaGFuZGxlVGlt
ZW91dCB7IDEwX3MgfTsKKyAgICB2b2lkIHN0YXJ0VGltZW91dFRpbWVyKCkgeyBtX3RpbWVvdXRU
aW1lci5zdGFydE9uZVNob3QoaGFuZGxlVGltZW91dCk7IH0KIAogcHJpdmF0ZToKLSAgICBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJ
ZGVudGlmaWVyKQotICAgICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAgICAgLCBt
X2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAgICAgLCBtX2lkZW50aWZpZXIg
eyBjb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyIH0KLSAgICB7IH0KKyAgICBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFBB
TDo6U2Vzc2lvbklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpTV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVz
cG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRz
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKQEAgLTgyLDEwICs4NSwxNSBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZSgpOworICAgIHZv
aWQgd2lsbEhhbmRsZSgpOworICAgIHZvaWQgdGltZW91dCgpOwogCisgICAgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uJiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOworICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIG1fc2VydmljZVdv
cmtlcklkZW50aWZpZXI7CiAgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV2ViQ29y
ZTo6VGltZXIgbV90aW1lb3V0VGltZXI7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIGEsIGNvbnN0IFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCmluZGV4IDM1NzdmMDcyYmQxODY3NzdhODlh
ZmJhZWJkMDk5ZjEwOTEzNThhN2EuLjMwZjVlNTQxNjA4NTlmZDFmOWZmNmEyNDA5MDFjOGZjMDMy
ZDFhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1l
c3NhZ2VzLmluCkBAIC0yNCw2ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2sgewogICAgIERpZE5vdEhhbmRsZSgpCisgICAgV2lsbEhhbmRsZSgpCiAgICAgRGlk
RmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZFJlY2VpdmVSZWRpcmVj
dFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDU4MDk0ZDYyOGNiMDgz
MDViOTc1YTgxMTkyZGNjYjNjYmM5NDRlMWEuLjdhNDZhYWIxNzVlMmE5MGY1MDE4MTY3MTkyNWM4
OWFhZjE4NjVhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJGb3JtRGF0YVJl
ZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
cy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpAQCAt
NDEsMTAgKzQxLDkgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUmVnaXN0cmFibGVE
b21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXImIHNlcnZlciwgUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uKQorV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24sIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFNX
U2VydmVyJiBzZXJ2ZXIpCiAgICAgOiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgLCBtX2lwY0Nvbm5lY3Rpb24oV1RGTW92ZShjb25u
ZWN0aW9uKSkKLSAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCisgICAgLCBt
X2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAsIG1fc2VydmVyKG1ha2VXZWFrUHRyKHNlcnZl
cikpCiB7CiAgICAgc2VydmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKQEAgLTU5LDcg
KzU4LDcgQEAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKCkKIAogSVBDOjpDb25uZWN0aW9uKiBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOworICAgIHJldHVybiAmbV9jb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKTsKIH0KIAogdWludDY0X3QgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CkBAIC0xNTUsNyArMTU0LDcgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBSZWY8SVAKIHsKICAgICBhdXRvIGZldGNoSWRlbnRpZmllciA9IEZldGNo
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAKLSAgICBtX29uZ29pbmdGZXRjaGVzLmFkZChm
ZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNyZWF0ZShzZXNzaW9uSUQs
IFdURk1vdmUoY29udGVudENvbm5lY3Rpb24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29udGVudEZldGNoSWRlbnRpZmllcikpOworICAgIG1fb25nb2luZ0ZldGNoZXMuYWRkKGZldGNo
SWRlbnRpZmllciwgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y3JlYXRlKCp0aGlzLCBzZXNzaW9u
SUQsIFdURk1vdmUoY29udGVudENvbm5lY3Rpb24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29udGVudEZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKIAog
ICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlucyh7c2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXJ9KSk7CiAgICAgbV9vbmdv
aW5nRmV0Y2hJZGVudGlmaWVycy5hZGQoe3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb250
ZW50RmV0Y2hJZGVudGlmaWVyfSwgZmV0Y2hJZGVudGlmaWVyKTsKQEAgLTE3MSw2ICsxNzAsNyBA
QCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2goV2ViQ29y
ZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbgogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7CiAKKyAg
ICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hlcy5jb250YWlucyhpdGVyYXRvci0+dmFsdWUpKTsKICAg
ICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUpOwogICAgIG1fb25nb2lu
Z0ZldGNoSWRlbnRpZmllcnMucmVtb3ZlKGl0ZXJhdG9yKTsKIH0KQEAgLTE4MCw3ICsxODAsMTAg
QEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2
ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1cKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9vbmdvaW5n
RmV0Y2hJZGVudGlmaWVycy5maW5kKHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnRl
bnRGZXRjaElkZW50aWZpZXIgfSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fb25nb2luZ0ZldGNo
SWRlbnRpZmllcnMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIEFTU0VSVCht
X29uZ29pbmdGZXRjaGVzLmNvbnRhaW5zKGl0ZXJhdG9yLT52YWx1ZSkpOworICAgIG1fb25nb2lu
Z0ZldGNoZXMuZ2V0KGl0ZXJhdG9yLT52YWx1ZSktPnN0YXJ0VGltZW91dFRpbWVyKCk7CisKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q29udGludWVE
aWRSZWNlaXZlRmV0Y2hSZXNwb25zZSB7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgaXRlcmF0b3ItPnZhbHVlIH0pOwogfQogCkBAIC0xODksMTkg
KzE5MiwyNSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkUmVjZWl2
ZUZldGNoVGFza01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJgogICAgIGF1dG8gaXRlcmF0b3IgPSBt
X29uZ29pbmdGZXRjaGVzLmZpbmQobWFrZU9iamVjdElkZW50aWZpZXI8RmV0Y2hJZGVudGlmaWVy
VHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9v
bmdvaW5nRmV0Y2hlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGJvb2wgc2hv
dWxkUmVtb3ZlID0gZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpEaWRGYWlsOjpuYW1lKCkKLSAgICAgICAgfHwgZGVjb2Rlci5tZXNzYWdl
TmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGU6
Om5hbWUoKQotICAgICAgICB8fCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZpbmlzaDo6bmFtZSgpCi0gICAgICAgIHx8IGRlY29k
ZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2U6Om5hbWUoKTsKIAogICAgIGl0ZXJhdG9yLT52YWx1ZS0+
ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tGaW5pc2hlZChTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrJiB0YXNrKQoreworICAgIEFTU0VSVChtX29uZ29pbmdGZXRjaElkZW50aWZpZXJz
LmNvbnRhaW5zKHRhc2suaWRlbnRpZmllcigpKSk7CisgICAgYXV0byBmZXRjaElkZW50aWZpZXIg
PSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLnRha2UodGFzay5pZGVudGlmaWVyKCkpOworCisg
ICAgQVNTRVJUKG1fb25nb2luZ0ZldGNoZXMuY29udGFpbnMoZmV0Y2hJZGVudGlmaWVyKSk7Cisg
ICAgbV9vbmdvaW5nRmV0Y2hlcy5yZW1vdmUoZmV0Y2hJZGVudGlmaWVyKTsKK30KKwordm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZldGNoVGFza1RpbWVkT3V0KFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2smIHRhc2spCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IChtX3NlcnZl
ciA/IG1fc2VydmVyLT53b3JrZXJCeUlEKHRhc2suc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSkg
OiBudWxscHRyKSkKKyAgICAgICAgbV9zZXJ2ZXItPnRlcm1pbmF0ZVdvcmtlcigqd29ya2VyKTsK
IAotICAgIGlmIChzaG91bGRSZW1vdmUpIHsKLSAgICAgICAgQVNTRVJUKG1fb25nb2luZ0ZldGNo
SWRlbnRpZmllcnMuY29udGFpbnMoaXRlcmF0b3ItPnZhbHVlLT5pZGVudGlmaWVyKCkpKTsKLSAg
ICAgICAgbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5yZW1vdmUoaXRlcmF0b3ItPnZhbHVlLT5p
ZGVudGlmaWVyKCkpOwotICAgICAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpdGVyYXRvcik7
Ci0gICAgfQorICAgIGZldGNoVGFza0ZpbmlzaGVkKHRhc2spOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAppbmRleCBhM2M2NGVkMTI3OGRmNjdhOTllMDA1OTdhNDQyMGVhMjE3NjQ5MmFkLi43NDcx
YmM1MjJhNDBmZmI0ZTdjZGIxYTdhOTIyZjlhNTJiZTFkNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC00OSwxNSArNDksMTMgQEAg
Y2xhc3MgU2Vzc2lvbklEOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTmV0d29ya1By
b2Nlc3M7CitjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIAogY2xhc3MgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJD
b3JlOjpTV1NlcnZlciYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworICAgIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYkNvcmU6OlNXU2VydmVyJik7CiAgICAgfldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwogCi0gICAgSVBDOjpDb25uZWN0aW9uKiBpcGND
b25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOyB9Ci0KICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKQEAgLTcyLDYgKzcwLDkgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKTsK
ICAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rocm90dGxlYWJs
ZTsgfQogCisgICAgdm9pZCBmZXRjaFRhc2tGaW5pc2hlZChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Jik7CisgICAgdm9pZCBmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJik7
CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwpAQCAtOTUsOCArOTYs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CiAKLSAgICBSZWY8
SVBDOjpDb25uZWN0aW9uPiBtX2lwY0Nvbm5lY3Rpb247Ci0gICAgUmVmPE5ldHdvcmtQcm9jZXNz
PiBtX25ldHdvcmtQcm9jZXNzOworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBt
X2Nvbm5lY3Rpb247CiAgICAgV2Vha1B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zZXJ2ZXI7CiAK
ICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllcj4gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVyczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMjY0NGM5YzFkMTJiNmNkMDFkNTY2OTlk
MTMyYmMyZWY0YzYzNmExOS4uMGY2MjM2YThkZmIxMDI2NmI2NjMxYTc3MDM0ZDMwMGQ2M2E1YjUy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTE3OSw2ICsx
NzksMTIgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWROb3RIYW5k
bGUoKQogICAgIGNsZWFudXAoKTsKIH0KIAordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50Ojp3aWxsSGFuZGxlKCkKK3sKKyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OldpbGxI
YW5kbGUgeyB9LCBtX2ZldGNoSWRlbnRpZmllcik7Cit9CisKIHZvaWQgV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudDo6Y2FuY2VsKCkKIHsKICAgICBtX2Nvbm5lY3Rpb24gPSBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGUwZjQ3ZDg2YTk2OGZj
OGNmOTVjZWYzYTNlMTUwNDM1NGJiMWVmNTUuLjg5MTIyZmU3YjliNDI5ZGEyNzA2MjY5N2Q3ZDBi
Nzc2ZTU5ODNhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKQEAgLTU0
LDYgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKCkgZmluYWw7CiAgICAgdm9p
ZCBkaWROb3RIYW5kbGUoKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxIYW5kbGUoKSBmaW5hbDsKICAg
ICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2UoKSBmaW5hbDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379532</attachid>
            <date>2019-09-25 01:08:06 -0700</date>
            <delta_ts>2019-10-02 16:57:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202188-20190925100804.patch</filename>
            <type>text/plain</type>
            <size>23903</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4NmUzZjE4ZDc0MWNk
NWE1MThmYWM2NDI2M2I5MTJjNzYwYTU3My4uYjcyYjBhODYxMTExZjM3YTA5YjVjYTlmZTVjMjRl
MTZjMTkzNGI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTA5LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgdGhlIGNhc2Ug
b2YgYSBzZXJ2aWNlIHdvcmtlciB0YWtpbmcgdG9vIG11Y2ggdGltZSB0byBwcm9jZXNzIGEgZmV0
Y2ggZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwMjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE1hbnVhbGx5IHRlc3RlZC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0
Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6CisgICAgICAgIENhbGwgYSBjYWxsYmFjayB3aGVuIGZl
dGNoIGV2ZW50IGlzIGZpbmlzaGVkIHByb2Nlc3NpbmcuCisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oOgorCiAyMDE5LTA5LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU3RyZWFtQ29j
b2EgZG9lcyBub3QgbmVlZCB0byBtYW5pcHVsYXRlIHRoZSBhdWRpbyB1bml0IGluIHBsYXkvcGF1
c2UgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCA4Nzc5NzQwZTg1MDU0NzNlMWE4MTE5YTU3NjFmN2QzOTZm
YjIxYWZlLi4zNDY3MjMyZDFhZDAyZjQ0YmZiZWQ5ZmFmZjMzYWU5MWIzN2NkNTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUxIEBACisyMDE5LTA5LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBIYW5kbGUgdGhlIGNhc2Ugb2YgYSBzZXJ2aWNlIHdvcmtlciB0
YWtpbmcgdG9vIG11Y2ggdGltZSB0byBwcm9jZXNzIGEgZmV0Y2ggZXZlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjE4OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHRpbWVyIHdoZW4gc2Vu
ZGluZyBhIGZldGNoIHRhc2sgdG8gc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4KKyAgICAgICAgSWYg
dGltZXIgaXMgZmlyZWQsIHRoZSBzZXJ2aWNlIHdvcmtlciB0b29rIHRvbyBtdWNoIHRpbWUgdG8g
dGVsbCB3aGV0aGVyIGl0IGlzIGhhbmRsaW5nIG9yIG5vdCB0aGUgZmV0Y2guCisgICAgICAgIElu
IHRoYXQgY2FzZSwgbmV0d29yayBwcm9jZXNzIGRlY2lkZXMgdG8gbGV0IHRoZSBmZXRjaCBnbyB0
aHJvdWdoIHRoZSBuZXR3b3JrLgorICAgICAgICBJbiBhZGRpdGlvbiwgaXQgdGVybWluYXRlcyB0
aGUgc2VydmljZSB3b3JrZXIuCisgICAgICAgIFRoZSB0aW1lb3V0IHZhbHVlIGlzIDEwIHNlY29u
ZHMuCisKKyAgICAgICAgTWFkZSBzb21lIHJlZmFjdG9yaW5nIHNvIHRoYXQgdGhlIFdlU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uIGlzIHRha2luZyBhIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIGRpcmVjdGx5LAorICAgICAgICBpbnN0ZWFkIG9mIGEgTmV0d29ya1Byb2Nlc3MgcmVm
ZXJlbmNlIGFuZCBhbiBJUEMgY29ubmVjdGlvbi4KKyAgICAgICAgVXBkYXRlZCB0aGUgbGlmZXRp
bWUgb2YgZmV0Y2ggdGFzayBieSBsZXR0aW5nIHRoZSBmZXRjaCB0YXNrIGRlY2lkZSB3aGVuIGl0
IGlzIGZpbmlzaGVkIGFuZCBub3RpZnlpbmcgdGhlIHNlcnZlciB0byBjb250ZXh0IGNvbm5lY3Rp
b24uCisgICAgICAgIFRoaXMgY29ubmVjdGlvbiB3aWxsIHRoZW4gZGVzdHJveSB0aGUgZmV0Y2gg
dGFzay4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2spOgor
ICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVkaXJl
Y3RSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRO
b3RIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp3aWxs
SGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91
dCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6c3RhcnRUaW1lb3V0VGltZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c3Rh
cnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6Y2FuY2VsRmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFRhc2tN
ZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpmZXRjaFRhc2tGaW5pc2hlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6ZmV0Y2hUYXNrVGltZWRPdXQpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojp3
aWxsSGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oOgorCiAyMDE5LTA5LTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVhdGlvbiBvZiBhIHNlcnZpY2Ugd29ya2VyIGNvbm5l
Y3Rpb24gZm9yIGEgc2VydmljZSB3b3JrZXIgam9iIHNob3VsZCBiZSBiYXNlZCBvbiB0aGUgam9i
IHNjb3BlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRleCA0NDk2OWFmMDZmNGY4YzFlNzdh
NWMxZWJhOWZkNGIwMjIzYTA2N2EyLi5jNmFhOTU4MzI4ODYzMzY4MjU2NzAwNjYzNTdkMzIzY2Vl
MzRlMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKQEAgLTE4NSw3ICsxODUsOCBAQCB2
b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlJiBnbG9iYWxTYwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGNsaWVudC0+ZGlkTm90SGFuZGxlKCk7Ci0gICAgfQorICAgIH0gZWxzZQorICAgICAg
ICBjbGllbnQtPndpbGxIYW5kbGUoKTsKIAogICAgIGdsb2JhbFNjb3BlLnVwZGF0ZUV4dGVuZGVk
RXZlbnRzU2V0KGV2ZW50LnB0cigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAppbmRleCAzMTU1
ZDU2ZTlmZDZlOTJiZDYyMDgwYTc2YTQ3NDViMzg3ZWE0OTFiLi5hZDQxYjQ2MDhmM2JhMTAyODRk
NzVkMDk4ZDZiOGNlYzczNGZmYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApAQCAtNTUsNiAr
NTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWROb3RIYW5kbGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdpbGxIYW5kbGUo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDlkMmVhNGQ3OTA4Yzdh
MzdlNmQ4ZmM4MmQxNTNkM2Q3NjlmZmExZDEuLmYzZTM5NTllY2M3NjEwMGE3NThmN2E3ZDY1Nzgy
MmJkNzI0YTI2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFy
dFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgRmV0Y2hPcHRpb25zOjpD
YWNoZSk7CiAKICAgICB2b2lkIHVwZGF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwg
SGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYp
OwotICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFNXU2VydmVyV29ya2VyJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lk
IHN5bmNUZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGZpcmVJbnN0
YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNX
U2VydmVyV29ya2VyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDA4MjE5MGQ0
ZWU0NWQ5NWMzMTI0OGNiM2ZkMDY0Y2ZjZjY5MGZhZTUuLjI2NDNjYWIyOWQxMGIzM2RmYWRhZGM4
NTE0MDliYWFkZmU1YmJhNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC04NzIs
NyArODcyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZXN0YWJsaXNo
U1dTZXJ2ZXJDb25uZWN0aW9uKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmVzdGFibGlzaFNXQ29udGV4dENvbm5lY3Rpb24oUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbikKIHsKICAgICBpZiAoYXV0byogc2VydmVyID0gbV9uZXR3b3JrUHJvY2Vzcy0+
c3dTZXJ2ZXJGb3JTZXNzaW9uSWZFeGlzdHMobV9zZXNzaW9uSUQpKQotICAgICAgICBtX3N3Q29u
dGV4dENvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bj4obV9uZXR3b3JrUHJvY2VzcywgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2ZXIs
IG1fY29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG1h
a2VVbmlxdWU8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uPigqdGhpcywgV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbiksICpzZXJ2ZXIpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA1NTNjYmFkMTliYzVhMTk3ZTA2MjUyNzUw
ZjI4MmNlM2IwNDE2ZmIwLi45ZTYxYjYyNjdhOGY2MjcyNWRkYjQ5MTVlNzhhOWYzMzMzZTVmYjBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisj
aW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAKICNkZWZpbmUgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9zZXNzaW9uSUQu
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRiht
X3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVw
IC0gU2VydmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBA
IC00MiwxNCArNDMsMjkgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
KFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24sIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQorICAgIDogbV9zZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24pCisgICAgLCBt
X3Nlc3Npb25JRChzZXNzaW9uSUQpCisgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0
aW9uKSkKKyAgICAsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50
aWZpZXIpCisgICAgLCBtX2lkZW50aWZpZXIgeyBjb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJ
ZGVudGlmaWVyIH0KKyAgICAsIG1fdGltZW91dFRpbWVyIHsgKnRoaXMsICZTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjp0aW1lb3V0IH0KK3sKKyAgICBzdGFydFRpbWVvdXRUaW1lcigpOworfQorCiB2
b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZp
ZXIpOworCisgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmZldGNoVGFza0ZpbmlzaGVk
KCp0aGlzKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7CisgICAgbV90aW1lb3V0VGltZXIuc3RvcCgp
OworCiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0K
IApAQCAtNjcsMTggKzgzLDM3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmlu
aXNoKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hGZXRjaDogZmV0
Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0
Y2hJZGVudGlmaWVyKTsKKworICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5mZXRjaFRh
c2tGaW5pc2hlZCgqdGhpcyk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlk
RmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50
aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkRmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworCisgICAg
bV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmZldGNoVGFza0ZpbmlzaGVkKCp0aGlzKTsKIH0K
IAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUoKQogewogICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZE5vdEhhbmRsZUZldGNoOiBmZXRjaElkZW50aWZpZXI6
ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZp
ZXIpOworCisgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmZldGNoVGFza0ZpbmlzaGVk
KCp0aGlzKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp3aWxsSGFuZGxlKCkK
K3sKKyAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6dGltZW91dCgpCit7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgi
dGltZW91dDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZp
ZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKworICAgIG1fc2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5mZXRjaFRhc2tUaW1lZE91dCgqdGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKaW5kZXggZjExNmNjNzQ5
ZTZjMDU3N2E5OWQwOTU0NDFhYTgyZDk2ZmU4YzQ4Ny4uZDIzMGExZjI1YTFhMzFjYTE0OTFlZTg1
ZDU4ODIwOTE1ODYxMGUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5o
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogCkBAIC00Niw5ICs0NywxMSBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5j
ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjsKKwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzayA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlm
aWVyIGZldGNoSWRlbnRpZmllcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrKHNlc3Npb25JRCwgV1RGTW92ZShjb25uZWN0aW9uKSwgY29ubmVjdGlvbklkZW50
aWZpZXIsIGZldGNoSWRlbnRpZmllcikpOyB9CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrPiBjcmVhdGUoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZjxJUEM6OkNv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNo
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckZldGNoVGFz
ayhzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBzZXNzaW9uSUQsIFdURk1vdmUoY29ubmVjdGlv
biksIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSk7IH0KIAogICAgIHZvaWQgZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcnJvcikgeyBkaWRGYWlsKGVycm9yKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CkBAIC02NywxMyArNzAsMTMgQEAg
cHVibGljOgogICAgIH07CiAKICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyOyB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgaGFu
ZGxlVGltZW91dCB7IDEwX3MgfTsKKyAgICB2b2lkIHN0YXJ0VGltZW91dFRpbWVyKCkgeyBtX3Rp
bWVvdXRUaW1lci5zdGFydE9uZVNob3QoaGFuZGxlVGltZW91dCk7IH0KIAogcHJpdmF0ZToKLSAg
ICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIg
ZmV0Y2hJZGVudGlmaWVyKQotICAgICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAg
ICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAgICAgLCBtX2lkZW50
aWZpZXIgeyBjb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyIH0KLSAgICB7IH0K
KyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biYsIFBBTDo6U2Vzc2lvbklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29s
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKQEAgLTgyLDEwICs4NSwx
NSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZSgpOwor
ICAgIHZvaWQgd2lsbEhhbmRsZSgpOworICAgIHZvaWQgdGltZW91dCgpOwogCisgICAgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAg
ICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uOworICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIG1fc2Vy
dmljZVdvcmtlcklkZW50aWZpZXI7CiAgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAg
V2ViQ29yZTo6VGltZXIgbV90aW1lb3V0VGltZXI7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIGEsIGNvbnN0IFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCmluZGV4IDM1NzdmMDcyYmQxODY3
NzdhODlhZmJhZWJkMDk5ZjEwOTEzNThhN2EuLjMwZjVlNTQxNjA4NTlmZDFmOWZmNmEyNDA5MDFj
OGZjMDMyZDFhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLm1lc3NhZ2VzLmluCkBAIC0yNCw2ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2sgewogICAgIERpZE5vdEhhbmRsZSgpCisgICAgV2lsbEhhbmRsZSgpCiAg
ICAgRGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAg
RGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJv
b2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDU4MDk0ZDYy
OGNiMDgzMDViOTc1YTgxMTkyZGNjYjNjYmM5NDRlMWEuLjdhNDZhYWIxNzVlMmE5MGY1MDE4MTY3
MTkyNWM4OWFhZjE4NjVhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJGb3Jt
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFzay5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgpAQCAtNDEsMTAgKzQxLDkgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLVdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgUmVnaXN0
cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgU1dTZXJ2ZXImIHNlcnZlciwgUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQorV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb24sIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21h
aW4sIFNXU2VydmVyJiBzZXJ2ZXIpCiAgICAgOiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgLCBtX2lwY0Nvbm5lY3Rpb24oV1RGTW92
ZShjb25uZWN0aW9uKSkKLSAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCisg
ICAgLCBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAsIG1fc2VydmVyKG1ha2VXZWFrUHRy
KHNlcnZlcikpCiB7CiAgICAgc2VydmVyLmFkZENvbnRleHRDb25uZWN0aW9uKCp0aGlzKTsKQEAg
LTU5LDcgKzU4LDcgQEAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp+V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkKIAogSVBDOjpDb25uZWN0aW9uKiBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOworICAgIHJldHVybiAmbV9jb25uZWN0aW9u
LmNvbm5lY3Rpb24oKTsKIH0KIAogdWludDY0X3QgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CkBAIC0xNTUsNyArMTU0LDcg
QEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBSZWY8SVAKIHsKICAgICBhdXRvIGZldGNoSWRlbnRpZmllciA9
IEZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAKLSAgICBtX29uZ29pbmdGZXRjaGVz
LmFkZChmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNyZWF0ZShzZXNz
aW9uSUQsIFdURk1vdmUoY29udGVudENvbm5lY3Rpb24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgY29udGVudEZldGNoSWRlbnRpZmllcikpOworICAgIG1fb25nb2luZ0ZldGNoZXMuYWRk
KGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y3JlYXRlKCp0aGlzLCBz
ZXNzaW9uSUQsIFdURk1vdmUoY29udGVudENvbm5lY3Rpb24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIp
KTsKIAogICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlucyh7c2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXJ9KSk7CiAgICAg
bV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5hZGQoe3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb250ZW50RmV0Y2hJZGVudGlmaWVyfSwgZmV0Y2hJZGVudGlmaWVyKTsKQEAgLTE3MSw2ICsx
NzAsNyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2FuY2VsRmV0Y2go
V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbgogCiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNhbmNlbEZldGNoIHsgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpdGVyYXRvci0+dmFsdWUgfSk7
CiAKKyAgICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hlcy5jb250YWlucyhpdGVyYXRvci0+dmFsdWUp
KTsKICAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpdGVyYXRvci0+dmFsdWUpOwogICAgIG1f
b25nb2luZ0ZldGNoSWRlbnRpZmllcnMucmVtb3ZlKGl0ZXJhdG9yKTsKIH0KQEAgLTE4MCw3ICsx
ODAsMTAgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNvbnRpbnVlRGlk
UmVjZWl2ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1cKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9v
bmdvaW5nRmV0Y2hJZGVudGlmaWVycy5maW5kKHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnRlbnRGZXRjaElkZW50aWZpZXIgfSk7CiAgICAgaWYgKGl0ZXJhdG9yID09IG1fb25nb2lu
Z0ZldGNoSWRlbnRpZmllcnMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKKworICAgIEFT
U0VSVChtX29uZ29pbmdGZXRjaGVzLmNvbnRhaW5zKGl0ZXJhdG9yLT52YWx1ZSkpOworICAgIG1f
b25nb2luZ0ZldGNoZXMuZ2V0KGl0ZXJhdG9yLT52YWx1ZSktPnN0YXJ0VGltZW91dFRpbWVyKCk7
CisKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q29u
dGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSB7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaXRlcmF0b3ItPnZhbHVlIH0pOwogfQogCkBAIC0x
ODksMTkgKzE5MiwyNSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlk
UmVjZWl2ZUZldGNoVGFza01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJgogICAgIGF1dG8gaXRlcmF0
b3IgPSBtX29uZ29pbmdGZXRjaGVzLmZpbmQobWFrZU9iamVjdElkZW50aWZpZXI8RmV0Y2hJZGVu
dGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKTsKICAgICBpZiAoaXRlcmF0b3Ig
PT0gbV9vbmdvaW5nRmV0Y2hlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGJv
b2wgc2hvdWxkUmVtb3ZlID0gZGVjb2Rlci5tZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGYWlsOjpuYW1lKCkKLSAgICAgICAgfHwgZGVjb2Rlci5t
ZXNzYWdlTmFtZSgpID09IE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RI
YW5kbGU6Om5hbWUoKQotICAgICAgICB8fCBkZWNvZGVyLm1lc3NhZ2VOYW1lKCkgPT0gTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZpbmlzaDo6bmFtZSgpCi0gICAgICAgIHx8
IGRlY29kZXIubWVzc2FnZU5hbWUoKSA9PSBNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2U6Om5hbWUoKTsKIAogICAgIGl0ZXJhdG9yLT52
YWx1ZS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7Cit9CisKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmZXRjaFRhc2tGaW5pc2hlZChTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrJiB0YXNrKQoreworICAgIEFTU0VSVChtX29uZ29pbmdGZXRjaElkZW50
aWZpZXJzLmNvbnRhaW5zKHRhc2suaWRlbnRpZmllcigpKSk7CisgICAgYXV0byBmZXRjaElkZW50
aWZpZXIgPSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLnRha2UodGFzay5pZGVudGlmaWVyKCkp
OworCisgICAgQVNTRVJUKG1fb25nb2luZ0ZldGNoZXMuY29udGFpbnMoZmV0Y2hJZGVudGlmaWVy
KSk7CisgICAgbV9vbmdvaW5nRmV0Y2hlcy5yZW1vdmUoZmV0Y2hJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZldGNoVGFza1RpbWVkT3V0KFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9ICht
X3NlcnZlciA/IG1fc2VydmVyLT53b3JrZXJCeUlEKHRhc2suc2VydmljZVdvcmtlcklkZW50aWZp
ZXIoKSkgOiBudWxscHRyKSkKKyAgICAgICAgbV9zZXJ2ZXItPnRlcm1pbmF0ZVdvcmtlcigqd29y
a2VyKTsKIAotICAgIGlmIChzaG91bGRSZW1vdmUpIHsKLSAgICAgICAgQVNTRVJUKG1fb25nb2lu
Z0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMoaXRlcmF0b3ItPnZhbHVlLT5pZGVudGlmaWVyKCkp
KTsKLSAgICAgICAgbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5yZW1vdmUoaXRlcmF0b3ItPnZh
bHVlLT5pZGVudGlmaWVyKCkpOwotICAgICAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpdGVy
YXRvcik7Ci0gICAgfQorICAgIGZldGNoVGFza0ZpbmlzaGVkKHRhc2spOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaAppbmRleCBhM2M2NGVkMTI3OGRmNjdhOTllMDA1OTdhNDQyMGVhMjE3NjQ5MmFk
Li43NDcxYmM1MjJhNDBmZmI0ZTdjZGIxYTdhOTIyZjlhNTJiZTFkNTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC00OSwxNSArNDks
MTMgQEAgY2xhc3MgU2Vzc2lvbklEOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgTmV0
d29ya1Byb2Nlc3M7CitjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIAogY2xh
c3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBXZWJDb3JlOjpTV1NlcnZlciYsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYpOworICAgIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYkNvcmU6OlNXU2VydmVyJik7CiAgICAg
fldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOwogCi0gICAgSVBDOjpDb25uZWN0aW9u
KiBpcGNDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pcGNDb25uZWN0aW9uLnB0cigpOyB9
Ci0KICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKQEAgLTcyLDYgKzcw
LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVh
YmxlKTsKICAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rocm90
dGxlYWJsZTsgfQogCisgICAgdm9pZCBmZXRjaFRhc2tGaW5pc2hlZChTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrJik7CisgICAgdm9pZCBmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrJik7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpD
b25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwpAQCAtOTUs
OCArOTYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CiAKLSAg
ICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2lwY0Nvbm5lY3Rpb247Ci0gICAgUmVmPE5ldHdvcmtQ
cm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOworICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBtX2Nvbm5lY3Rpb247CiAgICAgV2Vha1B0cjxXZWJDb3JlOjpTV1NlcnZlcj4gbV9zZXJ2
ZXI7CiAKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXIsIFdl
YkNvcmU6OkZldGNoSWRlbnRpZmllcj4gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVyczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggMjY0NGM5YzFkMTJiNmNkMDFk
NTY2OTlkMTMyYmMyZWY0YzYzNmExOS4uMGY2MjM2YThkZmIxMDI2NmI2NjMxYTc3MDM0ZDMwMGQ2
M2E1YjUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTE3
OSw2ICsxNzksMTIgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRO
b3RIYW5kbGUoKQogICAgIGNsZWFudXAoKTsKIH0KIAordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50Ojp3aWxsSGFuZGxlKCkKK3sKKyAgICBpZiAobV9jb25uZWN0aW9uKQorICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OldpbGxIYW5kbGUgeyB9LCBtX2ZldGNoSWRlbnRpZmllcik7Cit9CisKIHZvaWQgV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y2FuY2VsKCkKIHsKICAgICBtX2Nvbm5lY3Rpb24gPSBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCmluZGV4IGUwZjQ3ZDg2
YTk2OGZjOGNmOTVjZWYzYTNlMTUwNDM1NGJiMWVmNTUuLjg5MTIyZmU3YjliNDI5ZGEyNzA2MjY5
N2Q3ZDBiNzc2ZTU5ODNhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgK
QEAgLTU0LDYgKzU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKCkgZmluYWw7CiAg
ICAgdm9pZCBkaWROb3RIYW5kbGUoKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxIYW5kbGUoKSBmaW5h
bDsKICAgICB2b2lkIGNhbmNlbCgpIGZpbmFsOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2UoKSBmaW5hbDsKIAo=
</data>
<flag name="review"
          id="395271"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380072</attachid>
            <date>2019-10-02 16:57:05 -0700</date>
            <delta_ts>2019-10-04 16:59:18 -0700</delta_ts>
            <desc>WIP fix</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>31736</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LXRpbWVvdXQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL2Jhc2ljLXRpbWVvdXQuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uZjZhY2RjNjhmMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0Lmh0dHBzLmh0bWwKQEAgLTAs
MCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291
cmNlcy9iYXNpYy10aW1lb3V0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9i
YXNpYy10aW1lb3V0LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy10aW1lb3V0LXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWM1YTIwYjIxNGUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtdGlt
ZW91dC13b3JrZXIuanMKQEAgLTAsMCArMSw2IEBACitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoImZl
dGNoIiwgKGV2ZW50KSA9PiB7CisgICAgaWYgKGV2ZW50LnJlcXVlc3QudXJsLmluZGV4T2YoInRp
bWVvdXQiKSAhPT0gLTEpIHsKKyAgICAgICAgd2hpbGUgKDEpIHsgfQorICAgIH0gZWxzZQorICAg
ICAgICBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobnVsbCwgeyBzdGF0dXM6IDIwMCwg
c3RhdHVzVGV4dDogIkhlbGxvIGZyb20gc2VydmljZSB3b3JrZXIiLCBoZWFkZXJzOiBbWyJTb3Vy
Y2UiLCAiU2VydmljZVdvcmtlciJdXSB9KSk7Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy10aW1lb3V0LmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLXRp
bWVvdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhhNTIxYzU0
ZmZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvcmVzb3VyY2VzL2Jhc2ljLXRpbWVvdXQuanMKQEAgLTAsMCArMSw2MyBAQAorYXN5bmMg
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGZyYW1lID0gYXdhaXQg
aW50ZXJjZXB0ZWRGcmFtZSgicmVzb3VyY2VzL2Jhc2ljLXRpbWVvdXQtd29ya2VyLmpzIiwgIi93
b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzLyIpOworICAgICAgICB2YXIgZmV0Y2ggPSBmcmFtZS5j
b250ZW50V2luZG93LmZldGNoOworCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5n
KDApOworICAgICAgICAKKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0d28gZmV0Y2hlcyBzaG91
bGQgdGltZSBvdXQgaW1tZWRpYXRlbHkKKyAgICAgICAgZmV0Y2goInRpbWVvdXQtZmFsbGJhY2su
aHRtbCIpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGxvZygidGVzdDEg
dXJsOiAiICsgcmVzcG9uc2UudXJsKTsKKyAgICAgICAgICAgIGxvZygidGVzdDEgc3RhdHVzIGNv
ZGU6ICIgKyByZXNwb25zZS5zdGF0dXMpOworICAgICAgICAgICAgbG9nKCJ0ZXN0MSBzdGF0dXMg
dGV4dDogIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOyAgICAgICAgICAKKyAgICAgICAgfSwgZnVu
Y3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIGxvZyhlcnJvcik7CisgICAgICAgIH0pOworCisg
ICAgICAgIGZldGNoKCJ0aW1lb3V0LW5vLWZhbGxiYWNrLmh0bWwiKS50aGVuKGZ1bmN0aW9uKHJl
c3BvbnNlKSB7CisgICAgICAgICAgICBsb2coInRlc3QyIHVybDogIiArIHJlc3BvbnNlLnVybCk7
CisgICAgICAgICAgICBsb2coInRlc3QyIHN0YXR1cyBjb2RlOiAiICsgcmVzcG9uc2Uuc3RhdHVz
KTsKKyAgICAgICAgICAgIGxvZygidGVzdDIgc3RhdHVzIHRleHQ6ICIgKyByZXNwb25zZS5zdGF0
dXNUZXh0KTsgIAorICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgbG9n
KGVycm9yKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3Rp
bmcoNjApOworCisgICAgICAgIC8vIFRoZSBzZXJ2aWNlIHdvcmtlciBrbm93cyBob3cgdG8gaGFu
ZGxlIHRoZSBmb2xsb3dpbmcgZmV0Y2ggKmFuZCogaGFzIDYwIHNlY29uZHMgdG8gZG8gc28uCisg
ICAgICAgIC8vIEJ1dCB3aWxsIGJlIGNhbmNlbGxlZCB3aXRoIHRoZSBhYm92ZSBmZXRjaGVzIHNp
bmNlIHdlJ3JlIHRlcm1pbmF0aW5nIHRoZSBzZXJ2aWNlIHdvcmtlciwgYW5kIAorICAgICAgICAv
LyB0aGVyZWZvcmUgaXQgd2lsbCB0aGVuIGZhbGxiYWNrIHRvIHRoZSBuZXR3b3JrLgorICAgICAg
ICBmZXRjaCgic3VjY2VlZC1mYWxsYmFjay1jaGVjay5waHAiKS50aGVuKGZ1bmN0aW9uKHJlc3Bv
bnNlKSB7CisgICAgICAgICAgICBsb2coInRlc3QzIHVybDogIiArIHJlc3BvbnNlLnVybCk7Cisg
ICAgICAgICAgICBsb2coInRlc3QzIHN0YXR1cyBjb2RlOiAiICsgcmVzcG9uc2Uuc3RhdHVzKTsK
KyAgICAgICAgICAgIGxvZygidGVzdDMgc3RhdHVzIHRleHQ6ICIgKyByZXNwb25zZS5zdGF0dXNU
ZXh0KTsgIAorICAgICAgICAgICAgbG9nKCJ0ZXN0MyBzb3VyY2UgaGVhZGVyOiAiICsgcmVzcG9u
c2UuaGVhZGVycy5nZXQoIlNvdXJjZSIpKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tT
dWNjZXNzQWdhaW4sIDApOworICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikgeworICAgICAgICAg
ICAgbG9nKGVycm9yKTsKKyAgICAgICAgICAgIGZpbmlzaFNXVGVzdCgpOworICAgICAgICB9KTsK
KyAgICAgICAgCisgICAgICAgIC8vIE5vdyB3ZSBjYW4gZmV0Y2ggdGhhdCBzYW1lIFVSTCBhZ2Fp
biAqY291bGQqIHJlbGF1bmNoIHRoZSBzZXJ2aWNlIHdvcmtlciBhbmQgaGFuZGxlIGl0IHRoZXJl
LCBidXQgZm9yIG5vdyB0aGlzIHNlcnZpY2Ugd29ya2VyIGlzIGluZXJ0IHRvIGZldGNoZXMgYW5k
IGV2ZW4gdGhpcyBsb2FkIHdpbGwgZ28gdG8gdGhlIG5ldHdvcmsuCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrU3VjY2Vzc0FnYWluKCkgeworICAgICAgICAgICAgZmV0Y2goInN1Y2NlZWQtZmFsbGJh
Y2stY2hlY2sucGhwIikudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgICAg
IGxvZygidGVzdDMgdXJsOiAiICsgcmVzcG9uc2UudXJsKTsKKyAgICAgICAgICAgICAgICBsb2co
InRlc3QzIHN0YXR1cyBjb2RlOiAiICsgcmVzcG9uc2Uuc3RhdHVzKTsKKyAgICAgICAgICAgICAg
ICBsb2coInRlc3QzIHN0YXR1cyB0ZXh0OiAiICsgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7ICAKKyAg
ICAgICAgICAgICAgICBsb2coInRlc3QzIHNvdXJjZSBoZWFkZXI6ICIgKyByZXNwb25zZS5oZWFk
ZXJzLmdldCgiU291cmNlIikpOworICAgICAgICAgICAgICAgIGZpbmlzaFNXVGVzdCgpOworICAg
ICAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBsb2coZXJyb3Ip
OworICAgICAgICAgICAgICAgIGZpbmlzaFNXVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgbG9nKCJHb3QgZXhjZXB0aW9uOiAiICsg
ZSk7CisgICAgICAgIGZpbmlzaFNXVGVzdCgpOworICAgIH0KK30KKwordGVzdCgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3N1
Y2NlZWQtZmFsbGJhY2stY2hlY2sucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvcmVzb3VyY2VzL3N1Y2NlZWQtZmFsbGJhY2stY2hlY2sucGhwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mMWE4ZjBjNzE3MQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zdWNj
ZWVkLWZhbGxiYWNrLWNoZWNrLnBocApAQCAtMCwwICsxLDMgQEAKKzw/cGhwCisgICAgaGVhZGVy
KCdTb3VyY2U6IG5ldHdvcmsnKTsKKz8+U3VjY2VzcyEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9y
ZXNvdXJjZXMvdGltZW91dC1mYWxsYmFjay5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3RpbWVvdXQtZmFsbGJhY2suaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODk0YjZiZWM1OWUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvdGlt
ZW91dC1mYWxsYmFjay5odG1sCkBAIC0wLDAgKzEgQEAKK1RpbWVvdXQgcmVzb3VyY2UgZmV0Y2hl
ZCBmcm9tIG5ldHdvcmsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggOTdjNDgzYmI5MDkuLjBlYjllYTZhY2UzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCkBAIC0zNCw2ICszNCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RhdGljIFNlY29uZHMgZGVmYXVsdFNlcnZpY2VXb3JrZXJGZXRjaFRp
bWVvdXQgeyA2MF9zIH07CiBzdHJ1Y3QgRmV0Y2hPcHRpb25zIHsKICAgICBlbnVtIGNsYXNzIERl
c3RpbmF0aW9uIDogdWludDhfdCB7IEVtcHR5U3RyaW5nLCBBdWRpbywgRG9jdW1lbnQsIEVtYmVk
LCBGb250LCBJbWFnZSwgTWFuaWZlc3QsIE9iamVjdCwgUmVwb3J0LCBTY3JpcHQsIFNlcnZpY2V3
b3JrZXIsIFNoYXJlZHdvcmtlciwgU3R5bGUsIFRyYWNrLCBWaWRlbywgV29ya2VyLCBYc2x0IH07
CiAgICAgZW51bSBjbGFzcyBNb2RlIDogdWludDhfdCB7IE5hdmlnYXRlLCBTYW1lT3JpZ2luLCBO
b0NvcnMsIENvcnMgfTsKQEAgLTQyLDggKzQzLDcgQEAgc3RydWN0IEZldGNoT3B0aW9ucyB7CiAg
ICAgZW51bSBjbGFzcyBSZWRpcmVjdCA6IHVpbnQ4X3QgeyBGb2xsb3csIEVycm9yLCBNYW51YWwg
fTsKIAogICAgIEZldGNoT3B0aW9ucygpID0gZGVmYXVsdDsKLSAgICBGZXRjaE9wdGlvbnMoRGVz
dGluYXRpb24sIE1vZGUsIENyZWRlbnRpYWxzLCBDYWNoZSwgUmVkaXJlY3QsIFJlZmVycmVyUG9s
aWN5LCBTdHJpbmcmJiwgYm9vbCk7Ci0gICAgRmV0Y2hPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNv
bnN0IHsgcmV0dXJuIHsgZGVzdGluYXRpb24sIG1vZGUsIGNyZWRlbnRpYWxzLCBjYWNoZSwgcmVk
aXJlY3QsIHJlZmVycmVyUG9saWN5LCBpbnRlZ3JpdHkuaXNvbGF0ZWRDb3B5KCksIGtlZXBBbGl2
ZSB9OyB9CisgICAgRmV0Y2hPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsg
ZGVzdGluYXRpb24sIG1vZGUsIGNyZWRlbnRpYWxzLCBjYWNoZSwgcmVkaXJlY3QsIHJlZmVycmVy
UG9saWN5LCBrZWVwQWxpdmUsIGludGVncml0eS5pc29sYXRlZENvcHkoKSwgc2VydmljZVdvcmtl
clRpbWVvdXQsIGNsaWVudElkZW50aWZpZXIgfTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGVQZXJzaXN0ZW50KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGVQZXJzaXN0ZW50KERlY29kZXImLCBG
ZXRjaE9wdGlvbnMmKTsKQEAgLTU4LDIxICs1OCwxMCBAQCBzdHJ1Y3QgRmV0Y2hPcHRpb25zIHsK
ICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSB7IFJlZmVycmVyUG9saWN5OjpFbXB0
eVN0cmluZyB9OwogICAgIGJvb2wga2VlcEFsaXZlIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgaW50
ZWdyaXR5OworICAgIFNlY29uZHMgc2VydmljZVdvcmtlclRpbWVvdXQgeyBkZWZhdWx0U2Vydmlj
ZVdvcmtlckZldGNoVGltZW91dCB9OwogICAgIE9wdGlvbmFsPERvY3VtZW50SWRlbnRpZmllcj4g
Y2xpZW50SWRlbnRpZmllcjsKIH07CiAKLWlubGluZSBGZXRjaE9wdGlvbnM6OkZldGNoT3B0aW9u
cyhEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTW9kZSBtb2RlLCBDcmVkZW50aWFscyBjcmVkZW50
aWFscywgQ2FjaGUgY2FjaGUsIFJlZGlyZWN0IHJlZGlyZWN0LCBSZWZlcnJlclBvbGljeSByZWZl
cnJlclBvbGljeSwgU3RyaW5nJiYgaW50ZWdyaXR5LCBib29sIGtlZXBBbGl2ZSkKLSAgICA6IGRl
c3RpbmF0aW9uKGRlc3RpbmF0aW9uKQotICAgICwgbW9kZShtb2RlKQotICAgICwgY3JlZGVudGlh
bHMoY3JlZGVudGlhbHMpCi0gICAgLCBjYWNoZShjYWNoZSkKLSAgICAsIHJlZGlyZWN0KHJlZGly
ZWN0KQotICAgICwgcmVmZXJyZXJQb2xpY3kocmVmZXJyZXJQb2xpY3kpCi0gICAgLCBrZWVwQWxp
dmUoa2VlcEFsaXZlKQotICAgICwgaW50ZWdyaXR5KFdURk1vdmUoaW50ZWdyaXR5KSkKLXsKLX0K
LQogaW5saW5lIGJvb2wgaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3Qo
RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsKICAgICByZXR1cm4gZGVz
dGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6T2JqZWN0CkBAIC0xNzcsNiAr
MTY2LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gaW5saW5lIHZvaWQgRmV0Y2hPcHRpb25z
OjplbmNvZGVQZXJzaXN0ZW50KEVuY29kZXImIGVuY28KICAgICBlbmNvZGVyIDw8IHJlZmVycmVy
UG9saWN5OwogICAgIGVuY29kZXIgPDwgaW50ZWdyaXR5OwogICAgIGVuY29kZXIgPDwga2VlcEFs
aXZlOworICAgIGVuY29kZXIgPDwgc2VydmljZVdvcmtlclRpbWVvdXQ7CiB9CiAKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IGlubGluZSBib29sIEZldGNoT3B0aW9uczo6ZGVjb2RlUGVyc2lzdGVu
dChEZWNvZGVyJiBkZWNvZGVyLCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpCkBAIC0yMTMsNiArMjAz
LDEwIEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IGlubGluZSBib29sIEZldGNoT3B0aW9uczo6
ZGVjb2RlUGVyc2lzdGVudChEZWNvZGVyJiBkZWNvCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShr
ZWVwQWxpdmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBTZWNvbmRzIHNlcnZpY2VX
b3JrZXJUaW1lb3V0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2VydmljZVdvcmtlclRpbWVv
dXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0g
ZGVzdGluYXRpb247CiAgICAgb3B0aW9ucy5tb2RlID0gbW9kZTsKICAgICBvcHRpb25zLmNyZWRl
bnRpYWxzID0gY3JlZGVudGlhbHM7CkBAIC0yMjEsNiArMjE1LDcgQEAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gaW5saW5lIGJvb2wgRmV0Y2hPcHRpb25zOjpkZWNvZGVQZXJzaXN0ZW50KERlY29k
ZXImIGRlY28KICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xpY3k7CiAg
ICAgb3B0aW9ucy5pbnRlZ3JpdHkgPSBXVEZNb3ZlKGludGVncml0eSk7CiAgICAgb3B0aW9ucy5r
ZWVwQWxpdmUgPSBrZWVwQWxpdmU7CisgICAgb3B0aW9ucy5zZXJ2aWNlV29ya2VyVGltZW91dCA9
IHNlcnZpY2VXb3JrZXJUaW1lb3V0OwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IDA2NDRmZWM1MDllLi44ZTliNDE2ZmI3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTg3LDYgKzg3LDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPE5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9u
PiBpbnRlcm1lZGlhdGVMb2FkSW5mb3JtYXRpb25Gcm9tUmVzb3VyY2VMb2FkSWRlbnRpZmllcih1
aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIE5ldHdvcmtMb2Fk
TWV0cmljcyBuZXR3b3JrTWV0cmljc0Zyb21SZXNvdXJjZUxvYWRJZGVudGlmaWVyKHVpbnQ2NF90
IHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogCisgICAgdmlydHVhbCB2b2lkIHNldFNlcnZpY2VX
b3JrZXJGZXRjaFRpbWVvdXQoU2Vjb25kcykgeyB9OworICAgIHZpcnR1YWwgU2Vjb25kcyBzZXJ2
aWNlV29ya2VyRmV0Y2hUaW1lb3V0KCkgeyByZXR1cm4gZGVmYXVsdFNlcnZpY2VXb3JrZXJGZXRj
aFRpbWVvdXQ7IH07CisKICAgICAvLyBVc2VkIGZvciB0ZXN0aW5nIG9ubHkuCiAgICAgdmlydHVh
bCBWZWN0b3I8dWludDY0X3Q+IG9uZ29pbmdMb2FkcygpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBjNjZlNzg5Yzhl
NC4uYTQzMjhkYWZlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtNzQsNiArNzQsNyBAQCBSZXNvdXJjZUxvYWRlcjo6UmVzb3VyY2VMb2FkZXIoRnJhbWUm
IGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucykKICAgICAsIG1fZGVmZXJzTG9h
ZGluZyB7IG9wdGlvbnMuZGVmZXJzTG9hZGluZ1BvbGljeSA9PSBEZWZlcnNMb2FkaW5nUG9saWN5
OjpBbGxvd0RlZmVyc0xvYWRpbmcgJiYgZnJhbWUucGFnZSgpLT5kZWZlcnNMb2FkaW5nKCkgfQog
ICAgICwgbV9vcHRpb25zIHsgb3B0aW9ucyB9CiB7CisgICAgbV9vcHRpb25zLnNlcnZpY2VXb3Jr
ZXJUaW1lb3V0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnNlcnZp
Y2VXb3JrZXJGZXRjaFRpbWVvdXQoKTsKIH0KIAogUmVzb3VyY2VMb2FkZXI6On5SZXNvdXJjZUxv
YWRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODk5MGFmMTgyNzAu
LmYzYzVjMjY5YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC03Miw2
ICs3Miw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4dGVuZGFibGVF
dmVudC5oIgogI2luY2x1ZGUgIkV4dGVuc2lvblN0eWxlU2hlZXRzLmgiCisjaW5jbHVkZSAiRmV0
Y2hPcHRpb25zLmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIkZpbGUu
aCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKQEAgLTUzMyw2ICs1MzQsOCBAQCB2b2lkIEludGVy
bmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5z
ZXRJbnRlcnJ1cHRBdWRpb09uUGFnZVZpc2liaWxpdHlDaGFuZ2VFbmFibGVkKGZhbHNlKTsKICNl
bmRpZgorCisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnNldFNl
cnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoZGVmYXVsdFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQp
OwogfQogCiBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC01MjAx
LDQgKzUyMDQsOSBAQCB2b2lkIEludGVybmFsczo6YWRkUHJlZmV0Y2hMb2FkRXZlbnRMaXN0ZW5l
cihIVE1MTGlua0VsZW1lbnQmIGxpbmssIFJlZlB0cjxFdmVudAogICAgIH0KIH0KIAordm9pZCBJ
bnRlcm5hbHM6OnNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKHVuc2lnbmVk
IGxvbmcgdGltZW91dCkKK3sKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRl
Z3koKS0+c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dCgoU2Vjb25kcyl0aW1lb3V0KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5k
ZXggYzNkOWMzODU3MjMuLmJkZDk1MjFhM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKQEAgLTg3OCw2ICs4NzgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFByZWZldGNoTG9h
ZEV2ZW50TGlzdGVuZXIoSFRNTExpbmtFbGVtZW50JiwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYp
OwogCisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyh1bnNp
Z25lZCBsb25nKTsKKyAgICAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3Vt
ZW50Jik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDdkZjc0ODAzZTk3Li43NjljYzZkOGE3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNzkyLDQgKzc5Miw1IEBAIGVudW0g
Q29tcG9zaXRpbmdQb2xpY3kgewogICAgIFRleHRJbmRpY2F0b3JJbmZvIHRleHRJbmRpY2F0b3JG
b3JSYW5nZShSYW5nZSByYW5nZSwgVGV4dEluZGljYXRvck9wdGlvbnMgb3B0aW9ucyk7CiAKICAg
ICB2b2lkIGFkZFByZWZldGNoTG9hZEV2ZW50TGlzdGVuZXIoSFRNTExpbmtFbGVtZW50IGxpbmss
IEV2ZW50TGlzdGVuZXI/IGNhbGxiYWNrKTsKKyAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJGZXRj
aFRpbWVvdXRGb3JUZXN0aW5nKHVuc2lnbmVkIGxvbmcgdGltZW91dEluU2Vjb25kcyk7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmlu
ZGV4IDlmODZkMWFmODJlLi43YTAxOTM5ZWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgdXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBIYXNo
TWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAg
ICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKLSAgICB2b2lkIHN5bmNU
ZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHN5bmNUZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGZpcmVJbnN0
YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNX
U2VydmVyV29ya2VyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCA2NzY3ZmM2ZjBhNi4uMWI5OWNjOTI3
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmgKQEAgLTExNiw2ICsxMTYsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAg
U1dTZXJ2ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbigpIGNvbnN0OwogCisgICAgdm9pZCBz
ZXRIYXNUaW1lZE91dEFueUZldGNoVGFza3MoKSB7IG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tz
ID0gdHJ1ZTsgfQorICAgIGJvb2wgaGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNUaW1lZE91dEFueUZldGNoVGFza3M7IH0KKwogcHJpdmF0ZToKICAgICBTV1Nl
cnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycyYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQ+JiYpOwogCkBAIC0xMzYsNiArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8RnVuY3Rpb248dm9pZChib29sKT4+IG1fd2hlbkFjdGl2YXRlZEhhbmRsZXJzOwogICAgIEhh
c2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiBtX3Nj
cmlwdFJlc291cmNlTWFwOwogICAgIGJvb2wgbV9zaG91bGRTa2lwSGFuZGxlRmV0Y2g7CisgICAg
Ym9vbCBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAK
aW5kZXggNTUzY2JhZDE5YmMuLjlmNTUyZWYzMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAKICNk
ZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9z
ZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAt
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2Rl
ZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19F
UlJPUl9JRihtX3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdv
cmtlciwgIiVwIC0gU2VydmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMsICMjX19WQV9B
UkdTX18pCkBAIC00Miw0NSArNDQsODQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25u
ZWN0aW9uLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0KQorICAgIDog
bV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisg
ICAgLCBtX2NvbnRleHRDb25uZWN0aW9uKGNvbnRleHRDb25uZWN0aW9uKQorICAgICwgbV9pZGVu
dGlmaWVyIHsgY29ubmVjdGlvbi5pZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciB9CisgICAg
LCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQorICAg
ICwgbV90aW1lb3V0IHsgdGltZW91dCB9CisgICAgLCBtX3RpbWVvdXRUaW1lciB7ICp0aGlzLCAm
U2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVyRmlyZWQgfQoreworICAgIG1fdGlt
ZW91dFRpbWVyLnN0YXJ0T25lU2hvdChtX3RpbWVvdXQpOworfQorCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSB7IHJlc3BvbnNlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1faGFu
ZGxlZCA9IHRydWU7CisgICAgbV9jb25uZWN0aW9uLmlwY0Nvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
IHsgcmVzcG9uc2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmll
cik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAlcyIs
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgIG1faGFuZGxlZCA9IHRydWU7CisgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVT
aG90KG1fdGltZW91dCk7CisgICAgbV9jb25uZWN0aW9uLmlwY0Nvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJl
c3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2lkZW50
aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVEYXRhIHsgZGF0YSwgZW5jb2RlZERh
dGFMZW5ndGggfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgbV90aW1lb3V0
VGltZXIuc3RhcnRPbmVTaG90KG1fdGltZW91dCk7CisgICAgbV9jb25uZWN0aW9uLmlwY0Nvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2Vp
dmVEYXRhIHsgZGF0YSwgZW5jb2RlZERhdGFMZW5ndGggfSwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZUZv
cm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGZvcm1EYXRhKQogewotICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRS
ZWNlaXZlRm9ybURhdGEgeyBmb3JtRGF0YSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVy
KTsKKyAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QobV90aW1lb3V0KTsKKyAgICBtX2Nv
bm5lY3Rpb24uaXBjQ29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZl
dGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmlu
aXNoKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hGZXRjaDogZmV0
Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0
Y2hJZGVudGlmaWVyKTsKKyAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CisgICAgaWYgKCFtX21l
c3NhZ2VkVGVybWluYWxTdGF0ZSkKKyAgICAgICAgbV9jb25uZWN0aW9uLmlwY0Nvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZpbmlzaCB7IH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1fbWVzc2FnZWRUZXJtaW5hbFN0
YXRlID0gdHJ1ZTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5m
ZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWls
IHsgZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgbV90aW1lb3V0
VGltZXIuc3RvcCgpOworICAgIGlmICghbV9tZXNzYWdlZFRlcm1pbmFsU3RhdGUpCisgICAgICAg
IG1fY29ubmVjdGlvbi5pcGNDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRp
Zmllcik7CisgICAgbV9tZXNzYWdlZFRlcm1pbmFsU3RhdGUgPSB0cnVlOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSgpCiB7CiAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lk
ZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAg
bV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlmICghbV9tZXNzYWdlZFRlcm1pbmFsU3RhdGUp
CisgICAgICAgIG1fY29ubmVjdGlvbi5pcGNDb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBtX2lkZW50aWZpZXIuZmV0
Y2hJZGVudGlmaWVyKTsKKyAgICBtX21lc3NhZ2VkVGVybWluYWxTdGF0ZSA9IHRydWU7CiB9CiAK
K3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVyRmlyZWQoKQoreyAgICAK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0aW1lb3V0VGltZXJGaXJlZDogZmV0Y2hJZGVu
dGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICghbV9oYW5kbGVkKQorICAgICAgICBkaWROb3RIYW5k
bGUoKTsKKyAgICBlbHNlCisgICAgICAgIGRpZEZhaWwoeyBlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCB7IH0sICJTZXJ2aWNlIFdvcmtlciBmZXRjaCB0aW1lZCBvdXQiX3MgfSk7CisKKyAg
ICBtX2NvbnRleHRDb25uZWN0aW9uLmZldGNoVGFza1RpbWVkT3V0KCp0aGlzKTsKK30KKworCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGYxMTZjYzc0OWU2Li4x
OTU2ZWE1NTFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9U
aW1lci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCkBAIC00NiwxMCArNDcsMTcgQEAgY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CitjbGFz
cyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKIGNsYXNzIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpIHsgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckZldGNoVGFzayhzZXNzaW9uSUQsIFdURk1vdmUoY29u
bmVjdGlvbiksIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIpKTsgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckZldGNo
VGFzaz4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2VydmljZVdvcmtlckZldGNoVGFzayhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pKTsKKyAgICB9CiAKKyAgICB2b2lkIGRpZE5vdEhhbmRsZSgpOwogICAgIHZvaWQgZmFpbChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBkaWRGYWlsKGVycm9yKTsgfQog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CiAKQEAgLTY3LDEzICs3NSwxMSBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAg
ICBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciYgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9Cisg
ICAgYm9vbCBoYW5kbGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGVkOyB9CiAKIHByaXZhdGU6
Ci0gICAgU2VydmljZVdvcmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlm
aWVyIGZldGNoSWRlbnRpZmllcikKLSAgICAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0g
ICAgICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCi0gICAgICAgICwgbV9p
ZGVudGlmaWVyIHsgY29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciB9Ci0gICAg
eyB9CisgICAgU2VydmljZVdvcmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCwgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uJiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vjb25k
cyB0aW1lb3V0KTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKQEAgLTgxLDExICs4NywxNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsK
ICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBkaWROb3RIYW5kbGUoKTsKKyAgICB2b2lkIHRpbWVv
dXRUaW1lckZpcmVkKCk7CiAKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKLSAgICBS
ZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uJiBtX2Nvbm5lY3Rpb247CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBt
X2NvbnRleHRDb25uZWN0aW9uOwogICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7
CisgICAgU2Vjb25kcyBtX3RpbWVvdXQ7CisgICAgV2ViQ29yZTo6VGltZXIgbV90aW1lb3V0VGlt
ZXI7CisgICAgYm9vbCBtX2hhbmRsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9tZXNzYWdlZFRl
cm1pbmFsU3RhdGUgeyBmYWxzZSB9OwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyJiBhLCBjb25zdCBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcAppbmRleCA3Njc0MTQwZjE3NS4uMDEyZGFjMzMzY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBXZWJT
V1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgc2VydmkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8qIHdvcmtlciA9IHNlcnZl
cigpLndvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgICAgICBpZiAoIXdv
cmtlcikgeworICAgICAgICBpZiAoIXdvcmtlciB8fCB3b3JrZXItPmhhc1RpbWVkT3V0QW55RmV0
Y2hUYXNrcygpKSB7CiAgICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRl
bnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE4OCw5ICsxODgs
OSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aQogCiAgICAgICAgICAgICBpZiAoY29udGV4dENv
bm5lY3Rpb24pIHsKICAgICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogU3RhcnRpbmcgZmV0Y2ggJXMgdmlhIHNlcnZpY2Ug
d29ya2VyICVzIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
Ci0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJj4oKmNvbnRleHRDb25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCBtX2NvbnRl
bnRDb25uZWN0aW9uLmdldCgpLCB0aGlzLT5pZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZl
cnJlcik7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJj4oKmNvbnRleHRDb25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCAq
dGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwg
b3B0aW9ucywgZm9ybURhdGEsIHJlZmVycmVyKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ug
ZmFpbGVkIHRvIHJ1biBzZXJ2aWNlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9O
X1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmll
cjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRvIHJ1biBzZXJ2aWNlIHdvcmtlciwg
b3Igc2VydmljZSB3b3JrZXIgaGFzIGhhZCB0aW1lZCBvdXQgZmV0Y2ggdGFza3MiLCBmZXRjaElk
ZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAg
IG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCmluZGV4IDU4MDk0ZDYyOGNiLi4yZGQ5ZWEzODMyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CiAKQEAgLTE1MSwxNCArMTUyLDE1IEBAIHZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGUoKQogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVQcm9jZXNzKCkp
OwogfQogCi12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29udGVudENv
bm5lY3Rpb24sIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmllciBjb250ZW50RmV0Y2hJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIp
Cit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29udGVudENvbm5lY3Rp
b24sIEZldGNoSWRlbnRpZmllciBjb250ZW50RmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CisgICAgYXV0byBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IGNvbnRlbnRDb25uZWN0aW9uLmlkZW50aWZpZXIo
KTsKICAgICBhdXRvIGZldGNoSWRlbnRpZmllciA9IEZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKLSAgICAKLSAgICBtX29uZ29pbmdGZXRjaGVzLmFkZChmZXRjaElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmNyZWF0ZShzZXNzaW9uSUQsIFdURk1vdmUoY29udGVudENvbm5l
Y3Rpb24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
cikpOwogCi0gICAgQVNTRVJUKCFtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmNvbnRhaW5zKHtz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmllcn0pKTsKLSAg
ICBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmFkZCh7c2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXJ9LCBmZXRjaElkZW50aWZpZXIpOworICAgIG1fb25n
b2luZ0ZldGNoZXMuYWRkKGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlckZldGNoVGFzazo6
Y3JlYXRlKHNlc3Npb25JRCwgY29udGVudENvbm5lY3Rpb24sICp0aGlzLCBjb250ZW50RmV0Y2hJ
ZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgb3B0aW9ucy5zZXJ2aWNlV29ya2Vy
VGltZW91dCkpOworCisgICAgQVNTRVJUKCFtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmNvbnRh
aW5zKHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXIg
fSkpOworICAgIG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuYWRkKHsgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXIgfSwgZmV0Y2hJZGVudGlmaWVyKTsK
IAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdGFy
dEZldGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGRhdGEsIHJlZmVycmVyIH0p
OwogfQpAQCAtMjA0LDYgKzIwNiw0MyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6ZGlkUmVjZWl2ZUZldGNoVGFza01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJgogICAgIH0K
IH0KIAordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZldGNoVGFza1RpbWVk
T3V0KFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCit7CisgICAgQVNTRVJUKG1fb25nb2lu
Z0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnModGFzay5pZGVudGlmaWVyKCkpKTsKKyAgICBhdXRv
IHRha2VuSWRlbnRpZmllciA9IG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMudGFrZSh0YXNrLmlk
ZW50aWZpZXIoKSk7CisKKyAgICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hlcy5jb250YWlucyh0YWtl
bklkZW50aWZpZXIpKTsKKyAgICBhdXRvIHRha2VuVGFzayA9IG1fb25nb2luZ0ZldGNoZXMudGFr
ZSh0YWtlbklkZW50aWZpZXIpOworICAgIEFTU0VSVCh0YWtlblRhc2spOworICAgIEFTU0VSVCh0
YWtlblRhc2stPnB0cigpID09ICZ0YXNrKTsKKworICAgIC8vIEdhdGhlciBhbGwgb3RoZXIgZmV0
Y2hlcyBpbiB0aGlzIHNlcnZpY2Ugd29ya2VyCisgICAgSGFzaFNldDxSZWY8U2VydmljZVdvcmtl
ckZldGNoVGFzaz4+IG90aGVyRmV0Y2hlczsKKyAgICBmb3IgKGF1dG8mIGZldGNoVGFzayA6IG1f
b25nb2luZ0ZldGNoZXMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKGZldGNoVGFzay0+c2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIoKSA9PSB0YXNrLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpCisg
ICAgICAgICAgICBvdGhlckZldGNoZXMuYWRkKGZldGNoVGFzay5jb3B5UmVmKCkpOworICAgIH0K
KworICAgIC8vIFNpZ25hbCBsb2FkIGZhaWx1cmUgZm9yIHRoZW0KKyAgICBmb3IgKGF1dG8mIGZl
dGNoVGFzayA6IG90aGVyRmV0Y2hlcykgeworICAgICAgICBpZiAoZmV0Y2hUYXNrLT5oYW5kbGVk
KCkpCisgICAgICAgICAgICBmZXRjaFRhc2stPmZhaWwoeyBlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCB7IH0sICJTZXJ2aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJfcyB9KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgZmV0Y2hUYXNrLT5kaWROb3RIYW5kbGUoKTsKKworICAgICAg
ICBhdXRvIGlkZW50aWZpZXIgPSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLnRha2UoZmV0Y2hU
YXNrLT5pZGVudGlmaWVyKCkpOworICAgICAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpZGVu
dGlmaWVyKTsKKyAgICB9CisKKyAgICBpZiAobV9zZXJ2ZXIpIHsKKyAgICAgICAgaWYgKGF1dG8q
IHdvcmtlciA9IG1fc2VydmVyLT53b3JrZXJCeUlEKHRhc2suc2VydmljZVdvcmtlcklkZW50aWZp
ZXIoKSkpIHsKKyAgICAgICAgICAgIHdvcmtlci0+c2V0SGFzVGltZWRPdXRBbnlGZXRjaFRhc2tz
KCk7CisgICAgICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSkKKyAgICAgICAgICAgICAg
ICBtX3NlcnZlci0+c3luY1Rlcm1pbmF0ZVdvcmtlcigqd29ya2VyKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKaW5kZXggYTNjNjRlZDEyNzguLjU3YmI0ZjMzNzYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01MCw2ICs1MCw3IEBAIGNs
YXNzIFNlc3Npb25JRDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3JrUHJvY2Vz
czsKK2NsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIAogY2xhc3MgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIElQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB0ZXJt
aW5hdGUoKTsKIAotICAgIHZvaWQgc3RhcnRGZXRjaChQQUw6OlNlc3Npb25JRCwgUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vi
Q29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRp
b25zJiwgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYpOworICAg
IHZvaWQgc3RhcnRGZXRjaChQQUw6OlNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiwg
V2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hP
cHRpb25zJiwgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgY2FuY2VsRmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAgICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6
OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCkBAIC03Miw2ICs3Myw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFRocm90dGxlU3RhdGUoYm9vbCBpc1Rocm90dGxlYWJsZSk7CiAg
ICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUaHJvdHRsZWFibGU7
IH0KIAorICAgIHZvaWQgZmV0Y2hUYXNrVGltZWRPdXQoU2VydmljZVdvcmtlckZldGNoVGFzayYp
OworCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIElQQzo6Q29ubmVj
dGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4
IGIyNDc4YWI1MGQxLi44NWJlYzIyNWI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUxvYWRlci5oPgpAQCAtODUsNiArODYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
ZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyKEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFs
OwogICAgIHZvaWQgc2V0T25MaW5lU3RhdGUoYm9vbCk7CiAKKyAgICB2b2lkIHNldFNlcnZpY2VX
b3JrZXJGZXRjaFRpbWVvdXQoU2Vjb25kcyB0aW1lb3V0KSBmaW5hbCB7IG1fc2VydmljZVdvcmtl
ckZldGNoVGltZW91dCA9IHRpbWVvdXQ7IH0KKyAgICBTZWNvbmRzIHNlcnZpY2VXb3JrZXJGZXRj
aFRpbWVvdXQoKSBmaW5hbCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQ7IH07
CisKIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXImLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSosIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCk7CiAgICAgdm9pZCBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRM
b2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJik7CkBAIC0xMjMsNiArMTI3LDggQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChib29sKT4+IG1fb25saW5lU3RhdGVDaGFuZ2VM
aXN0ZW5lcnM7CiAgICAgYm9vbCBtX2lzT25MaW5lIHsgdHJ1ZSB9OwogICAgIEhhc2hTZXQ8V2Vi
UmVzb3VyY2VMb2FkZXIqPiBtX2xvYWRlcnNXaXRoVXBsb2FkczsKKworICAgIFNlY29uZHMgbV9z
ZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IHsgV2ViQ29yZTo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJG
ZXRjaFRpbWVvdXQgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380269</attachid>
            <date>2019-10-04 16:59:18 -0700</date>
            <delta_ts>2019-10-07 12:53:27 -0700</delta_ts>
            <desc>Another WIP</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37181</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LXRpbWVvdXQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvYmFzaWMtdGltZW91dC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE4ZjllMmQ3MjM2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtdGltZW91dC5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorCitVUkwgMCAtIGh0dHBzOi8vMTI3
LjAuMC4xOjg0NDMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy90aW1lb3V0LWZhbGxiYWNrLmh0
bWwKK1N0YXR1cyBjb2RlIDAgLSAyMDAKK1NvdXJjZScgaGVhZGVyIDAgLSBudWxsCitVUkwgMSAt
IGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy90aW1lb3V0
LW5vLWZhbGxiYWNrLmh0bWwKK1N0YXR1cyBjb2RlIDEgLSA0MDQKK1NvdXJjZScgaGVhZGVyIDEg
LSBudWxsCitVUkwgMiAtIGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvd29ya2Vycy9zZXJ2aWNlL3Jl
c291cmNlcy9zdWNjZWVkLWZhbGxiYWNrLWNoZWNrLnBocAorU3RhdHVzIGNvZGUgMiAtIDIwMAor
U291cmNlJyBoZWFkZXIgMiAtIG5ldHdvcmsKK1VSTCAzIC0gaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
My93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3N1Y2NlZWQtZmFsbGJhY2stY2hlY2sucGhwCitT
dGF0dXMgY29kZSAzIC0gMjAwCitTb3VyY2UnIGhlYWRlciAzIC0gbmV0d29yaworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNp
Yy10aW1lb3V0Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmY2YWNkYzY4ZjEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtdGltZW91dC5odHRwcy5odG1sCkBAIC0wLDAgKzEsOSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYmFz
aWMtdGltZW91dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtdGlt
ZW91dC13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9y
ZXNvdXJjZXMvYmFzaWMtdGltZW91dC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjVjNWEyMGIyMTRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLXRpbWVvdXQtd29y
a2VyLmpzCkBAIC0wLDAgKzEsNiBAQAorc2VsZi5hZGRFdmVudExpc3RlbmVyKCJmZXRjaCIsIChl
dmVudCkgPT4geworICAgIGlmIChldmVudC5yZXF1ZXN0LnVybC5pbmRleE9mKCJ0aW1lb3V0Iikg
IT09IC0xKSB7CisgICAgICAgIHdoaWxlICgxKSB7IH0KKyAgICB9IGVsc2UKKyAgICAgICAgZXZl
bnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG51bGwsIHsgc3RhdHVzOiAyMDAsIHN0YXR1c1Rl
eHQ6ICJIZWxsbyBmcm9tIHNlcnZpY2Ugd29ya2VyIiwgaGVhZGVyczogW1siU291cmNlIiwgIlNl
cnZpY2VXb3JrZXIiXV0gfSkpOworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtdGltZW91dC5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy10aW1lb3V0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMWJiY2MyYzZmMwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jl
c291cmNlcy9iYXNpYy10aW1lb3V0LmpzCkBAIC0wLDAgKzEsNzYgQEAKK2FzeW5jIGZ1bmN0aW9u
IHRlc3QoKQoreworICAgIHZhciB1cmxSZXN1bHRzID0gbmV3IEFycmF5OworICAgIHZhciBzdGF0
dXNSZXN1bHRzID0gbmV3IEFycmF5OworICAgIHZhciBoZWFkZXJSZXN1bHRzID0gbmV3IEFycmF5
OworCisgICAgZnVuY3Rpb24gZmluaXNoVGhpc1Rlc3QoKQorICAgIHsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB1cmxSZXN1bHRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsb2co
IlVSTCAiICsgaSArICIgLSAiICsgdXJsUmVzdWx0c1tpXSk7CisgICAgICAgICAgICBsb2coIlN0
YXR1cyBjb2RlICIgKyBpICsgIiAtICIgKyBzdGF0dXNSZXN1bHRzW2ldKTsKKyAgICAgICAgICAg
IGxvZygiU291cmNlJyBoZWFkZXIgIiArIGkgKyAiIC0gIiArIGhlYWRlclJlc3VsdHNbaV0pOwor
ICAgICAgICB9CisgICAgICAgIGZpbmlzaFNXVGVzdCgpOworICAgIH0KKyAgICAKKyAgICB0cnkg
eworICAgICAgICB2YXIgZnJhbWUgPSBhd2FpdCBpbnRlcmNlcHRlZEZyYW1lKCJyZXNvdXJjZXMv
YmFzaWMtdGltZW91dC13b3JrZXIuanMiLCAiL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvIik7
CisgICAgICAgIHZhciBmZXRjaCA9IGZyYW1lLmNvbnRlbnRXaW5kb3cuZmV0Y2g7CisKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTZXJ2
aWNlV29ya2VyRmV0Y2hUaW1lb3V0KDApOworICAgICAgICAKKyAgICAgICAgLy8gVGhlIGZvbGxv
d2luZyB0d28gZmV0Y2hlcyBzaG91bGQgdGltZSBvdXQgaW1tZWRpYXRlbHkKKyAgICAgICAgZmV0
Y2goInRpbWVvdXQtZmFsbGJhY2suaHRtbCIpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAg
ICAgICAgICAgIHVybFJlc3VsdHNbMF0gPSByZXNwb25zZS51cmw7CisgICAgICAgICAgICBzdGF0
dXNSZXN1bHRzWzBdID0gcmVzcG9uc2Uuc3RhdHVzOworICAgICAgICAgICAgaGVhZGVyUmVzdWx0
c1swXSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCJTb3VyY2UiKTsgICAgICAgCisgICAgICAgIH0s
IGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgICAgICBsb2coZXJyb3IpOworICAgICAgICB9KTsK
KworICAgICAgICBmZXRjaCgidGltZW91dC1uby1mYWxsYmFjay5odG1sIikudGhlbihmdW5jdGlv
bihyZXNwb25zZSkgeworICAgICAgICAgICAgdXJsUmVzdWx0c1sxXSA9IHJlc3BvbnNlLnVybDsK
KyAgICAgICAgICAgIHN0YXR1c1Jlc3VsdHNbMV0gPSByZXNwb25zZS5zdGF0dXM7CisgICAgICAg
ICAgICBoZWFkZXJSZXN1bHRzWzFdID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoIlNvdXJjZSIpOyAg
IAorICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikgeworICAgICAgICAgICAgbG9nKGVycm9yKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KDYwKTsKKworICAgICAg
ICAvLyBUaGUgc2VydmljZSB3b3JrZXIga25vd3MgaG93IHRvIGhhbmRsZSB0aGUgZm9sbG93aW5n
IGZldGNoICphbmQqIGhhcyA2MCBzZWNvbmRzIHRvIGRvIHNvLgorICAgICAgICAvLyBCdXQgd2ls
bCBiZSBjYW5jZWxsZWQgd2l0aCB0aGUgYWJvdmUgZmV0Y2hlcyBzaW5jZSB3ZSdyZSB0ZXJtaW5h
dGluZyB0aGUgc2VydmljZSB3b3JrZXIsIGFuZCAKKyAgICAgICAgLy8gdGhlcmVmb3JlIGl0IHdp
bGwgdGhlbiBmYWxsYmFjayB0byB0aGUgbmV0d29yay4KKyAgICAgICAgZmV0Y2goInN1Y2NlZWQt
ZmFsbGJhY2stY2hlY2sucGhwIikudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAg
ICAgdXJsUmVzdWx0c1syXSA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgICAgIHN0YXR1c1Jlc3Vs
dHNbMl0gPSByZXNwb25zZS5zdGF0dXM7CisgICAgICAgICAgICBoZWFkZXJSZXN1bHRzWzJdID0g
cmVzcG9uc2UuaGVhZGVycy5nZXQoIlNvdXJjZSIpOyAgIAorICAgICAgICAgICAgc2V0VGltZW91
dChjaGVja1N1Y2Nlc3NBZ2FpbiwgMCk7CisgICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7Cisg
ICAgICAgICAgICBsb2coZXJyb3IpOworICAgICAgICAgICAgZmluaXNoU1dUZXN0KCk7CisgICAg
ICAgIH0pOworICAgICAgICAKKyAgICAgICAgLy8gTm93IHdlIGNhbiBmZXRjaCB0aGF0IHNhbWUg
VVJMIGFnYWluLCB3aGljaCAqY291bGQqIHJlbGF1bmNoIHRoZSBzZXJ2aWNlIHdvcmtlciBhbmQg
aGFuZGxlIGl0IHRoZXJlLCBidXQgZm9yIG5vdyB0aGlzIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJh
dGlvbiBpcyBpbmVydCBhbmQgZmV0Y2hlcyB0aHJvdWdoIGl0IHdpbGwgZ28gdG8gdGhlIG5ldHdv
cmsgaW5zdGVhZC4KKyAgICAgICAgLy8gSSdtIGxlYXZpbmcgdGhpcyBpbiB0byBjb3ZlciBmdXR1
cmUgY2FzZXMgd2hlcmUgd2UgZG8gcmVsYXVuY2ggdGhlIFNXIHRvIGhhbmRsZSBpdC4KKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tTdWNjZXNzQWdhaW4oKSB7CisgICAgICAgICAgICBmZXRjaCgic3Vj
Y2VlZC1mYWxsYmFjay1jaGVjay5waHAiKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAg
ICAgICAgICAgICAgdXJsUmVzdWx0c1szXSA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgICAgICAg
ICBzdGF0dXNSZXN1bHRzWzNdID0gcmVzcG9uc2Uuc3RhdHVzOworICAgICAgICAgICAgICAgIGhl
YWRlclJlc3VsdHNbM10gPSByZXNwb25zZS5oZWFkZXJzLmdldCgiU291cmNlIik7ICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoVGhpc1Rlc3QoKTsKKyAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGVy
cm9yKSB7CisgICAgICAgICAgICAgICAgbG9nKGVycm9yKTsKKyAgICAgICAgICAgICAgICBmaW5p
c2hTV1Rlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSBjYXRjaChlKSB7
CisgICAgICAgIGxvZygiR290IGV4Y2VwdGlvbjogIiArIGUpOworICAgICAgICBmaW5pc2hTV1Rl
c3QoKTsKKyAgICB9Cit9CisKK3Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zdWNjZWVkLWZhbGxiYWNrLWNoZWNrLnBo
cCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zdWNj
ZWVkLWZhbGxiYWNrLWNoZWNrLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uZjFhOGYwYzcxNzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc3VjY2VlZC1mYWxsYmFjay1jaGVjay5waHAK
QEAgLTAsMCArMSwzIEBACis8P3BocAorICAgIGhlYWRlcignU291cmNlOiBuZXR3b3JrJyk7Cis/
PlN1Y2Nlc3MhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3RpbWVvdXQtZmFsbGJh
Y2suaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNl
cy90aW1lb3V0LWZhbGxiYWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjg5NGI2YmVjNTllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3RpbWVvdXQtZmFsbGJhY2suaHRtbApAQCAt
MCwwICsxIEBACitUaW1lb3V0IHJlc291cmNlIGZldGNoZWQgZnJvbSBuZXR3b3JrClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDlmODZkMWFmODJlLi43YTAxOTM5ZWQ0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAt
MTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlV29ya2VyKENvbm5lY3Rp
b24mLCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTV1NlcnZlclJlZ2lz
dHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9s
aWN5LCBXb3JrZXJUeXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJ
bXBvcnRlZFNjcmlwdD4mJik7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3Jr
ZXImKTsKLSAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXIm
KTsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lk
IGZpcmVBY3RpdmF0ZUV2ZW50KFNXU2VydmVyV29ya2VyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCA2
NzY3ZmM2ZjBhNi4uMWI5OWNjOTI3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTExNiw2ICsxMTYsOSBA
QCBwdWJsaWM6CiAgICAgCiAgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbigp
IGNvbnN0OwogCisgICAgdm9pZCBzZXRIYXNUaW1lZE91dEFueUZldGNoVGFza3MoKSB7IG1faGFz
VGltZWRPdXRBbnlGZXRjaFRhc2tzID0gdHJ1ZTsgfQorICAgIGJvb2wgaGFzVGltZWRPdXRBbnlG
ZXRjaFRhc2tzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUaW1lZE91dEFueUZldGNoVGFza3M7IH0K
KwogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0
cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBX
b3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCkBAIC0xMzYsNiArMTM5LDcg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChib29sKT4+IG1fd2hlbkFjdGl2
YXRlZEhhbmRsZXJzOwogICAgIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0PiBtX3NjcmlwdFJlc291cmNlTWFwOwogICAgIGJvb2wgbV9zaG91bGRT
a2lwSGFuZGxlRmV0Y2g7CisgICAgYm9vbCBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcyB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDEwNmQ4MWM3YjkwLi5jOTkz
NzFhNDM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKQEAgLTI2MDEsNCArMjYwMSwxNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyogTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NDb25uZWN0aW9uKFByb2Nlc3NJZGVudAog
ICAgIHJldHVybiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7CiB9CiAK
K2NvbnN0IFNlY29uZHMgTmV0d29ya1Byb2Nlc3M6OmRlZmF1bHRTZXJ2aWNlV29ya2VyRmV0Y2hU
aW1lb3V0ID0gNjBfczsKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNlcnZpY2VXb3JrZXJGZXRj
aFRpbWVvdXRGb3JUZXN0aW5nKFNlY29uZHMgdGltZW91dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fc2VydmljZVdvcmtlckZldGNoVGlt
ZW91dCA9IHRpbWVvdXQ7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBOZXR3
b3JrUHJvY2Vzczo6cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9zZXJ2
aWNlV29ya2VyRmV0Y2hUaW1lb3V0ID0gZGVmYXVsdFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQ7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggOTc0
OTU5NTVkM2EuLjE0MWIxZDVjZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zNDIsNiArMzQyLDEwIEBAIHB1YmxpYzoKICAgICBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyogd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpIGNvbnN0OwogICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5l
bFJlZ2lzdHJ5JiBtZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgpIHsgcmV0dXJuIG1fbWVzc2Fn
ZVBvcnRDaGFubmVsUmVnaXN0cnk7IH0KIAorICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckZldGNo
VGltZW91dEZvclRlc3RpbmcoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KyAgICB2b2lkIHJlc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBTZWNvbmRzIHNlcnZpY2VXb3JrZXJGZXRjaFRp
bWVvdXQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQ7IH0KKwog
cHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gcGxhdGZvcm1DcmVhdGVEZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKSBjb25zdDsKQEAgLTU2MSw2ICs1NjUsOSBAQCBwcml2YXRlOgogCiAgICAg
T3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGVPcHRpb24+IG1fY2FjaGVPcHRpb25zOwogICAg
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5IG1fbWVzc2FnZVBvcnRDaGFubmVs
UmVnaXN0cnk7CisKKyAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dDsKKyAgICBTZWNvbmRzIG1fc2VydmljZVdvcmtlckZldGNoVGltZW91dCB7
IGRlZmF1bHRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGE3NzY2M2U3Y2Y2Li5mNjdkYTRmZDRhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC0xNjMsNCArMTYzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25V
UkxGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKCkgQXN5
bmMKICAgICBNYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIEdldExvY2FsU3RvcmFnZU9yaWdp
bkRldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoVmVjdG9yPFdlYktpdDo6TG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiBkZXRhaWxzKSBBc3luYwor
CisgICAgU2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoU2Vjb25kcyBzZWNv
bmRzKSAtPiAoKSBTeW5jaHJvbm91cworICAgIFJlc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91
dEZvclRlc3RpbmcoKSAtPiAoKSBTeW5jaHJvbm91cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDU1M2NiYWQxOWJjLi4yYzYwMjk0MTg1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApAQCAtMzQsNiArMzQsOCBAQAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUg
IldlYlNXU2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIgogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4p
IFJFTEVBU0VfTE9HX0lGKG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBT
ZXJ2aWNlV29ya2VyLCAiJXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjoiIGZtdCwgdGhpcywg
IyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQs
IC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OiIg
Zm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpAQCAtNDIsNDUgKzQ0LDg4IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorU2VydmljZVdvcmtlckZldGNo
VGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbiwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmll
ciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29u
ZHMgdGltZW91dCkKKyAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fY29ubmVj
dGlvbihtYWtlV2Vha1B0cihjb25uZWN0aW9uKSkKKyAgICAsIG1fY29udGV4dENvbm5lY3Rpb24o
Y29udGV4dENvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIgeyBjb25uZWN0aW9uLmlkZW50
aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyIH0KKyAgICAsIG1fc2VydmljZVdvcmtlcklkZW50aWZp
ZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpCisgICAgLCBtX3RpbWVvdXQgeyB0aW1lb3V0IH0K
KyAgICAsIG1fdGltZW91dFRpbWVyIHsgKnRoaXMsICZTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0
aW1lb3V0VGltZXJGaXJlZCB9Cit7CisgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KG1f
dGltZW91dCk7Cit9CisKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJl
ZGlyZWN0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2U6ICVzIiwg
bV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9pZGVudGlm
aWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKKyAgICBpZiAo
bV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25z
ZSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7
Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6ICVzIiwgbV9pZGVudGlm
aWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
bV93YXNIYW5kbGVkID0gdHJ1ZTsKKyAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QobV90
aW1lb3V0KTsKKyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNl
IHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1f
aWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNv
ZGVkRGF0YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBtX3Rp
bWVvdXRUaW1lci5zdGFydE9uZVNob3QobV90aW1lb3V0KTsKKyAgICBpZiAobV9jb25uZWN0aW9u
KQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBtX2lk
ZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZm9y
bURhdGEpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVGb3JtRGF0YSB7IGZvcm1EYXRhIH0sIG1faWRlbnRpZmll
ci5mZXRjaElkZW50aWZpZXIpOworICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChtX3Rp
bWVvdXQpOworICAgIGlmIChtX2Nvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRm9ybURhdGEg
eyBmb3JtRGF0YSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGaW5pc2goKQogewogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZEZpbmlzaEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVudGlm
aWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRp
ZEZpbmlzaCB7IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1fdGltZW91
dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAoIW1fZGlkUmVhY2hUZXJtaW5hbFN0YXRlICYmIG1fY29u
bmVjdGlvbikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2g6OkRpZEZpbmlzaCB7IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZp
ZXIpOworICAgIG1fZGlkUmVhY2hUZXJtaW5hbFN0YXRlID0gdHJ1ZTsKIH0KIAogdm9pZCBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ewogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJ
ZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZl
dGNoSWRlbnRpZmllcik7CisgICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlmICghbV9k
aWRSZWFjaFRlcm1pbmFsU3RhdGUgJiYgbV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IGVy
cm9yIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1fZGlkUmVhY2hUZXJt
aW5hbFN0YXRlID0gdHJ1ZTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRO
b3RIYW5kbGUoKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZE5vdEhhbmRsZUZl
dGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5s
b2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIG1faWRl
bnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAg
ICBpZiAoIW1fZGlkUmVhY2hUZXJtaW5hbFN0YXRlICYmIG1fY29ubmVjdGlvbikKKyAgICAgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRp
ZE5vdEhhbmRsZSB7IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1fZGlk
UmVhY2hUZXJtaW5hbFN0YXRlID0gdHJ1ZTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjp0aW1lb3V0VGltZXJGaXJlZCgpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
dGltZW91dFRpbWVyRmlyZWQ6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0
Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoIW1f
d2FzSGFuZGxlZCkKKyAgICAgICAgZGlkTm90SGFuZGxlKCk7CisgICAgZWxzZQorICAgICAgICBk
aWRGYWlsKHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAiU2VydmljZSBXb3Jr
ZXIgZmV0Y2ggdGltZWQgb3V0Il9zIH0pOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbi5mZXRj
aFRhc2tUaW1lZE91dCgqdGhpcyk7CiB9CiAKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suaAppbmRleCBmMTE2Y2M3NDllNi4uNmFkZDBkMGU3ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8
V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vz
c2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNDYsMTAgKzQ3LDE3
IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xh
c3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOworY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOworCiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIDogcHVibGljIFJlZkNvdW50
ZWQ8U2VydmljZVdvcmtlckZldGNoVGFzaz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2Vy
dmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVm
PElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZp
ZXIgZmV0Y2hJZGVudGlmaWVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2soc2Vzc2lvbklELCBXVEZNb3ZlKGNvbm5lY3Rpb24pLCBjb25uZWN0aW9uSWRlbnRp
ZmllciwgZmV0Y2hJZGVudGlmaWVyKSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdz
PiBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IGNyZWF0ZShBcmdzJiYuLi4gYXJn
cykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2soc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CisgICAgfQogCisgICAgdm9pZCBk
aWROb3RIYW5kbGUoKTsKICAgICB2b2lkIGZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IpIHsgZGlkRmFpbChlcnJvcik7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCkBAIC02NywxMyArNzUsMTEgQEAg
cHVibGljOgogICAgIH07CiAKICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXImIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQorICAgIGJvb2wgd2FzSGFuZGxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2FzSGFuZGxlZDsgfQogCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24sIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIp
Ci0gICAgICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQotICAgICAgICAsIG1fY29ubmVjdGlv
bihXVEZNb3ZlKGNvbm5lY3Rpb24pKQotICAgICAgICAsIG1faWRlbnRpZmllciB7IGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIgfQotICAgIHsgfQorICAgIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYsIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCk7CiAKICAgICB2
b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSk7CkBAIC04MSwxMSArODcsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVGb3Jt
RGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2go
KTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAg
IHZvaWQgZGlkTm90SGFuZGxlKCk7CisgICAgdm9pZCB0aW1lb3V0VGltZXJGaXJlZCgpOwogCiAg
ICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgUmVmPElQQzo6Q29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uOworICAgIFdlYWtQdHI8V2ViU1dTZXJ2ZXJDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CisgICAgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBtX2NvbnRleHRDb25u
ZWN0aW9uOwogICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7CisgICAgU2Vjb25k
cyBtX3RpbWVvdXQ7CisgICAgV2ViQ29yZTo6VGltZXIgbV90aW1lb3V0VGltZXI7CisgICAgYm9v
bCBtX3dhc0hhbmRsZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9kaWRSZWFjaFRlcm1pbmFsU3Rh
dGUgeyBmYWxzZSB9OwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpJZGVudGlmaWVyJiBhLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpJZGVudGlmaWVyJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNw
cAppbmRleCA3Njc0MTQwZjE3NS4uMDEyZGFjMzMzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIg
c2VydmkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtl
ckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgICAgICBpZiAoIXdvcmtlcikgewor
ICAgICAgICBpZiAoIXdvcmtlciB8fCB3b3JrZXItPmhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygp
KSB7CiAgICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE4OCw5ICsxODgsOSBAQCB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciBzZXJ2aQogCiAgICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24p
IHsKICAgICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RhcnRGZXRjaDogU3RhcnRpbmcgZmV0Y2ggJXMgdmlhIHNlcnZpY2Ugd29ya2VyICVz
IiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNv
bnRleHRDb25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCBtX2NvbnRlbnRDb25uZWN0
aW9uLmdldCgpLCB0aGlzLT5pZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZlcnJlcik7Cisg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Jj4oKmNvbnRleHRDb25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCAqdGhpcywgZmV0
Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywg
Zm9ybURhdGEsIHJlZmVycmVyKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0
RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRv
IHJ1biBzZXJ2aWNlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlk
Tm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRvIHJ1biBzZXJ2aWNlIHdvcmtlciwgb3Igc2Vydmlj
ZSB3b3JrZXIgaGFzIGhhZCB0aW1lZCBvdXQgZmV0Y2ggdGFza3MiLCBmZXRjaElkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIG1fY29udGVu
dENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
Tm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggOGNkNDk1YzFjOTAu
LjdiZDJhMzNjYjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPHBh
bC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmlu
ZGV4IDU4MDk0ZDYyOGNiLi40Y2RmNTU2OTZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmg+CiAKQEAgLTE1MSwxNCArMTUyLDE1IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGUoKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVQcm9jZXNzKCkpOwogfQogCi12b2lkIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29udGVudENvbm5lY3Rpb24sIFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIEZldGNoSWRlbnRpZmllciBjb250ZW50RmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCit2b2lkIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29udGVudENvbm5lY3Rpb24sIEZldGNoSWRlbnRp
ZmllciBjb250ZW50RmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGRh
dGEsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CisgICAgYXV0byBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciA9IGNvbnRlbnRDb25uZWN0aW9uLmlkZW50aWZpZXIoKTsKICAgICBhdXRvIGZl
dGNoSWRlbnRpZmllciA9IEZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICAKLSAgICBt
X29uZ29pbmdGZXRjaGVzLmFkZChmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmNyZWF0ZShzZXNzaW9uSUQsIFdURk1vdmUoY29udGVudENvbm5lY3Rpb24pLCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmllcikpOwogCi0gICAgQVNT
RVJUKCFtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmNvbnRhaW5zKHtzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmllcn0pKTsKLSAgICBtX29uZ29pbmdGZXRj
aElkZW50aWZpZXJzLmFkZCh7c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRj
aElkZW50aWZpZXJ9LCBmZXRjaElkZW50aWZpZXIpOworICAgIG1fb25nb2luZ0ZldGNoZXMuYWRk
KGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y3JlYXRlKHNlc3Npb25J
RCwgY29udGVudENvbm5lY3Rpb24sICp0aGlzLCBjb250ZW50RmV0Y2hJZGVudGlmaWVyLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgbV9uZXR3b3JrUHJvY2Vzcy0+c2VydmljZVdvcmtlckZldGNo
VGltZW91dCgpKSk7CisKKyAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuY29u
dGFpbnMoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
ciB9KSk7CisgICAgbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5hZGQoeyBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmllciB9LCBmZXRjaElkZW50aWZpZXIp
OwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN0
YXJ0RmV0Y2ggeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZGF0YSwgcmVmZXJyZXIg
fSk7CiB9CkBAIC0yMDQsNiArMjA2LDQzIEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hUYXNrTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mCiAgICAg
fQogfQogCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmV0Y2hUYXNrVGlt
ZWRPdXQoU2VydmljZVdvcmtlckZldGNoVGFzayYgdGFzaykKK3sKKyAgICBBU1NFUlQobV9vbmdv
aW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlucyh0YXNrLmlkZW50aWZpZXIoKSkpOworICAgIGF1
dG8gdGFrZW5JZGVudGlmaWVyID0gbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy50YWtlKHRhc2su
aWRlbnRpZmllcigpKTsKKworICAgIEFTU0VSVChtX29uZ29pbmdGZXRjaGVzLmNvbnRhaW5zKHRh
a2VuSWRlbnRpZmllcikpOworICAgIGF1dG8gdGFrZW5UYXNrID0gbV9vbmdvaW5nRmV0Y2hlcy50
YWtlKHRha2VuSWRlbnRpZmllcik7CisgICAgQVNTRVJUKHRha2VuVGFzayk7CisgICAgQVNTRVJU
KHRha2VuVGFzay0+cHRyKCkgPT0gJnRhc2spOworCisgICAgLy8gR2F0aGVyIGFsbCBvdGhlciBm
ZXRjaGVzIGluIHRoaXMgc2VydmljZSB3b3JrZXIKKyAgICBIYXNoU2V0PFJlZjxTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrPj4gb3RoZXJGZXRjaGVzOworICAgIGZvciAoYXV0byYgZmV0Y2hUYXNrIDog
bV9vbmdvaW5nRmV0Y2hlcy52YWx1ZXMoKSkgeworICAgICAgICBpZiAoZmV0Y2hUYXNrLT5zZXJ2
aWNlV29ya2VySWRlbnRpZmllcigpID09IHRhc2suc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSkK
KyAgICAgICAgICAgIG90aGVyRmV0Y2hlcy5hZGQoZmV0Y2hUYXNrLmNvcHlSZWYoKSk7CisgICAg
fQorCisgICAgLy8gU2lnbmFsIGxvYWQgZmFpbHVyZSBmb3IgdGhlbQorICAgIGZvciAoYXV0byYg
ZmV0Y2hUYXNrIDogb3RoZXJGZXRjaGVzKSB7CisgICAgICAgIGlmIChmZXRjaFRhc2stPndhc0hh
bmRsZWQoKSkKKyAgICAgICAgICAgIGZldGNoVGFzay0+ZmFpbCh7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHsgfSwgIlNlcnZpY2UgV29ya2VyIGNvbnRleHQgY2xvc2VkIl9zIH0pOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBmZXRjaFRhc2stPmRpZE5vdEhhbmRsZSgpOworCisg
ICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMudGFrZShm
ZXRjaFRhc2stPmlkZW50aWZpZXIoKSk7CisgICAgICAgIG1fb25nb2luZ0ZldGNoZXMucmVtb3Zl
KGlkZW50aWZpZXIpOworICAgIH0KKworICAgIGlmIChtX3NlcnZlcikgeworICAgICAgICBpZiAo
YXV0byogd29ya2VyID0gbV9zZXJ2ZXItPndvcmtlckJ5SUQodGFzay5zZXJ2aWNlV29ya2VySWRl
bnRpZmllcigpKSkgeworICAgICAgICAgICAgd29ya2VyLT5zZXRIYXNUaW1lZE91dEFueUZldGNo
VGFza3MoKTsKKyAgICAgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpKQorICAgICAgICAg
ICAgICAgIG1fc2VydmVyLT5zeW5jVGVybWluYXRlV29ya2VyKCp3b3JrZXIpOworICAgICAgICB9
CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaAppbmRleCBhM2M2NGVkMTI3OC4uNTdiYjRmMzM3NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTUwLDYgKzUwLDcg
QEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQ
cm9jZXNzOworY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCiBjbGFzcyBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgpAQCAtNjMsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHRlcm1pbmF0ZSgpOwogCi0gICAgdm9pZCBzdGFydEZldGNoKFBBTDo6U2Vzc2lvbklELCBSZWY8
SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRj
aE9wdGlvbnMmLCBjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJik7
CisgICAgdm9pZCBzdGFydEZldGNoKFBBTDo6U2Vzc2lvbklELCBXZWJTV1NlcnZlckNvbm5lY3Rp
b24mLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMmLCBjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5n
Jik7CiAgICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlm
aWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKQEAgLTcyLDYgKzczLDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxl
KTsKICAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Rocm90dGxl
YWJsZTsgfQogCisgICAgdm9pZCBmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrJik7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpD
b25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggY2ZmZWIwZWY3YTIu
LjVlM2NlZGUzMWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHAKQEAgLTQwOCw2ICs0MDgsMTYgQEAgdm9pZCBXS0NvbnRleHRTZXRDdXN0b21XZWJDb250
ZW50U2VydmljZUJ1bmRsZUlkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYKICAgICBX
ZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0Q3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5k
bGVJZGVudGlmaWVyKFdlYktpdDo6dG9JbXBsKG5hbWUpLT5zdHJpbmcoKSk7CiB9CiAKK3ZvaWQg
V0tDb250ZXh0U2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoV0tDb250ZXh0
UmVmIGNvbnRleHRSZWYsIGRvdWJsZSBzZWNvbmRzKQoreworICAgIFdlYktpdDo6dG9JbXBsKGNv
bnRleHRSZWYpLT5zZXRTZXJ2aWNlV29ya2VyVGltZW91dEZvclRlc3RpbmcoKFNlY29uZHMpc2Vj
b25kcyk7Cit9CisKK3ZvaWQgV0tDb250ZXh0UmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0
Rm9yVGVzdGluZyhXS0NvbnRleHRSZWYgY29udGV4dFJlZikKK3sKKyAgICBXZWJLaXQ6OnRvSW1w
bChjb250ZXh0UmVmKS0+cmVzZXRTZXJ2aWNlV29ya2VyVGltZW91dEZvclRlc3RpbmcoKTsKK30K
Kwogdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVk
KFdLQ29udGV4dFJlZiwgYm9vbCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmgKaW5kZXggZWQ5NjkxMDVhMTUuLjcyODczNTU4NWI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaApAQCAtMTcwLDYgKzE3MCw5IEBAIFdLX0VY
UE9SVCB2b2lkIFdLQ29udGV4dFJlZnJlc2hQbHVnSW5zKFdLQ29udGV4dFJlZiBjb250ZXh0KTsK
IAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5k
bGVJZGVudGlmaWVyKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBuYW1lKTsK
IAorV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZv
clRlc3RpbmcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGRvdWJsZSBzZWNvbmRzKTsKK1dLX0VY
UE9SVCB2b2lkIFdLQ29udGV4dFJlc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3Rp
bmcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDJi
OTNhYjJiNDY1Li4xYTUyZWZlOGEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcApAQCAtMTQzMSw2ICsxNDMxLDE2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OmFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3RpbmcoUHJvY2Vzc0lEIHBpZCwg
Q29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9v
bDo6c2V0U2VydmljZVdvcmtlclRpbWVvdXRGb3JUZXN0aW5nKFNlY29uZHMgc2Vjb25kcykKK3sK
KyAgICBzZW5kU3luY1RvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpTZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhzZWNvbmRzKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGlu
Zzo6UmVwbHkoKSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlc2V0U2VydmljZVdvcmtl
clRpbWVvdXRGb3JUZXN0aW5nKCkKK3sKKyAgICBzZW5kU3luY1RvTmV0d29ya2luZ1Byb2Nlc3Mo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRG
b3JUZXN0aW5nKCksIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzZXRTZXJ2aWNlV29ya2Vy
RmV0Y2hUaW1lb3V0Rm9yVGVzdGluZzo6UmVwbHkoKSk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3YXlzVXNlQ29tcGxl
eFRleHQpCiB7CiAgICAgbV9hbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aCA9IGFsd2F5c1Vz
ZUNvbXBsZXhUZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5k
ZXggMDIxMDE0ZWMxMjAuLjk0OTQ1ZWYwMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKQEAgLTI1Nyw2ICsyNTcsOCBAQCBwdWJsaWM6CiAgICAgUHJvY2Vzc0lE
IHByZXdhcm1lZFByb2Nlc3NJZGVudGlmaWVyKCk7CiAgICAgdm9pZCBhY3RpdmVQYWdlc09yaWdp
bnNJbldlYlByb2Nlc3NGb3JUZXN0aW5nKFByb2Nlc3NJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgYm9vbCBuZXR3b3JrUHJvY2Vzc0hhc0VudGl0
bGVtZW50Rm9yVGVzdGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFNlcnZpY2VXb3Jr
ZXJUaW1lb3V0Rm9yVGVzdGluZyhTZWNvbmRzIHNlY29uZHMpOworICAgIHZvaWQgcmVzZXRTZXJ2
aWNlV29ya2VyVGltZW91dEZvclRlc3RpbmcoKTsKIAogICAgIFdlYlBhZ2VHcm91cCYgZGVmYXVs
dFBhZ2VHcm91cCgpIHsgcmV0dXJuIG1fZGVmYXVsdFBhZ2VHcm91cC5nZXQoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
aAppbmRleCBiMjQ3OGFiNTBkMS4uYjU3ZDRiZTIxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJT
dHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4
IGEwMWQ0ZmI1MzkwLi5mODkyYTA4NjdjOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBA
IC0zODgsNiArMzg4LDggQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogCiAgICAgdm9pZCBzZW5k
RGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcoKTsKIAorICAgIHZv
aWQgc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dChkb3VibGUgc2Vjb25kcyk7CisKICAgICAv
LyBXZWJBdXRoTgogICAgIHZvaWQgc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlv
bihvYmplY3QgY29uZmlndXJhdGlvbik7CiAgICAgdm9pZCBhZGRUZXN0S2V5VG9LZXljaGFpbihE
T01TdHJpbmcgcHJpdmF0ZUtleUJhc2U2NCwgRE9NU3RyaW5nIGF0dHJMYWJlbCwgRE9NU3RyaW5n
IGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDgyZGI2NzQyOTk5Li4yMGUwOWQy
NjIzOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCkBAIC0yNTQ1LDYgKzI1NDUsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZW5kRGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcoKQogICAgIFdL
QnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
YnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKIH0KIAordm9p
ZCBUZXN0UnVubmVyOjpzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KGRvdWJsZSBzZWNvbmRz
KQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVv
dXQiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEb3VibGVSZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRX
SyhXS0RvdWJsZUNyZWF0ZShzZWNvbmRzKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNN
ZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKK30KKwogLy8gV2ViQXV0aE4KIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1Zh
bHVlUmVmIGNvbmZpZ3VyYXRpb25WYWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggNDllNWZmMDg3NjAuLmY1ZmVh
OTZjNjYzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaApAQCAtNDg3LDYgKzQ4Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2Vu
ZERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CiAKKyAgICB2
b2lkIHNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoZG91YmxlIHNlY29uZHMpOworICAgIAog
ICAgIC8vIFdlYkF1dGhOCiAgICAgdm9pZCBzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1
cmF0aW9uKEpTVmFsdWVSZWYpOwogICAgIC8vIEZJWE1FKDE4OTg3NikKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZTdkYmUzODc3ZGMuLjhlZjk1NmU4ZjZk
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtOTU4LDYg
Kzk1OCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAKICAgICBXS0NvbnRleHRDbGVhckNh
Y2hlZENyZWRlbnRpYWxzKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0KCkpOwog
CisgICAgV0tDb250ZXh0UmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpKTsKKwogICAgIFdLV2Vic2l0ZURh
dGFTdG9yZUNsZWFyQWxsRGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9ucyhUZXN0Q29udHJvbGxl
cjo6d2Vic2l0ZURhdGFTdG9yZSgpKTsKIAogICAgIGNsZWFySW5kZXhlZERhdGFiYXNlcygpOwpA
QCAtMzU5Miw2ICszNTk0LDExIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNlbmREaXNwbGF5Q29u
ZmlndXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpCiAgICAgV0tTZW5kRGlzcGxheUNv
bmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcocGxhdGZvcm1Db250ZXh0KCkpOwog
fQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9y
VGVzdGluZyhkb3VibGUgc2Vjb25kcykKK3sKKyAgICBXS0NvbnRleHRTZXRTZXJ2aWNlV29ya2Vy
RmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhwbGF0Zm9ybUNvbnRleHQoKSwgc2Vjb25kcyk7Cit9CisK
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRp
b24oV0tEaWN0aW9uYXJ5UmVmIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihUZXN0Q29udHJvbGxlcjo6
d2Vic2l0ZURhdGFTdG9yZSgpLCBjb25maWd1cmF0aW9uKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAppbmRleCBmZDFjNTJhYTQwYS4uMDc5Zjc3NGY1OTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI5Miw2ICsyOTIsOCBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBzZW5kRGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2Fn
ZUZvclRlc3RpbmcoKTsKIAorICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZv
clRlc3RpbmcoZG91YmxlIHNlY29uZHMpOworCiAgICAgdm9pZCBzZXRXZWJBdXRoZW50aWNhdGlv
bk1vY2tDb25maWd1cmF0aW9uKFdLRGljdGlvbmFyeVJlZik7CiAgICAgdm9pZCBhZGRUZXN0S2V5
VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNlNjQsIGNvbnN0IFN0cmluZyYg
YXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKICAgICB2b2lk
IGNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBh
cHBsaWNhdGlvblRhZ0Jhc2U2NCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCmluZGV4IGM0ZDE4YWJkOWE1Li5kN2UwMGMyNDdkOSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE1NjUsNiArMTU2NSwxMyBAQCBXS1JldGFp
blB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFNlcnZpY2VX
b3JrZXJGZXRjaFRpbWVvdXQiKSkgeworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2Fn
ZUJvZHkpID09IFdLRG91YmxlR2V0VHlwZUlEKCkpOworICAgICAgICBXS0RvdWJsZVJlZiBzZWNv
bmRzID0gc3RhdGljX2Nhc3Q8V0tEb3VibGVSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JU
ZXN0aW5nKFdLRG91YmxlR2V0VmFsdWUoc2Vjb25kcykpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdl
TmFtZSwgIlRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzIikpIHsKICAgICAgICAgQVNTRVJUKCFtZXNz
YWdlQm9keSk7CiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS50ZXJtaW5hdGVO
ZXR3b3JrUHJvY2VzcygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380346</attachid>
            <date>2019-10-07 12:53:29 -0700</date>
            <delta_ts>2019-10-07 14:32:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202188-20191007125328.patch</filename>
            <type>text/plain</type>
            <size>44466</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGFhNzE4NzQ5NmE5NmNk
ODc1ZjY4OWNmY2IzNmVlYjFjMjYyOTg2NS4uMzNlODA3MmIxN2ZmMTZhYWQxNmVkYjk2NTcwODYz
YTAxMGU1ZWRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEwLTA3ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBG
ZXRjaCBldmVudHMgc2hvdWxkIHRpbWUgb3V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFz
aWMtdGltZW91dC5odHRwcy5odG1sCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnNldEhhc1RpbWVkT3V0
QW55RmV0Y2hUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6aGFzVGlt
ZWRPdXRBbnlGZXRjaFRhc2tzIGNvbnN0KToKKwogMjAxOS0wOS0zMCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuZGVyTGluZUJyZWFrIHNob3VsZCB1c2Ug
TGluZUxheW91dFRyYXZlcnNhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlMmUyZGU0MWMyYzQyYzdjNzc0ZGEzNzYy
NGU4N2NhMGQwNTZmNTc4Li4wYTgwNDFlOWY5ZTFiMWVjYTQxOTE5YjQ1ODNkOTRmMTlhMDk3N2My
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE5LTEwLTA3ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBGZXRjaCBldmVudHMg
c2hvdWxkIHRpbWUgb3V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAyMTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiB3ZSBzdGFydCBhIGZldGNoIHRhc2sgaW4gdGhlIHNlcnZlciwgd2UgYWxz
byBzdGFydCBhIHRpbWVvdXQgb24gdGhhdCBmZXRjaCB0YXNrLgorICAgICAgICAKKyAgICAgICAg
IlRpbWUgb3V0IiBtZWFucyB0aGUgZmV0Y2ggdGFzayBtdXN0IGNvbnRpbnVlIHRvIG1ha2UgcHJv
Z3Jlc3MgYXQgdGhlIGdpdmVuIGZyZXF1ZW5jeSAob25jZSBldmVyeSA2MCBzZWNvbmRzIGJ5IGRl
ZmF1bHQpCisKKyAgICAgICAgSWYgYW55IGdpdmVuIGZldGNoIHRhc2sgdGltZXMgb3V0IGluIGEg
c2VydmljZSB3b3JrZXIgaW5zdGFuY2UsIHRoYXQgaW5zdGFuY2UgbG9zZXMgdGhlIHJpZ2h0IHRv
IGhhbmRsZSBmZXRjaGVzLgorICAgICAgICAKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRTZXJ2
aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpyZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c2VydmljZVdvcmtlckZldGNoVGltZW91dCBjb25zdCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpOiAKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKTogCisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKTogCisgICAgICAgIChXZWJLaXQ6
OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YSk6IAorICAgICAgICAo
V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGaW5pc2gpOiAKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmFpbCk6IAorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUpOiAKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6c2VydmljZVdvcmtlcklkZW50aWZpZXIgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp3YXNIYW5kbGVk
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzayk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKworICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpmZXRjaFRhc2tUaW1lZE91dCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0U2Vy
dmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcpOgorICAgICAgICAoV0tDb250ZXh0UmVz
ZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFNlcnZpY2VXb3Jr
ZXJUaW1lb3V0Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpy
ZXNldFNlcnZpY2VXb3JrZXJUaW1lb3V0Rm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmg6CisKIDIwMTktMDktMzAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8
Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEljb25EYXRhYmFzZSBpcyBub3Qg
dGhyZWFkLXNhZmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaAppbmRleCA5Zjg2ZDFhZjgyZWI4ZThhM2YyNTllNjNjMzJiNzVhZDQ2MTU2YmU0
Li43YTAxOTM5ZWQ0YzUyZWMyYmNmYzJmMjcyYzA1NTgyMjhkZjA5OGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9u
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdv
cmtlclR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0PiYmKTsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTV1NlcnZlcldvcmtlciYpOwot
ICAgIHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihTV1NlcnZlcldvcmtlciYpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihTV1NlcnZlcldvcmtlciYpOwogICAg
IHZvaWQgZmlyZUluc3RhbGxFdmVudChTV1NlcnZlcldvcmtlciYpOwogICAgIHZvaWQgZmlyZUFj
dGl2YXRlRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDY3NjdmYzZm
MGE2YjE2YzM0MzI5Y2JhYjUzY2IwMjY0YjIxZDI0NjEuLjFiOTljYzkyNzE5MWJjNTJlNmI3ZTVl
NTE4NzdiMWQ0NDgxMWYwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTExNiw2ICsxMTYsOSBAQCBwdWJs
aWM6CiAgICAgCiAgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbigpIGNvbnN0
OwogCisgICAgdm9pZCBzZXRIYXNUaW1lZE91dEFueUZldGNoVGFza3MoKSB7IG1faGFzVGltZWRP
dXRBbnlGZXRjaFRhc2tzID0gdHJ1ZTsgfQorICAgIGJvb2wgaGFzVGltZWRPdXRBbnlGZXRjaFRh
c2tzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUaW1lZE91dEFueUZldGNoVGFza3M7IH0KKwogcHJp
dmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9u
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJU
eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCkBAIC0xMzYsNiArMTM5LDcgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZChib29sKT4+IG1fd2hlbkFjdGl2YXRlZEhh
bmRsZXJzOwogICAgIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9y
dGVkU2NyaXB0PiBtX3NjcmlwdFJlc291cmNlTWFwOwogICAgIGJvb2wgbV9zaG91bGRTa2lwSGFu
ZGxlRmV0Y2g7CisgICAgYm9vbCBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcyB7IGZhbHNlIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDEwNmQ4MWM3YjkwYjQ2N2Y2ZTIwMDFk
ZTdmNjJlZjM1ZDMxMmFiY2IuLmM5OTM3MWE0MzdkZDNiZDUwYTcyYmJhN2I1MDhjMGY3M2JlOWE5
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC0yNjAxLDQgKzI2MDEsMTcgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mq
IE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzQ29ubmVjdGlvbihQcm9jZXNzSWRlbnQKICAgICBy
ZXR1cm4gbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOwogfQogCitjb25z
dCBTZWNvbmRzIE5ldHdvcmtQcm9jZXNzOjpkZWZhdWx0U2VydmljZVdvcmtlckZldGNoVGltZW91
dCA9IDYwX3M7Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1l
b3V0Rm9yVGVzdGluZyhTZWNvbmRzIHRpbWVvdXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3NlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQg
PSB0aW1lb3V0OworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OnJlc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fc2VydmljZVdv
cmtlckZldGNoVGltZW91dCA9IGRlZmF1bHRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0OworICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDk3NDk1OTU1
ZDNhZTczZjBiMTk3NTk2NTM3ZDQ3OTEzNGZlMTJiM2EuLjE0MWIxZDVjZWRlOTQ3MjlhNjQ1YWIz
MDI3YWYxYTE4MWM1NmJhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKQEAgLTM0Miw2ICszNDIsMTAgQEAgcHVibGljOgogICAgIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKiB3ZWJQcm9jZXNzQ29ubmVjdGlvbihXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllcikgY29uc3Q7CiAgICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUmVn
aXN0cnkmIG1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkgeyByZXR1cm4gbV9tZXNzYWdlUG9y
dENoYW5uZWxSZWdpc3RyeTsgfQogCisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1l
b3V0Rm9yVGVzdGluZyhTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAg
IHZvaWQgcmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOworICAgIFNlY29uZHMgc2VydmljZVdvcmtlckZldGNoVGltZW91
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckZldGNoVGltZW91dDsgfQorCiBwcml2
YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBwbGF0Zm9ybUNyZWF0ZURlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpIGNvbnN0OwpAQCAtNTYxLDYgKzU2NSw5IEBAIHByaXZhdGU6CiAKICAgICBPcHRp
b25TZXQ8TmV0d29ya0NhY2hlOjpDYWNoZU9wdGlvbj4gbV9jYWNoZU9wdGlvbnM7CiAgICAgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkgbV9tZXNzYWdlUG9ydENoYW5uZWxSZWdp
c3RyeTsKKworICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzIGRlZmF1bHRTZXJ2aWNlV29ya2VyRmV0
Y2hUaW1lb3V0OworICAgIFNlY29uZHMgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IHsgZGVm
YXVsdFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYTc3NjYzZTdjZjY0MTM4YjY3OTE4MGIxYzlhYzY0YjQ3
Mzg5YzcxYi4uZjY3ZGE0ZmQ0YWU1ZTJlMWQ0YTczZGU0ZTIyM2FiMWE1YmI2MjhlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0xNjMsNCArMTYzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxG
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCkgLT4gKCkgQXN5bmMK
ICAgICBNYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIEdldExvY2FsU3RvcmFnZU9yaWdpbkRl
dGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoVmVjdG9yPFdlYktpdDo6TG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiBkZXRhaWxzKSBBc3luYworCisg
ICAgU2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoU2Vjb25kcyBzZWNvbmRz
KSAtPiAoKSBTeW5jaHJvbm91cworICAgIFJlc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZv
clRlc3RpbmcoKSAtPiAoKSBTeW5jaHJvbm91cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suY3BwCmluZGV4IDU1M2NiYWQxOWJjNWExOTdlMDYyNTI3NTBmMjgyY2UzYjA0
MTZmYjAuLjEyMGM3MDU5NzhkZDNjYjEyOGU0NTRmMDkyMzg3MmYzMmM5ZTAyYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJX
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCIKIAogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBS
RUxFQVNFX0xPR19JRihtX3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2Vy
dmljZVdvcmtlciwgIiVwIC0gU2VydmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMsICMj
X19WQV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoZm10LCAu
Li4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAiJXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjoiIGZt
dCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTQyLDQzICs0NCw4NSBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJT
V1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYgY29udGV4dENvbm5lY3Rpb24sIEZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRz
IHRpbWVvdXQpCisgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCisgICAgLCBtX2Nvbm5lY3Rp
b24obWFrZVdlYWtQdHIoY29ubmVjdGlvbikpCisgICAgLCBtX2NvbnRleHRDb25uZWN0aW9uKGNv
bnRleHRDb25uZWN0aW9uKQorICAgICwgbV9pZGVudGlmaWVyY29ubmVjdGlvbi5pZGVudGlmaWVy
KCksIGZldGNoSWRlbnRpZmllcikKKyAgICAsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIoc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpCisgICAgLCBtX3RpbWVvdXQodGltZW91dCkKKyAgICAsIG1f
dGltZW91dFRpbWVyKCp0aGlzLCAmU2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVy
RmlyZWQpCit7CisgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KG1fdGltZW91dCk7Cit9
CisKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2U6ICVzIiwgbV9pZGVudGlmaWVy
LmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllcik7CisgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKKyAgICBpZiAobV9jb25uZWN0aW9u
KQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9LCBtX2lkZW50
aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJv
b2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7Ci0gICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2Vp
dmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV93YXNIYW5kbGVk
ID0gdHJ1ZTsKKyAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QobV90aW1lb3V0KTsKKyAg
ICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2Us
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRpZmllci5m
ZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJl
Y2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0
aCB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBtX3RpbWVvdXRUaW1lci5z
dGFydE9uZVNob3QobV90aW1lb3V0KTsKKyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
UmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIuZmV0
Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNl
aXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZm9ybURhdGEpCiB7Ci0g
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6
OkRpZFJlY2VpdmVGb3JtRGF0YSB7IGZvcm1EYXRhIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50
aWZpZXIpOworICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChtX3RpbWVvdXQpOworICAg
IGlmIChtX2Nvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRm9ybURhdGEgeyBmb3JtRGF0YSB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRGaW5pc2goKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZEZpbmlzaEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZpbmlzaCB7IH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1fdGltZW91dFRpbWVyLnN0b3Ao
KTsKKyAgICBpZiAoIW1fZGlkUmVhY2hUZXJtaW5hbFN0YXRlICYmIG1fY29ubmVjdGlvbikKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g6OkRpZEZpbmlzaCB7IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1f
ZGlkUmVhY2hUZXJtaW5hbFN0YXRlID0gdHJ1ZTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAl
cyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNs
aWVudEZldGNoOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmll
cik7CisgICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlmICghbV9kaWRSZWFjaFRlcm1p
bmFsU3RhdGUgJiYgbV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IGVycm9yIH0sIG1faWRl
bnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1fZGlkUmVhY2hUZXJtaW5hbFN0YXRlID0g
dHJ1ZTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUoKQog
ewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZE5vdEhhbmRsZUZldGNoOiBmZXRjaElk
ZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIpOworICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAoIW1fZGlk
UmVhY2hUZXJtaW5hbFN0YXRlICYmIG1fY29ubmVjdGlvbikKKyAgICAgICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7
IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1fZGlkUmVhY2hUZXJtaW5h
bFN0YXRlID0gdHJ1ZTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0
VGltZXJGaXJlZCgpCit7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidGltZW91dFRpbWVy
RmlyZWQ6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoIW1fd2FzSGFuZGxlZCkK
KyAgICAgICAgZGlkTm90SGFuZGxlKCk7CisgICAgZWxzZQorICAgICAgICBkaWRGYWlsKHsgZXJy
b3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAiU2VydmljZSBXb3JrZXIgZmV0Y2ggdGlt
ZWQgb3V0Il9zIH0pOworCisgICAgbV9jb250ZXh0Q29ubmVjdGlvbi5mZXRjaFRhc2tUaW1lZE91
dCgqdGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmgKaW5kZXggZjExNmNjNzQ5ZTZjMDU3N2E5OWQwOTU0NDFhYTgyZDk2
ZmU4YzQ4Ny4uNmFkZDBkMGU3ZmQ1MzkzNmQxZjhjYjFlMWY4MzhhYTliYTIzYjIxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
dmljZVdvcmtlclR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUg
PHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC00Niwx
MCArNDcsMTcgQEAgY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CitjbGFzcyBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb247CisKIGNsYXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgOiBwdWJsaWMg
UmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vydmlj
ZVdvcmtlckZldGNoVGFzayhzZXNzaW9uSUQsIFdURk1vdmUoY29ubmVjdGlvbiksIGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIpKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+IHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlKEFyZ3Mm
Ji4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdv
cmtlckZldGNoVGFzayhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICB9CiAKKyAg
ICB2b2lkIGRpZE5vdEhhbmRsZSgpOwogICAgIHZvaWQgZmFpbChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikgeyBkaWRGYWlsKGVycm9yKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKQEAgLTY3LDEzICs3
NSwxMSBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciYgc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CisgICAgYm9vbCB3YXNIYW5kbGVk
KCkgY29uc3QgeyByZXR1cm4gbV93YXNIYW5kbGVkOyB9CiAKIHByaXZhdGU6Ci0gICAgU2Vydmlj
ZVdvcmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciBjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRl
bnRpZmllcikKLSAgICAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgICAgICwgbV9j
b25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCi0gICAgICAgICwgbV9pZGVudGlmaWVyIHsg
Y29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciB9Ci0gICAgeyB9CisgICAgU2Vy
dmljZVdvcmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
JiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6RmV0Y2hJZGVudGlm
aWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0KTsK
IAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlKTsKQEAgLTgxLDExICs4NywxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRp
ZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7Ci0gICAgdm9pZCBkaWROb3RIYW5kbGUoKTsKKyAgICB2b2lkIHRpbWVvdXRUaW1lckZpcmVk
KCk7CiAKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKLSAgICBSZWY8SVBDOjpDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+
IG1fY29ubmVjdGlvbjsKKyAgICBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIG1fY29u
dGV4dENvbm5lY3Rpb247CiAgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKKyAg
ICBTZWNvbmRzIG1fdGltZW91dDsKKyAgICBXZWJDb3JlOjpUaW1lciBtX3RpbWVvdXRUaW1lcjsK
KyAgICBib29sIG1fd2FzSGFuZGxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RpZFJlYWNoVGVy
bWluYWxTdGF0ZSB7IGZhbHNlIH07CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIGEsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OklkZW50aWZpZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwCmluZGV4IDc2NzQxNDBmMTc1YzQ1NzA4YjUyNTE1YzdjNDVlNTg2NmZmMjhlMjcu
LjAxMmRhYzMzM2NiM2UxYzBjYTEwZTRjYzY5ZWI3ZTZkMDE2M2QxMjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBXZWJT
V1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgc2VydmkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8qIHdvcmtlciA9IHNlcnZl
cigpLndvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgICAgICBpZiAoIXdv
cmtlcikgeworICAgICAgICBpZiAoIXdvcmtlciB8fCB3b3JrZXItPmhhc1RpbWVkT3V0QW55RmV0
Y2hUYXNrcygpKSB7CiAgICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRl
bnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE4OCw5ICsxODgs
OSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aQogCiAgICAgICAgICAgICBpZiAoY29udGV4dENv
bm5lY3Rpb24pIHsKICAgICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogU3RhcnRpbmcgZmV0Y2ggJXMgdmlhIHNlcnZpY2Ug
d29ya2VyICVzIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
Ci0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJj4oKmNvbnRleHRDb25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCBtX2NvbnRl
bnRDb25uZWN0aW9uLmdldCgpLCB0aGlzLT5pZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZl
cnJlcik7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJj4oKmNvbnRleHRDb25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCAq
dGhpcywgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwg
b3B0aW9ucywgZm9ybURhdGEsIHJlZmVycmVyKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ug
ZmFpbGVkIHRvIHJ1biBzZXJ2aWNlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9O
X1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmll
cjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRvIHJ1biBzZXJ2aWNlIHdvcmtlciwg
b3Igc2VydmljZSB3b3JrZXIgaGFzIGhhZCB0aW1lZCBvdXQgZmV0Y2ggdGFza3MiLCBmZXRjaElk
ZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAg
IG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggOGNk
NDk1YzFjOTBjNzE3ZDgzZGRmN2IzZjEzZjY1MWRiZWE2ZmQyOC4uN2JkMmEzM2NiNThhMzA3NzBl
Mzk4YmQwNDllNTNlMjI0MjNhM2QyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXIuaD4KICNp
bmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVm
ZXJlbmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAppbmRleCA1ODA5NGQ2MjhjYjA4MzA1Yjk3NWE4MTE5MmRjY2IzY2JjOTQ0ZTFhLi40
Y2RmNTU2OTZmNDE5OWI3Y2IxOTQ2ZjM1MjIxZTg3YzY2YzRkZTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuaD4KIApAQCAtMTUxLDE0ICsxNTIsMTUgQEAgdm9pZCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZSgpCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVByb2Nlc3MoKSk7CiB9
CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNoKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb250ZW50Q29ubmVj
dGlvbiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK3Zv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNoKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb250ZW50Q29ubmVjdGlvbiwg
RmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKKyAgICBhdXRvIHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29udGVudENvbm5lY3Rpb24uaWRlbnRpZmllcigpOwog
ICAgIGF1dG8gZmV0Y2hJZGVudGlmaWVyID0gRmV0Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwot
ICAgIAotICAgIG1fb25nb2luZ0ZldGNoZXMuYWRkKGZldGNoSWRlbnRpZmllciwgU2VydmljZVdv
cmtlckZldGNoVGFzazo6Y3JlYXRlKHNlc3Npb25JRCwgV1RGTW92ZShjb250ZW50Q29ubmVjdGlv
biksIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb250ZW50RmV0Y2hJZGVudGlmaWVyKSk7
CiAKLSAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMoe3NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb250ZW50RmV0Y2hJZGVudGlmaWVyfSkpOwotICAgIG1f
b25nb2luZ0ZldGNoSWRlbnRpZmllcnMuYWRkKHtzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29udGVudEZldGNoSWRlbnRpZmllcn0sIGZldGNoSWRlbnRpZmllcik7CisgICAgbV9vbmdvaW5n
RmV0Y2hlcy5hZGQoZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjcmVh
dGUoc2Vzc2lvbklELCBjb250ZW50Q29ubmVjdGlvbiwgKnRoaXMsIGNvbnRlbnRGZXRjaElkZW50
aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX25ldHdvcmtQcm9jZXNzLT5zZXJ2aWNl
V29ya2VyRmV0Y2hUaW1lb3V0KCkpKTsKKworICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hJZGVu
dGlmaWVycy5jb250YWlucyh7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb250ZW50RmV0
Y2hJZGVudGlmaWVyIH0pKTsKKyAgICBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmFkZCh7IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb250ZW50RmV0Y2hJZGVudGlmaWVyIH0sIGZldGNo
SWRlbnRpZmllcik7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6U3RhcnRGZXRjaCB7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBkYXRh
LCByZWZlcnJlciB9KTsKIH0KQEAgLTIwNCw2ICsyMDYsNDMgQEAgdm9pZCBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFRhc2tNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYKICAgICB9CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpm
ZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrJiB0YXNrKQoreworICAgIEFT
U0VSVChtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLmNvbnRhaW5zKHRhc2suaWRlbnRpZmllcigp
KSk7CisgICAgYXV0byB0YWtlbklkZW50aWZpZXIgPSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJz
LnRha2UodGFzay5pZGVudGlmaWVyKCkpOworCisgICAgQVNTRVJUKG1fb25nb2luZ0ZldGNoZXMu
Y29udGFpbnModGFrZW5JZGVudGlmaWVyKSk7CisgICAgYXV0byB0YWtlblRhc2sgPSBtX29uZ29p
bmdGZXRjaGVzLnRha2UodGFrZW5JZGVudGlmaWVyKTsKKyAgICBBU1NFUlQodGFrZW5UYXNrKTsK
KyAgICBBU1NFUlQodGFrZW5UYXNrLT5wdHIoKSA9PSAmdGFzayk7CisKKyAgICAvLyBHYXRoZXIg
YWxsIG90aGVyIGZldGNoZXMgaW4gdGhpcyBzZXJ2aWNlIHdvcmtlcgorICAgIEhhc2hTZXQ8UmVm
PFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+PiBvdGhlckZldGNoZXM7CisgICAgZm9yIChhdXRvJiBm
ZXRjaFRhc2sgOiBtX29uZ29pbmdGZXRjaGVzLnZhbHVlcygpKSB7CisgICAgICAgIGlmIChmZXRj
aFRhc2stPnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgPT0gdGFzay5zZXJ2aWNlV29ya2VySWRl
bnRpZmllcigpKQorICAgICAgICAgICAgb3RoZXJGZXRjaGVzLmFkZChmZXRjaFRhc2suY29weVJl
ZigpKTsKKyAgICB9CisKKyAgICAvLyBTaWduYWwgbG9hZCBmYWlsdXJlIGZvciB0aGVtCisgICAg
Zm9yIChhdXRvJiBmZXRjaFRhc2sgOiBvdGhlckZldGNoZXMpIHsKKyAgICAgICAgaWYgKGZldGNo
VGFzay0+d2FzSGFuZGxlZCgpKQorICAgICAgICAgICAgZmV0Y2hUYXNrLT5mYWlsKHsgZXJyb3JE
b21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAiU2VydmljZSBXb3JrZXIgY29udGV4dCBjbG9z
ZWQiX3MgfSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZldGNoVGFzay0+ZGlkTm90SGFu
ZGxlKCk7CisKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9vbmdvaW5nRmV0Y2hJZGVudGlm
aWVycy50YWtlKGZldGNoVGFzay0+aWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9vbmdvaW5nRmV0
Y2hlcy5yZW1vdmUoaWRlbnRpZmllcik7CisgICAgfQorCisgICAgaWYgKG1fc2VydmVyKSB7Cisg
ICAgICAgIGlmIChhdXRvKiB3b3JrZXIgPSBtX3NlcnZlci0+d29ya2VyQnlJRCh0YXNrLnNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKCkpKSB7CisgICAgICAgICAgICB3b3JrZXItPnNldEhhc1RpbWVk
T3V0QW55RmV0Y2hUYXNrcygpOworICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkp
CisgICAgICAgICAgICAgICAgbV9zZXJ2ZXItPnN5bmNUZXJtaW5hdGVXb3JrZXIoKndvcmtlcik7
CisgICAgICAgIH0KKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGEzYzY0ZWQxMjc4ZGY2N2E5OWUwMDU5N2E0NDIw
ZWEyMTc2NDkyYWQuLjU3YmI0ZjMzNzYxMzIyODE0N2QxOTA0NjI0ZTQ0ZjAwNWZkOTM0MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTUwLDYgKzUwLDcgQEAgY2xhc3MgU2Vzc2lvbklEOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIE5ldHdvcmtQcm9jZXNzOworY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogCiBjbGFz
cyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gOiBwdWJsaWMgV2ViQ29yZTo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgpAQCAtNjMsNyArNjQsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCi0gICAgdm9pZCBzdGFydEZldGNoKFBBTDo6U2Vz
c2lvbklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiwgY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCBzdGFydEZldGNoKFBBTDo6U2Vzc2lvbklELCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb24mLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiwg
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNo
UmVzcG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6
RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKQEAg
LTcyLDYgKzczLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGhyb3R0bGVTdGF0ZShib29sIGlz
VGhyb3R0bGVhYmxlKTsKICAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9pc1Rocm90dGxlYWJsZTsgfQogCisgICAgdm9pZCBmZXRjaFRhc2tUaW1lZE91dChTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrJik7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
CiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXgg
Y2ZmZWIwZWY3YTJhMzU0YTViZjcxNWMyYTM1ZGI0MWFjYTc4MGYwNi4uNWUzY2VkZTMxYmExZmY4
MGJiZjQ5YTIzY2FhY2NjOTM2MWVjMzhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwCkBAIC00MDgsNiArNDA4LDE2IEBAIHZvaWQgV0tDb250ZXh0U2V0
Q3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5kbGVJZGVudGlmaWVyKFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmCiAgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnNldEN1c3RvbVdlYkNvbnRl
bnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcihXZWJLaXQ6OnRvSW1wbChuYW1lKS0+c3RyaW5nKCkp
OwogfQogCit2b2lkIFdLQ29udGV4dFNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0
aW5nKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBkb3VibGUgc2Vjb25kcykKK3sKKyAgICBXZWJL
aXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0U2VydmljZVdvcmtlclRpbWVvdXRGb3JUZXN0aW5n
KChTZWNvbmRzKXNlY29uZHMpOworfQorCit2b2lkIFdLQ29udGV4dFJlc2V0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dEZvclRlc3RpbmcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCit7CisgICAg
V2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPnJlc2V0U2VydmljZVdvcmtlclRpbWVvdXRGb3JU
ZXN0aW5nKCk7Cit9CisKIHZvaWQgV0tDb250ZXh0U2V0RGlza0NhY2hlU3BlY3VsYXRpdmVWYWxp
ZGF0aW9uRW5hYmxlZChXS0NvbnRleHRSZWYsIGJvb2wpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCmluZGV4IGVkOTY5MTA1YTE1NWJjNGUwM2FlOTg1ZmNi
OTIwZmZhZmJlYjI3OTcuLjcyODczNTU4NWI2ZDhkNDMxOGQ2Y2QyNmJlNTNiYzI2MWRlYTdkZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCkBAIC0xNzAsNiAr
MTcwLDkgQEAgV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UmVmcmVzaFBsdWdJbnMoV0tDb250ZXh0
UmVmIGNvbnRleHQpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRDdXN0b21XZWJDb250
ZW50U2VydmljZUJ1bmRsZUlkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3Ry
aW5nUmVmIG5hbWUpOwogCitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRTZXJ2aWNlV29ya2Vy
RmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgZG91YmxlIHNl
Y29uZHMpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0UmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hU
aW1lb3V0Rm9yVGVzdGluZyhXS0NvbnRleHRSZWYgY29udGV4dFJlZik7CisKICNpZmRlZiBfX2Nw
bHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKaW5kZXggMmI5M2FiMmI0NjU5OWUyMGIzZWQ4NTlmM2U3YmE0MzY1MjQwZWY1Yy4uMWE1
MmVmZThhMzU5OGIyMmE0MWNhMDhiMDFkNWEyNjM3MTU3ZWQxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTQzMSw2ICsxNDMxLDE2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rpbmco
UHJvY2Vzc0lEIHBpZCwgQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6c2V0U2VydmljZVdvcmtlclRpbWVvdXRGb3JUZXN0aW5nKFNlY29u
ZHMgc2Vjb25kcykKK3sKKyAgICBzZW5kU3luY1RvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpTZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhz
ZWNvbmRzKSwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTZXJ2aWNlV29ya2VyRmV0Y2hU
aW1lb3V0Rm9yVGVzdGluZzo6UmVwbHkoKSk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJl
c2V0U2VydmljZVdvcmtlclRpbWVvdXRGb3JUZXN0aW5nKCkKK3sKKyAgICBzZW5kU3luY1RvTmV0
d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldFNlcnZpY2VXb3Jr
ZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKCksIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVz
ZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZzo6UmVwbHkoKSk7Cit9CisKIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wg
YWx3YXlzVXNlQ29tcGxleFRleHQpCiB7CiAgICAgbV9hbHdheXNVc2VzQ29tcGxleFRleHRDb2Rl
UGF0aCA9IGFsd2F5c1VzZUNvbXBsZXhUZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKaW5kZXggMDIxMDE0ZWMxMjBjYjQyZDk4NWJlN2Q0N2Q1YWRhMWQxYTVmNjRl
Mi4uYmFjYThmZjBhODM3YThjOWZlNDhkN2NlMWU4N2E4YzRmZDY3MDY1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0yNTcsNiArMjU3LDggQEAgcHVibGlj
OgogICAgIFByb2Nlc3NJRCBwcmV3YXJtZWRQcm9jZXNzSWRlbnRpZmllcigpOwogICAgIHZvaWQg
YWN0aXZlUGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZyhQcm9jZXNzSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogICAgIGJvb2wgbmV0d29y
a1Byb2Nlc3NIYXNFbnRpdGxlbWVudEZvclRlc3RpbmcoY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCBzZXRTZXJ2aWNlV29ya2VyVGltZW91dEZvclRlc3RpbmcoU2Vjb25kcyk7CisgICAgdm9pZCBy
ZXNldFNlcnZpY2VXb3JrZXJUaW1lb3V0Rm9yVGVzdGluZygpOwogCiAgICAgV2ViUGFnZUdyb3Vw
JiBkZWZhdWx0UGFnZUdyb3VwKCkgeyByZXR1cm4gbV9kZWZhdWx0UGFnZUdyb3VwLmdldCgpOyB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1
ZWEyYjUxOTg0NjA4Yjg0ZDQ4N2QwNDQ3YmI0NjcwMmJlYmJiMjRiLi5iODUwYTU2MmU1NjU1ZmNi
MTg2YTZiZmMyOTUxYjhlMTJmMTJiMmFjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTktMTAtMDcgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2UgV29ya2VyIEZldGNo
IGV2ZW50cyBzaG91bGQgdGltZSBvdXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDIxODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0U2Vydmlj
ZVdvcmtlckZldGNoVGltZW91dCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFNlcnZp
Y2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3lu
Y2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOS0wOS0zMCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSWNv
bkRhdGFiYXNlIGlzIG5vdCB0aHJlYWQtc2FmZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5k
ZXggYTAxZDRmYjUzOTBkNGFkNGZjNTZmNmRmODY3MzY5YmY5YzY2YTY5My4uZjg5MmEwODY3Yzg4
ZjE1Y2MyYjZlZWI4M2JmNTQ2ZDYwODUwNTBiYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CkBAIC0zODgsNiArMzg4LDggQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogCiAgICAgdm9pZCBz
ZW5kRGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcoKTsKIAorICAg
IHZvaWQgc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dChkb3VibGUgc2Vjb25kcyk7CisKICAg
ICAvLyBXZWJBdXRoTgogICAgIHZvaWQgc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbihvYmplY3QgY29uZmlndXJhdGlvbik7CiAgICAgdm9pZCBhZGRUZXN0S2V5VG9LZXljaGFp
bihET01TdHJpbmcgcHJpdmF0ZUtleUJhc2U2NCwgRE9NU3RyaW5nIGF0dHJMYWJlbCwgRE9NU3Ry
aW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDgyZGI2NzQyOTk5Yzc3ZGJi
Y2ZjMzUyNDY1NDA2NTc0YmIzNjM1MTcuLjIwZTA5ZDI2MjM5NzMzOGZjMDUwMzZhYTAwNTlmNWE3
OTk5ZWQwNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjU0NSw2ICsyNTQ1LDEzIEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2VuZERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JUZXN0aW5nKCkKICAg
ICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiB9CiAK
K3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dChkb3VibGUgc2Vj
b25kcykKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTZXJ2aWNlV29ya2VyRmV0Y2hU
aW1lb3V0IikpOworICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiBtZXNzYWdlQm9keSA9IGFk
b3B0V0soV0tEb3VibGVDcmVhdGUoc2Vjb25kcykpOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VO
YW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisKIC8vIFdlYkF1dGhO
CiB2b2lkIFRlc3RSdW5uZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
SlNWYWx1ZVJlZiBjb25maWd1cmF0aW9uVmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDQ5ZTVmZjA4NzYwNjc5
ZjhmNzNiNTVjZWQ5ZmZjNzU1MGExZDZiZGYuLmY1ZmVhOTZjNjYzNzVlMTk3OTM2MGVlYjRlMDcz
NzQ5YWVhYzIyMWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00ODcsNiArNDg3LDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZW5kRGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcoKTsKIAor
ICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dChkb3VibGUgc2Vjb25kcyk7Cisg
ICAgCiAgICAgLy8gV2ViQXV0aE4KICAgICB2b2lkIHNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oSlNWYWx1ZVJlZik7CiAgICAgLy8gRklYTUUoMTg5ODc2KQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlN2RiZTM4NzdkYzEyZjdlMjg2
YTMzMmU3MThjNGI1MzRkOWNhMDM3Li44ZWY5NTZlOGY2ZDlmYzE1YTFmOGU5YmVmYWY0NzJjMjRh
NDllMTAwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAt
OTU4LDYgKzk1OCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3Rl
bnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAKICAgICBXS0NvbnRleHRD
bGVhckNhY2hlZENyZWRlbnRpYWxzKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0
KCkpOwogCisgICAgV0tDb250ZXh0UmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVz
dGluZyhUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpKTsKKwogICAgIFdLV2Vi
c2l0ZURhdGFTdG9yZUNsZWFyQWxsRGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9ucyhUZXN0Q29u
dHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpKTsKIAogICAgIGNsZWFySW5kZXhlZERhdGFiYXNl
cygpOwpAQCAtMzU5Miw2ICszNTk0LDExIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNlbmREaXNw
bGF5Q29uZmlndXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpCiAgICAgV0tTZW5kRGlz
cGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcocGxhdGZvcm1Db250ZXh0
KCkpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1l
b3V0Rm9yVGVzdGluZyhkb3VibGUgc2Vjb25kcykKK3sKKyAgICBXS0NvbnRleHRTZXRTZXJ2aWNl
V29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhwbGF0Zm9ybUNvbnRleHQoKSwgc2Vjb25kcyk7
Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oV0tEaWN0aW9uYXJ5UmVmIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihUZXN0Q29udHJv
bGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpLCBjb25maWd1cmF0aW9uKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBmZDFjNTJhYTQwYWYyNmQ0ZGQwZDg2MmEyMDM5
NjY4N2MyNjg3MjBmLi4wNzlmNzc0ZjU5NDM5YzA4M2M3NzI0MDc4OWJhYzdmNjk2ZThkZjE4IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yOTIsNiArMjkyLDgg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2VuZERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdl
ZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CiAKKyAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJGZXRjaFRp
bWVvdXRGb3JUZXN0aW5nKGRvdWJsZSBzZWNvbmRzKTsKKwogICAgIHZvaWQgc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihXS0RpY3Rpb25hcnlSZWYpOwogICAgIHZvaWQgYWRk
VGVzdEtleVRvS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdCBT
dHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CiAg
ICAgdm9pZCBjbGVhblVwS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0
cmluZyYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAppbmRleCBjNGQxOGFiZDlhNWM0YWMzM2JmMmFlMDI2YzI4ZmIwZTYyMmUz
YTczLi5kN2UwMGMyNDdkOWI5N2ZmZWRjMmNiNDAzM2FjMGJjNWNkYTViOWEyIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTU2NSw2ICsxNTY1LDEzIEBA
IFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0
U2VydmljZVdvcmtlckZldGNoVGltZW91dCIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJ
RChtZXNzYWdlQm9keSkgPT0gV0tEb3VibGVHZXRUeXBlSUQoKSk7CisgICAgICAgIFdLRG91Ymxl
UmVmIHNlY29uZHMgPSBzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4obWVzc2FnZUJvZHkpOworICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U2VydmljZVdvcmtlckZldGNoVGlt
ZW91dEZvclRlc3RpbmcoV0tEb3VibGVHZXRWYWx1ZShzZWNvbmRzKSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiVGVybWluYXRlTmV0d29ya1Byb2Nlc3MiKSkgewogICAgICAgICBBU1NF
UlQoIW1lc3NhZ2VCb2R5KTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnRl
cm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTk0N2I1NzY2Y2Q3MmJiYWZjYjcyM2Qx
YTc1YTcxZWNkNzE2OTk1NS4uNjFmODE3NjI4ZDMxMjk3MTNmMmY0ZGNiZTkzMDFhMzEwMWUxOTI5
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTEwLTA3ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBGZXRjaCBldmVudHMgc2hv
dWxkIHRpbWUgb3V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAyMTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0Lmh0dHBzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
YmFzaWMtdGltZW91dC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtdGltZW91dC13b3JrZXIuanM6IEFkZGVkLgor
ICAgICAgICAoZXZlbnQuZXZlbnQucmVxdWVzdC51cmwuaW5kZXhPZik6CisgICAgICAgICogaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLXRpbWVvdXQuanM6IEFkZGVk
LgorICAgICAgICAoYXN5bmMudGVzdC5maW5pc2hUaGlzVGVzdCk6CisgICAgICAgIChhc3luYy50
ZXN0LnRyeSk6CisgICAgICAgIChhc3luYy50ZXN0LnRyeS5jaGVja1N1Y2Nlc3NBZ2Fpbik6Cisg
ICAgICAgIChhc3luYy50ZXN0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9yZXNvdXJjZXMvc3VjY2VlZC1mYWxsYmFjay1jaGVjay5waHA6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy90aW1lb3V0LWZhbGxiYWNrLmh0
bWw6IEFkZGVkLgorCiAyMDE5LTA5LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiByZW1vdmluZyB0aGUgdGFyZ2V0IGVs
ZW1lbnQgd2hpbGUgYW5pbWF0aW5nIGl0cyBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0Lmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXRp
bWVvdXQuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ZjllMmQ3MjM2MTlkODkxNmRj
MDY1NGJhMGIxOTZlOWMwZWY5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0Lmh0dHBzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACisKK1VSTCAwIC0gaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My93b3JrZXJz
L3NlcnZpY2UvcmVzb3VyY2VzL3RpbWVvdXQtZmFsbGJhY2suaHRtbAorU3RhdHVzIGNvZGUgMCAt
IDIwMAorU291cmNlJyBoZWFkZXIgMCAtIG51bGwKK1VSTCAxIC0gaHR0cHM6Ly8xMjcuMC4wLjE6
ODQ0My93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3RpbWVvdXQtbm8tZmFsbGJhY2suaHRtbAor
U3RhdHVzIGNvZGUgMSAtIDQwNAorU291cmNlJyBoZWFkZXIgMSAtIG51bGwKK1VSTCAyIC0gaHR0
cHM6Ly8xMjcuMC4wLjE6ODQ0My93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3N1Y2NlZWQtZmFs
bGJhY2stY2hlY2sucGhwCitTdGF0dXMgY29kZSAyIC0gMjAwCitTb3VyY2UnIGhlYWRlciAyIC0g
bmV0d29yaworVVJMIDMgLSBodHRwczovLzEyNy4wLjAuMTo4NDQzL3dvcmtlcnMvc2VydmljZS9y
ZXNvdXJjZXMvc3VjY2VlZC1mYWxsYmFjay1jaGVjay5waHAKK1N0YXR1cyBjb2RlIDMgLSAyMDAK
K1NvdXJjZScgaGVhZGVyIDMgLSBuZXR3b3JrCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXRpbWVvdXQuaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXRpbWVvdXQuaHR0cHMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNmFjZGM2OGYxMjllNGFhMTU3OGE4MDRmY2JhYTQ3M2E1NTQ5MDliCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
YmFzaWMtdGltZW91dC5odHRwcy5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYmFzaWMtdGltZW91dC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtdGltZW91dC13b3JrZXIuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtdGlt
ZW91dC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM1YTIwYjIxNGU1NGRiY2NhOTVmNDI0ODFiOGVm
OGVhZGFhMzlmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy10aW1lb3V0LXdvcmtlci5qcwpAQCAtMCwwICsx
LDYgQEAKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigiZmV0Y2giLCAoZXZlbnQpID0+IHsKKyAgICBp
ZiAoZXZlbnQucmVxdWVzdC51cmwuaW5kZXhPZigidGltZW91dCIpICE9PSAtMSkgeworICAgICAg
ICB3aGlsZSAoMSkgeyB9CisgICAgfSBlbHNlCisgICAgICAgIGV2ZW50LnJlc3BvbmRXaXRoKG5l
dyBSZXNwb25zZShudWxsLCB7IHN0YXR1czogMjAwLCBzdGF0dXNUZXh0OiAiSGVsbG8gZnJvbSBz
ZXJ2aWNlIHdvcmtlciIsIGhlYWRlcnM6IFtbIlNvdXJjZSIsICJTZXJ2aWNlV29ya2VyIl1dIH0p
KTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL2Jhc2ljLXRpbWVvdXQuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtdGltZW91dC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWJi
Y2MyYzZmM2RkNTVkMWQwNjQ0OTU3YmU0YWQ1ZWM4YjYwOWNjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLXRp
bWVvdXQuanMKQEAgLTAsMCArMSw3NiBAQAorYXN5bmMgZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
dmFyIHVybFJlc3VsdHMgPSBuZXcgQXJyYXk7CisgICAgdmFyIHN0YXR1c1Jlc3VsdHMgPSBuZXcg
QXJyYXk7CisgICAgdmFyIGhlYWRlclJlc3VsdHMgPSBuZXcgQXJyYXk7CisKKyAgICBmdW5jdGlv
biBmaW5pc2hUaGlzVGVzdCgpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVy
bFJlc3VsdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxvZygiVVJMICIgKyBpICsgIiAt
ICIgKyB1cmxSZXN1bHRzW2ldKTsKKyAgICAgICAgICAgIGxvZygiU3RhdHVzIGNvZGUgIiArIGkg
KyAiIC0gIiArIHN0YXR1c1Jlc3VsdHNbaV0pOworICAgICAgICAgICAgbG9nKCJTb3VyY2UnIGhl
YWRlciAiICsgaSArICIgLSAiICsgaGVhZGVyUmVzdWx0c1tpXSk7CisgICAgICAgIH0KKyAgICAg
ICAgZmluaXNoU1dUZXN0KCk7CisgICAgfQorICAgIAorICAgIHRyeSB7CisgICAgICAgIHZhciBm
cmFtZSA9IGF3YWl0IGludGVyY2VwdGVkRnJhbWUoInJlc291cmNlcy9iYXNpYy10aW1lb3V0LXdv
cmtlci5qcyIsICIvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy8iKTsKKyAgICAgICAgdmFyIGZl
dGNoID0gZnJhbWUuY29udGVudFdpbmRvdy5mZXRjaDsKKworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFNlcnZpY2VXb3JrZXJGZXRjaFRp
bWVvdXQoMCk7CisgICAgICAgIAorICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHR3byBmZXRjaGVz
IHNob3VsZCB0aW1lIG91dCBpbW1lZGlhdGVseQorICAgICAgICBmZXRjaCgidGltZW91dC1mYWxs
YmFjay5odG1sIikudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgdXJsUmVz
dWx0c1swXSA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgICAgIHN0YXR1c1Jlc3VsdHNbMF0gPSBy
ZXNwb25zZS5zdGF0dXM7CisgICAgICAgICAgICBoZWFkZXJSZXN1bHRzWzBdID0gcmVzcG9uc2Uu
aGVhZGVycy5nZXQoIlNvdXJjZSIpOyAgICAgICAKKyAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3Ip
IHsKKyAgICAgICAgICAgIGxvZyhlcnJvcik7CisgICAgICAgIH0pOworCisgICAgICAgIGZldGNo
KCJ0aW1lb3V0LW5vLWZhbGxiYWNrLmh0bWwiKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7Cisg
ICAgICAgICAgICB1cmxSZXN1bHRzWzFdID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgc3Rh
dHVzUmVzdWx0c1sxXSA9IHJlc3BvbnNlLnN0YXR1czsKKyAgICAgICAgICAgIGhlYWRlclJlc3Vs
dHNbMV0gPSByZXNwb25zZS5oZWFkZXJzLmdldCgiU291cmNlIik7ICAgCisgICAgICAgIH0sIGZ1
bmN0aW9uKGVycm9yKSB7CisgICAgICAgICAgICBsb2coZXJyb3IpOworICAgICAgICB9KTsKKwor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNl
dFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoNjApOworCisgICAgICAgIC8vIFRoZSBzZXJ2aWNl
IHdvcmtlciBrbm93cyBob3cgdG8gaGFuZGxlIHRoZSBmb2xsb3dpbmcgZmV0Y2ggKmFuZCogaGFz
IDYwIHNlY29uZHMgdG8gZG8gc28uCisgICAgICAgIC8vIEJ1dCB3aWxsIGJlIGNhbmNlbGxlZCB3
aXRoIHRoZSBhYm92ZSBmZXRjaGVzIHNpbmNlIHdlJ3JlIHRlcm1pbmF0aW5nIHRoZSBzZXJ2aWNl
IHdvcmtlciwgYW5kIAorICAgICAgICAvLyB0aGVyZWZvcmUgaXQgd2lsbCB0aGVuIGZhbGxiYWNr
IHRvIHRoZSBuZXR3b3JrLgorICAgICAgICBmZXRjaCgic3VjY2VlZC1mYWxsYmFjay1jaGVjay5w
aHAiKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAgICAgICAgICB1cmxSZXN1bHRzWzJd
ID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgc3RhdHVzUmVzdWx0c1syXSA9IHJlc3BvbnNl
LnN0YXR1czsKKyAgICAgICAgICAgIGhlYWRlclJlc3VsdHNbMl0gPSByZXNwb25zZS5oZWFkZXJz
LmdldCgiU291cmNlIik7ICAgCisgICAgICAgICAgICBzZXRUaW1lb3V0KGNoZWNrU3VjY2Vzc0Fn
YWluLCAwKTsKKyAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIGxvZyhl
cnJvcik7CisgICAgICAgICAgICBmaW5pc2hTV1Rlc3QoKTsKKyAgICAgICAgfSk7CisgICAgICAg
IAorICAgICAgICAvLyBOb3cgd2UgY2FuIGZldGNoIHRoYXQgc2FtZSBVUkwgYWdhaW4sIHdoaWNo
ICpjb3VsZCogcmVsYXVuY2ggdGhlIHNlcnZpY2Ugd29ya2VyIGFuZCBoYW5kbGUgaXQgdGhlcmUs
IGJ1dCBmb3Igbm93IHRoaXMgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9uIGlzIGluZXJ0IGFu
ZCBmZXRjaGVzIHRocm91Z2ggaXQgd2lsbCBnbyB0byB0aGUgbmV0d29yayBpbnN0ZWFkLgorICAg
ICAgICAvLyBJJ20gbGVhdmluZyB0aGlzIGluIHRvIGNvdmVyIGZ1dHVyZSBjYXNlcyB3aGVyZSB3
ZSBkbyByZWxhdW5jaCB0aGUgU1cgdG8gaGFuZGxlIGl0LgorICAgICAgICBmdW5jdGlvbiBjaGVj
a1N1Y2Nlc3NBZ2FpbigpIHsKKyAgICAgICAgICAgIGZldGNoKCJzdWNjZWVkLWZhbGxiYWNrLWNo
ZWNrLnBocCIpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAgICAgICAgICB1cmxS
ZXN1bHRzWzNdID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgICAgIHN0YXR1c1Jlc3VsdHNb
M10gPSByZXNwb25zZS5zdGF0dXM7CisgICAgICAgICAgICAgICAgaGVhZGVyUmVzdWx0c1szXSA9
IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCJTb3VyY2UiKTsgICAKKyAgICAgICAgICAgICAgICBmaW5p
c2hUaGlzVGVzdCgpOworICAgICAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAg
ICAgICAgICBsb2coZXJyb3IpOworICAgICAgICAgICAgICAgIGZpbmlzaFNXVGVzdCgpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgbG9nKCJH
b3QgZXhjZXB0aW9uOiAiICsgZSk7CisgICAgICAgIGZpbmlzaFNXVGVzdCgpOworICAgIH0KK30K
KwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvcmVzb3VyY2VzL3N1Y2NlZWQtZmFsbGJhY2stY2hlY2sucGhwIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3N1Y2NlZWQtZmFsbGJhY2stY2hl
Y2sucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmYxYThmMGM3MTcxN2I3MjlkYzBjMjMyNWE3NjA4NWE2OGZhOGVm
MmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9yZXNvdXJjZXMvc3VjY2VlZC1mYWxsYmFjay1jaGVjay5waHAKQEAgLTAsMCArMSwzIEBA
Cis8P3BocAorICAgIGhlYWRlcignU291cmNlOiBuZXR3b3JrJyk7Cis/PlN1Y2Nlc3MhClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3RpbWVvdXQtZmFsbGJhY2suaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy90aW1lb3V0LWZhbGxi
YWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODk0YjZiZWM1OWUyMDNiNWRhOGRiNWFhMTU4ZmVlNTQzMmYz
YmRiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3Jlc291cmNlcy90aW1lb3V0LWZhbGxiYWNrLmh0bWwKQEAgLTAsMCArMSBAQAorVGlt
ZW91dCByZXNvdXJjZSBmZXRjaGVkIGZyb20gbmV0d29yawpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380362</attachid>
            <date>2019-10-07 14:32:50 -0700</date>
            <delta_ts>2019-10-08 10:12:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202188-20191007143249.patch</filename>
            <type>text/plain</type>
            <size>44592</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc4Y2E3YjJhOTE3NDNh
ZjRhYmE2ZmJjNjg3YTBhNTVlYTJkYjUyYi4uYmI1OTliZDE1NjE0MmE0NzhmNTFjZmFhM2M0OGQ1
NzI4OGVhYjZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEwLTA3ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBG
ZXRjaCBldmVudHMgc2hvdWxkIHRpbWUgb3V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFz
aWMtdGltZW91dC5odHRwcy5odG1sCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnNldEhhc1RpbWVkT3V0
QW55RmV0Y2hUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6aGFzVGlt
ZWRPdXRBbnlGZXRjaFRhc2tzIGNvbnN0KToKKwogMjAxOS0xMC0wNyAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBmb2N1cyBwc2V1ZG8gY2xhc3Mgc2hvdWxkIG1h
dGNoIGEgc2hhZG93IGhvc3Qgd2hvc2Ugc2hhZG93IHRyZWUgY29udGFpbnMgdGhlIGZvY3VzZWQg
ZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCA4YTIxNWRjOTk2NWVlMmU0OThhMjc0ZDA4ZTIwYWUyYTZjNjM1
OWY1Li42ZjE2ZDc5YjA4ZGE2N2I4OTFmODEzMzEwMzE4YzBlMWIzOTYyNjEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU3IEBACisyMDE5LTEwLTA3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBGZXRjaCBldmVudHMgc2hvdWxkIHRpbWUg
b3V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAy
MTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hl
biB3ZSBzdGFydCBhIGZldGNoIHRhc2sgaW4gdGhlIHNlcnZlciwgd2UgYWxzbyBzdGFydCBhIHRp
bWVvdXQgb24gdGhhdCBmZXRjaCB0YXNrLgorICAgICAgICAKKyAgICAgICAgIlRpbWUgb3V0IiBt
ZWFucyB0aGUgZmV0Y2ggdGFzayBtdXN0IGNvbnRpbnVlIHRvIG1ha2UgcHJvZ3Jlc3MgYXQgdGhl
IGdpdmVuIGZyZXF1ZW5jeSAob25jZSBldmVyeSA2MCBzZWNvbmRzIGJ5IGRlZmF1bHQpCisKKyAg
ICAgICAgSWYgYW55IGdpdmVuIGZldGNoIHRhc2sgdGltZXMgb3V0IGluIGEgc2VydmljZSB3b3Jr
ZXIgaW5zdGFuY2UsIHRoYXQgaW5zdGFuY2UgbG9zZXMgdGhlIHJpZ2h0IHRvIGhhbmRsZSBmZXRj
aGVzLgorICAgICAgICAKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRTZXJ2aWNlV29ya2VyRmV0
Y2hUaW1lb3V0Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpy
ZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzczo6c2VydmljZVdvcmtlckZldGNoVGltZW91dCBjb25zdCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJl
ZGlyZWN0UmVzcG9uc2UpOiAKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6ZGlkUmVjZWl2ZVJlc3BvbnNlKTogCisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKTogCisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YSk6IAorICAgICAgICAoV2ViS2l0OjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGaW5pc2gpOiAKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6ZGlkRmFpbCk6IAorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUpOiAKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAgKFdlYktpdDo6
U2VydmljZVdvcmtlckZldGNoVGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6c2VydmljZVdvcmtlcklkZW50aWZpZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp3YXNIYW5kbGVkIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNo
VGFzayk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVy
Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNo
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmZXRj
aFRhc2tUaW1lZE91dCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0U2VydmljZVdvcmtlckZl
dGNoVGltZW91dEZvclRlc3RpbmcpOgorICAgICAgICAoV0tDb250ZXh0UmVzZXRTZXJ2aWNlV29y
a2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFNlcnZpY2VXb3JrZXJUaW1lb3V0Rm9y
VGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXNldFNlcnZpY2VX
b3JrZXJUaW1lb3V0Rm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisKIDIwMTktMTAtMDcgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFByb3ZpZGUgb3B0aW9ucyBmb3IgRFRUWiB0byBoYXBwZW4gaW4gbW9yZSBzaXR1YXRp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmgKaW5kZXggZjQyYzFhZmFmYzJmZjAxMDZjZWU2NzBjODVkNGMwOWFkYmIxYTZhYS4uNDYwMTMx
NzYxNmM4MTY3NDhkMjA4MDBmMjYwYjM1Mjg1NzQ4ODE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTQ4LDcgKzE0OCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBl
LCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4m
Jik7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKLSAgICB2b2lk
IHN5bmNUZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGZp
cmVJbnN0YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2
ZW50KFNXU2VydmVyV29ya2VyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCA2NzY3ZmM2ZjBhNmIxNmMz
NDMyOWNiYWI1M2NiMDI2NGIyMWQyNDYxLi4xYjk5Y2M5MjcxOTFiYzUyZTZiN2U1ZTUxODc3YjFk
NDQ4MTFmMDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMTYsNiArMTE2LDkgQEAgcHVibGljOgogICAg
IAogICAgIFNXU2VydmVyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpb24oKSBjb25zdDsKIAorICAg
IHZvaWQgc2V0SGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzKCkgeyBtX2hhc1RpbWVkT3V0QW55RmV0
Y2hUYXNrcyA9IHRydWU7IH0KKyAgICBib29sIGhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygpIGNv
bnN0IHsgcmV0dXJuIG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzOyB9CisKIHByaXZhdGU6CiAg
ICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKIApAQCAtMTM2LDYgKzEzOSw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoYm9vbCk+PiBtX3doZW5BY3RpdmF0ZWRIYW5kbGVyczsK
ICAgICBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dD4gbV9zY3JpcHRSZXNvdXJjZU1hcDsKICAgICBib29sIG1fc2hvdWxkU2tpcEhhbmRsZUZldGNo
OworICAgIGJvb2wgbV9oYXNUaW1lZE91dEFueUZldGNoVGFza3MgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAzMzQxYWVkOGMyZWM5NTBlN2ZhMDM0MTI2NDRlOTYy
N2ZkMmE1NTVlLi5jNGJhNTQ0ZTM1M2JlYzhjYjVkYzg0YmQ3MzU5YmY2NGVhOWIyM2FiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAt
MjYwMSw0ICsyNjAxLDE3IEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBOZXR3b3Jr
UHJvY2Vzczo6d2ViUHJvY2Vzc0Nvbm5lY3Rpb24oUHJvY2Vzc0lkZW50CiAgICAgcmV0dXJuIG1f
d2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsKIH0KIAorY29uc3QgU2Vjb25k
cyBOZXR3b3JrUHJvY2Vzczo6ZGVmYXVsdFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQgPSA3MF9z
Owordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRl
c3RpbmcoU2Vjb25kcyB0aW1lb3V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0ID0gdGltZW91
dDsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtX3NlcnZpY2VXb3JrZXJGZXRj
aFRpbWVvdXQgPSBkZWZhdWx0U2VydmljZVdvcmtlckZldGNoVGltZW91dDsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAyZjcwNDMwOGVkZmU5NTNh
NGM4ZTdiMGQwNzM4MGMxZTQ1MWZmYjZkLi5iZjBkMTU5ODEyY2VmNGFhNzdmZTFjOTA1YmZhNzg4
ZTZlNzZkODg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCkBAIC0zNDMsNiArMzQzLDEwIEBAIHB1YmxpYzoKICAgICBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcyogd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpIGNvbnN0OwogICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5JiBt
ZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgpIHsgcmV0dXJuIG1fbWVzc2FnZVBvcnRDaGFubmVs
UmVnaXN0cnk7IH0KIAorICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRl
c3RpbmcoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJl
c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICBTZWNvbmRzIHNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSBjb25z
dCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQ7IH0KKwogcHJpdmF0ZToKICAg
ICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4gcGxhdGZvcm1DcmVhdGVEZWZhdWx0U3RvcmFnZVNlc3Npb24o
KSBjb25zdDsKQEAgLTU2MCw2ICs1NjQsOSBAQCBwcml2YXRlOgogCiAgICAgT3B0aW9uU2V0PE5l
dHdvcmtDYWNoZTo6Q2FjaGVPcHRpb24+IG1fY2FjaGVPcHRpb25zOwogICAgIFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5IG1fbWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnk7CisK
KyAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyBkZWZhdWx0U2VydmljZVdvcmtlckZldGNoVGltZW91
dDsKKyAgICBTZWNvbmRzIG1fc2VydmljZVdvcmtlckZldGNoVGltZW91dCB7IGRlZmF1bHRTZXJ2
aWNlV29ya2VyRmV0Y2hUaW1lb3V0IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCmluZGV4IDUxMzcxZDY3MmM3MzEyOThmZWIxMjY3M2RlNzMwMDM1OTA2YmJkM2Yu
LmJiNjZmM2M0NWFhMzViM2FiN2Y3M2VmY2ZlMzk4OTgyMmQwM2U5ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMTYzLDQgKzE2Myw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBTZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwpIC0+ICgpIEFzeW5jCiAgICAgTWFy
a0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBHZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJLaXQ6OkxvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4gZGV0YWlscykgQXN5bmMKKworICAgIFNldFNl
cnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKFNlY29uZHMgc2Vjb25kcykgLT4gKCkg
U3luY2hyb25vdXMKKyAgICBSZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5n
KCkgLT4gKCkgU3luY2hyb25vdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmNwcAppbmRleCA1NTNjYmFkMTliYzVhMTk3ZTA2MjUyNzUwZjI4MmNlM2IwNDE2ZmIwLi4w
MDRhOTY3Y2Y5NzljYWE0MTg1YWRhOWY2ZmE3NTRlNTE0MjY4MTc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaE1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgiCiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9M
T0dfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3Jr
ZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJH
U19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxF
QVNFX0xPR19FUlJPUl9JRihtX3Nlc3Npb25JRC5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwg
U2VydmljZVdvcmtlciwgIiVwIC0gU2VydmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMs
ICMjX19WQV9BUkdTX18pCkBAIC00Miw0MyArNDQsODUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNv
bnRleHRDb25uZWN0aW9uLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0
KQorICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9jb25uZWN0aW9uKG1ha2VX
ZWFrUHRyKGNvbm5lY3Rpb24pKQorICAgICwgbV9jb250ZXh0Q29ubmVjdGlvbihjb250ZXh0Q29u
bmVjdGlvbikKKyAgICAsIG1faWRlbnRpZmllciB7IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpLCBm
ZXRjaElkZW50aWZpZXIgfQorICAgICwgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcihzZXJ2aWNl
V29ya2VySWRlbnRpZmllcikKKyAgICAsIG1fdGltZW91dCh0aW1lb3V0KQorICAgICwgbV90aW1l
b3V0VGltZXIoKnRoaXMsICZTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJl
ZCkKK3sKKyAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QobV90aW1lb3V0KTsKK30KKwog
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZTogJXMiLCBtX2lkZW50aWZpZXIuZmV0
Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2
ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlm
aWVyKTsKKyAgICBtX3dhc0hhbmRsZWQgPSB0cnVlOworICAgIGlmIChtX2Nvbm5lY3Rpb24pCisg
ICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1faWRlbnRpZmll
ci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBu
ZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKIHsKLSAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJl
c3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlm
aWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBtX3dhc0hhbmRsZWQgPSB0
cnVlOworICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChtX3RpbWVvdXQpOworICAgIGlm
IChtX2Nvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVyLmZldGNo
SWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0
T25lU2hvdChtX3RpbWVvdXQpOworICAgIGlmIChtX2Nvbm5lY3Rpb24pCisgICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNl
aXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRjaElk
ZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVG
b3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsKLSAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
UmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmll
cik7CisgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KG1fdGltZW91dCk7CisgICAgaWYg
KG1fY29ubmVjdGlvbikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVGb3JtRGF0YSB7IGZvcm1EYXRhIH0sIG1f
aWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmRpZEZpbmlzaCgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmlu
aXNoRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlm
aWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmluaXNoIHsgfSwgbV9p
ZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOwor
ICAgIGlmICghbV9kaWRSZWFjaFRlcm1pbmFsU3RhdGUgJiYgbV9jb25uZWN0aW9uKQorICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkRmluaXNoIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgbV9kaWRS
ZWFjaFRlcm1pbmFsU3RhdGUgPSB0cnVlOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRCgiZGlkRmFpbEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwg
bV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OkRpZEZhaWwgeyBlcnJvciB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsK
KyAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CisgICAgaWYgKCFtX2RpZFJlYWNoVGVybWluYWxT
dGF0ZSAmJiBtX2Nvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9pZGVudGlm
aWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgbV9kaWRSZWFjaFRlcm1pbmFsU3RhdGUgPSB0cnVl
OwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSgpCiB7CiAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6IGZldGNoSWRlbnRp
ZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllcik7CisgICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlmICghbV9kaWRSZWFj
aFRlcm1pbmFsU3RhdGUgJiYgbV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwg
bV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgbV9kaWRSZWFjaFRlcm1pbmFsU3Rh
dGUgPSB0cnVlOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnRpbWVvdXRUaW1l
ckZpcmVkKCkKK3sKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ0aW1lb3V0VGltZXJGaXJl
ZDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICghbV93YXNIYW5kbGVkKQorICAg
ICAgICBkaWROb3RIYW5kbGUoKTsKKyAgICBlbHNlCisgICAgICAgIGRpZEZhaWwoeyBlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJTZXJ2aWNlIFdvcmtlciBmZXRjaCB0aW1lZCBv
dXQiX3MgfSk7CisKKyAgICBtX2NvbnRleHRDb25uZWN0aW9uLmZldGNoVGFza1RpbWVkT3V0KCp0
aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suaAppbmRleCBmMTE2Y2M3NDllNmMwNTc3YTk5ZDA5NTQ0MWFhODJkOTZmZThj
NDg3Li42YWRkMGQwZTdmZDUzOTM2ZDFmOGNiMWUxZjgzOGFhOWJhMjNiMjE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgPFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQ2LDEwICs0
NywxNyBAQCBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K2NsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKK2NsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjsKKwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzayA6IHB1YmxpYyBSZWZD
b3VudGVkPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IGNyZWF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyIGZldGNoSWRlbnRpZmllcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrKHNlc3Npb25JRCwgV1RGTW92ZShjb25uZWN0aW9uKSwgY29ubmVjdGlvbklk
ZW50aWZpZXIsIGZldGNoSWRlbnRpZmllcikpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJncz4gc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBjcmVhdGUoQXJncyYmLi4u
IGFyZ3MpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KIAorICAgIHZv
aWQgZGlkTm90SGFuZGxlKCk7CiAgICAgdm9pZCBmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKSB7IGRpZEZhaWwoZXJyb3IpOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIApAQCAtNjcsMTMgKzc1LDEx
IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyJiBzZXJ2aWNlV29ya2VySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7IH0KKyAgICBib29sIHdhc0hhbmRsZWQoKSBj
b25zdCB7IHJldHVybiBtX3dhc0hhbmRsZWQ7IH0KIAogcHJpdmF0ZToKLSAgICBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNv
bm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlm
aWVyKQotICAgICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKLSAgICAgICAgLCBtX2Nvbm5l
Y3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKLSAgICAgICAgLCBtX2lkZW50aWZpZXIgeyBjb25u
ZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyIH0KLSAgICB7IH0KKyAgICBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrKFBBTDo6U2Vzc2lvbklELCBXZWJTV1NlcnZlckNvbm5lY3Rpb24mLCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQpOwogCiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1l
c3NhZ2UpOwpAQCAtODEsMTEgKzg3LDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZl
Rm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmlu
aXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
LSAgICB2b2lkIGRpZE5vdEhhbmRsZSgpOworICAgIHZvaWQgdGltZW91dFRpbWVyRmlyZWQoKTsK
IAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwotICAgIFJlZjxJUEM6OkNvbm5lY3Rp
b24+IG1fY29ubmVjdGlvbjsKKyAgICBXZWFrUHRyPFdlYlNXU2VydmVyQ29ubmVjdGlvbj4gbV9j
b25uZWN0aW9uOworICAgIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgbV9jb250ZXh0
Q29ubmVjdGlvbjsKICAgICBJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOworICAgIFNl
Y29uZHMgbV90aW1lb3V0OworICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZW91dFRpbWVyOworICAg
IGJvb2wgbV93YXNIYW5kbGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGlkUmVhY2hUZXJtaW5h
bFN0YXRlIHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2Vy
dmljZVdvcmtlckZldGNoVGFzazo6SWRlbnRpZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6SWRlbnRpZmllciYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAKaW5kZXggNzY3NDE0MGYxNzVjNDU3MDhiNTI1MTVjN2M0NWU1ODY2ZmYyOGUyNy4uMDEy
ZGFjMzMzY2IzZTFjMGNhMTBlNGNjNjllYjdlNmQwMTYzZDEyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciBzZXJ2aQogICAgICAgICB9CiAKICAgICAgICAgYXV0byogd29ya2VyID0gc2VydmVyKCku
d29ya2VyQnlJRChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgICAgIGlmICghd29ya2Vy
KSB7CisgICAgICAgIGlmICghd29ya2VyIHx8IHdvcmtlci0+aGFzVGltZWRPdXRBbnlGZXRjaFRh
c2tzKCkpIHsKICAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlm
aWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTg4LDkgKzE4OCw5IEBA
IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAKICAgICAgICAgICAgIGlmIChjb250ZXh0Q29ubmVj
dGlvbikgewogICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJzdGFydEZldGNoOiBTdGFydGluZyBmZXRjaCAlcyB2aWEgc2VydmljZSB3b3Jr
ZXIgJXMiLCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
PigqY29udGV4dENvbm5lY3Rpb24pLnN0YXJ0RmV0Y2goc2Vzc2lvbklEKCksIG1fY29udGVudENv
bm5lY3Rpb24uZ2V0KCksIHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEsIHJlZmVycmVy
KTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pLnN0YXJ0RmV0Y2goc2Vzc2lvbklEKCksICp0aGlz
LCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRp
b25zLCBmb3JtRGF0YSwgcmVmZXJyZXIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgi
c3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVzZSBmYWls
ZWQgdG8gcnVuIHNlcnZpY2Ugd29ya2VyIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAl
cyBEaWROb3RIYW5kbGUgYmVjYXVzZSBmYWlsZWQgdG8gcnVuIHNlcnZpY2Ugd29ya2VyLCBvciBz
ZXJ2aWNlIHdvcmtlciBoYXMgaGFkIHRpbWVkIG91dCBmZXRjaCB0YXNrcyIsIGZldGNoSWRlbnRp
Zmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgbV9j
b250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNo
OjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCA4Y2Q0OTVj
MWM5MGM3MTdkODNkZGY3YjNmMTNmNjUxZGJlYTZmZDI4Li43YmQyYTMzY2I1OGEzMDc3MGUzOThi
ZDA0OWU1M2UyMjQyM2EzZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5o
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TV1NlcnZlci5oPgogI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVu
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCmluZGV4IDU4MDk0ZDYyOGNiMDgzMDViOTc1YTgxMTkyZGNjYjNjYmM5NDRlMWEuLjRjZGY1
NTY5NmY0MTk5YjdjYjE5NDZmMzUyMjFlODdjNjZjNGRlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0zNSw2ICszNSw3IEBA
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oPgogCkBAIC0xNTEsMTQgKzE1MiwxNSBAQCB2b2lkIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlUHJvY2VzcygpKTsKIH0KIAot
dm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbnRlbnRDb25uZWN0aW9u
LCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIgY29udGVudEZldGNoSWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQordm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJTV1NlcnZlckNvbm5lY3Rpb24mIGNvbnRlbnRDb25uZWN0aW9uLCBGZXRj
aElkZW50aWZpZXIgY29udGVudEZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogeworICAgIGF1dG8gc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgPSBjb250ZW50Q29ubmVjdGlvbi5pZGVudGlmaWVyKCk7CiAgICAg
YXV0byBmZXRjaElkZW50aWZpZXIgPSBGZXRjaElkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAg
Ci0gICAgbV9vbmdvaW5nRmV0Y2hlcy5hZGQoZmV0Y2hJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpjcmVhdGUoc2Vzc2lvbklELCBXVEZNb3ZlKGNvbnRlbnRDb25uZWN0aW9uKSwg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXIpKTsKIAot
ICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hJZGVudGlmaWVycy5jb250YWlucyh7c2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXJ9KSk7Ci0gICAgbV9vbmdv
aW5nRmV0Y2hJZGVudGlmaWVycy5hZGQoe3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb250
ZW50RmV0Y2hJZGVudGlmaWVyfSwgZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBtX29uZ29pbmdGZXRj
aGVzLmFkZChmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNyZWF0ZShz
ZXNzaW9uSUQsIGNvbnRlbnRDb25uZWN0aW9uLCAqdGhpcywgY29udGVudEZldGNoSWRlbnRpZmll
ciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1fbmV0d29ya1Byb2Nlc3MtPnNlcnZpY2VXb3Jr
ZXJGZXRjaFRpbWVvdXQoKSkpOworCisgICAgQVNTRVJUKCFtX29uZ29pbmdGZXRjaElkZW50aWZp
ZXJzLmNvbnRhaW5zKHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElk
ZW50aWZpZXIgfSkpOworICAgIG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuYWRkKHsgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXIgfSwgZmV0Y2hJZGVu
dGlmaWVyKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpTdGFydEZldGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGRhdGEsIHJl
ZmVycmVyIH0pOwogfQpAQCAtMjA0LDYgKzIwNiw0MyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoVGFza01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JgogICAgIH0KIH0KIAordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZldGNo
VGFza1RpbWVkT3V0KFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2spCit7CisgICAgQVNTRVJU
KG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnModGFzay5pZGVudGlmaWVyKCkpKTsK
KyAgICBhdXRvIHRha2VuSWRlbnRpZmllciA9IG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMudGFr
ZSh0YXNrLmlkZW50aWZpZXIoKSk7CisKKyAgICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hlcy5jb250
YWlucyh0YWtlbklkZW50aWZpZXIpKTsKKyAgICBhdXRvIHRha2VuVGFzayA9IG1fb25nb2luZ0Zl
dGNoZXMudGFrZSh0YWtlbklkZW50aWZpZXIpOworICAgIEFTU0VSVCh0YWtlblRhc2spOworICAg
IEFTU0VSVCh0YWtlblRhc2stPnB0cigpID09ICZ0YXNrKTsKKworICAgIC8vIEdhdGhlciBhbGwg
b3RoZXIgZmV0Y2hlcyBpbiB0aGlzIHNlcnZpY2Ugd29ya2VyCisgICAgSGFzaFNldDxSZWY8U2Vy
dmljZVdvcmtlckZldGNoVGFzaz4+IG90aGVyRmV0Y2hlczsKKyAgICBmb3IgKGF1dG8mIGZldGNo
VGFzayA6IG1fb25nb2luZ0ZldGNoZXMudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKGZldGNoVGFz
ay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIoKSA9PSB0YXNrLnNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKCkpCisgICAgICAgICAgICBvdGhlckZldGNoZXMuYWRkKGZldGNoVGFzay5jb3B5UmVmKCkp
OworICAgIH0KKworICAgIC8vIFNpZ25hbCBsb2FkIGZhaWx1cmUgZm9yIHRoZW0KKyAgICBmb3Ig
KGF1dG8mIGZldGNoVGFzayA6IG90aGVyRmV0Y2hlcykgeworICAgICAgICBpZiAoZmV0Y2hUYXNr
LT53YXNIYW5kbGVkKCkpCisgICAgICAgICAgICBmZXRjaFRhc2stPmZhaWwoeyBlcnJvckRvbWFp
bldlYktpdEludGVybmFsLCAwLCB7IH0sICJTZXJ2aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJf
cyB9KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmV0Y2hUYXNrLT5kaWROb3RIYW5kbGUo
KTsKKworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJz
LnRha2UoZmV0Y2hUYXNrLT5pZGVudGlmaWVyKCkpOworICAgICAgICBtX29uZ29pbmdGZXRjaGVz
LnJlbW92ZShpZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICBpZiAobV9zZXJ2ZXIpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHdvcmtlciA9IG1fc2VydmVyLT53b3JrZXJCeUlEKHRhc2suc2VydmljZVdv
cmtlcklkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgICAgIHdvcmtlci0+c2V0SGFzVGltZWRPdXRB
bnlGZXRjaFRhc2tzKCk7CisgICAgICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSkKKyAg
ICAgICAgICAgICAgICBtX3NlcnZlci0+c3luY1Rlcm1pbmF0ZVdvcmtlcigqd29ya2VyKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKaW5kZXggYTNjNjRlZDEyNzhkZjY3YTk5ZTAwNTk3YTQ0MjBlYTIx
NzY0OTJhZC4uNTdiYjRmMzM3NjEzMjI4MTQ3ZDE5MDQ2MjRlNDRmMDA1ZmQ5MzQxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTAs
NiArNTAsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
TmV0d29ya1Byb2Nlc3M7CitjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiAKIGNsYXNzIFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CkBAIC02Myw3ICs2NCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgdGVybWluYXRlKCk7CiAKLSAgICB2b2lkIHN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9u
SUQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmLCBjb25zdCBT
dHJpbmcmKTsKKyAgICB2b2lkIHN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVy
Q29ubmVjdGlvbiYsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmLCBjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZShXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIApAQCAtNzIs
NiArNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJv
dHRsZWFibGUpOwogICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2lz
VGhyb3R0bGVhYmxlOyB9CiAKKyAgICB2b2lkIGZldGNoVGFza1RpbWVkT3V0KFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2smKTsKKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAg
ICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCBjZmZl
YjBlZjdhMmEzNTRhNWJmNzE1YzJhMzVkYjQxYWNhNzgwZjA2Li41ZTNjZWRlMzFiYTFmZjgwYmJm
NDlhMjNjYWFjY2M5MzYxZWMzOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAKQEAgLTQwOCw2ICs0MDgsMTYgQEAgdm9pZCBXS0NvbnRleHRTZXRDdXN0
b21XZWJDb250ZW50U2VydmljZUJ1bmRsZUlkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYKICAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+c2V0Q3VzdG9tV2ViQ29udGVudFNl
cnZpY2VCdW5kbGVJZGVudGlmaWVyKFdlYktpdDo6dG9JbXBsKG5hbWUpLT5zdHJpbmcoKSk7CiB9
CiAKK3ZvaWQgV0tDb250ZXh0U2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3Rpbmco
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGRvdWJsZSBzZWNvbmRzKQoreworICAgIFdlYktpdDo6
dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRTZXJ2aWNlV29ya2VyVGltZW91dEZvclRlc3RpbmcoKFNl
Y29uZHMpc2Vjb25kcyk7Cit9CisKK3ZvaWQgV0tDb250ZXh0UmVzZXRTZXJ2aWNlV29ya2VyRmV0
Y2hUaW1lb3V0Rm9yVGVzdGluZyhXS0NvbnRleHRSZWYgY29udGV4dFJlZikKK3sKKyAgICBXZWJL
aXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+cmVzZXRTZXJ2aWNlV29ya2VyVGltZW91dEZvclRlc3Rp
bmcoKTsKK30KKwogdm9pZCBXS0NvbnRleHRTZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRp
b25FbmFibGVkKFdLQ29udGV4dFJlZiwgYm9vbCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmgKaW5kZXggZWQ5NjkxMDVhMTU1YmM0ZTAzYWU5ODVmY2I5MjBm
ZmFmYmViMjc5Ny4uNzI4NzM1NTg1YjZkOGQ0MzE4ZDZjZDI2YmU1M2JjMjYxZGVhN2RlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKQEAgLTE3MCw2ICsxNzAs
OSBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZWZyZXNoUGx1Z0lucyhXS0NvbnRleHRSZWYg
Y29udGV4dCk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEN1c3RvbVdlYkNvbnRlbnRT
ZXJ2aWNlQnVuZGxlSWRlbnRpZmllcihXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tTdHJpbmdS
ZWYgbmFtZSk7CiAKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFNlcnZpY2VXb3JrZXJGZXRj
aFRpbWVvdXRGb3JUZXN0aW5nKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBkb3VibGUgc2Vjb25k
cyk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVv
dXRGb3JUZXN0aW5nKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmKTsKKwogI2lmZGVmIF9fY3BsdXNw
bHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAppbmRleCBhZDQwN2U2NDkyZjgzOWI4NjkwN2NkMjA1YzdmNzQ1NGZmMDcyNzI1Li45NGFlZmU0
YmJlZDU4MTk3ZDE1YWE5ZTk5MDg5NTAzODdiNjNkZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xNDMyLDYgKzE0MzIsMTYgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6YWN0aXZlUGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZyhQcm9j
ZXNzSUQgcGlkLCBDb20KICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogfQogCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRTZXJ2aWNlV29ya2VyVGltZW91dEZvclRlc3RpbmcoU2Vjb25kcyBz
ZWNvbmRzKQoreworICAgIHNlbmRTeW5jVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKHNlY29u
ZHMpLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVv
dXRGb3JUZXN0aW5nOjpSZXBseSgpKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzZXRT
ZXJ2aWNlV29ya2VyVGltZW91dEZvclRlc3RpbmcoKQoreworICAgIHNlbmRTeW5jVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0U2VydmljZVdvcmtlckZl
dGNoVGltZW91dEZvclRlc3RpbmcoKSwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldFNl
cnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nOjpSZXBseSgpKTsKK30KKwogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCBhbHdh
eXNVc2VDb21wbGV4VGV4dCkKIHsKICAgICBtX2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRo
ID0gYWx3YXlzVXNlQ29tcGxleFRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAppbmRleCA2MTJlMzkyZTQzNmE1YjM1MTY2OTkzOGQ2NDg4N2JhMzZmMWY3YTgyLi4z
YzhmNjM5NDczNTNhYjEyNTVkZDNlNDNjOGZlN2MyZTQyYjRhNWJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTI1Nyw2ICsyNTcsOCBAQCBwdWJsaWM6CiAg
ICAgUHJvY2Vzc0lEIHByZXdhcm1lZFByb2Nlc3NJZGVudGlmaWVyKCk7CiAgICAgdm9pZCBhY3Rp
dmVQYWdlc09yaWdpbnNJbldlYlByb2Nlc3NGb3JUZXN0aW5nKFByb2Nlc3NJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAgICAgYm9vbCBuZXR3b3JrUHJv
Y2Vzc0hhc0VudGl0bGVtZW50Rm9yVGVzdGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNl
dFNlcnZpY2VXb3JrZXJUaW1lb3V0Rm9yVGVzdGluZyhTZWNvbmRzKTsKKyAgICB2b2lkIHJlc2V0
U2VydmljZVdvcmtlclRpbWVvdXRGb3JUZXN0aW5nKCk7CiAKICAgICBXZWJQYWdlR3JvdXAmIGRl
ZmF1bHRQYWdlR3JvdXAoKSB7IHJldHVybiBtX2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCk7IH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIwNjcw
M2IxZmQxZTExMmJlY2JhOGFiYTQzYzI1ZTdmZjY4OWJmYjIuLmNjZDhlMWY0ZmU5YmY5YTBiYWVi
OTQwNGI1OTZiMGY3ZDI3NTk2ZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOS0xMC0wNyAgQnJhZHkgRWlkc29u
ICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIgRmV0Y2ggZXZl
bnRzIHNob3VsZCB0aW1lIG91dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMjE4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRTZXJ2aWNlV29y
a2VyRmV0Y2hUaW1lb3V0KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNp
c3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U2VydmljZVdv
cmtlckZldGNoVGltZW91dEZvclRlc3RpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE5LTEwLTA3ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggaW4gV2ViS2l0VGVzdFJ1
bm5lckFwcDogaW52b2NhdGlvbiBmdW5jdGlvbiBmb3IgYmxvY2sgaW4gV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXJJT1M6OnNlbmRFdmVudFN0cmVhbQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5k
ZXggNDJhYWQ1NGUzMTEzYTM4M2Y3MzQ5MTc3NDE1MjE3Y2VkOTkwZDRhZC4uMTlhNjg4NjkxZmM1
YzY2MzU0MjhhYjMwNWU0ZmY0NGIxMDQ3MGYwYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRs
CkBAIC0zODksNiArMzg5LDggQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogCiAgICAgdm9pZCBz
ZW5kRGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcoKTsKIAorICAg
IHZvaWQgc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dChkb3VibGUgc2Vjb25kcyk7CisKICAg
ICAvLyBXZWJBdXRoTgogICAgIHZvaWQgc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJh
dGlvbihvYmplY3QgY29uZmlndXJhdGlvbik7CiAgICAgdm9pZCBhZGRUZXN0S2V5VG9LZXljaGFp
bihET01TdHJpbmcgcHJpdmF0ZUtleUJhc2U2NCwgRE9NU3RyaW5nIGF0dHJMYWJlbCwgRE9NU3Ry
aW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDAxMTA0YWNmODRiYWIxMjdl
NTE3M2QzNzkzMmU0Mjk5YWZhM2MxNTQuLjY1ZjgwMDI3N2Q3M2M3NzRhZTEyZWJhOTc4YjYzZDZl
NzI5ZmY0ZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMjU5Nyw2ICsyNTk3LDEzIEBAIHZvaWQgVGVzdFJ1bm5l
cjo6c2VuZERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JUZXN0aW5nKCkKICAg
ICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiB9CiAK
K3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dChkb3VibGUgc2Vj
b25kcykKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRTZXJ2aWNlV29ya2VyRmV0Y2hU
aW1lb3V0IikpOworICAgIFdLUmV0YWluUHRyPFdLRG91YmxlUmVmPiBtZXNzYWdlQm9keSA9IGFk
b3B0V0soV0tEb3VibGVDcmVhdGUoc2Vjb25kcykpOworICAgIFdLQnVuZGxlUG9zdFN5bmNocm9u
b3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VO
YW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwgbnVsbHB0cik7Cit9CisKIC8vIFdlYkF1dGhO
CiB2b2lkIFRlc3RSdW5uZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZpZ3VyYXRpb24o
SlNWYWx1ZVJlZiBjb25maWd1cmF0aW9uVmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGYxNzAwMTI5ODMxYjZm
OTQ3MDc2MmYwMzBmZWNkNzAxYzRkM2JhM2IuLjZlZjExNTk3MTdlNDgzN2E1NTMwMzE0ZmY0ZTc0
OTEyMmIyY2NkNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00ODksNiArNDg5LDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZW5kRGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcoKTsKIAor
ICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dChkb3VibGUgc2Vjb25kcyk7Cisg
ICAgCiAgICAgLy8gV2ViQXV0aE4KICAgICB2b2lkIHNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0Nv
bmZpZ3VyYXRpb24oSlNWYWx1ZVJlZik7CiAgICAgLy8gRklYTUUoMTg5ODc2KQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA5YjgwNzFkYTdmZjNmOTgwODgx
MmY3NTYxN2YyMDBiYTViMmZhNTExLi5kYjZiYmIxODVlNmE2ZjBjYjA1Nzc0OWE2YTg4MTZmMWYz
NTJmM2UyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAt
OTY0LDYgKzk2NCw4IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3Rl
bnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAKICAgICBXS0NvbnRleHRD
bGVhckNhY2hlZENyZWRlbnRpYWxzKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5jb250ZXh0
KCkpOwogCisgICAgV0tDb250ZXh0UmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVz
dGluZyhUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY29udGV4dCgpKTsKKwogICAgIFdLV2Vi
c2l0ZURhdGFTdG9yZUNsZWFyQWxsRGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9ucyhUZXN0Q29u
dHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpKTsKIAogICAgIGNsZWFySW5kZXhlZERhdGFiYXNl
cygpOwpAQCAtMzYwNiw2ICszNjA4LDExIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNlbmREaXNw
bGF5Q29uZmlndXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpCiAgICAgV0tTZW5kRGlz
cGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcocGxhdGZvcm1Db250ZXh0
KCkpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1l
b3V0Rm9yVGVzdGluZyhkb3VibGUgc2Vjb25kcykKK3sKKyAgICBXS0NvbnRleHRTZXRTZXJ2aWNl
V29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhwbGF0Zm9ybUNvbnRleHQoKSwgc2Vjb25kcyk7
Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFdlYkF1dGhlbnRpY2F0aW9uTW9ja0NvbmZp
Z3VyYXRpb24oV0tEaWN0aW9uYXJ5UmVmIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihUZXN0Q29udHJv
bGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpLCBjb25maWd1cmF0aW9uKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCA2YzJkMmQ4ODZlMDNiNzdiNjJiZTU1MzhhMjJi
OWIwZThkNGM0MWU0Li45MTZmYTg2MGZkOTAyYWY4YTZmNTE4ZDg1MzY2OTMwZDE0ZmZiMmI5IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yOTMsNiArMjkzLDgg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgc2VuZERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdl
ZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CiAKKyAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJGZXRjaFRp
bWVvdXRGb3JUZXN0aW5nKGRvdWJsZSBzZWNvbmRzKTsKKwogICAgIHZvaWQgc2V0V2ViQXV0aGVu
dGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihXS0RpY3Rpb25hcnlSZWYpOwogICAgIHZvaWQgYWRk
VGVzdEtleVRvS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdCBT
dHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7CiAg
ICAgdm9pZCBjbGVhblVwS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0
cmluZyYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAppbmRleCAyZjhiMzA2ZTJjOGM4NzNmZmQzMTc5NjFjODEyYzViYzg4MmI2
M2NkLi5mYjkyZTdmMDYyYzQ4MTMwZDAzYmU3NDczMjViNjE2ZWU3N2U3N2ZkIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTU5NSw2ICsxNTk1LDEzIEBA
IFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJv
bm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0
U2VydmljZVdvcmtlckZldGNoVGltZW91dCIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJ
RChtZXNzYWdlQm9keSkgPT0gV0tEb3VibGVHZXRUeXBlSUQoKSk7CisgICAgICAgIFdLRG91Ymxl
UmVmIHNlY29uZHMgPSBzdGF0aWNfY2FzdDxXS0RvdWJsZVJlZj4obWVzc2FnZUJvZHkpOworICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U2VydmljZVdvcmtlckZldGNoVGlt
ZW91dEZvclRlc3RpbmcoV0tEb3VibGVHZXRWYWx1ZShzZWNvbmRzKSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKwogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiVGVybWluYXRlTmV0d29ya1Byb2Nlc3MiKSkgewogICAgICAgICBBU1NF
UlQoIW1lc3NhZ2VCb2R5KTsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnRl
cm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDc4MzAyYTZkZWFlMzI0YTM1ZjIzYWZk
NTlkYzdkNTVkYjM0NzQwNi4uOGVkNjFmMzZkNjRlZjdlZTdhNDhiOTY0YjJkNDQwNmViYzI3NzQ4
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTEwLTA3ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBGZXRjaCBldmVudHMgc2hv
dWxkIHRpbWUgb3V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAyMTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0Lmh0dHBzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
YmFzaWMtdGltZW91dC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtdGltZW91dC13b3JrZXIuanM6IEFkZGVkLgor
ICAgICAgICAoZXZlbnQuZXZlbnQucmVxdWVzdC51cmwuaW5kZXhPZik6CisgICAgICAgICogaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLXRpbWVvdXQuanM6IEFkZGVk
LgorICAgICAgICAoYXN5bmMudGVzdC5maW5pc2hUaGlzVGVzdCk6CisgICAgICAgIChhc3luYy50
ZXN0LnRyeSk6CisgICAgICAgIChhc3luYy50ZXN0LnRyeS5jaGVja1N1Y2Nlc3NBZ2Fpbik6Cisg
ICAgICAgIChhc3luYy50ZXN0KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9yZXNvdXJjZXMvc3VjY2VlZC1mYWxsYmFjay1jaGVjay5waHA6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy90aW1lb3V0LWZhbGxiYWNrLmh0
bWw6IEFkZGVkLgorCiAyMDE5LTEwLTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIGZvY3VzIHBzZXVkbyBjbGFzcyBzaG91bGQgbWF0Y2ggYSBzaGFkb3cgaG9z
dCB3aG9zZSBzaGFkb3cgdHJlZSBjb250YWlucyB0aGUgZm9jdXNlZCBlbGVtZW50CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL2Jhc2ljLXRpbWVvdXQuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ZjllMmQ3
MjM2MTlkODkxNmRjMDY1NGJhMGIxOTZlOWMwZWY5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0Lmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisKK1VSTCAwIC0gaHR0cHM6Ly8xMjcuMC4wLjE6
ODQ0My93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3RpbWVvdXQtZmFsbGJhY2suaHRtbAorU3Rh
dHVzIGNvZGUgMCAtIDIwMAorU291cmNlJyBoZWFkZXIgMCAtIG51bGwKK1VSTCAxIC0gaHR0cHM6
Ly8xMjcuMC4wLjE6ODQ0My93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3RpbWVvdXQtbm8tZmFs
bGJhY2suaHRtbAorU3RhdHVzIGNvZGUgMSAtIDQwNAorU291cmNlJyBoZWFkZXIgMSAtIG51bGwK
K1VSTCAyIC0gaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L3N1Y2NlZWQtZmFsbGJhY2stY2hlY2sucGhwCitTdGF0dXMgY29kZSAyIC0gMjAwCitTb3VyY2Un
IGhlYWRlciAyIC0gbmV0d29yaworVVJMIDMgLSBodHRwczovLzEyNy4wLjAuMTo4NDQzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvc3VjY2VlZC1mYWxsYmFjay1jaGVjay5waHAKK1N0YXR1cyBj
b2RlIDMgLSAyMDAKK1NvdXJjZScgaGVhZGVyIDMgLSBuZXR3b3JrCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXRpbWVvdXQuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXRpbWVv
dXQuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmFjZGM2OGYxMjllNGFhMTU3OGE4MDRmY2JhYTQ3
M2E1NTQ5MDliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvYmFzaWMtdGltZW91dC5odHRwcy5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYmFzaWMtdGlt
ZW91dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtdGltZW91dC13
b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvYmFzaWMtdGltZW91dC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM1YTIwYjIxNGU1NGRiY2Nh
OTVmNDI0ODFiOGVmOGVhZGFhMzlmMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy10aW1lb3V0LXdvcmtlci5q
cwpAQCAtMCwwICsxLDYgQEAKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigiZmV0Y2giLCAoZXZlbnQp
ID0+IHsKKyAgICBpZiAoZXZlbnQucmVxdWVzdC51cmwuaW5kZXhPZigidGltZW91dCIpICE9PSAt
MSkgeworICAgICAgICB3aGlsZSAoMSkgeyB9CisgICAgfSBlbHNlCisgICAgICAgIGV2ZW50LnJl
c3BvbmRXaXRoKG5ldyBSZXNwb25zZShudWxsLCB7IHN0YXR1czogMjAwLCBzdGF0dXNUZXh0OiAi
SGVsbG8gZnJvbSBzZXJ2aWNlIHdvcmtlciIsIGhlYWRlcnM6IFtbIlNvdXJjZSIsICJTZXJ2aWNl
V29ya2VyIl1dIH0pKTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLXRpbWVvdXQuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtdGltZW91dC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jMWJiY2MyYzZmM2RkNTVkMWQwNjQ0OTU3YmU0YWQ1ZWM4YjYwOWNjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3Vy
Y2VzL2Jhc2ljLXRpbWVvdXQuanMKQEAgLTAsMCArMSw3NiBAQAorYXN5bmMgZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgdmFyIHVybFJlc3VsdHMgPSBuZXcgQXJyYXk7CisgICAgdmFyIHN0YXR1c1Jl
c3VsdHMgPSBuZXcgQXJyYXk7CisgICAgdmFyIGhlYWRlclJlc3VsdHMgPSBuZXcgQXJyYXk7CisK
KyAgICBmdW5jdGlvbiBmaW5pc2hUaGlzVGVzdCgpCisgICAgeworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHVybFJlc3VsdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxvZygiVVJM
ICIgKyBpICsgIiAtICIgKyB1cmxSZXN1bHRzW2ldKTsKKyAgICAgICAgICAgIGxvZygiU3RhdHVz
IGNvZGUgIiArIGkgKyAiIC0gIiArIHN0YXR1c1Jlc3VsdHNbaV0pOworICAgICAgICAgICAgbG9n
KCJTb3VyY2UnIGhlYWRlciAiICsgaSArICIgLSAiICsgaGVhZGVyUmVzdWx0c1tpXSk7CisgICAg
ICAgIH0KKyAgICAgICAgZmluaXNoU1dUZXN0KCk7CisgICAgfQorICAgIAorICAgIHRyeSB7Cisg
ICAgICAgIHZhciBmcmFtZSA9IGF3YWl0IGludGVyY2VwdGVkRnJhbWUoInJlc291cmNlcy9iYXNp
Yy10aW1lb3V0LXdvcmtlci5qcyIsICIvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy8iKTsKKyAg
ICAgICAgdmFyIGZldGNoID0gZnJhbWUuY29udGVudFdpbmRvdy5mZXRjaDsKKworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFNlcnZpY2VX
b3JrZXJGZXRjaFRpbWVvdXQoMCk7CisgICAgICAgIAorICAgICAgICAvLyBUaGUgZm9sbG93aW5n
IHR3byBmZXRjaGVzIHNob3VsZCB0aW1lIG91dCBpbW1lZGlhdGVseQorICAgICAgICBmZXRjaCgi
dGltZW91dC1mYWxsYmFjay5odG1sIikudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAg
ICAgICAgdXJsUmVzdWx0c1swXSA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgICAgIHN0YXR1c1Jl
c3VsdHNbMF0gPSByZXNwb25zZS5zdGF0dXM7CisgICAgICAgICAgICBoZWFkZXJSZXN1bHRzWzBd
ID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoIlNvdXJjZSIpOyAgICAgICAKKyAgICAgICAgfSwgZnVu
Y3Rpb24oZXJyb3IpIHsKKyAgICAgICAgICAgIGxvZyhlcnJvcik7CisgICAgICAgIH0pOworCisg
ICAgICAgIGZldGNoKCJ0aW1lb3V0LW5vLWZhbGxiYWNrLmh0bWwiKS50aGVuKGZ1bmN0aW9uKHJl
c3BvbnNlKSB7CisgICAgICAgICAgICB1cmxSZXN1bHRzWzFdID0gcmVzcG9uc2UudXJsOworICAg
ICAgICAgICAgc3RhdHVzUmVzdWx0c1sxXSA9IHJlc3BvbnNlLnN0YXR1czsKKyAgICAgICAgICAg
IGhlYWRlclJlc3VsdHNbMV0gPSByZXNwb25zZS5oZWFkZXJzLmdldCgiU291cmNlIik7ICAgCisg
ICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgICAgICBsb2coZXJyb3IpOworICAg
ICAgICB9KTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoNjApOworCisgICAgICAgIC8v
IFRoZSBzZXJ2aWNlIHdvcmtlciBrbm93cyBob3cgdG8gaGFuZGxlIHRoZSBmb2xsb3dpbmcgZmV0
Y2ggKmFuZCogaGFzIDYwIHNlY29uZHMgdG8gZG8gc28uCisgICAgICAgIC8vIEJ1dCB3aWxsIGJl
IGNhbmNlbGxlZCB3aXRoIHRoZSBhYm92ZSBmZXRjaGVzIHNpbmNlIHdlJ3JlIHRlcm1pbmF0aW5n
IHRoZSBzZXJ2aWNlIHdvcmtlciwgYW5kIAorICAgICAgICAvLyB0aGVyZWZvcmUgaXQgd2lsbCB0
aGVuIGZhbGxiYWNrIHRvIHRoZSBuZXR3b3JrLgorICAgICAgICBmZXRjaCgic3VjY2VlZC1mYWxs
YmFjay1jaGVjay5waHAiKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAgICAgICAgICB1
cmxSZXN1bHRzWzJdID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgc3RhdHVzUmVzdWx0c1sy
XSA9IHJlc3BvbnNlLnN0YXR1czsKKyAgICAgICAgICAgIGhlYWRlclJlc3VsdHNbMl0gPSByZXNw
b25zZS5oZWFkZXJzLmdldCgiU291cmNlIik7ICAgCisgICAgICAgICAgICBzZXRUaW1lb3V0KGNo
ZWNrU3VjY2Vzc0FnYWluLCAwKTsKKyAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAg
ICAgICAgIGxvZyhlcnJvcik7CisgICAgICAgICAgICBmaW5pc2hTV1Rlc3QoKTsKKyAgICAgICAg
fSk7CisgICAgICAgIAorICAgICAgICAvLyBOb3cgd2UgY2FuIGZldGNoIHRoYXQgc2FtZSBVUkwg
YWdhaW4sIHdoaWNoICpjb3VsZCogcmVsYXVuY2ggdGhlIHNlcnZpY2Ugd29ya2VyIGFuZCBoYW5k
bGUgaXQgdGhlcmUsIGJ1dCBmb3Igbm93IHRoaXMgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9u
IGlzIGluZXJ0IGFuZCBmZXRjaGVzIHRocm91Z2ggaXQgd2lsbCBnbyB0byB0aGUgbmV0d29yayBp
bnN0ZWFkLgorICAgICAgICAvLyBJJ20gbGVhdmluZyB0aGlzIGluIHRvIGNvdmVyIGZ1dHVyZSBj
YXNlcyB3aGVyZSB3ZSBkbyByZWxhdW5jaCB0aGUgU1cgdG8gaGFuZGxlIGl0LgorICAgICAgICBm
dW5jdGlvbiBjaGVja1N1Y2Nlc3NBZ2FpbigpIHsKKyAgICAgICAgICAgIGZldGNoKCJzdWNjZWVk
LWZhbGxiYWNrLWNoZWNrLnBocCIpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAg
ICAgICAgICB1cmxSZXN1bHRzWzNdID0gcmVzcG9uc2UudXJsOworICAgICAgICAgICAgICAgIHN0
YXR1c1Jlc3VsdHNbM10gPSByZXNwb25zZS5zdGF0dXM7CisgICAgICAgICAgICAgICAgaGVhZGVy
UmVzdWx0c1szXSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCJTb3VyY2UiKTsgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hUaGlzVGVzdCgpOworICAgICAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3Ip
IHsKKyAgICAgICAgICAgICAgICBsb2coZXJyb3IpOworICAgICAgICAgICAgICAgIGZpbmlzaFNX
VGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgbG9nKCJHb3QgZXhjZXB0aW9uOiAiICsgZSk7CisgICAgICAgIGZpbmlzaFNXVGVzdCgp
OworICAgIH0KK30KKwordGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3N1Y2NlZWQtZmFsbGJhY2stY2hlY2sucGhwIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3N1Y2NlZWQt
ZmFsbGJhY2stY2hlY2sucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxYThmMGM3MTcxN2I3MjlkYzBjMjMyNWE3
NjA4NWE2OGZhOGVmMmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc3VjY2VlZC1mYWxsYmFjay1jaGVjay5waHAKQEAg
LTAsMCArMSwzIEBACis8P3BocAorICAgIGhlYWRlcignU291cmNlOiBuZXR3b3JrJyk7Cis/PlN1
Y2Nlc3MhClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3RpbWVvdXQtZmFsbGJhY2su
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy90
aW1lb3V0LWZhbGxiYWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODk0YjZiZWM1OWUyMDNiNWRhOGRiNWFh
MTU4ZmVlNTQzMmYzYmRiMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy90aW1lb3V0LWZhbGxiYWNrLmh0bWwKQEAgLTAs
MCArMSBAQAorVGltZW91dCByZXNvdXJjZSBmZXRjaGVkIGZyb20gbmV0d29yawpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380439</attachid>
            <date>2019-10-08 10:13:00 -0700</date>
            <delta_ts>2019-10-08 12:50:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202188-20191008101259.patch</filename>
            <type>text/plain</type>
            <size>44911</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc4Y2E3YjJhOTE3NDNh
ZjRhYmE2ZmJjNjg3YTBhNTVlYTJkYjUyYi4uN2ViNGMzMWEzZWE2OTQ1NzU1YmU2YzlkNzcyNTQ0
MzJlNGMzYzNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTEwLTA3ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBG
ZXRjaCBldmVudHMgc2hvdWxkIHRpbWUgb3V0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMTg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBD
aHJpc3RlbnNlbi4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9i
YXNpYy10aW1lb3V0Lmh0dHBzLmh0bWwKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2V0SGFzVGltZWRP
dXRBbnlGZXRjaFRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpoYXNU
aW1lZE91dEFueUZldGNoVGFza3MgY29uc3QpOgorCiAyMDE5LTEwLTA3ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIGZvY3VzIHBzZXVkbyBjbGFzcyBzaG91bGQg
bWF0Y2ggYSBzaGFkb3cgaG9zdCB3aG9zZSBzaGFkb3cgdHJlZSBjb250YWlucyB0aGUgZm9jdXNl
ZCBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhhMjE1ZGM5OTY1ZWUyZTQ5OGEyNzRkMDhlMjBhZTJhNmM2
MzU5ZjUuLjk2ZWFmMTNlZDhkMWU4MjE3NWU1NDJmZWRhZGExODMwOTRiNTUxYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNTcgQEAKKzIwMTktMTAtMDcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIFNlcnZpY2UgV29ya2VyIEZldGNoIGV2ZW50cyBzaG91bGQgdGlt
ZSBvdXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDIxODgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAg
IFdoZW4gd2Ugc3RhcnQgYSBmZXRjaCB0YXNrIGluIHRoZSBzZXJ2ZXIsIHdlIGFsc28gc3RhcnQg
YSB0aW1lb3V0IG9uIHRoYXQgZmV0Y2ggdGFzay4KKyAgICAgICAgCisgICAgICAgICJUaW1lIG91
dCIgbWVhbnMgdGhlIGZldGNoIHRhc2sgbXVzdCBjb250aW51ZSB0byBtYWtlIHByb2dyZXNzIGF0
IHRoZSBnaXZlbiBmcmVxdWVuY3kgKG9uY2UgZXZlcnkgNjAgc2Vjb25kcyBieSBkZWZhdWx0KQor
CisgICAgICAgIElmIGFueSBnaXZlbiBmZXRjaCB0YXNrIHRpbWVzIG91dCBpbiBhIHNlcnZpY2Ug
d29ya2VyIGluc3RhbmNlLCB0aGF0IGluc3RhbmNlIGxvc2VzIHRoZSByaWdodCB0byBoYW5kbGUg
ZmV0Y2hlcy4KKyAgICAgICAgCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQgY29uc3QpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNo
VGFzayk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlKTogCisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6IAorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YSk6IAorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRm9ybURhdGEpOiAKKyAgICAgICAgKFdlYktpdDo6
U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKTogCisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZEZhaWwpOiAKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6ZGlkTm90SGFuZGxlKTogCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAgIChXZWJL
aXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6d2FzSGFuZGxlZCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2spOiBEZWxldGVkLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c3RhcnRG
ZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
ZmV0Y2hUYXNrVGltZWRPdXQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFNldFNlcnZpY2VXb3Jr
ZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKToKKyAgICAgICAgKFdLQ29udGV4dFJlc2V0U2Vydmlj
ZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRTZXJ2aWNlV29ya2VyVGltZW91
dEZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVzZXRTZXJ2
aWNlV29ya2VyVGltZW91dEZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oOgorCiAyMDE5LTEwLTA3ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
IAogICAgICAgICBQcm92aWRlIG9wdGlvbnMgZm9yIERUVFogdG8gaGFwcGVuIGluIG1vcmUgc2l0
dWF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oCmluZGV4IGY0MmMxYWZhZmMyZmYwMTA2Y2VlNjcwYzg1ZDRjMDlhZGJiMWE2YWEuLjQ2
MDEzMTc2MTZjODE2NzQ4ZDIwODAwZjI2MGIzNTI4NTc0ODgxNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTE0OCw3ICsxNDgs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2Vy
VHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQ+JiYpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFNXU2VydmVyV29ya2VyJik7Ci0gICAg
dm9pZCBzeW5jVGVybWluYXRlV29ya2VyKFNXU2VydmVyV29ya2VyJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyKFNXU2VydmVyV29ya2VyJik7CiAgICAgdm9p
ZCBmaXJlSW5zdGFsbEV2ZW50KFNXU2VydmVyV29ya2VyJik7CiAgICAgdm9pZCBmaXJlQWN0aXZh
dGVFdmVudChTV1NlcnZlcldvcmtlciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggNjc2N2ZjNmYwYTZi
MTZjMzQzMjljYmFiNTNjYjAyNjRiMjFkMjQ2MS4uMWI5OWNjOTI3MTkxYmM1MmU2YjdlNWU1MTg3
N2IxZDQ0ODExZjA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTE2LDYgKzExNiw5IEBAIHB1YmxpYzoK
ICAgICAKICAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uKCkgY29uc3Q7CiAK
KyAgICB2b2lkIHNldEhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygpIHsgbV9oYXNUaW1lZE91dEFu
eUZldGNoVGFza3MgPSB0cnVlOyB9CisgICAgYm9vbCBoYXNUaW1lZE91dEFueUZldGNoVGFza3Mo
KSBjb25zdCB7IHJldHVybiBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNrczsgfQorCiBwcml2YXRl
OgogICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAKQEAgLTEzNiw2ICsxMzksNyBAQCBwcml2YXRl
OgogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKGJvb2wpPj4gbV93aGVuQWN0aXZhdGVkSGFuZGxl
cnM7CiAgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQ+IG1fc2NyaXB0UmVzb3VyY2VNYXA7CiAgICAgYm9vbCBtX3Nob3VsZFNraXBIYW5kbGVG
ZXRjaDsKKyAgICBib29sIG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzIHsgZmFsc2UgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMzM0MWFlZDhjMmVjOTUwZTdmYTAzNDEyNjQ0
ZTk2MjdmZDJhNTU1ZS4uYzRiYTU0NGUzNTNiZWM4Y2I1ZGM4NGJkNzM1OWJmNjRlYTliMjNhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
QEAgLTI2MDEsNCArMjYwMSwxNyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogTmV0
d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NDb25uZWN0aW9uKFByb2Nlc3NJZGVudAogICAgIHJldHVy
biBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7CiB9CiAKK2NvbnN0IFNl
Y29uZHMgTmV0d29ya1Byb2Nlc3M6OmRlZmF1bHRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0ID0g
NzBfczsKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRG
b3JUZXN0aW5nKFNlY29uZHMgdGltZW91dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIG1fc2VydmljZVdvcmtlckZldGNoVGltZW91dCA9IHRp
bWVvdXQ7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9zZXJ2aWNlV29ya2Vy
RmV0Y2hUaW1lb3V0ID0gZGVmYXVsdFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQ7CisgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMmY3MDQzMDhlZGZl
OTUzYTRjOGU3YjBkMDczODBjMWU0NTFmZmI2ZC4uYmYwZDE1OTgxMmNlZjRhYTc3ZmUxYzkwNWJm
YTc4OGU2ZTc2ZDg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaApAQCAtMzQzLDYgKzM0MywxMCBAQCBwdWJsaWM6CiAgICAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqIHdlYlByb2Nlc3NDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyKSBjb25zdDsKICAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3Ry
eSYgbWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKSB7IHJldHVybiBtX21lc3NhZ2VQb3J0Q2hh
bm5lbFJlZ2lzdHJ5OyB9CiAKKyAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRG
b3JUZXN0aW5nKFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9p
ZCByZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgU2Vjb25kcyBzZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KCkg
Y29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0OyB9CisKIHByaXZhdGU6
CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHBsYXRmb3JtQ3JlYXRlRGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkgY29uc3Q7CkBAIC01NjAsNiArNTY0LDkgQEAgcHJpdmF0ZToKIAogICAgIE9wdGlvblNl
dDxOZXR3b3JrQ2FjaGU6OkNhY2hlT3B0aW9uPiBtX2NhY2hlT3B0aW9uczsKICAgICBXZWJDb3Jl
OjpNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSBtX21lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5
OworCisgICAgc3RhdGljIGNvbnN0IFNlY29uZHMgZGVmYXVsdFNlcnZpY2VXb3JrZXJGZXRjaFRp
bWVvdXQ7CisgICAgU2Vjb25kcyBtX3NlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQgeyBkZWZhdWx0
U2VydmljZVdvcmtlckZldGNoVGltZW91dCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCA1MTM3MWQ2NzJjNzMxMjk4ZmViMTI2NzNkZTczMDAzNTkwNmJi
ZDNmLi5iYjY2ZjNjNDVhYTM1YjNhYjdmNzNlZmNmZTM5ODk4MjJkMDNlOWU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTE2Myw0ICsxNjMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgU2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsKSAtPiAoKSBBc3luYwogICAg
IE1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgR2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWls
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8V2ViS2l0OjpMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+IGRldGFpbHMpIEFzeW5jCisKKyAgICBT
ZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhTZWNvbmRzIHNlY29uZHMpIC0+
ICgpIFN5bmNocm9ub3VzCisgICAgUmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVz
dGluZygpIC0+ICgpIFN5bmNocm9ub3VzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHAKaW5kZXggNTUzY2JhZDE5YmM1YTE5N2UwNjI1Mjc1MGYyODJjZTNiMDQxNmZi
MC4uMGRjYjNiM2ZjZjMwM2RlNGNhMzVjYjYzZTZlOWI0MjFjMjVjMjY2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2hNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlNX
U2VydmVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oIgogCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVB
U0VfTE9HX0lGKG1fc2Vzc2lvbklELmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNl
V29ya2VyLCAiJXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjoiIGZtdCwgdGhpcywgIyNfX1ZB
X0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfRVJST1JfSUYobV9zZXNzaW9uSUQuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OiIgZm10LCB0
aGlzLCAjI19fVkFfQVJHU19fKQpAQCAtNDIsNDMgKzQ0LDgyIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorU2VydmljZVdvcmtlckZldGNoVGFzazo6
U2VydmljZVdvcmtlckZldGNoVGFzayhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
JiBjb250ZXh0Q29ubmVjdGlvbiwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29uZHMgdGlt
ZW91dCkKKyAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKKyAgICAsIG1fY29ubmVjdGlvbiht
YWtlV2Vha1B0cihjb25uZWN0aW9uKSkKKyAgICAsIG1fY29udGV4dENvbm5lY3Rpb24oY29udGV4
dENvbm5lY3Rpb24pCisgICAgLCBtX2lkZW50aWZpZXIgeyBjb25uZWN0aW9uLmlkZW50aWZpZXIo
KSwgZmV0Y2hJZGVudGlmaWVyIH0KKyAgICAsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIoc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpCisgICAgLCBtX3RpbWVvdXQodGltZW91dCkKKyAgICAsIG1f
dGltZW91dFRpbWVyKCp0aGlzLCAmU2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVy
RmlyZWQpCit7CisgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KG1fdGltZW91dCk7Cit9
CisKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2U6ICVzIiwgbV9pZGVudGlmaWVy
LmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllcik7CisgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKKyAgICBpZiAobV9jb25uZWN0aW9u
KQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9LCBtX2lkZW50
aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJv
b2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7Ci0gICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2Vp
dmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgbV93YXNIYW5kbGVk
ID0gdHJ1ZTsKKyAgICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNl
IHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1f
aWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50
NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNv
ZGVkRGF0YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKKyAgICBpZiAo
bV9jb25uZWN0aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxl
bmd0aCB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYgZm9ybURhdGEpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVGb3JtRGF0YSB7IGZvcm1EYXRhIH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIGlmIChtX2Nvbm5lY3Rpb24pCisg
ICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpEaWRSZWNlaXZlRm9ybURhdGEgeyBmb3JtRGF0YSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJ
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGaW5pc2go
KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaEZldGNoOiBmZXRjaElk
ZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZpbmlzaCB7IH0sIG1faWRlbnRpZmllci5mZXRjaElk
ZW50aWZpZXIpOworICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAoIW1fZGlkUmVh
Y2hUZXJtaW5hbFN0YXRlICYmIG1fY29ubmVjdGlvbikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZpbmlzaCB7IH0sIG1f
aWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1fZGlkUmVhY2hUZXJtaW5hbFN0YXRl
ID0gdHJ1ZTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWlsIHsg
ZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CisgICAgbV90aW1lb3V0VGlt
ZXIuc3RvcCgpOworICAgIGlmICghbV9kaWRSZWFjaFRlcm1pbmFsU3RhdGUgJiYgbV9jb25uZWN0
aW9uKQorICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6RGlkRmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZp
ZXIpOworICAgIG1fZGlkUmVhY2hUZXJtaW5hbFN0YXRlID0gdHJ1ZTsKIH0KIAogdm9pZCBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUoKQogewogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZE5vdEhhbmRsZUZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVu
dGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6
OkRpZE5vdEhhbmRsZSB7IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOworICAgIG1f
dGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAoIW1fZGlkUmVhY2hUZXJtaW5hbFN0YXRlICYm
IG1fY29ubmVjdGlvbikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIpOworICAgIG1fZGlkUmVhY2hUZXJtaW5hbFN0YXRlID0gdHJ1ZTsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJlZCgpCit7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidGltZW91dFRpbWVyRmlyZWQ6IGZldGNoSWRlbnRpZmll
cjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBpZiAoIW1fd2FzSGFuZGxlZCkKKyAgICAgICAgZGlkTm90SGFuZGxl
KCk7CisgICAgZWxzZQorICAgICAgICBkaWRGYWlsKHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgeyB9LCAiU2VydmljZSBXb3JrZXIgZmV0Y2ggdGltZWQgb3V0Il9zIH0pOworCisgICAg
bV9jb250ZXh0Q29ubmVjdGlvbi5mZXRjaFRhc2tUaW1lZE91dCgqdGhpcyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKaW5k
ZXggZjExNmNjNzQ5ZTZjMDU3N2E5OWQwOTU0NDFhYTgyZDk2ZmU4YzQ4Ny4uNmFkZDBkMGU3ZmQ1
MzkzNmQxZjhjYjFlMWY4MzhhYTliYTIzYjIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNo
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9UaW1lci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC00NiwxMCArNDcsMTcgQEAgY2xhc3MgRm9y
bURhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJTV1NlcnZl
ckNvbm5lY3Rpb247CitjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKIGNs
YXNzIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrPiBjcmVhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZWY8SVBDOjpDb25uZWN0
aW9uPiYmIGNvbm5lY3Rpb24sIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
Y29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50
aWZpZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckZldGNoVGFzayhzZXNz
aW9uSUQsIFdURk1vdmUoY29ubmVjdGlvbiksIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElk
ZW50aWZpZXIpKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8
U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckZldGNoVGFzayhzdGQ6OmZv
cndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICB9CiAKKyAgICB2b2lkIGRpZE5vdEhhbmRsZSgp
OwogICAgIHZvaWQgZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgeyBk
aWRGYWlsKGVycm9yKTsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKQEAgLTY3LDEzICs3NSwxMSBAQCBwdWJsaWM6CiAgICAg
fTsKIAogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciYgc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOyB9CisgICAgYm9vbCB3YXNIYW5kbGVkKCkgY29uc3QgeyByZXR1cm4gbV93
YXNIYW5kbGVkOyB9CiAKIHByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtlckZldGNoVGFzayhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwg
V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKLSAgICAgICAgOiBt
X3Nlc3Npb25JRChzZXNzaW9uSUQpCi0gICAgICAgICwgbV9jb25uZWN0aW9uKFdURk1vdmUoY29u
bmVjdGlvbikpCi0gICAgICAgICwgbV9pZGVudGlmaWVyIHsgY29ubmVjdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllciB9Ci0gICAgeyB9CisgICAgU2VydmljZVdvcmtlckZldGNoVGFzayhQ
QUw6OlNlc3Npb25JRCwgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiwgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0KTsKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlZGlyZWN0UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKQEAgLTgxLDEx
ICs4NywxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBkaWROb3RI
YW5kbGUoKTsKKyAgICB2b2lkIHRpbWVvdXRUaW1lckZpcmVkKCk7CiAKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKLSAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247
CisgICAgV2Vha1B0cjxXZWJTV1NlcnZlckNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIG1fY29udGV4dENvbm5lY3Rpb247CiAgICAg
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKKyAgICBTZWNvbmRzIG1fdGltZW91dDsK
KyAgICBXZWJDb3JlOjpUaW1lciBtX3RpbWVvdXRUaW1lcjsKKyAgICBib29sIG1fd2FzSGFuZGxl
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RpZFJlYWNoVGVybWluYWxTdGF0ZSB7IGZhbHNlIH07
CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OklkZW50aWZpZXImIGEsIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OklkZW50aWZp
ZXImIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDc2NzQx
NDBmMTc1YzQ1NzA4YjUyNTE1YzdjNDVlNTg2NmZmMjhlMjcuLjAxMmRhYzMzM2NiM2UxYzBjYTEw
ZTRjYzY5ZWI3ZTZkMDE2M2QxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0
YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmkKICAgICAg
ICAgfQogCiAgICAgICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQoc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwotICAgICAgICBpZiAoIXdvcmtlcikgeworICAgICAgICBpZiAo
IXdvcmtlciB8fCB3b3JrZXItPmhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygpKSB7CiAgICAgICAg
ICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE4OCw5ICsxODgsOSBAQCB2b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBzZXJ2aQogCiAgICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pIHsKICAgICAgICAg
ICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnRG
ZXRjaDogU3RhcnRpbmcgZmV0Y2ggJXMgdmlhIHNlcnZpY2Ugd29ya2VyICVzIiwgZmV0Y2hJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzZXJ2aWNlV29ya2VySWRlbnRp
Zmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRDb25uZWN0
aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCBtX2NvbnRlbnRDb25uZWN0aW9uLmdldCgpLCB0
aGlzLT5pZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZlcnJlcik7CisgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRD
b25uZWN0aW9uKS5zdGFydEZldGNoKHNlc3Npb25JRCgpLCAqdGhpcywgZmV0Y2hJZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEsIHJl
ZmVycmVyKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgU1dTRVJWRVJD
T05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNo
SWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRvIHJ1biBzZXJ2aWNl
IHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJl
Y2F1c2UgZmFpbGVkIHRvIHJ1biBzZXJ2aWNlIHdvcmtlciwgb3Igc2VydmljZSB3b3JrZXIgaGFz
IGhhZCB0aW1lZCBvdXQgZmV0Y2ggdGFza3MiLCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsg
fSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggOGNkNDk1YzFjOTBjNzE3ZDgzZGRmN2Iz
ZjEzZjY1MWRiZWE2ZmQyOC4uN2JkMmEzM2NiNThhMzA3NzBlMzk4YmQwNDllNTNlMjI0MjNhM2Qy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklE
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA1ODA5NGQ2
MjhjYjA4MzA1Yjk3NWE4MTE5MmRjY2IzY2JjOTQ0ZTFhLi5lMzZiYjEyMWQ1NjA4MDIzZTM3YTQ3
NjhlYTQ5YjE3NTJkMDdiY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1NXU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aD4KIApAQCAtMTUxLDE2ICsxNTIsMTggQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OnRlcm1pbmF0ZSgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OlRlcm1pbmF0ZVByb2Nlc3MoKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpzdGFydEZldGNoKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb250ZW50Q29ubmVjdGlvbiwgV2ViQ29yZTo6U1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJ
ZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpzdGFydEZldGNoKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uJiBjb250ZW50Q29ubmVjdGlvbiwgRmV0Y2hJZGVudGlmaWVyIGNvbnRl
bnRGZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlcikKIHsKKyAgICBhdXRvIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
ID0gY29udGVudENvbm5lY3Rpb24uaWRlbnRpZmllcigpOwogICAgIGF1dG8gZmV0Y2hJZGVudGlm
aWVyID0gRmV0Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwotICAgIAotICAgIG1fb25nb2luZ0Zl
dGNoZXMuYWRkKGZldGNoSWRlbnRpZmllciwgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y3JlYXRl
KHNlc3Npb25JRCwgV1RGTW92ZShjb250ZW50Q29ubmVjdGlvbiksIHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb250ZW50RmV0Y2hJZGVudGlmaWVyKSk7CiAKLSAgICBBU1NFUlQoIW1fb25n
b2luZ0ZldGNoSWRlbnRpZmllcnMuY29udGFpbnMoe3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb250ZW50RmV0Y2hJZGVudGlmaWVyfSkpOwotICAgIG1fb25nb2luZ0ZldGNoSWRlbnRpZmll
cnMuYWRkKHtzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29udGVudEZldGNoSWRlbnRpZmll
cn0sIGZldGNoSWRlbnRpZmllcik7CisgICAgYXV0byByZXN1bHQgPSBtX29uZ29pbmdGZXRjaGVz
LmFkZChmZXRjaElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNyZWF0ZShzZXNz
aW9uSUQsIGNvbnRlbnRDb25uZWN0aW9uLCAqdGhpcywgY29udGVudEZldGNoSWRlbnRpZmllciwg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1fbmV0d29ya1Byb2Nlc3MtPnNlcnZpY2VXb3JrZXJG
ZXRjaFRpbWVvdXQoKSkpOworCisgICAgQVNTRVJUKCFtX29uZ29pbmdGZXRjaElkZW50aWZpZXJz
LmNvbnRhaW5zKHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50
aWZpZXIgfSkpOworICAgIG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMuYWRkKHsgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIGNvbnRlbnRGZXRjaElkZW50aWZpZXIgfSwgZmV0Y2hJZGVudGlm
aWVyKTsKIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpTdGFydEZldGNoIHsgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGRhdGEsIHJlZmVy
cmVyIH0pOworICAgIGlmICghc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OlN0YXJ0RmV0Y2ggeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZGF0YSwg
cmVmZXJyZXIgfSkpCisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmRpZE5vdEhhbmRs
ZSgpOwogfQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2FuY2VsRmV0
Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGNvbnRlbnRGZXRjaElkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQpAQCAtMjA0LDYgKzIw
Nyw0MyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZl
dGNoVGFza01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJgogICAgIH0KIH0KIAordm9pZCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZldGNoVGFza1RpbWVkT3V0KFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2smIHRhc2spCit7CisgICAgQVNTRVJUKG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMu
Y29udGFpbnModGFzay5pZGVudGlmaWVyKCkpKTsKKyAgICBhdXRvIHRha2VuSWRlbnRpZmllciA9
IG1fb25nb2luZ0ZldGNoSWRlbnRpZmllcnMudGFrZSh0YXNrLmlkZW50aWZpZXIoKSk7CisKKyAg
ICBBU1NFUlQobV9vbmdvaW5nRmV0Y2hlcy5jb250YWlucyh0YWtlbklkZW50aWZpZXIpKTsKKyAg
ICBhdXRvIHRha2VuVGFzayA9IG1fb25nb2luZ0ZldGNoZXMudGFrZSh0YWtlbklkZW50aWZpZXIp
OworICAgIEFTU0VSVCh0YWtlblRhc2spOworICAgIEFTU0VSVCh0YWtlblRhc2stPnB0cigpID09
ICZ0YXNrKTsKKworICAgIC8vIEdhdGhlciBhbGwgb3RoZXIgZmV0Y2hlcyBpbiB0aGlzIHNlcnZp
Y2Ugd29ya2VyCisgICAgSGFzaFNldDxSZWY8U2VydmljZVdvcmtlckZldGNoVGFzaz4+IG90aGVy
RmV0Y2hlczsKKyAgICBmb3IgKGF1dG8mIGZldGNoVGFzayA6IG1fb25nb2luZ0ZldGNoZXMudmFs
dWVzKCkpIHsKKyAgICAgICAgaWYgKGZldGNoVGFzay0+c2VydmljZVdvcmtlcklkZW50aWZpZXIo
KSA9PSB0YXNrLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpCisgICAgICAgICAgICBvdGhlckZl
dGNoZXMuYWRkKGZldGNoVGFzay5jb3B5UmVmKCkpOworICAgIH0KKworICAgIC8vIFNpZ25hbCBs
b2FkIGZhaWx1cmUgZm9yIHRoZW0KKyAgICBmb3IgKGF1dG8mIGZldGNoVGFzayA6IG90aGVyRmV0
Y2hlcykgeworICAgICAgICBpZiAoZmV0Y2hUYXNrLT53YXNIYW5kbGVkKCkpCisgICAgICAgICAg
ICBmZXRjaFRhc2stPmZhaWwoeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJT
ZXJ2aWNlIFdvcmtlciBjb250ZXh0IGNsb3NlZCJfcyB9KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZmV0Y2hUYXNrLT5kaWROb3RIYW5kbGUoKTsKKworICAgICAgICBhdXRvIGlkZW50aWZp
ZXIgPSBtX29uZ29pbmdGZXRjaElkZW50aWZpZXJzLnRha2UoZmV0Y2hUYXNrLT5pZGVudGlmaWVy
KCkpOworICAgICAgICBtX29uZ29pbmdGZXRjaGVzLnJlbW92ZShpZGVudGlmaWVyKTsKKyAgICB9
CisKKyAgICBpZiAobV9zZXJ2ZXIpIHsKKyAgICAgICAgaWYgKGF1dG8qIHdvcmtlciA9IG1fc2Vy
dmVyLT53b3JrZXJCeUlEKHRhc2suc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSkpIHsKKyAgICAg
ICAgICAgIHdvcmtlci0+c2V0SGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzKCk7CisgICAgICAgICAg
ICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSkKKyAgICAgICAgICAgICAgICBtX3NlcnZlci0+c3lu
Y1Rlcm1pbmF0ZVdvcmtlcigqd29ya2VyKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggYTNj
NjRlZDEyNzhkZjY3YTk5ZTAwNTk3YTQ0MjBlYTIxNzY0OTJhZC4uNTdiYjRmMzM3NjEzMjI4MTQ3
ZDE5MDQ2MjRlNDRmMDA1ZmQ5MzQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBTZXNzaW9uSUQ7
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CitjbGFzcyBXZWJT
V1NlcnZlckNvbm5lY3Rpb247CiAKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biA6IHB1YmxpYyBXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
CkBAIC02Myw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGVybWluYXRlKCk7CiAKLSAg
ICB2b2lkIHN0YXJ0RmV0Y2goUEFMOjpTZXNzaW9uSUQsIFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYs
IFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHN0YXJ0RmV0
Y2goUEFMOjpTZXNzaW9uSUQsIFdlYlNXU2VydmVyQ29ubmVjdGlvbiYsIFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNhbmNl
bEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZl
dGNoSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZv
aWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJDb3JlOjpTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKTsKIApAQCAtNzIsNiArNzMsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRsZWFibGUpOwogICAgIGJvb2wgaXNUaHJv
dHRsZWFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzVGhyb3R0bGVhYmxlOyB9CiAKKyAgICB2b2lk
IGZldGNoVGFza1RpbWVkT3V0KFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smKTsKKwogcHJpdmF0ZToK
ICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCBjZmZlYjBlZjdhMmEzNTRhNWJmNzE1YzJhMzVkYjQx
YWNhNzgwZjA2Li41ZTNjZWRlMzFiYTFmZjgwYmJmNDlhMjNjYWFjY2M5MzYxZWMzOGMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTQwOCw2ICs0
MDgsMTYgQEAgdm9pZCBXS0NvbnRleHRTZXRDdXN0b21XZWJDb250ZW50U2VydmljZUJ1bmRsZUlk
ZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYKICAgICBXZWJLaXQ6OnRvSW1wbChjb250
ZXh0UmVmKS0+c2V0Q3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5kbGVJZGVudGlmaWVyKFdlYktp
dDo6dG9JbXBsKG5hbWUpLT5zdHJpbmcoKSk7CiB9CiAKK3ZvaWQgV0tDb250ZXh0U2V0U2Vydmlj
ZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGRv
dWJsZSBzZWNvbmRzKQoreworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5zZXRTZXJ2
aWNlV29ya2VyVGltZW91dEZvclRlc3RpbmcoKFNlY29uZHMpc2Vjb25kcyk7Cit9CisKK3ZvaWQg
V0tDb250ZXh0UmVzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhXS0NvbnRl
eHRSZWYgY29udGV4dFJlZikKK3sKKyAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+cmVz
ZXRTZXJ2aWNlV29ya2VyVGltZW91dEZvclRlc3RpbmcoKTsKK30KKwogdm9pZCBXS0NvbnRleHRT
ZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKFdLQ29udGV4dFJlZiwgYm9v
bCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKaW5kZXgg
ZWQ5NjkxMDVhMTU1YmM0ZTAzYWU5ODVmY2I5MjBmZmFmYmViMjc5Ny4uNzI4NzM1NTg1YjZkOGQ0
MzE4ZDZjZDI2YmU1M2JjMjYxZGVhN2RlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmgKQEAgLTE3MCw2ICsxNzAsOSBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRSZWZyZXNoUGx1Z0lucyhXS0NvbnRleHRSZWYgY29udGV4dCk7CiAKIFdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dFNldEN1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRpZmllcihXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tTdHJpbmdSZWYgbmFtZSk7CiAKK1dLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dFNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKFdLQ29udGV4
dFJlZiBjb250ZXh0UmVmLCBkb3VibGUgc2Vjb25kcyk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRSZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBhZDQwN2U2NDkyZjgzOWI4Njkw
N2NkMjA1YzdmNzQ1NGZmMDcyNzI1Li45NGFlZmU0YmJlZDU4MTk3ZDE1YWE5ZTk5MDg5NTAzODdi
NjNkZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBA
IC0xNDMyLDYgKzE0MzIsMTYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6YWN0aXZlUGFnZXNPcmln
aW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZyhQcm9jZXNzSUQgcGlkLCBDb20KICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRTZXJ2aWNlV29y
a2VyVGltZW91dEZvclRlc3RpbmcoU2Vjb25kcyBzZWNvbmRzKQoreworICAgIHNlbmRTeW5jVG9O
ZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNlcnZpY2VXb3Jr
ZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKHNlY29uZHMpLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nOjpSZXBseSgpKTsKK30K
Kwordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVzZXRTZXJ2aWNlV29ya2VyVGltZW91dEZvclRlc3Rp
bmcoKQoreworICAgIHNlbmRTeW5jVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlJlc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoKSwgTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JU
ZXN0aW5nOjpSZXBseSgpKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QWx3YXlzVXNl
c0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCBhbHdheXNVc2VDb21wbGV4VGV4dCkKIHsKICAgICBt
X2Fsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoID0gYWx3YXlzVXNlQ29tcGxleFRleHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA2MTJlMzkyZTQzNmE1
YjM1MTY2OTkzOGQ2NDg4N2JhMzZmMWY3YTgyLi4zYzhmNjM5NDczNTNhYjEyNTVkZDNlNDNjOGZl
N2MyZTQyYjRhNWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
QEAgLTI1Nyw2ICsyNTcsOCBAQCBwdWJsaWM6CiAgICAgUHJvY2Vzc0lEIHByZXdhcm1lZFByb2Nl
c3NJZGVudGlmaWVyKCk7CiAgICAgdm9pZCBhY3RpdmVQYWdlc09yaWdpbnNJbldlYlByb2Nlc3NG
b3JUZXN0aW5nKFByb2Nlc3NJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJik7CiAgICAgYm9vbCBuZXR3b3JrUHJvY2Vzc0hhc0VudGl0bGVtZW50Rm9yVGVzdGlu
Zyhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJUaW1lb3V0Rm9yVGVz
dGluZyhTZWNvbmRzKTsKKyAgICB2b2lkIHJlc2V0U2VydmljZVdvcmtlclRpbWVvdXRGb3JUZXN0
aW5nKCk7CiAKICAgICBXZWJQYWdlR3JvdXAmIGRlZmF1bHRQYWdlR3JvdXAoKSB7IHJldHVybiBt
X2RlZmF1bHRQYWdlR3JvdXAuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIwNjcwM2IxZmQxZTExMmJlY2JhOGFiYTQzYzI1ZTdm
ZjY4OWJmYjIuLjZjZWQ3YTFiNGViY2E4ZmI2YzA0MDlhNDYzOTI2ZGI5Mzg5ODI0ZmYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MSBAQAorMjAxOS0xMC0wNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgU2VydmljZSBXb3JrZXIgRmV0Y2ggZXZlbnRzIHNob3VsZCB0aW1lIG91dC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjE4OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RSdW5uZXI6OnNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGlu
Zyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZSk6CisKIDIwMTktMTAtMDcgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4K
IAogICAgICAgICBDcmFzaCBpbiBXZWJLaXRUZXN0UnVubmVyQXBwOiBpbnZvY2F0aW9uIGZ1bmN0
aW9uIGZvciBibG9jayBpbiBXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2VuZEV2ZW50U3Ry
ZWFtCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA0MmFhZDU0ZTMxMTNhMzgzZjczNDkx
Nzc0MTUyMTdjZWQ5OTBkNGFkLi4xOWE2ODg2OTFmYzVjNjYzNTQyOGFiMzA1ZTRmZjQ0YjEwNDcw
ZjBiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM4OSw2ICszODksOCBAQCBpbnRl
cmZhY2UgVGVzdFJ1bm5lciB7CiAKICAgICB2b2lkIHNlbmREaXNwbGF5Q29uZmlndXJhdGlvbkNo
YW5nZWRNZXNzYWdlRm9yVGVzdGluZygpOwogCisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyRmV0
Y2hUaW1lb3V0KGRvdWJsZSBzZWNvbmRzKTsKKwogICAgIC8vIFdlYkF1dGhOCiAgICAgdm9pZCBz
ZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9uKG9iamVjdCBjb25maWd1cmF0aW9u
KTsKICAgICB2b2lkIGFkZFRlc3RLZXlUb0tleWNoYWluKERPTVN0cmluZyBwcml2YXRlS2V5QmFz
ZTY0LCBET01TdHJpbmcgYXR0ckxhYmVsLCBET01TdHJpbmcgYXBwbGljYXRpb25UYWdCYXNlNjQp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKaW5kZXggMDExMDRhY2Y4NGJhYjEyN2U1MTczZDM3OTMyZTQyOTlhZmEzYzE1NC4u
NjVmODAwMjc3ZDczYzc3NGFlMTJlYmE5NzhiNjNkNmU3MjlmZjRmOCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0y
NTk3LDYgKzI1OTcsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjpzZW5kRGlzcGxheUNvbmZpZ3VyYXRp
b25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcoKQogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3Vz
TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1l
LmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpzZXRTZXJ2
aWNlV29ya2VyRmV0Y2hUaW1lb3V0KGRvdWJsZSBzZWNvbmRzKQoreworICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQiKSk7CisgICAgV0tSZXRhaW5Q
dHI8V0tEb3VibGVSZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS0RvdWJsZUNyZWF0ZShzZWNv
bmRzKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5Lmdl
dCgpLCBudWxscHRyKTsKK30KKwogLy8gV2ViQXV0aE4KIHZvaWQgVGVzdFJ1bm5lcjo6c2V0V2Vi
QXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVlUmVmIGNvbmZpZ3VyYXRpb25W
YWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmgKaW5kZXggZjE3MDAxMjk4MzFiNmY5NDcwNzYyZjAzMGZlY2Q3MDFjNGQzYmEz
Yi4uNmVmMTE1OTcxN2U0ODM3YTU1MzAzMTRmZjRlNzQ5MTIyYjJjY2Q1ZiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ4
OSw2ICs0ODksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbmREaXNwbGF5Q29uZmlndXJhdGlv
bkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpOwogCisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2Vy
RmV0Y2hUaW1lb3V0KGRvdWJsZSBzZWNvbmRzKTsKKyAgICAKICAgICAvLyBXZWJBdXRoTgogICAg
IHZvaWQgc2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihKU1ZhbHVlUmVmKTsK
ICAgICAvLyBGSVhNRSgxODk4NzYpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDliODA3MWRhN2ZmM2Y5ODA4ODEyZjc1NjE3ZjIwMGJhNWIyZmE1MTEuLmRi
NmJiYjE4NWU2YTZmMGNiMDU3NzQ5YTZhODgxNmYxZjM1MmYzZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC05NjQsNiArOTY0LDggQEAgYm9vbCBUZXN0
Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9u
cyYgb3B0aW9ucywgUmUKIAogICAgIFdLQ29udGV4dENsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNvbnRleHQoKSk7CiAKKyAgICBXS0NvbnRleHRSZXNl
dFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5jb250ZXh0KCkpOworCiAgICAgV0tXZWJzaXRlRGF0YVN0b3JlQ2xlYXJBbGxEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25zKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3Jl
KCkpOwogCiAgICAgY2xlYXJJbmRleGVkRGF0YWJhc2VzKCk7CkBAIC0zNjA2LDYgKzM2MDgsMTEg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2VuZERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZE1l
c3NhZ2VGb3JUZXN0aW5nKCkKICAgICBXS1NlbmREaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWRN
ZXNzYWdlRm9yVGVzdGluZyhwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OnNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKGRvdWJsZSBzZWNv
bmRzKQoreworICAgIFdLQ29udGV4dFNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXRGb3JUZXN0
aW5nKHBsYXRmb3JtQ29udGV4dCgpLCBzZWNvbmRzKTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxl
cjo6c2V0V2ViQXV0aGVudGljYXRpb25Nb2NrQ29uZmlndXJhdGlvbihXS0RpY3Rpb25hcnlSZWYg
Y29uZmlndXJhdGlvbikKIHsKICAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRXZWJBdXRoZW50aWNh
dGlvbk1vY2tDb25maWd1cmF0aW9uKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCks
IGNvbmZpZ3VyYXRpb24pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmlu
ZGV4IDZjMmQyZDg4NmUwM2I3N2I2MmJlNTUzOGEyMmI5YjBlOGQ0YzQxZTQuLjkxNmZhODYwZmQ5
MDJhZjhhNmY1MThkODUzNjY5MzBkMTRmZmIyYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKQEAgLTI5Myw2ICsyOTMsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9p
ZCBzZW5kRGlzcGxheUNvbmZpZ3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcoKTsKIAor
ICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoZG91YmxlIHNl
Y29uZHMpOworCiAgICAgdm9pZCBzZXRXZWJBdXRoZW50aWNhdGlvbk1vY2tDb25maWd1cmF0aW9u
KFdLRGljdGlvbmFyeVJlZik7CiAgICAgdm9pZCBhZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBT
dHJpbmcmIHByaXZhdGVLZXlCYXNlNjQsIGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKICAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihj
b25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvblRhZ0Jhc2U2
NCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDJmOGIz
MDZlMmM4Yzg3M2ZmZDMxNzk2MWM4MTJjNWJjODgyYjYzY2QuLmZiOTJlN2YwNjJjNDgxMzBkMDNi
ZTc0NzMyNWI2MTZlZTc3ZTc3ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCkBAIC0xNTk1LDYgKzE1OTUsMTMgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBU
ZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0
IikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RvdWJs
ZUdldFR5cGVJRCgpKTsKKyAgICAgICAgV0tEb3VibGVSZWYgc2Vjb25kcyA9IHN0YXRpY19jYXN0
PFdLRG91YmxlUmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5zZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhXS0RvdWJsZUdl
dFZhbHVlKHNlY29uZHMpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJUZXJtaW5hdGVO
ZXR3b3JrUHJvY2VzcyIpKSB7CiAgICAgICAgIEFTU0VSVCghbWVzc2FnZUJvZHkpOwogICAgICAg
ICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkudGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNzgzMDJhNmRlYWUzMjRhMzVmMjNhZmQ1OWRjN2Q1NWRiMzQ3NDA2Li4yZTM1MzQ2
MmFlYmIwZTVjNDk2M2M1MzVjOTc3Mzk2OTEzNzBjZWQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTktMTAtMDcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IFNlcnZpY2UgV29ya2VyIEZldGNoIGV2ZW50cyBzaG91bGQgdGltZSBvdXQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIxODgKKworICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvYmFzaWMtdGltZW91dC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXRpbWVvdXQuaHR0cHMuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L2Jhc2ljLXRpbWVvdXQtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKGV2ZW50LmV2ZW50LnJl
cXVlc3QudXJsLmluZGV4T2YpOgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Jlc291cmNlcy9iYXNpYy10aW1lb3V0LmpzOiBBZGRlZC4KKyAgICAgICAgKGFzeW5jLnRlc3Qu
ZmluaXNoVGhpc1Rlc3QpOgorICAgICAgICAoYXN5bmMudGVzdC50cnkpOgorICAgICAgICAoYXN5
bmMudGVzdC50cnkuY2hlY2tTdWNjZXNzQWdhaW4pOgorICAgICAgICAoYXN5bmMudGVzdCk6Cisg
ICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3N1Y2NlZWQtZmFs
bGJhY2stY2hlY2sucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9yZXNvdXJjZXMvdGltZW91dC1mYWxsYmFjay5odG1sOiBBZGRlZC4KKwogMjAxOS0xMC0w
NyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBmb2N1cyBwc2V1
ZG8gY2xhc3Mgc2hvdWxkIG1hdGNoIGEgc2hhZG93IGhvc3Qgd2hvc2Ugc2hhZG93IHRyZWUgY29u
dGFpbnMgdGhlIGZvY3VzZWQgZWxlbWVudApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtdGltZW91dC5odHRwcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0Lmh0dHBz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGY5ZTJkNzIzNjE5ZDg5MTZkYzA2NTRiYTBiMTk2
ZTljMGVmOTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvYmFzaWMtdGltZW91dC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorCitVUkwgMCAtIGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvd29ya2Vycy9zZXJ2aWNlL3Jl
c291cmNlcy90aW1lb3V0LWZhbGxiYWNrLmh0bWwKK1N0YXR1cyBjb2RlIDAgLSAyMDAKK1NvdXJj
ZScgaGVhZGVyIDAgLSBudWxsCitVUkwgMSAtIGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvd29ya2Vy
cy9zZXJ2aWNlL3Jlc291cmNlcy90aW1lb3V0LW5vLWZhbGxiYWNrLmh0bWwKK1N0YXR1cyBjb2Rl
IDEgLSA0MDQKK1NvdXJjZScgaGVhZGVyIDEgLSBudWxsCitVUkwgMiAtIGh0dHBzOi8vMTI3LjAu
MC4xOjg0NDMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zdWNjZWVkLWZhbGxiYWNrLWNoZWNr
LnBocAorU3RhdHVzIGNvZGUgMiAtIDIwMAorU291cmNlJyBoZWFkZXIgMiAtIG5ldHdvcmsKK1VS
TCAzIC0gaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3N1
Y2NlZWQtZmFsbGJhY2stY2hlY2sucGhwCitTdGF0dXMgY29kZSAzIC0gMjAwCitTb3VyY2UnIGhl
YWRlciAzIC0gbmV0d29yaworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy10aW1lb3V0Lmh0dHBzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjZhY2RjNjhmMTI5ZTRhYTE1NzhhODA0ZmNiYWE0NzNhNTU0OTA5YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXRpbWVv
dXQuaHR0cHMuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3N3LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Jhc2ljLXRpbWVvdXQuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLXRpbWVvdXQtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLXRpbWVvdXQtd29ya2Vy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVjNWEyMGIyMTRlNTRkYmNjYTk1ZjQyNDgxYjhlZjhlYWRhYTM5ZjEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9yZXNvdXJjZXMvYmFzaWMtdGltZW91dC13b3JrZXIuanMKQEAgLTAsMCArMSw2IEBACitzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoImZldGNoIiwgKGV2ZW50KSA9PiB7CisgICAgaWYgKGV2ZW50LnJl
cXVlc3QudXJsLmluZGV4T2YoInRpbWVvdXQiKSAhPT0gLTEpIHsKKyAgICAgICAgd2hpbGUgKDEp
IHsgfQorICAgIH0gZWxzZQorICAgICAgICBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2Uo
bnVsbCwgeyBzdGF0dXM6IDIwMCwgc3RhdHVzVGV4dDogIkhlbGxvIGZyb20gc2VydmljZSB3b3Jr
ZXIiLCBoZWFkZXJzOiBbWyJTb3VyY2UiLCAiU2VydmljZVdvcmtlciJdXSB9KSk7Cit9KTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNl
cy9iYXNpYy10aW1lb3V0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL2Jhc2ljLXRpbWVvdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFiYmNjMmM2ZjNkZDU1
ZDFkMDY0NDk1N2JlNGFkNWVjOGI2MDljYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy10aW1lb3V0LmpzCkBA
IC0wLDAgKzEsNzYgQEAKK2FzeW5jIGZ1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciB1cmxSZXN1
bHRzID0gbmV3IEFycmF5OworICAgIHZhciBzdGF0dXNSZXN1bHRzID0gbmV3IEFycmF5OworICAg
IHZhciBoZWFkZXJSZXN1bHRzID0gbmV3IEFycmF5OworCisgICAgZnVuY3Rpb24gZmluaXNoVGhp
c1Rlc3QoKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1cmxSZXN1bHRzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICBsb2coIlVSTCAiICsgaSArICIgLSAiICsgdXJsUmVz
dWx0c1tpXSk7CisgICAgICAgICAgICBsb2coIlN0YXR1cyBjb2RlICIgKyBpICsgIiAtICIgKyBz
dGF0dXNSZXN1bHRzW2ldKTsKKyAgICAgICAgICAgIGxvZygiU291cmNlJyBoZWFkZXIgIiArIGkg
KyAiIC0gIiArIGhlYWRlclJlc3VsdHNbaV0pOworICAgICAgICB9CisgICAgICAgIGZpbmlzaFNX
VGVzdCgpOworICAgIH0KKyAgICAKKyAgICB0cnkgeworICAgICAgICB2YXIgZnJhbWUgPSBhd2Fp
dCBpbnRlcmNlcHRlZEZyYW1lKCJyZXNvdXJjZXMvYmFzaWMtdGltZW91dC13b3JrZXIuanMiLCAi
L3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvIik7CisgICAgICAgIHZhciBmZXRjaCA9IGZyYW1l
LmNvbnRlbnRXaW5kb3cuZmV0Y2g7CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KDApOwor
ICAgICAgICAKKyAgICAgICAgLy8gVGhlIGZvbGxvd2luZyB0d28gZmV0Y2hlcyBzaG91bGQgdGlt
ZSBvdXQgaW1tZWRpYXRlbHkKKyAgICAgICAgZmV0Y2goInRpbWVvdXQtZmFsbGJhY2suaHRtbCIp
LnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIHVybFJlc3VsdHNbMF0gPSBy
ZXNwb25zZS51cmw7CisgICAgICAgICAgICBzdGF0dXNSZXN1bHRzWzBdID0gcmVzcG9uc2Uuc3Rh
dHVzOworICAgICAgICAgICAgaGVhZGVyUmVzdWx0c1swXSA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0
KCJTb3VyY2UiKTsgICAgICAgCisgICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAg
ICAgICBsb2coZXJyb3IpOworICAgICAgICB9KTsKKworICAgICAgICBmZXRjaCgidGltZW91dC1u
by1mYWxsYmFjay5odG1sIikudGhlbihmdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAg
dXJsUmVzdWx0c1sxXSA9IHJlc3BvbnNlLnVybDsKKyAgICAgICAgICAgIHN0YXR1c1Jlc3VsdHNb
MV0gPSByZXNwb25zZS5zdGF0dXM7CisgICAgICAgICAgICBoZWFkZXJSZXN1bHRzWzFdID0gcmVz
cG9uc2UuaGVhZGVycy5nZXQoIlNvdXJjZSIpOyAgIAorICAgICAgICB9LCBmdW5jdGlvbihlcnJv
cikgeworICAgICAgICAgICAgbG9nKGVycm9yKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTZXJ2aWNlV29y
a2VyRmV0Y2hUaW1lb3V0KDYwKTsKKworICAgICAgICAvLyBUaGUgc2VydmljZSB3b3JrZXIga25v
d3MgaG93IHRvIGhhbmRsZSB0aGUgZm9sbG93aW5nIGZldGNoICphbmQqIGhhcyA2MCBzZWNvbmRz
IHRvIGRvIHNvLgorICAgICAgICAvLyBCdXQgd2lsbCBiZSBjYW5jZWxsZWQgd2l0aCB0aGUgYWJv
dmUgZmV0Y2hlcyBzaW5jZSB3ZSdyZSB0ZXJtaW5hdGluZyB0aGUgc2VydmljZSB3b3JrZXIsIGFu
ZCAKKyAgICAgICAgLy8gdGhlcmVmb3JlIGl0IHdpbGwgdGhlbiBmYWxsYmFjayB0byB0aGUgbmV0
d29yay4KKyAgICAgICAgZmV0Y2goInN1Y2NlZWQtZmFsbGJhY2stY2hlY2sucGhwIikudGhlbihm
dW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICAgICAgdXJsUmVzdWx0c1syXSA9IHJlc3BvbnNl
LnVybDsKKyAgICAgICAgICAgIHN0YXR1c1Jlc3VsdHNbMl0gPSByZXNwb25zZS5zdGF0dXM7Cisg
ICAgICAgICAgICBoZWFkZXJSZXN1bHRzWzJdID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoIlNvdXJj
ZSIpOyAgIAorICAgICAgICAgICAgc2V0VGltZW91dChjaGVja1N1Y2Nlc3NBZ2FpbiwgMCk7Cisg
ICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgICAgICBsb2coZXJyb3IpOworICAg
ICAgICAgICAgZmluaXNoU1dUZXN0KCk7CisgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAg
Ly8gTm93IHdlIGNhbiBmZXRjaCB0aGF0IHNhbWUgVVJMIGFnYWluLCB3aGljaCAqY291bGQqIHJl
bGF1bmNoIHRoZSBzZXJ2aWNlIHdvcmtlciBhbmQgaGFuZGxlIGl0IHRoZXJlLCBidXQgZm9yIG5v
dyB0aGlzIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbiBpcyBpbmVydCBhbmQgZmV0Y2hlcyB0
aHJvdWdoIGl0IHdpbGwgZ28gdG8gdGhlIG5ldHdvcmsgaW5zdGVhZC4KKyAgICAgICAgLy8gSSdt
IGxlYXZpbmcgdGhpcyBpbiB0byBjb3ZlciBmdXR1cmUgY2FzZXMgd2hlcmUgd2UgZG8gcmVsYXVu
Y2ggdGhlIFNXIHRvIGhhbmRsZSBpdC4KKyAgICAgICAgZnVuY3Rpb24gY2hlY2tTdWNjZXNzQWdh
aW4oKSB7CisgICAgICAgICAgICBmZXRjaCgic3VjY2VlZC1mYWxsYmFjay1jaGVjay5waHAiKS50
aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAgICAgICAgICAgICAgdXJsUmVzdWx0c1szXSA9
IHJlc3BvbnNlLnVybDsKKyAgICAgICAgICAgICAgICBzdGF0dXNSZXN1bHRzWzNdID0gcmVzcG9u
c2Uuc3RhdHVzOworICAgICAgICAgICAgICAgIGhlYWRlclJlc3VsdHNbM10gPSByZXNwb25zZS5o
ZWFkZXJzLmdldCgiU291cmNlIik7ICAgCisgICAgICAgICAgICAgICAgZmluaXNoVGhpc1Rlc3Qo
KTsKKyAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgICAgICAgICAgbG9n
KGVycm9yKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hTV1Rlc3QoKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGxvZygiR290IGV4Y2VwdGlv
bjogIiArIGUpOworICAgICAgICBmaW5pc2hTV1Rlc3QoKTsKKyAgICB9Cit9CisKK3Rlc3QoKTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zdWNjZWVkLWZhbGxiYWNrLWNoZWNrLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zdWNjZWVkLWZhbGxiYWNrLWNoZWNrLnBocApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMWE4ZjBjNzE3MTdiNzI5ZGMwYzIzMjVhNzYwODVhNjhmYThlZjJiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3Vy
Y2VzL3N1Y2NlZWQtZmFsbGJhY2stY2hlY2sucGhwCkBAIC0wLDAgKzEsMyBAQAorPD9waHAKKyAg
ICBoZWFkZXIoJ1NvdXJjZTogbmV0d29yaycpOworPz5TdWNjZXNzIQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3Jlc291cmNlcy90aW1lb3V0LWZhbGxiYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvdGltZW91dC1mYWxsYmFjay5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg5NGI2YmVjNTllMjAzYjVkYThkYjVhYTE1OGZlZTU0MzJmM2JkYjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNv
dXJjZXMvdGltZW91dC1mYWxsYmFjay5odG1sCkBAIC0wLDAgKzEgQEAKK1RpbWVvdXQgcmVzb3Vy
Y2UgZmV0Y2hlZCBmcm9tIG5ldHdvcmsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>