<?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>222635</bug_id>
          
          <creation_ts>2021-03-02 16:22:30 -0800</creation_ts>
          <short_desc>Service worker loads are not marked as app-bound</short_desc>
          <delta_ts>2021-03-23 18:14:41 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1735115</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-02 16:22:30 -0800</bug_when>
    <thetext>There is a bug where loads via service worker are not being marked as app-bound requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735117</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-02 16:22:55 -0800</bug_when>
    <thetext>rdar://74395950</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735128</commentid>
    <comment_count>2</comment_count>
      <attachid>422025</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-02 16:41:06 -0800</bug_when>
    <thetext>Created attachment 422025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737068</commentid>
    <comment_count>3</comment_count>
      <attachid>422025</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-08 07:32:05 -0800</bug_when>
    <thetext>Comment on attachment 422025
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:448
&gt; +    server.setLastNavigationWasAppBound(loadParameters.request.isAppBound());

server is responsible for all pages, so it might be that it will start a service worker but not related to this load.
I think you should try to pass this parameter value to runServiceWorkerIfNecessary.
This should ultimately go to installServiceWorkerContext call.

As a first step you might want to do that in WebSWServerConnection::startFetch, where this should be related to a NetworkResourceLoader, so you should be able to get isAppBound().
As a second step, you might also want to do the same thing for events, currently it is in WebSWServerConnection::postMessageToServiceWorker, which can probably try to get it from WebProcess through IPC.
This could be done in a follow-up though, as you will need to pass this info to WebSWClientConnection::postMessageToServiceWorker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737655</commentid>
    <comment_count>4</comment_count>
      <attachid>422726</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-09 10:43:54 -0800</bug_when>
    <thetext>Created attachment 422726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737660</commentid>
    <comment_count>5</comment_count>
      <attachid>422025</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-09 10:46:51 -0800</bug_when>
    <thetext>Comment on attachment 422025
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:448
&gt;&gt; +    server.setLastNavigationWasAppBound(loadParameters.request.isAppBound());
&gt; 
&gt; server is responsible for all pages, so it might be that it will start a service worker but not related to this load.
&gt; I think you should try to pass this parameter value to runServiceWorkerIfNecessary.
&gt; This should ultimately go to installServiceWorkerContext call.
&gt; 
&gt; As a first step you might want to do that in WebSWServerConnection::startFetch, where this should be related to a NetworkResourceLoader, so you should be able to get isAppBound().
&gt; As a second step, you might also want to do the same thing for events, currently it is in WebSWServerConnection::postMessageToServiceWorker, which can probably try to get it from WebProcess through IPC.
&gt; This could be done in a follow-up though, as you will need to pass this info to WebSWClientConnection::postMessageToServiceWorker.

I posted a new patch marking the SW document loader in WebSWContextManagerConnection::startFetch() based on the request value. I am still not sure of the best way to get the correct default value in the case of a fetch called in a postMessage event handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737664</commentid>
    <comment_count>6</comment_count>
      <attachid>422726</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-09 10:52:21 -0800</bug_when>
    <thetext>Comment on attachment 422726
Patch

Can you add a test where service worker is serving two pages, one being app bound and the other being not app bound.
Also maybe do some loads outside of the fetch event handler (async fetch for instance).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737665</commentid>
    <comment_count>7</comment_count>
      <attachid>422726</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-09 10:54:33 -0800</bug_when>
    <thetext>Comment on attachment 422726
Patch

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

&gt; Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:129
&gt; +    m_document-&gt;loader()-&gt;setLastNavigationWasAppBound(wasAppBound);

Shouldn&apos;t we null check the DocumentLoader?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1562
&gt; +static void runTest(ResponseType responseType, bool appBound)

bool appBound would look better at call site if we used an enum class.

enum class IsAppBound : bool { No, Yes };

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1567
&gt; +    __block bool removedAnyExistingData = false;

Seems like you could use the existing isDone above.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1625
&gt; +        NSMutableURLRequest *nonAppBoundRequest = [request mutableCopy];

This seems to be leaking. If you call mutableCopy, you should adoptNS() right away.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1639
&gt; +    bool expectingAppBoundRequests = appBound ? true : false;

Why aren&apos;t you using appBound directly? What&apos;s the point of this new boolean that means exactly the same thing?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1645
&gt; +    }];

Aren&apos;t you missing this right after this call?

TestWebKitAPI::Util::run(&amp;isDone);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737674</commentid>
    <comment_count>8</comment_count>
      <attachid>422726</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-09 11:11:53 -0800</bug_when>
    <thetext>Comment on attachment 422726
Patch

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

&gt;&gt; Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:129
&gt;&gt; +    m_document-&gt;loader()-&gt;setLastNavigationWasAppBound(wasAppBound);
&gt; 
&gt; Shouldn&apos;t we null check the DocumentLoader?

It might not hurt but in practice ServiceWorkerThreadProxy document will not become frameless.
The page, main frame and document relationship should stay the same throughout the lifetime of the service worker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737920</commentid>
    <comment_count>9</comment_count>
      <attachid>422791</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-09 20:40:41 -0800</bug_when>
    <thetext>Created attachment 422791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737922</commentid>
    <comment_count>10</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-09 20:41:52 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #9)
&gt; Created attachment 422791 [details]
&gt; Patch

Covers more cases, like a fetch event from a post message and a soft update. 

I am not sure I wrote the async fetch test correctly, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737998</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-10 03:37:38 -0800</bug_when>
    <thetext>EWS failure seems related.
I think it would be best to split the patch in several pieces.
Start with the easy one that you did in https://bugs.webkit.org/attachment.cgi?id=422726&amp;action=review with some improved tests.
Then follow-up patches for soft update, computing the default value and postMessage.

As of service worker async test, I missed that we report the app bound request states through a WKWebView.
Service workers might do fetches for several web views so even though we have a heuristic that tells us whether a request done by a service worker is app bound or not, we probably want to define a heuristic to attach these loads to a particular WKWebView (or we would skip these loads or define an API that is not WKWebView specific).
The heuristic could be last one wins, meaning that we tie service worker loads to the last service worker window client that triggered either a fetch or a message event.
In case this window client disappears, we would need to pick another window client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739665</commentid>
    <comment_count>12</comment_count>
      <attachid>423238</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-15 14:22:48 -0700</bug_when>
    <thetext>Created attachment 423238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739668</commentid>
    <comment_count>13</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-15 14:25:03 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #11)
&gt; EWS failure seems related.
&gt; I think it would be best to split the patch in several pieces.
&gt; Start with the easy one that you did in
&gt; https://bugs.webkit.org/attachment.cgi?id=422726&amp;action=review with some
&gt; improved tests.
&gt; Then follow-up patches for soft update, computing the default value and
&gt; postMessage.
&gt; 

Ok, new simple-case patch uploaded. Tracking the other fixes here: https://bugs.webkit.org/show_bug.cgi?id=223201 and https://bugs.webkit.org/show_bug.cgi?id=223200. I think the default case will fall into one of these two.


&gt; As of service worker async test, I missed that we report the app bound
&gt; request states through a WKWebView.
&gt; Service workers might do fetches for several web views so even though we
&gt; have a heuristic that tells us whether a request done by a service worker is
&gt; app bound or not, we probably want to define a heuristic to attach these
&gt; loads to a particular WKWebView (or we would skip these loads or define an
&gt; API that is not WKWebView specific).
&gt; The heuristic could be last one wins, meaning that we tie service worker
&gt; loads to the last service worker window client that triggered either a fetch
&gt; or a message event.
&gt; In case this window client disappears, we would need to pick another window
&gt; client.

I excluded the async test case from the latest patch, but I don&apos;t fully understand why we need to attach loads to a particular WebView. If we mark a fetch based on the initiating request, won&apos;t that always be associated with the correct WebView?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742857</commentid>
    <comment_count>14</comment_count>
      <attachid>423238</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-03-23 09:43:33 -0700</bug_when>
    <thetext>Comment on attachment 423238
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1639
&gt; +    [webView _appBoundNavigationData: ^(struct WKAppBoundNavigationTestingData data) {

Could we do that check before reloading as well.
Is there a way to clear the appBoundNavigationData as well?
I would guess that for synthetic data, in the reload case, we would probably not see any load at all from the web page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743053</commentid>
    <comment_count>15</comment_count>
      <attachid>423238</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-23 16:03:15 -0700</bug_when>
    <thetext>Comment on attachment 423238
Patch

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

Thanks for the review!

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1639
&gt;&gt; +    [webView _appBoundNavigationData: ^(struct WKAppBoundNavigationTestingData data) {
&gt; 
&gt; Could we do that check before reloading as well.
&gt; Is there a way to clear the appBoundNavigationData as well?
&gt; I would guess that for synthetic data, in the reload case, we would probably not see any load at all from the web page.

Yes, I will fix this in the patch-for-landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743088</commentid>
    <comment_count>16</comment_count>
      <attachid>424081</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-23 17:27:30 -0700</bug_when>
    <thetext>Created attachment 424081
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1743101</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-23 18:14:39 -0700</bug_when>
    <thetext>Committed r274928: &lt;https://commits.webkit.org/r274928&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424081.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422025</attachid>
            <date>2021-03-02 16:41:06 -0800</date>
            <delta_ts>2021-03-09 10:43:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222635-20210302164106.patch</filename>
            <type>text/plain</type>
            <size>23205</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDk5YzQ3OTM4NjY1N2Vl
OWNmM2M3MGNkMGVlZTUzYjM3YjE0YmNiNy4uZmY5ZDY3ZDM0NmI4ZGY0NGRlOWJiM2RlN2ZiNjUz
MTg1YjFmYTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTAzLTAyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ug
d29ya2VyIGxvYWRzIGFyZSBub3QgbWFya2VkIGFzIGFwcC1ib3VuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjM1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NDM5NTk1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2UgdGhlIHN0b3JlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHZhbHVl
IGZyb20gdGhlIGxhc3QgcmVzb3VyY2UKKyAgICAgICAgbG9hZCB0byBzZXQgdGhpcyB2YWx1ZSBp
biB0aGUgZG9jdW1lbnQgbG9hZGVyIHdoZW4gYSBzZXJ2aWNlIHdvcmtlcgorICAgICAgICBpcyBp
bnN0YWxsZWQsIG9yIGluIHRoZSByZXF1ZXN0IGZvciBhIHNvZnQgdXBkYXRlLgorCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6c2V0bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNv
ZGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMpOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXI6OnN0YXJ0U2NyaXB0RmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0
ZVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQg
Y29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhIGNvbnN0
KToKKwogMjAyMS0wMi0yNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW1BheW1lbnQgUmVxdWVzdF0gbG9nIGlmIGB1cGRhdGVXaXRoYCBpcyBub3QgY2FsbGVk
IHN5bmNocm9ub3VzbHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODQzNTBmZDM2YjBhMTEyMzIwNjc3MzVkNWM1ZDlj
NmYwYzlmZDk0Mi4uNGVjOTFmYWE2OThhZWFjYjFkZDBkOTEzN2VmZTJlZTM0YTJhMTk5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMy0wMiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIHdvcmtlciBsb2FkcyBhcmUg
bm90IG1hcmtlZCBhcyBhcHAtYm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMjYzNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQzOTU5NTA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYSBz
ZXJ2aWNlIHdvcmtlciBpcyByZWdpc3RlcmVkIG9uIGEgcGFnZSB0aGF0IHdhcyBsb2FkZWQgd2l0
aCBhbgorICAgICAgICBhcHAtYm91bmQgcmVxdWVzdCwgYWxsIGxvYWRzIGZyb20gdGhlIHNlcnZp
Y2Ugd29ya2VyIHNob3VsZCBhbHNvIGJlCisgICAgICAgIG1hcmtlZCBhcyBhcHAtYm91bmQuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hl
ZHVsZVJlc291cmNlTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKToKKyAgICAgICAgVXBkYXRl
IHRoZSBTV1NlcnZlciB3aXRoIHRoZSBhcHAtYm91bmQgdmFsdWUgZnJvbSB0aGUgbGFzdAorICAg
ICAgICBuYXZpZ2F0aW9uLiBQYXNzIHRoaXMgdmFsdWUgd2hlbiBpbnN0YWxsaW5nIGEgc2Vydmlj
ZSB3b3JrZXIgc28gaXQKKyAgICAgICAgY2FuIGJlIHN0b3JlZCBpbiB0aGUgd29ya2VyJ3MgZG9j
dW1lbnQgbG9hZGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcik6CisgICAg
ICAgIEZpeCBjYXBpdGFsaXphdGlvbiBlcnJvci4KKwogMjAyMS0wMi0yNiAgS2F0ZSBDaGVuZXkg
IDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBDb252ZXJ0IFdLTWVkaWFQ
bGF5YmFja1N0YXRlIE5TX0VOVU0gYmFjayB0byBOU1VJbnRlZ2VyIHR5cGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZWFiNzEwYTI3ZGVmZDhkZDVlM2VhYjIyNzJl
ODhhMWYzMzZjZGEyYS4uN2IyYTBlYzU4NWExOWViZGU5NmVlYTc3NzUzMzA4MTc1MzVmNzQ1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTQyMSw3ICs0MjEsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsgfQotICAgIHZvaWQg
c2V0bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpIHsgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZDsgfQorICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChib29sIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQpIHsgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBP
UlQgRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0
ZURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggMTZkZjJkODI0OWY4N2Y2YWU0Mzcz
ZTI2NTYyM2MzZDhhOTliNWVkZi4uYjVhZGRiMzFkYWJjYmE4MGI5NGQwMDM0ZWFjZjM2Nzk0ZjEz
YWI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKICAgICAgICAgc2NyaXB0VVJMLmlzb2xhdGVkQ29weSgpLAogICAgICAgICB3b3JrZXJU
eXBlLAogICAgICAgICBsb2FkZWRGcm9tRGlzaywKKyAgICAgICAgbGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCwKICAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHNjcmlwdFJlc291cmNlTWFwKQogICAg
IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmgKaW5kZXggM2FkNWQ0YTEyNjk1YjY5ZWUxNjVlZTQ4MGE5
NjFiMTBmMWRiZGM3ZS4uOTU1YmFjY2E1ZmVlMzlmYTNkNGEzNDMwNWE5NjYwNWFlMmI5Y2ZhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuaApAQCAtODcsNiArODcsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhIHsKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFdvcmtlclR5cGUgd29ya2Vy
VHlwZTsKICAgICBib29sIGxvYWRlZEZyb21EaXNrOworICAgIGJvb2wgbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZDsKICAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291
cmNlTWFwOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OwpAQCAtOTgsNyArOTksNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBq
b2JEYXRhSWRlbnRpZmllciA8PCByZWdpc3RyYXRpb24gPDwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIgPDwgc2NyaXB0IDw8IGNvbnRlbnRTZWN1cml0eVBvbGljeSA8PCByZWZlcnJlclBvbGljeSA8
PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlzazsKKyAgICBlbmNvZGVy
IDw8IGpvYkRhdGFJZGVudGlmaWVyIDw8IHJlZ2lzdHJhdGlvbiA8PCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciA8PCBzY3JpcHQgPDwgY29udGVudFNlY3VyaXR5UG9saWN5IDw8IHJlZmVycmVyUG9s
aWN5IDw8IHNjcmlwdFVSTCA8PCB3b3JrZXJUeXBlIDw8IGxvYWRlZEZyb21EaXNrIDw8IGxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAgICAgZW5jb2RlciA8PCBzY3JpcHRSZXNvdXJjZU1hcDsK
ICAgICBlbmNvZGVyIDw8IGNlcnRpZmljYXRlSW5mbzsKIH0KQEAgLTE0NCw2ICsxNDUsMTAgQEAg
T3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxvYWRlZEZy
b21EaXNrKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorICAgIGJvb2wgbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAogICAg
IEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzY3JpcHRSZXNvdXJjZU1hcCkpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CkBAIC0xNjQsNiArMTY5LDcgQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRl
eHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWMKICAg
ICAgICAgV1RGTW92ZShzY3JpcHRVUkwpLAogICAgICAgICB3b3JrZXJUeXBlLAogICAgICAgICBs
b2FkZWRGcm9tRGlzaywKKyAgICAgICAgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCwKICAgICAg
ICAgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkKICAgICB9fTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGQyY2FkOTYxMmYyNGMxNTBkZGVkN2ExY2Q5OGIy
ODZjZmE4MmM0MDkuLmM3ZjJkZGU3MTc0ZTk5MWU1MDU5MTcwZmE2NTNmZDZmN2RkZThmMzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkNhY2hlU3RvcmFnZVByb3Zp
ZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudExvb3Au
aCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXIuaCIKQEAg
LTEyMyw2ICsxMjQsMTEgQEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojp+U2VydmljZVdvcmtl
clRocmVhZFByb3h5KCkKICAgICBhbGxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveGllcygpLnJlbW92
ZSh0aGlzKTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNldExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQoYm9vbCB3YXNBcHBCb3VuZCkKK3sKKyAgICBtX2RvY3VtZW50LT5s
b2FkZXIoKS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCh3YXNBcHBCb3VuZCk7Cit9CisK
IGJvb2wgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBj
b25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggYTFkNGQ5NTk1MzE0YWVm
ZDA0MTBiYTFiYzA2ODUzYTM1ZDk2ZTk5My4uNTczNTkzNTg0NGVmYTA3ZGU0MWEwNjQ4NDRjOGJl
MGRmYTI3MWIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTc4LDYg
Kzc4LDggQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSYmKTsKICAg
ICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7
CisgICAgCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKGJvb2wpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiwgU3RvcmFn
ZUJsb2NraW5nUG9saWN5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggY2VlOGNj
OGMwOGJlMGIxYjdmNTQxMTBhNmNiMzE3NDZlOTg5NGIxNC4uNWZmZTE3OGM2ZDUyMjNiNzE3ZGI2
MTk1NDRlMzhmZjNiMDZmNzRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTQ2
Nyw3ICs0NjcsNyBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yZHMo
KQogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKICAgICAgICAgYXV0byBzZXJ2aWNlV29y
a2VyRGF0YSA9IFNlcnZpY2VXb3JrZXJEYXRhIHsgd29ya2VySWRlbnRpZmllciwgc2NyaXB0VVJM
LCBTZXJ2aWNlV29ya2VyU3RhdGU6OkFjdGl2YXRlZCwgKndvcmtlclR5cGUsIHJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgfTsKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGF0YSB7IFdURk1vdmUoKmtleSksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IFdURk1vdmUoc2NvcGVVUkwpLCAqdXBkYXRlVmlhQ2FjaGUsIGxhc3RVcGRhdGVDaGVja1RpbWUs
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJEYXRhKSB9
OwotICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsg
V1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdU
Rk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVu
dFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0
VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwKSB9Owor
ICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RG
OjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1v
dmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNl
Y3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJM
KSwgKndvcmtlclR5cGUsIHRydWUsIGZhbHNlLCBXVEZNb3ZlKCpzY3JpcHRSZXNvdXJjZU1hcCkg
fTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvbnRleHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRpb25Ub1N0b3JlKFdU
Rk1vdmUoY29udGV4dERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMGVmMDA4ZmI1NjA3ODFkMzBhYmRiNGE5OTdk
NjRmMWQ2NTg2OTRiMy4uZTljZTU5NTk5MTQ0MWM0OWI5MThiNDM3M2RhZjIyM2ZjZDE0ZWJmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAKQEAgLTQ2MCw3ICs0NjAsOCBAQCB2b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNo
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBib29sIHNob3VsZAogICAgICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihvcmlnaW5VUkwob3JpZ2luKS5zdHJpbmcoKSk7CiAg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudChzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFn
ZW50KENsaWVudE9yaWdpbiB7IGpvYkRhdGEudG9wT3JpZ2luLCBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKGpvYkRhdGEuc2NyaXB0VVJMKS0+ZGF0YSgpIH0pKTsKICAgICAgICAgcmVxdWVzdC5zZXRQ
cmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93KTsKLQorICAgICAgICByZXF1ZXN0LnNl
dElzQXBwQm91bmQobV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKKyAgICAgICAgCiAgICAg
ICAgIG1fc29mdFVwZGF0ZUNhbGxiYWNrKFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsgam9iRGF0YSB9
LCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiByZXN1bHQpIHsKICAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjMzLDcgKzYzNCw3IEBAIHZvaWQg
U1dTZXJ2ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZl
clJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFw
PFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRS
ZXNvdXJjZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNv
bnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywg
Y29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwg
V1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CisgICAgdHJ5SW5zdGFsbENvbnRleHREYXRh
KFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRp
b24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0LCBj
ZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVy
bCwgdHlwZSwgZmFsc2UsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCwgV1RGTW92ZShzY3Jp
cHRSZXNvdXJjZU1hcCkgfSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0
RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGJhMWI0MTM1MDM1NDBk
Y2U4ODVjZDQ0OGIzZjdjMDQyOGRiOGNiMTcuLjFjOTU3ZjI0NmEyNDNlYzIyNmU5OWI1ZmFkNjcw
MjQ5MDMzOTVhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKQEAgLTIxNSw2ICsyMTUsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
Y29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgPSAxMF9zOwogCisgICAg
dm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGJvb2wgd2FzQXBwQm91bmQpIHsgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gd2FzQXBwQm91bmQ7IH0KKyAgICBib29sIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQoKSBjb25zdCB7IHJldHVybiBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQ7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlUmVnaXN0cmF0aW9uRG9t
YWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKIApAQCAtMjc3LDYgKzI4MCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9hcHBCb3VuZERvbWFpbnM7CiAgICAgYm9vbCBtX2hh
c1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1JlY2Vp
dmVkQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwCmluZGV4IDNiYTM2YTNmOTVhNTdlYmExNzg1OGNlNjJkZWVlNzhhYzlhNjY3MDUu
LjgxNGJlOTZmZjYwOTZmYTcxOTFjYjc3ODE3YWFmZTM5NmRlZTZlN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCkBAIC04NSw3ICs4NSw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTV1NlcnZlcldv
cmtlcjo6Y29udGV4dERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChtX3JlZ2lzdHJhdGlvbik7
CiAKLSAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1f
ZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNl
Y3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEu
dHlwZSwgZmFsc2UsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBXVEY6Om51
bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3Njcmlw
dCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVy
UG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fc2VydmVyLT5s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCksIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKIH0KIAog
dm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggODRjOTEzYWQxYzBh
OTE0ZmY2ZDRhOTdlNjliMTUyYzRlYmJjNjgwOC4uZWU3OWZkOWRjZWQxNzVkZmUwYjA3NzQxMzFj
YzUxZTdhMjgzNjgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ0NSw2ICs0
NDUsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291
cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIGF1dG8mIHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vz
c2lvbihtX3Nlc3Npb25JRCk7CisgICAgc2VydmVyLnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQobG9hZFBhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEJvdW5kKCkpOwogICAgIGlmICghc2VydmVy
LmlzSW1wb3J0Q29tcGxldGVkKCkpIHsKICAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJc0NvbXBs
ZXRlZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFyYW1ldGVy
cyA9IFdURk1vdmUobG9hZFBhcmFtZXRlcnMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KCFtX25ldHdvcmtQcm9jZXNzLT53ZWJQcm9jZXNzQ29ubmVjdGlvbih3ZWJQcm9jZXNzSWRlbnRp
ZmllcigpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA0NjI0Yzgz
NTY5YWI5MTUwMTk1ZTQ2NDQ2YzA0NjI0ZTVkMDAyOWNkLi4yNTczOWI5MDZmODE2OGQ3ZDA3ZmEz
YjBkZmE2OGE4NTIyNzgyNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
CkBAIC0xNDEsNiArMTQxLDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
aW5zdGFsbFNlcnZpY2VXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckNvbnQKICAgICBwYWdlQ29u
ZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBtYWtlVW5pcXVlUmVmPFNlcnZp
Y2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4obV93ZWJQYWdlUHJveHlJRCwgbV9wYWdlSUQsIEZy
YW1lSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgZWZmZWN0aXZlVXNlckFnZW50KTsKIAogICAgIGF1
dG8gc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpj
cmVhdGUoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbiksIGRhdGEsIFdURk1vdmUoZWZmZWN0aXZl
VXNlckFnZW50KSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIo
KSwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kpOworICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQpOwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlclRocmVhZEZvckluc3RhbGwoV1RGTW92ZShzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkp
KTsKIAogICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJDcmVhdGVkIHNlcnZpY2Ugd29y
a2VyICUiIFBSSXU2NCAiIGluIHByb2Nlc3MgUElEICVpIiwgZGF0YS5zZXJ2aWNlV29ya2VySWRl
bnRpZmllci50b1VJbnQ2NCgpLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4MmUxZjQ4YjZmNTc4ZDhk
YjZhOWIxYzI0MGFlMDBhMjVjMDg3ZjYwLi4zOTE5MDIzYzNjMTMwODM5NWQ4OGRlNjU2ZTEzOTkx
Nzg5OWExZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNjQ4Myw3ICs2NDgzLDcgQEAgUmVmPERvY3VtZW50TG9hZGVyPiBXZWJQYWdlOjpj
cmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmUKIHsKICAg
ICBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IGRvY3VtZW50TG9hZGVyID0gV2ViRG9jdW1lbnRMb2Fk
ZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiAKLSAgICBkb2N1bWVudExvYWRl
ci0+c2V0bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpOworICAgIGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKG1f
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CiAKICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUo
KSkgewogICAgICAgICBpZiAobV9wZW5kaW5nTmF2aWdhdGlvbklEKSB7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzc5MmFhNjc3OTkzM2IyOTQz
NGI0NWY0ZWVkZjU3OWE4YTQ3ZGI5YS4uZjgwZDU3NTE3MTExZTcyOWMyNTMzOWQyMTRhN2FkMzlm
ODhkM2IyNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAzLTAyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9j
aGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ugd29ya2VyIGxvYWRzIGFyZSBub3Qg
bWFya2VkIGFzIGFwcC1ib3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIyNjM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDM5NTk1MD4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBUEkgdGVzdCBj
b3ZlcmFnZS4gTWFrZXMgc3VyZSB2YXJpb3VzIHNlcnZpY2Ugd29ya2VyIGxvYWRzIGFsbCBtYXRj
aAorICAgICAgICB0aGUgaW5pdGlhbCByZXF1ZXN0J3MgYXBwLWJvdW5kIHN0YXRlLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5
Lm1tOgorCiAyMDIxLTAyLTI2ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4K
IAogICAgICAgICBbYnVpbGQud2Via2l0Lm9yZ10gU3RvcCB1c2luZyBkZXByZWNhdGVkIGJ1aWxk
Ym90LnN0YXR1cy5idWlsZGVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggNDgxMTkxNWNi
ODUzNWRlYWZjN2NmZmViNzFjZDllMTM2ZGM4ZTkzZC4uOTkyNGNkZTc4NTIyNmNiOTA0ODFkYTNj
N2M0MjZhMDY0NDBmNTBkYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMjUsOSArMjUs
MTEgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKKyNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2Vy
dmVyLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0
VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBvcnQg
IlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMu
aCIKQEAgLTE1NTYsNCArMTU1OCwxMTIgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25B
cHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOwogfTsKIAorZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIENh
Y2hlZCwgRmV0Y2hlZCB9Oworc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9u
c2VUeXBlLCBib29sIGFwcEJvdW5kKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJOworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKworICAgIF9fYmxvY2sgYm9v
bCByZW1vdmVkQW55RXhpc3RpbmdEYXRhID0gZmFsc2U7CisgICAgW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3Rd
IGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIHJlbW92ZWRBbnlFeGlzdGluZ0RhdGEg
PSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVtb3ZlZEFu
eUV4aXN0aW5nRGF0YSk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogbWFpbiA9CisgICAgIjxz
Y3JpcHQ+IgorICAgICJ0cnkgeyIKKyAgICAiICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJl
Z2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgeyIKKyAgICAiICAgICAgICBpZiAo
cmVnLmFjdGl2ZSkgeyIKKyAgICAiICAgICAgICAgICAgYWxlcnQoJ3dvcmtlciB1bmV4cGVjdGVk
bHkgYWxyZWFkeSBhY3RpdmUnKTsiCisgICAgIiAgICAgICAgICAgIHJldHVybjsiCisgICAgIiAg
ICAgICAgfSIKKyAgICAiICAgICAgICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsiCisgICAgIiAg
ICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7
IgorICAgICIgICAgICAgICAgICBpZiAod29ya2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKSIKKyAg
ICAiICAgICAgICAgICAgICAgIGFsZXJ0KCdzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCcpOyIKKyAg
ICAiICAgICAgICB9KTsiCisgICAgIiAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeyIKKyAg
ICAiICAgICAgICBhbGVydCgnUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAnICsgZXJyb3IpOyIK
KyAgICAiICAgIH0pOyIKKyAgICAifSBjYXRjaChlKSB7IgorICAgICIgICAgYWxlcnQoJ0V4Y2Vw
dGlvbjogJyArIGUpOyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+IjsKKyAgICAKKyAgICBjb25z
dCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51
bGxwdHI7CisKKyAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgeworICAgIGNhc2UgUmVzcG9uc2VU
eXBlOjpTeW50aGV0aWM6CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9i
KFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlw
ZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAic3ludGhl
dGljIHJlc3BvbnNlIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZXNwb25zZVR5cGU6OkNh
Y2hlZDoKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdpbnN0YWxsJywgKGV2
ZW50KSA9PiB7IGV2ZW50LndhaXRVbnRpbCggY2FjaGVzLm9wZW4oJ3YxJykudGhlbigoY2FjaGUp
ID0+IHsgcmV0dXJuIGNhY2hlLmFkZEFsbChbJy9jYWNoZWQuaHRtbCddKTsgfSkgKTsgfSk7Igor
ICAgICAgICAgICAgInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsg
ZXZlbnQucmVzcG9uZFdpdGgoY2FjaGVzLm1hdGNoKCcvY2FjaGVkLmh0bWwnKSkgfSk7IjsKKyAg
ICAgICAgZXhwZWN0ZWRBbGVydCA9ICJsb2FkZWQgZnJvbSBjYWNoZSI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgorICAgICAgICBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZl
dGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAiZmV0
Y2hlZCBmcm9tIHNlcnZlciI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEhUVFBTZXJ2
ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgbWFpbiB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMg
fSB9LAorICAgICAgICB7ICIvY2FjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdsb2FkZWQg
ZnJvbSBjYWNoZScpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7
ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAg
ICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworCisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW2RlbGVnYXRlIHNldERpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRo
b2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNhbGxi
YWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50
aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRy
dXN0XSk7CisgICAgfV07CisgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZS5nZXQoKTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IHNlcnZlci5yZXF1
ZXN0KCk7CisgICAgaWYgKCFhcHBCb3VuZCkgeworICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0
ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbcmVxdWVzdCBtdXRhYmxlQ29weV07CisgICAgICAgIEFQ
UF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAgICByZXF1ZXN0ID0gbm9uQXBwQm91bmRS
ZXF1ZXN0OworICAgIH0KKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAg
IEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1
bGx5IHJlZ2lzdGVyZWQiKTsKKworICAgIGlmIChyZXNwb25zZVR5cGUgIT0gUmVzcG9uc2VUeXBl
OjpGZXRjaGVkKQorICAgICAgICBzZXJ2ZXIuY2FuY2VsKCk7CisKKyAgICBbd2ViVmlldyByZWxv
YWRdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCBl
eHBlY3RlZEFsZXJ0KTsKKyAgICAKKyAgICBib29sIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMg
PSBhcHBCb3VuZCA/IHRydWUgOiBmYWxzZTsKKyAgICAKKyAgICBbd2ViVmlldyBfYXBwQm91bmRO
YXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBk
YXRhKSB7CisgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRl
c3RpbmcsIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOworICAgICAgICBFWFBFQ1RfRVEoZGF0
YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwQm91bmRS
ZXF1ZXN0cyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07Cit9CisKK1RFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXIpCit7
CisgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OlN5bnRoZXRpYywgZmFsc2UpOworICAgIHJ1blRl
c3QoUmVzcG9uc2VUeXBlOjpDYWNoZWQsIGZhbHNlKTsKKyAgICBydW5UZXN0KFJlc3BvbnNlVHlw
ZTo6RmV0Y2hlZCwgZmFsc2UpOworfQorCisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBw
Qm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXIpCit7CisgICAgcnVuVGVzdChSZXNwb25zZVR5
cGU6OlN5bnRoZXRpYywgdHJ1ZSk7CisgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OkNhY2hlZCwg
dHJ1ZSk7CisgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OkZldGNoZWQsIHRydWUpOworfQorCiAj
ZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422726</attachid>
            <date>2021-03-09 10:43:54 -0800</date>
            <delta_ts>2021-03-09 20:40:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222635-20210309104353.patch</filename>
            <type>text/plain</type>
            <size>11664</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUwOWVjM2E2ODk5OTJj
NDQyNDExNTEyZTRjOGVjYWM4ZTc0M2ZmOS4uZDZmZjg2OTI5Yzg1YjI3NGU0MzVkZjlhMTEzY2Yx
NDBjNGI3NTgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTAzLTA5ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ug
d29ya2VyIGxvYWRzIGFyZSBub3QgbWFya2VkIGFzIGFwcC1ib3VuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjM1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NDM5NTk1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBGaXggY2FwaXRhbGl6YXRpb24gZXJyb3IuIEFkZCBhIG5ldyBmdW5jdGlvbiB0
byBtYXJrIHRoZSBzZXJ2aWNlCisgICAgICAgIHdvcmtlciBkb2N1bWVudCBsb2FkZXIgYXMgYXBw
LWJvdW5kLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0bGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5Lmg6CisKIDIwMjEt
MDMtMDggIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUF0g
U29tZSBtZWRpYSB0ZXN0cyByZWxhdGVkIHRvIGNhbnZhcyBmYWlsIHdoZW4gbWVkaWEgaW4gR1BV
IFByb2Nlc3MgaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5MzY2MTczOWZiNzEyM2MxZDY2ZGRlZWIx
OWY2NDYyYzU3OGJhMWY4Li43Yjk1NGY0ZTJiMjA4YTQ5NzljNGNiMzQzNGYzODI0NDQ3YWNhMDdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTAzLTA5ICBLYXRlIENoZW5leSAgPGth
dGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ugd29ya2VyIGxvYWRz
IGFyZSBub3QgbWFya2VkIGFzIGFwcC1ib3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDM5
NTk1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YXJrIHRoZSBzZXJ2aWNlIHdvcmtlciBkb2N1bWVudCBsb2FkZXIgYXMgYXBwLWJvdW5kIG9yIG5v
dCB3aGVuCisgICAgICAgIGluaXRpYXRpbmcgYSBmZXRjaCBldmVudC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAgRml4IGNhcGl0YWxp
emF0aW9uIGVycm9yLgorCiAyMDIxLTAzLTA4ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSA8c2VsZWN0IG11bHRpcGxlPiBncm91cCBoZWFkZXJz
IGFyZSBpbGxlZ2libGUgaW4gZGFyayBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCmluZGV4IGVhYjcxMGEyN2RlZmQ4ZGQ1ZTNlYWIyMjcyZTg4YTFmMzM2Y2RhMmEuLjdi
MmEwZWM1ODVhMTllYmRlOTZlZWE3Nzc1MzMwODE3NTM1Zjc0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC00MjEsNyArNDIxLDcgQEAgcHVibGljOgogI2VuZGlm
CiAKICAgICBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSBjb25zdCB7IHJldHVybiBt
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0KLSAgICB2b2lkIHNldGxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQoYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSB7IG1fbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0KKyAgICB2b2lk
IHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKSB7IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ7IH0KIAogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVy
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBkMmNhZDk2MTJmMjRjMTUwZGRlZDdh
MWNkOThiMjg2Y2ZhODJjNDA5Li5jN2YyZGRlNzE3NGU5OTFlNTA1OTE3MGZhNjUzZmQ2ZjdkZGU4
ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJDYWNoZVN0b3Jh
Z2VQcm92aWRlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRXZl
bnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZldGNoTG9hZGVy
LmgiCkBAIC0xMjMsNiArMTI0LDExIEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6flNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eSgpCiAgICAgYWxsU2VydmljZVdvcmtlclRocmVhZFByb3hpZXMo
KS5yZW1vdmUodGhpcyk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzZXRM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGJvb2wgd2FzQXBwQm91bmQpCit7CisgICAgbV9kb2N1
bWVudC0+bG9hZGVyKCktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQod2FzQXBwQm91bmQp
OworfQorCiBib29sIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYg
dGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGlmIChtX2lzVGVybWluYXRpbmdPclRl
cm1pbmF0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGExZDRkOTU5
NTMxNGFlZmQwNDEwYmExYmMwNjg1M2EzNWQ5NmU5OTMuLjA1YWU5NDc0ZDJjNGIxMjAyNDA3ZDlm
ZTkwY2FjMGY0NTkxNzg5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBA
IC03OSw2ICs3OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoKTsKICAg
ICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgV0VCQ09S
RV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFN0cmluZyYmIHVzZXJBZ2VudCwgQ2FjaGVT
dG9yYWdlUHJvdmlkZXImLCBTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNDYyNGM4MzU2OWFiOTE1MDE5NWU0NjQ0NmMwNDYy
NGU1ZDAwMjljZC4uMjMwMmQyOGFiOGVkMjA1ZjNlN2U2ZjIwZGFmZjJmNTBjODZiZjM4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjEzLDYgKzIxMyw4IEBAIHZv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBzZXJ2CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBzZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQocmVxdWVz
dC5pc0FwcEJvdW5kKCkpOworCiAgICAgaWYgKCFpc1ZhbGlkRmV0Y2gocmVxdWVzdCwgb3B0aW9u
cywgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zY3JpcHRVUkwoKSwgcmVmZXJyZXIpKSB7CiAg
ICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggNDM5NGNjNTc2MmY5NWJlYjgwZjAzNzBjM2YxODYwMGQ2N2RkNTU4ZC4uODEw
ZmVmYzhlMmZlY2QyOTk3MGVlZWQ5ZmFjY2NhNDQ2MzFhNWJhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY0ODEsNyArNjQ4MSw3IEBAIFJl
ZjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoRnJhbWUmIGZy
YW1lLCBjb25zdCBSZXNvdXJjZVJlCiB7CiAgICAgUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBkb2N1
bWVudExvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0
ZURhdGEpOwogCi0gICAgZG9jdW1lbnRMb2FkZXItPnNldGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQobV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKKyAgICBkb2N1bWVudExvYWRlci0+c2V0
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOwog
CiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYgKG1fcGVuZGluZ05h
dmlnYXRpb25JRCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDc3ZmZjMTFkNzc3ZjNhYjkxMjA2MGY3NzFiMDQ3MTA2ZDRhOTU2NmQuLjk2Mzk3
MTE2YjRkZjQ2ZGMyMThiYTA1MGIzYjI1MjdhMzM5M2QzODUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMy0w
OSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBT
ZXJ2aWNlIHdvcmtlciBsb2FkcyBhcmUgbm90IG1hcmtlZCBhcyBhcHAtYm91bmQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjYzNQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzQzOTU5NTA+CisKKyAgICAgICAgQVBJIHRlc3QgY292ZXJhZ2UgZm9y
IGZldGNoZWQgYW5kIHN5bnRoZXRpYyByZXNwb25zZXMgdG8gbWFrZSBzdXJlCisgICAgICAgIHRo
ZXkgYXJlIG1hcmtlZCBhcyBhcHAtYm91bmQgb3Igbm90IGJhc2VkIG9uIHRoZSBtYWluIHJlcXVl
c3QuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisK
IDIwMjEtMDMtMDggIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtyZXN1bHRzZGJweV0gQWRvcHQgd2Via2l0c2NtcHkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5t
bQppbmRleCA0ODExOTE1Y2I4NTM1ZGVhZmM3Y2ZmZWI3MWNkOWUxMzZkYzhlOTNkLi5mOTNkY2Fl
NDg3ZmIzZjc1N2Q4OTAxYWRjYzIzZTFhNjA3ZmIwNGY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5
Lm1tCkBAIC0yNSw5ICsyNSwxMSBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAorI2ltcG9ydCAi
SFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlNl
cnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUu
aCIKKyNpbXBvcnQgIlRlc3RVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFu
ZGxlci5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbkV4dHJhcy5oIgpAQCAtMTU1Niw0ICsxNTU4LDEwMyBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9OwogCitlbnVtIGNsYXNzIFJlc3BvbnNlVHlw
ZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9Oworc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5
cGUgcmVzcG9uc2VUeXBlLCBib29sIGFwcEJvdW5kKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJOworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKworICAgIF9f
YmxvY2sgYm9vbCByZW1vdmVkQW55RXhpc3RpbmdEYXRhID0gZmFsc2U7CisgICAgW1tXS1dlYnNp
dGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlz
dGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIHJlbW92ZWRBbnlFeGlz
dGluZ0RhdGEgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
cmVtb3ZlZEFueUV4aXN0aW5nRGF0YSk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogbWFpbiA9
CisgICAgIjxzY3JpcHQ+IgorICAgICJ0cnkgeyIKKyAgICAiICAgIG5hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgeyIKKyAgICAiICAg
ICAgICBpZiAocmVnLmFjdGl2ZSkgeyIKKyAgICAiICAgICAgICAgICAgYWxlcnQoJ3dvcmtlciB1
bmV4cGVjdGVkbHkgYWxyZWFkeSBhY3RpdmUnKTsiCisgICAgIiAgICAgICAgICAgIHJldHVybjsi
CisgICAgIiAgICAgICAgfSIKKyAgICAiICAgICAgICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsi
CisgICAgIiAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgZnVu
Y3Rpb24oKSB7IgorICAgICIgICAgICAgICAgICBpZiAod29ya2VyLnN0YXRlID09ICdhY3RpdmF0
ZWQnKSIKKyAgICAiICAgICAgICAgICAgICAgIGFsZXJ0KCdzdWNjZXNzZnVsbHkgcmVnaXN0ZXJl
ZCcpOyIKKyAgICAiICAgICAgICB9KTsiCisgICAgIiAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJv
cikgeyIKKyAgICAiICAgICAgICBhbGVydCgnUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAnICsg
ZXJyb3IpOyIKKyAgICAiICAgIH0pOyIKKyAgICAifSBjYXRjaChlKSB7IgorICAgICIgICAgYWxl
cnQoJ0V4Y2VwdGlvbjogJyArIGUpOyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+IjsKKworICAg
IGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0
ID0gbnVsbHB0cjsKKworICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CisgICAgY2FzZSBSZXNw
b25zZVR5cGU6OlN5bnRoZXRpYzoKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3
IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10s
IHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJz
eW50aGV0aWMgcmVzcG9uc2UiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlc3BvbnNlVHlw
ZTo6RmV0Y2hlZDoKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcs
IChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9
KTsiOworICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsg
Ii8iLCB7IG1haW4gfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUi
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNo
ZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0
PiIgfSB9LAorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisKKyAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbZGVsZWdhdGUg
c2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgewor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50
aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAg
ICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtO
U1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAgICB3ZWJWaWV3LmdldCgpLm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
c2VydmVyLnJlcXVlc3QoKTsKKyAgICBpZiAoIWFwcEJvdW5kKSB7CisgICAgICAgIE5TTXV0YWJs
ZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtyZXF1ZXN0IG11dGFibGVDb3B5XTsK
KyAgICAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgICAgIHJlcXVlc3QgPSBu
b25BcHBCb3VuZFJlcXVlc3Q7CisgICAgfQorCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0s
ICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOworCisgICAgaWYgKHJlc3BvbnNlVHlwZSAhPSBS
ZXNwb25zZVR5cGU6OkZldGNoZWQpCisgICAgICAgIHNlcnZlci5jYW5jZWwoKTsKKworICAgIFt3
ZWJWaWV3IHJlbG9hZF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRG
b3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOworCisgICAgYm9vbCBleHBlY3RpbmdBcHBCb3VuZFJl
cXVlc3RzID0gYXBwQm91bmQgPyB0cnVlIDogZmFsc2U7CisKKyAgICBbd2ViVmlldyBfYXBwQm91
bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0
YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVz
dFRlc3RpbmcsIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOworICAgICAgICBFWFBFQ1RfRVEo
ZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwQm91
bmRSZXF1ZXN0cyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07Cit9CisKK1RFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXIp
Cit7CisgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OlN5bnRoZXRpYywgZmFsc2UpOworICAgIHJ1
blRlc3QoUmVzcG9uc2VUeXBlOjpGZXRjaGVkLCBmYWxzZSk7Cit9CisKK1RFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXIpCit7CisgICAgcnVu
VGVzdChSZXNwb25zZVR5cGU6OlN5bnRoZXRpYywgdHJ1ZSk7CisgICAgcnVuVGVzdChSZXNwb25z
ZVR5cGU6OkZldGNoZWQsIHRydWUpOworfQorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422791</attachid>
            <date>2021-03-09 20:40:41 -0800</date>
            <delta_ts>2021-03-15 14:22:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222635-20210309204040.patch</filename>
            <type>text/plain</type>
            <size>60362</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ0OWRjOTkxZjhkZGU4
ZmJkOGQ5YjMzNGJjNzhmODg1ZDM5NDI0Yy4uMDIxYzljZWY0ZTZiZGU1OTFiMTA3YjU2ZmI1OWYw
NzUyYzlmYWJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIxLTAzLTA5ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ug
d29ya2VyIGxvYWRzIGFyZSBub3QgbWFya2VkIGFzIGFwcC1ib3VuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjM1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NDM5NTk1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQYXNzIHRoZSBhcHAtYm91bmQgdmFsdWUgdG8gdGhlIHNlcnZpY2Ugd29ya2Vy
IGRvY3VtZW50IGxvYWRlciBmb3IKKyAgICAgICAgdmFyaW91cyBjYXNlcy4KKworICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnNldGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOiBEZWxldGVkLgorICAg
ICAgICBGaXggY2FwaXRhbGl6YXRpb24gZXJyb3IuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZSk6CisgICAgICAgIFN0b3JlIHRo
ZSBtb3N0IHJlY2VudCBhcHAtYm91bmQgdmFsdWUgaW4gdGhlIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBvYmplY3QgdG8KKyAgICAgICAgc3RvcmUgYSBkZWZhdWx0IHZhbHVlIHdoZW4gd2UgaW5z
dGFsbCBhIHNlcnZpY2Ugd29ya2VyLiBUaGlzIHZhbHVlIHdpbGwgYmUKKyAgICAgICAgdXNlZCBp
ZiBhIGZldGNoIGV2ZW50IGlzIHN0YXJ0ZWQgZnJvbSBhIHBvc3RNZXNzYWdlLgorCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUpOgorICAgICAgICBTdG9yZSB0aGUgYXBw
LWJvdW5kIHZhbHVlIGluIFNlcnZpY2VXb3JrZXJKb2JEYXRhIGZvciB0aGUgc29mdCB1cGRhdGUK
KyAgICAgICAgY2FzZS4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oOgorICAgICAg
ICBTdG9yZSB0aGUgYXBwLWJvdW5kIHZhbHVlIGluIHRoZSBzZXJ2aWNlIHdvcmtlciBkb2N1bWVu
dCBsb2FkZXIgc28KKyAgICAgICAgcmVzb3VyY2UgbG9hZHMgZ2V0IHByb3Blcmx5IG1hcmtlZCBh
cyBhcHAtYm91bmQuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNl
OjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgVXNlIGFuIGVudW0g
dG8gYmUgbW9yZSBjbGVhciBpbiB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgorCisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6c29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdp
c3RyYXRpb246OnNvZnRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3Ry
YXRpb246OnNjaGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3Jr
ZXI6OmNvbnRleHREYXRhIGNvbnN0KToKKwogMjAyMS0wMy0wOSAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIE1TRSB2aWRlb3Mg
YXJlIHVuYWJsZSB0byBBaXJQbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdmZTYzOTBhZjZlNTMzYmNiMzQ0NDE3
ODRmNzkxYmU3NWJlYmU5OTMuLjVhZWE1N2Y2OWY0YmViNjhiMDQ4ZDlmOWM1MGZhMTljNzk2MDY5
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMjEtMDMtMDkgIEthdGUgQ2hlbmV5ICA8
a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSB3b3JrZXIgbG9h
ZHMgYXJlIG5vdCBtYXJrZWQgYXMgYXBwLWJvdW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI2MzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0
Mzk1OTUwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzb2Z0VXBkYXRl
SWZOZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKToKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6bG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcik6CisgICAgICAg
IFJlcXVlc3QgdGhlIG1vc3QgcmVjZW50IGFwcC1ib3VuZCBzdGF0ZSBmcm9tIFdlYlNXQ2xpZW50
Q29ubmVjdGlvbiB0bworICAgICAgICB1c2UgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgbm8g
ZmV0Y2ggZXZlbnQgd2l0aCBhIFJlc291cmNlUmVxdWVzdAorICAgICAgICB0byByZWZlciB0by4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246Omxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcik6CisgICAgICAgIFNldCB0
aGUgYXBwLWJvdW5kIHZhbHVlIGhlcmUuIElmIG5vdGhpbmcgd2FzIHBhc3NlZCBmcm9tIHRoZSBO
ZXR3b3JrCisgICAgICAgIFByb2Nlc3MsIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZSBzZXQgaW4gdGhl
IFdlYlByb2Nlc3MgYmFzZWQgb24gdGhlIGxhc3QKKyAgICAgICAgbmF2aWdhdGlvbi4gVGhpcyB3
aWxsIGJlIG92ZXJ3cml0dGVuIGlmIGEgbmV3IHJlc291cmNlIGlzIGZldGNoZWQsIGJ1dAorICAg
ICAgICBpcyBuZWVkZWQgaW4gdGhlIGNhc2Ugd2hlcmUgYSBmZXRjaCBoYXBwZW5zIGZyb20gYSBw
b3N0LW1lc3NhZ2UuCisKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXI6OnVwZGF0ZUxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOgorICAgICAgICBTZXQgdGhlIGRlZmF1bHQgYXBwLWJv
dW5kIHZhbHVlcyBpbiB0aGUgV2ViUHJvY2VzcyBhbmQgV2ViU1dDbGllbnRDb25uZWN0aW9uCisg
ICAgICAgIHRvIHJlZmVyZW5jZSBpbiB0aGUgY2FzZXMgZGVzY3JpYmVkIGFib3ZlLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZCBjb25zdCk6CisKIDIwMjEtMDMtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBDcmFzaCB1bmRlciBXZWJWaWV3SW1wbDo6ZmxhZ3NDaGFuZ2Vk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZWFiNzEwYTI3ZGVm
ZDhkZDVlM2VhYjIyNzJlODhhMWYzMzZjZGEyYS4uN2IyYTBlYzU4NWExOWViZGU5NmVlYTc3NzUz
MzA4MTc1MzVmNzQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAg
LTQyMSw3ICs0MjEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgbGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZDsgfQotICAgIHZvaWQgc2V0bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChib29sIGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpIHsgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZDsgfQorICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZChib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpIHsgbV9sYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kID0gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggMTZkZjJk
ODI0OWY4N2Y2YWU0MzczZTI2NTYyM2MzZDhhOTliNWVkZi4uYjVhZGRiMzFkYWJjYmE4MGI5NGQw
MDM0ZWFjZjM2Nzk0ZjEzYWI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTQ0LDYgKzQ0
LDcgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICAgICAgc2NyaXB0VVJMLmlzb2xhdGVkQ29weSgpLAog
ICAgICAgICB3b3JrZXJUeXBlLAogICAgICAgICBsb2FkZWRGcm9tRGlzaywKKyAgICAgICAgbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCwKICAgICAgICAgY3Jvc3NUaHJlYWRDb3B5KHNjcmlwdFJl
c291cmNlTWFwKQogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKaW5kZXggM2FkNWQ0YTEyNjk1
YjY5ZWUxNjVlZTQ4MGE5NjFiMTBmMWRiZGM3ZS4uNjE1YWFiODJmN2MzMDkxN2Y3OTI5NTdlZWEx
ZjM2ZGFiNTI5MDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApAQCAtODcsNiArODcsNyBAQCBzdHJ1
Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFdv
cmtlclR5cGUgd29ya2VyVHlwZTsKICAgICBib29sIGxvYWRlZEZyb21EaXNrOworICAgIE9wdGlv
bmFsPGJvb2w+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CiAgICAgSGFzaE1hcDxVUkwsIElt
cG9ydGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTk4LDcgKzk5LDcgQEAgc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgog
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIgPDwgam9iRGF0YUlkZW50aWZpZXIgPDwgcmVnaXN0cmF0aW9u
IDw8IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIDw8IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQ
b2xpY3kgPDwgcmVmZXJyZXJQb2xpY3kgPDwgc2NyaXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9h
ZGVkRnJvbURpc2s7CisgICAgZW5jb2RlciA8PCBqb2JEYXRhSWRlbnRpZmllciA8PCByZWdpc3Ry
YXRpb24gPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IGNvbnRlbnRTZWN1
cml0eVBvbGljeSA8PCByZWZlcnJlclBvbGljeSA8PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZSA8
PCBsb2FkZWRGcm9tRGlzayA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOwogICAgIGVuY29k
ZXIgPDwgc2NyaXB0UmVzb3VyY2VNYXA7CiAgICAgZW5jb2RlciA8PCBjZXJ0aWZpY2F0ZUluZm87
CiB9CkBAIC0xNDQsNiArMTQ1LDExIEBAIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShsb2FkZWRGcm9tRGlzaykpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKKyAgICBPcHRpb25hbDxPcHRpb25hbDxib29sPj4gbGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZDsKKyAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAg
aWYgKCFsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCiAgICAgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1h
cDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdFJlc291cmNlTWFwKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTE2NCw2ICsxNzAsNyBAQCBPcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29k
ZXImIGRlYwogICAgICAgICBXVEZNb3ZlKHNjcmlwdFVSTCksCiAgICAgICAgIHdvcmtlclR5cGUs
CiAgICAgICAgIGxvYWRlZEZyb21EaXNrLAorICAgICAgICBXVEZNb3ZlKCpsYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKSwKICAgICAgICAgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkKICAgICB9
fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2JEYXRhLmgKaW5kZXggYjgxNTYyNDcyYzNlNGY2NmEwMGY2MjViYWVlYzA4OTQyYzZk
MTViMS4uZDFiNzY1YmVmNGEyNTk1Mzc4MjUyMTY5MDFiNjY3NGYzMzE3NWVhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmgKQEAgLTUzLDYgKzUzLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsKICAgICBV
Ukwgc2NvcGVVUkw7CiAgICAgU2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciBzb3VyY2VD
b250ZXh0OwogICAgIFdvcmtlclR5cGUgd29ya2VyVHlwZTsKKyAgICBib29sIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQ7CiAgICAgU2VydmljZVdvcmtlckpvYlR5cGUgdHlwZTsKIAogICAgIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zIHJlZ2lzdHJhdGlvbk9wdGlvbnM7CkBAIC03
Myw3ICs3NCw3IEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2
aWNlV29ya2VySm9iRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
ZW5jb2RlciA8PCBpZGVudGlmaWVyKCkgPDwgc2NyaXB0VVJMIDw8IGNsaWVudENyZWF0aW9uVVJM
IDw8IHRvcE9yaWdpbiA8PCBzY29wZVVSTCA8PCBzb3VyY2VDb250ZXh0IDw8IHdvcmtlclR5cGU7
CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyKCkgPDwgc2NyaXB0VVJMIDw8IGNsaWVudENyZWF0
aW9uVVJMIDw8IHRvcE9yaWdpbiA8PCBzY29wZVVSTCA8PCBzb3VyY2VDb250ZXh0IDw8IHdvcmtl
clR5cGUgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKICAgICBlbmNvZGVyIDw8IHR5cGU7
CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVn
aXN0ZXI6CkBAIC0xMTMsNiArMTE0LDggQEAgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGE+
IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEud29y
a2VyVHlwZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShqb2JEYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS50eXBlKSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAKaW5kZXggZDJjYWQ5NjEyZjI0YzE1MGRkZWQ3YTFjZDk4YjI4NmNmYTgyYzQw
OS4uYTM3MDMxMWNlMjBlMDI0YTMyMTIwOTgzOWRkODkzZDQ1NDIxYjdjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1
ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGZXRjaExvYWRlci5oIgpAQCAtMTIzLDYgKzEy
NCwxMiBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6On5TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkoKQogICAgIGFsbFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkucmVtb3ZlKHRoaXMpOwog
fQogCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZChib29sIHdhc0FwcEJvdW5kKQoreworICAgIGlmIChtX2RvY3VtZW50LT5sb2FkZXIo
KSkKKyAgICAgICAgbV9kb2N1bWVudC0+bG9hZGVyKCktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQod2FzQXBwQm91bmQpOworfQorCiBib29sIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGlmICht
X2lzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5oCmluZGV4IGExZDRkOTU5NTMxNGFlZmQwNDEwYmExYmMwNjg1M2EzNWQ5NmU5OTMuLjU3MzU5
MzU4NDRlZmEwN2RlNDFhMDY0ODQ0YzhiZTBkZmEyNzFiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oCkBAIC03OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VX
b3JrZXJPckNsaWVudERhdGEmJik7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KCk7CiAgICAg
dm9pZCBmaXJlQWN0aXZhdGVFdmVudCgpOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChib29sKTsKIAogcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiwg
Y29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgU3RyaW5nJiYgdXNlckFnZW50LCBDYWNo
ZVN0b3JhZ2VQcm92aWRlciYsIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9u
RGF0YWJhc2UuY3BwCmluZGV4IGNlZThjYzhjMDhiZTBiMWI3ZjU0MTEwYTZjYjMxNzQ2ZTk4OTRi
MTQuLjY3Y2M1ZmVlNTRlNWExZTI3MDY4NzFmYjkyOWI3YzYxODRkYmFhZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC00NjcsNyArNDY3LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlv
bkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byByZWdpc3RyYXRpb25JZGVu
dGlmaWVyID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7
CiAgICAgICAgIGF1dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7IHdv
cmtlcklkZW50aWZpZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQs
ICp3b3JrZXJUeXBlLCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07CiAgICAgICAgIGF1dG8gcmVn
aXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCprZXkp
LCByZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZpYUNh
Y2hlLCBsYXN0VXBkYXRlQ2hlY2tUaW1lLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RG
TW92ZShzZXJ2aWNlV29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRp
b24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmlj
YXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJy
ZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBXVEZNb3Zl
KCpzY3JpcHRSZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSB7IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24p
LCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRl
SW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQ
b2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBXVEY6Om51bGxv
cHQsIFdURk1vdmUoKnNjcmlwdFJlc291cmNlTWFwKSB9OwogCiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29udGV4dERhdGEgPSBjb250
ZXh0RGF0YS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPmFkZFJlZ2lzdHJhdGlvblRvU3RvcmUoV1RGTW92ZShjb250ZXh0RGF0YSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApp
bmRleCAwZWYwMDhmYjU2MDc4MWQzMGFiZGI0YTk5N2Q2NGYxZDY1ODY5NGIzLi4wMjA4YjU0MmU4
NzU1Y2UwNzgwNjllY2I4Yjc5ZTMwZTU1ZjVjMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNDYwLDYgKzQ2MCw3IEBA
IHZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmIGpvYkRhdGEsIGJvb2wgc2hvdWxkCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVy
KG9yaWdpblVSTChvcmlnaW4pLnN0cmluZygpKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQVXNl
ckFnZW50KHNlcnZpY2VXb3JrZXJDbGllbnRVc2VyQWdlbnQoQ2xpZW50T3JpZ2luIHsgam9iRGF0
YS50b3BPcmlnaW4sIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRVUkwpLT5k
YXRhKCkgfSkpOwogICAgICAgICByZXF1ZXN0LnNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9y
aXR5OjpMb3cpOworICAgICAgICByZXF1ZXN0LnNldElzQXBwQm91bmQoam9iRGF0YS5sYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKTsKIAogICAgICAgICBtX3NvZnRVcGRhdGVDYWxsYmFjayhTZXJ2
aWNlV29ya2VySm9iRGF0YSB7IGpvYkRhdGEgfSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3Zl
KHJlcXVlc3QpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYgcmVz
dWx0KSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtNjMzLDcgKzYzNCw3IEBAIHZv
aWQgU1dTZXJ2ZXI6OnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBv
bGljeSwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNo
TWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3Jp
cHRSZXNvdXJjZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtl
ckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5m
bywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxz
ZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CisgICAgdHJ5SW5zdGFsbENvbnRleHRE
YXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3Ry
YXRpb24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc2NyaXB0
LCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ks
IHVybCwgdHlwZSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1h
cCkgfSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiBkYXRhKQpAQCAtNjYzLDcgKzY2NCw3IEBAIHZvaWQgU1dTZXJ2
ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
IGNvbnRleHRDb25uCiAKICAgICBhdXRvIHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyA9IG1fc2Vy
dmljZVdvcmtlclJ1blJlcXVlc3RzLnRha2UoY29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVE
b21haW4oKSk7CiAgICAgZm9yIChhdXRvJiBpdGVtIDogc2VydmljZVdvcmtlclJ1blJlcXVlc3Rz
KSB7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IHJ1blNlcnZpY2VXb3JrZXIoaXRlbS5rZXkpOwor
ICAgICAgICBib29sIHN1Y2Nlc3MgPSBydW5TZXJ2aWNlV29ya2VyKGl0ZW0ua2V5LCBMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kOjpObyk7CiAgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBp
dGVtLnZhbHVlKQogICAgICAgICAgICAgY2FsbGJhY2soc3VjY2VzcyA/ICZjb250ZXh0Q29ubmVj
dGlvbiA6IG51bGxwdHIpOwogICAgIH0KQEAgLTY5NSw3ICs2OTYsNyBAQCB2b2lkIFNXU2VydmVy
OjppbnN0YWxsQ29udGV4dERhdGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRh
KQogICAgIGNvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChkYXRhLCB1c2Vy
QWdlbnQpOwogfQogCi12b2lkIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnko
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUnVuU2VydmljZVdvcmtlckNhbGxi
YWNrJiYgY2FsbGJhY2spCit2b2lkIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nh
cnkoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgTGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCB3YXNBcHBCb3VuZCwgUnVuU2VydmljZVdvcmtlckNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgYXV0byogd29ya2VyID0gd29ya2VyQnlJRChpZGVudGlmaWVyKTsKICAgICBpZiAo
IXdvcmtlcikgewpAQCAtNzE2LDEwICs3MTcsMTAgQEAgdm9pZCBTV1NlcnZlcjo6cnVuU2Vydmlj
ZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFIK
ICAgICB9CiAKICAgICBpZiAod29ya2VyLT5pc1Rlcm1pbmF0aW5nKCkpIHsKLSAgICAgICAgd29y
a2VyLT53aGVuVGVybWluYXRlZChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwg
aWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgd29ya2VyLT53aGVuVGVybWluYXRlZChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKSwgaWRlbnRpZmllciwgd2FzQXBwQm91bmQsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFjayhudWxscHRyKTsKLSAgICAgICAgICAgIHJ1blNlcnZpY2VX
b3JrZXJJZk5lY2Vzc2FyeShpZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAg
ICAgICBydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoaWRlbnRpZmllciwgd2FzQXBwQm91bmQs
IFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC03MzYsMTEgKzczNywxMSBAQCB2b2lkIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VySWZO
ZWNlc3NhcnkoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBzdWNjZXNzID0gcnVuU2VydmljZVdvcmtlcihpZGVu
dGlmaWVyKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBydW5TZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIs
IHdhc0FwcEJvdW5kKTsKICAgICBjYWxsYmFjayhzdWNjZXNzID8gY29udGV4dENvbm5lY3Rpb24g
OiBudWxscHRyKTsKIH0KIAotYm9vbCBTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcihTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQorYm9vbCBTV1NlcnZlcjo6cnVuU2VydmljZVdv
cmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kIHdhc0FwcEJvdW5kKQogewogICAgIGF1dG8qIHdvcmtlciA9IHdvcmtlckJ5SUQo
aWRlbnRpZmllcik7CiAgICAgaWYgKCF3b3JrZXIpCkBAIC03NjAsNyArNzYxLDkgQEAgYm9vbCBT
V1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gd29ya2VyLT5jb250ZXh0Q29ubmVj
dGlvbigpOwogICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7CiAKLSAgICBjb250ZXh0Q29u
bmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KHdvcmtlci0+Y29udGV4dERhdGEo
KSwgd29ya2VyLT51c2VyQWdlbnQoKSk7CisgICAgYXV0byBjb250ZXh0RGF0YSA9IHdvcmtlci0+
Y29udGV4dERhdGEoKTsKKyAgICBjb250ZXh0RGF0YS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
ID0gd2FzQXBwQm91bmQgPT0gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzOworICAgIGNv
bnRleHRDb25uZWN0aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29udGV4dERhdGEs
IHdvcmtlci0+dXNlckFnZW50KCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDkzLDcg
KzEwOTYsNyBAQCBib29sIFNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUoU3RyaW5nVmlldyBzY2hl
bWUpIGNvbnN0CiB9CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNz
b2Z0LXVwZGF0ZQotdm9pZCBTV1NlcnZlcjo6c29mdFVwZGF0ZShTV1NlcnZlclJlZ2lzdHJhdGlv
biYgcmVnaXN0cmF0aW9uKQordm9pZCBTV1NlcnZlcjo6c29mdFVwZGF0ZShTV1NlcnZlclJlZ2lz
dHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpCiB7CiAgICAgLy8gTGV0IG5ld2VzdFdvcmtlciBiZSB0aGUgcmVz
dWx0IG9mIHJ1bm5pbmcgR2V0IE5ld2VzdCBXb3JrZXIgYWxnb3JpdGhtIHBhc3NpbmcgcmVnaXN0
cmF0aW9uIGFzIGl0cyBhcmd1bWVudC4KICAgICAvLyBJZiBuZXdlc3RXb3JrZXIgaXMgbnVsbCwg
YWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC0xMTA3LDYgKzExMTAsNyBAQCB2b2lkIFNXU2VydmVyOjpz
b2Z0VXBkYXRlKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiAgICAgam9iRGF0
YS5zY29wZVVSTCA9IHJlZ2lzdHJhdGlvbi5zY29wZVVSTFdpdGhvdXRGcmFnbWVudCgpOwogICAg
IGpvYkRhdGEud29ya2VyVHlwZSA9IG5ld2VzdFdvcmtlci0+dHlwZSgpOwogICAgIGpvYkRhdGEu
dHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGU7CisgICAgam9iRGF0YS5sYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kID0gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kOjpZZXM7CiAgICAgc2NoZWR1bGVKb2IoV1RGTW92ZShqb2JEYXRh
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaAppbmRleCBiYTFiNDEzNTAzNTQwZGNlODg1Y2Q0NDhiM2Y3YzA0MjhkYjhjYjE3Li44
YTg3ZjBkYTZiOGQ3MGE3ZmNjYTMxNGI0ZmU1NWUyODk5NmU2NDI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC01MCw2ICs1MCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsKIGNsYXNzIFJlZ2lzdHJhdGlvblN0b3JlOwog
Y2xhc3MgU1dPcmlnaW5TdG9yZTsKIGNsYXNzIFNXU2VydmVySm9iUXVldWU7CkBAIC0xODUsNyAr
MTg2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiwgU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIpOwogCiAgICAgdXNpbmcgUnVuU2VydmljZVdvcmtlckNhbGxiYWNrID0gV1RGOjpG
dW5jdGlvbjx2b2lkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiopPjsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUnVuU2VydmljZVdvcmtlckNhbGxiYWNrJiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kLCBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2smJik7
CiAKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVn
aXN0cmF0aW9uJik7CiAKQEAgLTIwOSw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0lt
cG9ydENvbXBsZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wb3J0Q29tcGxldGVkOyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3aGVuSW1wb3J0SXNDb21wbGV0ZWQoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAotICAgIHZvaWQgc29mdFVwZGF0ZShTV1NlcnZlclJlZ2lzdHJhdGlv
biYpOworICAgIHZvaWQgc29mdFVwZGF0ZShTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVMb3dN
ZW1vcnlXYXJuaW5nKCk7CiAKQEAgLTIyOCw3ICsyMjksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
dGVybWluYXRlUHJlaW5zdGFsbGF0aW9uV29ya2VyKFNXU2VydmVyV29ya2VyJik7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBTV1NlcnZlclJlZ2lzdHJhdGlvbiogZG9SZWdpc3RyYXRpb25NYXRjaGlu
Zyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRV
UkwpOwotICAgIGJvb2wgcnVuU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
CisgICAgYm9vbCBydW5TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKIAogICAgIHZvaWQgdHJ5SW5zdGFsbENvbnRleHREYXRh
KFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKICAgICB2b2lkIGluc3RhbGxDb250ZXh0RGF0
YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlv
bi5jcHAKaW5kZXggYTU4YmIwMzM1ZDJhN2FjM2ZkODQxN2Y1ZjEwOWMyYzhhMzRhODNmMS4uNGE5
ZjQzZmQyMWRhYTljZTZkNmU1M2Q3Yjk5N2U3MzJhYTgzMThmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lz
dHJhdGlvbi5jcHAKQEAgLTM2NywxNiArMzY3LDE4IEBAIGJvb2wgU1dTZXJ2ZXJSZWdpc3RyYXRp
b246OnNob3VsZFNvZnRVcGRhdGUoY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zKSBjb25zdAog
CiB2b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlKCkKIHsKLSAgICBtX3NlcnZl
ci5zb2Z0VXBkYXRlKCp0aGlzKTsKKyAgICBtX3NlcnZlci5zb2Z0VXBkYXRlKCp0aGlzLCBtX2xh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOwogfQogCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9u
OjpzY2hlZHVsZVNvZnRVcGRhdGUoKQordm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1
bGVTb2Z0VXBkYXRlKExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCkKIHsKICAgICAvLyBUbyBhdm9pZCBzY2hlZHVsaW5nIG1hbnkgdXBkYXRlcyBkdXJp
bmcgYSBzaW5nbGUgcGFnZSBsb2FkLCB3ZSBkbyBzb2Z0IHVwZGF0ZXMgb24gYSAxIHNlY29uZCBk
ZWxheSBhbmQga2VlcCBkZWxheWluZwogICAgIC8vIGFzIGxvbmcgYXMgc29mdCB1cGRhdGUgcmVx
dWVzdHMga2VlcCBjb21pbmcuIFRoaXMgc2VlbXMgdG8gbWF0Y2ggQ2hyb21lJ3MgYmVoYXZpb3Iu
CiAgICAgaWYgKG1fc29mdFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ7CisKICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU1dTZXJ2ZXJSZWdpc3Ry
YXRpb246OnNvZnRVcGRhdGVJZk5lZWRlZCIpOwogICAgIG1fc29mdFVwZGF0ZVRpbWVyLnN0YXJ0
T25lU2hvdChzb2Z0VXBkYXRlRGVsYXkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4
IDcwNWU2YTcwNmEyM2E0MjNhN2YzZmQ3M2I3ZjdjMzljYzZiZmNkNjYuLmEyODE4ZWVmYzRlYmVh
YWQzYjE4MWUwZGI2ZjRkOTYyMDNmYWQ4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKQEAg
LTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9yRWFjaENvbm5lY3Rpb24oY29uc3Qg
V1RGOjpGdW5jdGlvbjx2b2lkKFNXU2VydmVyOjpDb25uZWN0aW9uJik+Jik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHNob3VsZFNvZnRVcGRhdGUoY29uc3QgRmV0Y2hPcHRpb25zJikgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZVNvZnRVcGRhdGUoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNjaGVkdWxlU29mdFVwZGF0ZShMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kKTsKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc29mdFVwZGF0ZURlbGF5IHsg
MV9zIH07CiAKICAgICBVUkwgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJldHVy
biBtX3Njb3BlVVJMOyB9CkBAIC0xMzAsNiArMTMwLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFw
PFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVy
Pj4gbV9jbGllbnRzVXNpbmdSZWdpc3RyYXRpb247CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX3Nv
ZnRVcGRhdGVUaW1lcjsKKyAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIG1fbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDNiYTM2YTNmOTVhNTdlYmExNzg1OGNlNjJkZWVlNzhhYzlh
NjY3MDUuLmU2ZGNkNWU2ZDQxZjdkNWJjOWFmZDM5NTRlMTk3ZGQwNDY4ZTM0NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTV1Nl
cnZlcldvcmtlcjo6Y29udGV4dERhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChtX3JlZ2lzdHJh
dGlvbik7CiAKLSAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRh
KCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29u
dGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBt
X2RhdGEudHlwZSwgZmFsc2UsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBX
VEY6Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBt
X3NjcmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3Jl
ZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIFdURjo6
bnVsbG9wdCwgbV9zY3JpcHRSZXNvdXJjZU1hcCB9OwogfQogCiB2b2lkIFNXU2VydmVyV29ya2Vy
Ojp0ZXJtaW5hdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IGU5ZDI2NTE0ZGU2NzIxYmU1NTVjYmM3MzBlZGI5MGY4MWIzZTU4NDQuLmY5OGNk
ODZiNTBhYjVlZTNmNzgxZTkwNTU5ZmI3Zjc0ZDM1MmUwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1
MDYsNiArMTUwNiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtl
ckRpZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKiBmZQogfQogI2VuZGlmCiAKK2Jv
b2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkKK3sg
ICAgCisgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwQm91bmQoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCA0NjMzYTE2MjZkZDE0MzYyOTMwYmMxMDEzN2UxNDE3ZGRjNTlmNzYxLi40MGNl
YjE4YWM5ZWVjNDZiMTUwOWY4MzlhYTZmOTQyNGJlYTgyNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTk3LDYg
Kzk3LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9CiAgICAgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRDsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KKyAgICBib29sIGxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQoKTsKICAgICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYg
cGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogCiAgICAgTmV0d29y
a0NhY2hlOjpHbG9iYWxGcmFtZUlEIGdsb2JhbEZyYW1lSUQoKSB7IHJldHVybiB7IG1fcGFyYW1l
dGVycy53ZWJQYWdlUHJveHlJRCwgcGFnZUlEKCksIGZyYW1lSUQoKSB9OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggYWUxOTVmMDYyZDllOWVmNWUyNzc4
ZGM2YzcwZTczNGNmMTlhYmVkMC4uMzE5ODhmYjdiZTVmY2ZkNTAxOGQzZWZlYTAwY2E2YzEyMWJi
YzJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApAQCAtMjU1
LDcgKzI1NSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6c29mdFVwZGF0ZUlmTmVl
ZGVkKCkKICAgICBpZiAoIW1fc2hvdWxkU29mdFVwZGF0ZSkKICAgICAgICAgcmV0dXJuOwogICAg
IGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNz
KCkuc3dDb25uZWN0aW9uKCkuc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9uKG1fc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpKQotICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxl
U29mdFVwZGF0ZSgpOworICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0ZSht
X2xvYWRlci5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkgPyBXZWJDb3JlOjpMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
OjpObyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmgKaW5kZXggZDM3ZDc4MDY5ODNiYmE1NDdjYTBmOTIzNWViNGJmNmI3MzE1
NjVhNC4uZWI0ZWJhZGJlMDg5MGJiYmRiOWI0MTMzOTVmNjI3N2Q2N2U0ZTZkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CkBAIC01MCw3ICs1MSw2
IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xh
c3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwog
Y2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogCkBAIC03NSw2ICs3NSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNhbm5vdEhhbmRsZSgpOwogICAgIHZvaWQgY29udGV4dENsb3Nl
ZCgpOwogCisgICAgYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkgeyByZXR1cm4gbV9s
b2FkZXIubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpOyB9CisgICAgTmV0d29ya1Jlc291cmNl
TG9hZGVyJiBsb2FkZXIoKSB7IHJldHVybiBtX2xvYWRlcjsgfQogcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggMWYwMjYwYjdlY2UwYWI2NjJmMjA3
ZjQ2NDg5ZDA5NGU3NTJiOGQxZS4uYjI0MWE5ZDdiMTE5NTBlZDAxMmVmNzkwYWFlZTA1MTJhM2M4
ODAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTE4Nyw3
ICsxODcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTgogICAgIGJvb2wgc2hvdWxkU29mdFVw
ZGF0ZSA9IHJlZ2lzdHJhdGlvbiAmJiByZWdpc3RyYXRpb24tPnNob3VsZFNvZnRVcGRhdGUobG9h
ZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zKTsKICAgICBpZiAod29ya2VyLT5zaG91bGRTa2lwRmV0
Y2hFdmVudCgpKSB7CiAgICAgICAgIGlmIChzaG91bGRTb2Z0VXBkYXRlKQotICAgICAgICAgICAg
cmVnaXN0cmF0aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUoKTsKKyAgICAgICAgICAgIHJlZ2lzdHJh
dGlvbi0+c2NoZWR1bGVTb2Z0VXBkYXRlKGxvYWRlci5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
KCkgPyBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMgOiBXZWJDb3JlOjpM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApAQCAtMjI4LDcgKzIyOCw4IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
dGFydEZldGNoKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2smIHRhc2ssIFNXU2VydmVyV29yCiAgICAg
ICAgICAgICBzZXJ2ZXIoKS5jcmVhdGVDb250ZXh0Q29ubmVjdGlvbih3b3JrZXItPnJlZ2lzdHJh
YmxlRG9tYWluKCkpOwogCiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHRhc2stPnNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKCk7Ci0gICAgICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5l
Y2Vzc2FyeShpZGVudGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdGhpcywg
dGFzayA9IFdURk1vdmUodGFzayldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsK
KyAgICAgICAgYXV0byBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gdGFzay0+bGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6
WWVzIDogV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87CisgICAgICAgIHNl
cnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShpZGVudGlmaWVyLCBsYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdGhpcywgdGFz
ayA9IFdURk1vdmUodGFzayldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmICghdGFzaykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAKQEAgLTI2OCwxMCArMjY5LDEzIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkCiAgICAgaWYg
KCFzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBJdCdzIHBvc3NpYmxlIHRo
aXMgc3BlY2lmaWMgd29ya2VyIGNhbm5vdCBiZSByZS1ydW4gKGUuZy4gaXRzIHJlZ2lzdHJhdGlv
biBoYXMgYmVlbiByZW1vdmVkKQotICAgIHNlcnZlcigpLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vz
c2FyeShkZXN0aW5hdGlvbklkZW50aWZpZXIsIFtkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3Nh
Z2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VEYXRhID0gV1RGTW92ZSgqc291cmNlRGF0YSld
KGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKGNvbnRleHRD
b25uZWN0aW9uKQotICAgICAgICAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoKmNvbnRleHRDb25u
ZWN0aW9uLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3Nh
Z2UpLCBXVEZNb3ZlKHNvdXJjZURhdGEpIH0pOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCks
IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCB0aGlzLCBkZXN0aW5hdGlvbklkZW50aWZp
ZXIsIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VEYXRhID0gV1RGTW92ZShzb3Vy
Y2VEYXRhLnZhbHVlKCkpXShib29sIHdhc0FwcEJvdW5kKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0
byBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gd2FzQXBwQm91bmQgPyBXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kOjpObzsKKyAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtl
ciBjYW5ub3QgYmUgcmUtcnVuIChlLmcuIGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3Zl
ZCkKKyAgICAgICAgc2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KGRlc3RpbmF0
aW9uSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCwgW2Rlc3RpbmF0aW9uSWRl
bnRpZmllciwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZURhdGEgPSBXVEZNb3Zl
KHNvdXJjZURhdGEpXShhdXRvKiBjb250ZXh0Q29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pCisgICAgICAgICAgICAgICAgc2VuZFRvQ29udGV4
dFByb2Nlc3MoKmNvbnRleHRDb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHNvdXJjZURhdGEpIH0pOworICAgICAg
ICB9KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMTNmM2I5NjY1ZTgz
NWU5NjRlYmQwZTI2NGJmNDcwMjE1M2ExMWNlOC4uZWU0ZDgzMWMyOWE2YjQ3MGJmMzc2NDEwZmVl
NTBlZjY4YWM0Zjc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0yNjQsNiArMjY0LDExIEBA
IHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JU
ZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlN0b3JlUmVnaXN0cmF0aW9uc09uRGlzayB7IH0sIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIH0KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246Omxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxs
YmFjaykKK3sKKyAgICBjYWxsYmFjayhtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xp
ZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmgKaW5kZXggNjk3OGExZTUzNzY4MDc1MmE3YzA2MTE5YzQ2YWM0ZjVk
M2Q4NDJlYy4uMjIxNjI4N2Y0YzhmM2I3ZTY4NGE2M2NkNjc1NjI3NDNmNzBhNmY3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmgKQEAgLTY3LDYgKzY3LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCB0ZXJtaW5h
dGVXb3JrZXJGb3JUZXN0aW5nKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCisgICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKGJvb2wgd2FzQXBwQm91bmQpIHsgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
ID0gd2FzQXBwQm91bmQ7IH0KKyAgICB2b2lkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKIHByaXZhdGU6CiAgICAgV2ViU1dDbGll
bnRDb25uZWN0aW9uKCk7CiAKQEAgLTExMyw2ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIEhhc2hN
YXA8dWludDY0X3QsIFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNrPiBtX29uZ29pbmdSZWdp
c3RyYXRpb25SZWFkeVRhc2tzOwogICAgIERlcXVlPEZ1bmN0aW9uPHZvaWQoKT4+IG1fdGFza3NQ
ZW5kaW5nT3JpZ2luSW1wb3J0OwogICAgIGJvb2wgbV9pc1Rocm90dGxlYWJsZSB7IHRydWUgfTsK
KyAgICBib29sIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCB7IGZhbHNlIH07CiB9OyAvLyBj
bGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb24KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggYjc4MTg2ODY4YmUwODY0MDMwZDBh
MTI0YjU2NzUyY2Y1YTYxNjcxMS4uYTRjMDk2ZjcyYTk4MTJjNzBiNDU1MjMyODY3YjY1ZTJlOThj
YzZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtNDMsNiArNDMs
NyBAQCBtZXNzYWdlcyAtPiBXZWJTV0NsaWVudENvbm5lY3Rpb24gewogICAgIFJlZ2lzdHJhdGlv
blJlYWR5KHVpbnQ2NF90IHJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdElkZW50aWZpZXIsIHN0cnVj
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBkYXRhKQogCiAgICAgU2V0
RG9jdW1lbnRJc0NvbnRyb2xsZWQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIHRlbXBvcmFy
eURvY3VtZW50SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhIGRhdGEpIC0+IChib29sIGlzU3VjY2VzcykgQXN5bmMKKyAgICBMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKCkgLT4gKGJvb2wgd2FzQXBwQm91bmQpIEFzeW5jCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKaW5kZXggNDYyNGM4MzU2OWFiOTE1MDE5NWU0NjQ0NmMwNDYyNGU1ZDAwMjljZC4uNTk2
OWVkZTU2ZTk0MTBlY2UyNDJiOWI5NDVkODZiNzgyZTVjOWU5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTQxLDYgKzE0MSw4IEBAIHZvaWQgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDb250CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0g
bWFrZVVuaXF1ZVJlZjxTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KG1fd2ViUGFnZVBy
b3h5SUQsIG1fcGFnZUlELCBGcmFtZUlkZW50aWZpZXI6OmdlbmVyYXRlKCksIGVmZmVjdGl2ZVVz
ZXJBZ2VudCk7CiAKICAgICBhdXRvIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9IFNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pLCBkYXRh
LCBXVEZNb3ZlKGVmZmVjdGl2ZVVzZXJBZ2VudCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNh
Y2hlU3RvcmFnZVByb3ZpZGVyKCksIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKKyAgICBzZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoZGF0YS5s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID8gKmRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCA6IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSk7
CisgICAgCiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyVGhyZWFkRm9ySW5zdGFsbChXVEZNb3ZlKHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSkp
OwogCiAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIkNyZWF0ZWQgc2VydmljZSB3b3Jr
ZXIgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBQSUQgJWkiLCBkYXRhLnNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLnRvVUludDY0KCksIGdldEN1cnJlbnRQcm9jZXNzSUQoKSk7CkBAIC0yMTMsNiArMjE1
LDggQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZChyZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisKICAgICBpZiAoIWlzVmFsaWRGZXRjaChyZXF1ZXN0
LCBvcHRpb25zLCBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnNjcmlwdFVSTCgpLCByZWZlcnJl
cikpIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlm
aWVyKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAKaW5kZXggOGY3
NTgzNWMzOWQ3YjQ1MGIzMzQ5ZmNmZDRkYWVjNjBiNDNjZTQ5Zi4uYjYxODcxOTVjOWE2NjlkNmYy
Y2Q5MTMzODQxYjM3YWY3NTJkNzYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwCkBAIC03
MCw2ICs3MCwxNSBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6dXBkYXRlVGhyb3R0
bGVTdGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQogICAgICAgICBjb25uZWN0aW9uLnVwZGF0ZVRo
cm90dGxlU3RhdGUoKTsKIH0KIAordm9pZCBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnVwZGF0
ZUxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCB3YXNBcHBCb3VuZCkKK3sKKyAgICBhdXRv
KiBuZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5leGlz
dGluZ05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpOworICAgIGlmICghbmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisgICAgYXV0byYgY29ubmVjdGlvbiA9IG5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi0+c2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKKyAgICBjb25u
ZWN0aW9uLnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQod2FzQXBwQm91bmQpOworfQorCiB2
b2lkIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6dGVybWluYXRlV29ya2VyRm9yVGVzdGluZyhX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24o
KS50ZXJtaW5hdGVXb3JrZXJGb3JUZXN0aW5nKGlkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2sp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmgKaW5kZXggZTVjYTIwODM5MjlkMmM5ZWYxNGJlYjJlNTM2
MmRkNTUxMDc3MGFkZC4uODdhNmM3Nzc3YWI1OGE4YTI2YmIwMTBiOGM5ZGQ2M2JlYTk5MjAyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlclByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlclByb3ZpZGVyLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBkaWRSZWNlaXZlU2VydmljZVdvcmtlckNsaWVudFJlZ2lzdHJhdGlvbk1hdGNoKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0
ZShib29sIGlzVGhyb3R0bGVhYmxlKTsKKyAgICB2b2lkIHVwZGF0ZUxhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQoYm9vbCB3YXNBcHBCb3VuZCk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIE5ldmVy
RGVzdHJveWVkPFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcj47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGZmZTc5YWM2MzlkOTMwOTA1MWZkY2Mx
M2RkNmZhYThiNzNlZWUxNGEuLjkyYjk1ZDdjMWQwNDdhNWY3ODhmOGY4NmYwZjFmMTVkOWYzMGUw
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC04NzAsNiArODcwLDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIG1fcGFnZS0+c2V0
Q2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UocGFyYW1ldGVycy5jYW5Vc2VDcmVkZW50aWFsU3RvcmFn
ZSk7CiAKICAgICB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CisgICAgdXBkYXRlTGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RNZWRpYVBsYXliYWNr
U3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6Ok1lZGlhUGxheWJhY2tTdGF0ZSk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05NzQsNiArOTc1LDIwIEBAIGJvb2wgV2ViUGFnZTo6
aXNUaHJvdHRsZWFibGUoKSBjb25zdAogICAgIHJldHVybiBtX2lzQXBwTmFwRW5hYmxlZCAmJiAh
aXNBY3RpdmUgJiYgaXNWaXN1YWxseUlkbGU7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXBkYXRlTGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpCit7CisgICAgYXV0byB3YXNBcHBCb3VuZCA9IG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXRM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2VydmljZVdvcmtlckVuYWJsZWQoKSkgeworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dhc0FwcEJvdW5kXSB7CisgICAgICAgICAgICBXZWJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnVwZGF0ZUxhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQod2FzQXBwQm91bmQpOworICAgICAgICB9KTsKKyAgICB9CisjZW5kaWYKK30KKwog
V2ViUGFnZTo6fldlYlBhZ2UoKQogewogICAgIEFTU0VSVCghbV9wYWdlKTsKQEAgLTY0ODEsNyAr
NjQ5Niw3IEBAIFJlZjxEb2N1bWVudExvYWRlcj4gV2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoRnJhbWUmIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlCiB7CiAgICAgUmVmPFdlYkRvY3VtZW50
TG9hZGVyPiBkb2N1bWVudExvYWRlciA9IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVz
dCwgc3Vic3RpdHV0ZURhdGEpOwogCi0gICAgZG9jdW1lbnRMb2FkZXItPnNldGxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQobV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKKyAgICBkb2N1bWVu
dExvYWRlci0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQpOwogCiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYg
KG1fcGVuZGluZ05hdmlnYXRpb25JRCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IGYyMThlOTBkNzI3Y2M3ZDBjYTYzZWFjZTgwNjcxMDIyNzMyOTM3
Y2UuLmExYjVlOTY3OWI3Nzk4NGRiZTcyOTMxMWViZGE3ZjgzYTRkNjgyMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0MTksNiArMTQxOSw3IEBA
IHByaXZhdGU6CiAgICAgV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwor
ICAgIHZvaWQgdXBkYXRlTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpOwogCiAgICAgLy8gSVBD
OjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
aW5kZXggZThhNzlmOGEyMjk0MWIzY2Y2OWQ1ZWM1ZmMzMjUwMDg3MWE1MDMyNy4uMWQ4YWVlMGFk
NWE5ZjY5N2EyY2MwNTQ5MDYzMjJjZDQyNGI2ZWNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCkBAIC0zNjcsNiArMzY3LDkgQEAgcHVibGljOgogICAgIFNwZWVjaFJlY29n
bml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXImIGVuc3VyZVNwZWVjaFJlY29nbml0aW9u
UmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIoKTsKICNlbmRpZgogCisgICAgdm9pZCBzZXRMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKGJvb2wgd2FzQXBwQm91bmQpIHsgbV9sYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kID0gd2FzQXBwQm91bmQ7IH0KKyAgICBib29sIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQoKSBjb25zdCB7IHJldHVybiBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0K
KwogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzKCk7CiAgICAgfldlYlByb2Nlc3MoKTsKQEAgLTcx
OCw2ICs3MjEsOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNwZWVjaFJlY29nbml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI+
IG1fc3BlZWNoUmVjb2duaXRpb25SZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcjsKICNlbmRpZgor
ICAgIAorICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdhNmIzNTFkZDFiNTU5NzAxMTRjZjI1YjFmZGZhZDFkN2Iy
YTM5ZDkuLjE2YjYxZTYxYzg5MTlhMmU5NzlmNjRkNTFiODg2YmEyYTJhMmQ5ODkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAyMS0wMy0wOSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4K
KworICAgICAgICBTZXJ2aWNlIHdvcmtlciBsb2FkcyBhcmUgbm90IG1hcmtlZCBhcyBhcHAtYm91
bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjYz
NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQzOTU5NTA+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciB2
YXJpb3VzIGNhc2VzLCBpbmNsdWRpbmcgdHdvIFdlYlZpZXdzIHRoYXQKKyAgICAgICAgc2hhcmUg
YSBzZXJ2aWNlIHdvcmtlciBidXQgaGF2ZSBkaWZmZXJlbnQgYXBwLWJvdW5kIHZhbHVlcywgYSBz
b2Z0CisgICAgICAgIHVwZGF0ZSBjYXNlLCBmZXRjaCByZXNwb25zZXMsIHN5bnRoZXRpYyByZXNw
b25zZXMsIGFuZCBhc3luYyBmZXRjaAorICAgICAgICBldmVudHMuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAg
ICAgICgtW1NXTWVzc2FnZUhhbmRsZXJGb3JSZXN0b3JlRnJvbURpc2tUZXN0MiBpbml0V2l0aEV4
cGVjdGVkTWVzc2FnZTpdKToKKyAgICAgICAgKC1bU1dNZXNzYWdlSGFuZGxlckZvclJlc3RvcmVG
cm9tRGlza1Rlc3QyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2Fn
ZTpdKToKKwogMjAyMS0wMy0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN0b3AgdXNpbmcgY2FsbE9uTWFpblRocmVhZCgpIC8gaXNNYWluVGhyZWFkKCkgaW4g
V2ViS2l0MgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDQ4MTE5MTVjYjg1MzVkZWFmYzdj
ZmZlYjcxY2Q5ZTEzNmRjOGU5M2QuLjc3MTdmNmNiNjgwYzUzZDM1MTIwMDBiNmQ0MGUzZTUwNWQx
MTk0MmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTI1LDkgKzI1LDExIEBACiAKICNp
bXBvcnQgImNvbmZpZy5oIgogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiU2VydmljZVdvcmtlclRDUFNlcnZlci5oIgogI2lt
cG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFVJRGVsZWdhdGUu
aCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCkBAIC0xNDE5
LDYgKzE0MjEsMzIgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJh
bWVNYXRjaGVzVG9wRnJhbWVOb25BcHBCb3VuZCkKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKK3N0YXRpYyBib29sIGlzRG9uZTsK
K0BpbnRlcmZhY2UgU1dBcHBCb3VuZFJlcXVlc3RNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxX
S1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiB7CisgICAgTlNTdHJpbmcgKl9leHBlY3RlZE1lc3NhZ2U7
Cit9CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFeHBlY3RlZE1lc3NhZ2U6KE5TU3RyaW5nICop
ZXhwZWN0ZWRNZXNzYWdlOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gU1dBcHBCb3VuZFJlcXVl
c3RNZXNzYWdlSGFuZGxlcgorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhFeHBlY3RlZE1lc3Nh
Z2U6KE5TU3RyaW5nICopZXhwZWN0ZWRNZXNzYWdlCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfZXhwZWN0ZWRNZXNzYWdlID0g
ZXhwZWN0ZWRNZXNzYWdlOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpdXNlckNv
bnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29u
dHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2Fn
ZQoreworICAgIEVYUEVDVF9XS19TVFJFUShtZXNzYWdlLmJvZHksIF9leHBlY3RlZE1lc3NhZ2Up
OworICAgIGlzRG9uZSA9IHRydWU7Cit9CitAZW5kCisKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgQXBwQm91bmRSZXF1ZXN0KQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC0xNDI2LDcgKzE0NTQs
NyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdCkKICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIE5TU3Ry
aW5nICp1cmwgPSBAImh0dHBzOi8vd2Via2l0Lm9yZyI7CiAKLSAgICBfX2Jsb2NrIGJvb2wgaXNE
b25lID0gZmFsc2U7CisgICAgaXNEb25lID0gZmFsc2U7CiAgICAgTlNNdXRhYmxlVVJMUmVxdWVz
dCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07CiAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURE
SVRJT05TCiAKQEAgLTE0NDgsNiArMTQ3Niw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmRSZXF1ZXN0KQogICAgIH1dOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworICAgIGlzRG9uZSA9IGZhbHNlOwogfQogCiBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKQpAQCAtMTQ2Myw3ICsxNDkyLDcg
QEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3RXaXRoTmF2aWdhdGlv
bikKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzdGFydGluZ1JlcXVlc3RdOwogICAgIFt3ZWJW
aWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIAotICAgIF9fYmxvY2sgYm9v
bCBpc0RvbmUgPSBmYWxzZTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBbd2ViVmlldyBfbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJPT0wgaXNBcHBCb3VuZCkgewogICAgICAgICBFWFBF
Q1RfVFJVRShpc0FwcEJvdW5kKTsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKQEAgLTE1MDksNiAr
MTUzOCw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aE5h
dmlnYXRpb24pCiAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CisgICAgaXNEb25lID0gZmFsc2U7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmRSZXF1ZXN0V2l0aFN1YkZyYW1lKQpAQCAtMTUyMiw3ICsxNTUyLDcgQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgW3dl
YlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJNYWluRnJhbWU6IEIiXTsKICAgICBbd2ViVmlldyB3YWl0
Rm9yTWVzc2FnZTpAIlN1YmZyYW1lOiBCIl07CiAKLSAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0g
ZmFsc2U7CisgICAgaXNEb25lID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdh
dGlvbkRhdGE6XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7
CiAgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
Zyk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVz
dFRlc3RpbmcpOwpAQCAtMTUzMCw2ICsxNTYwLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBBcHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0gZmFsc2U7CiB9OwogCiBURVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKQEAg
LTE1MzcsNyArMTU2OCw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRS
ZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24g
X3NldE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OkAic2NyaXB0LXNyYyAnbm9uY2UtYici
XTsKIAotICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBpc0RvbmUgPSBmYWxz
ZTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJl
cXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAicGFnZS13aXRoLWNzcCIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgIEFQ
UF9CT1VORF9SRVFVRVNUX0FERElUSU9OUwpAQCAtMTU1NCw2ICsxNTg1LDM1MSBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICB9
XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUg
PSBmYWxzZTsKIH07CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMxID0gUiJTV1JFU09V
UkNFKAorPHNjcmlwdD4KK3RyeSB7CitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnN3LnBvc3RNZXNzYWdlKG1zZyk7Cit9CisKK25hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewor
ICAgIGlmIChyZWcuYWN0aXZlKSB7CisgICAgICAgIGxvZygiUmVnaXN0cmF0aW9uIGFscmVhZHkg
aGFzIGFuIGFjdGl2ZSB3b3JrZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3b3Jr
ZXIgPSByZWcuaW5zdGFsbGluZzsKKyAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVj
aGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZh
dGVkJykKKyAgICAgICAgICAgIGxvZygiUmVnaXN0cmF0aW9uIHdhcyBzdWNjZXNzZnVsIGFuZCBz
ZXJ2aWNlIHdvcmtlciB3YXMgYWN0aXZhdGVkIik7CisgICAgfSk7Cit9KS5jYXRjaChmdW5jdGlv
bihlcnJvcikgeworICAgIGxvZygiUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAiICsgZXJyb3Ip
OworfSk7Cit9IGNhdGNoKGUpIHsKKyAgICBsb2coIkV4Y2VwdGlvbjogIiArIGUpOworfQorPC9z
Y3JpcHQ+CispU1dSRVNPVVJDRSI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9
IFIiU1dSRVNPVVJDRSgKKworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50
KSA9PiB7CisgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2Vp
dmVkOiAiICsgZXZlbnQuZGF0YSk7Cit9KTsKKworKVNXUkVTT1VSQ0UiOworCitzdGF0aWMgY29u
c3QgY2hhciogbWFpbkJ5dGVzMiA9IFIiU1dSRVNPVVJDRSgKKzxzY3JpcHQ+Cit0cnkgeworICAg
IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9u
KHJlZykgeworICAgICAgICBpZiAocmVnLmFjdGl2ZSkgeworICAgICAgICAgICAgYWxlcnQoJ3dv
cmtlciBhbHJlYWR5IGFjdGl2ZScpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHdvcmtlciA9IHJlZy5pbnN0YWxsaW5nOworICAgICAgICB3b3JrZXIuYWRkRXZlbnRM
aXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh3b3Jr
ZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpCisgICAgICAgICAgICAgICAgYWxlcnQoJ3N1Y2Nlc3Nm
dWxseSByZWdpc3RlcmVkJyk7CisgICAgICAgIH0pOworICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVy
cm9yKSB7CisgICAgICAgIGFsZXJ0KCdSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICcgKyBlcnJv
cik7CisgICAgfSk7Cit9IGNhdGNoKGUpIHsKKyAgICBhbGVydCgnRXhjZXB0aW9uOiAnICsgZSk7
Cit9Cis8L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKworZW51bSBjbGFzcyBSZXNwb25zZVR5cGUg
eyBTeW50aGV0aWMsIEZldGNoZWQgfTsKK2VudW0gY2xhc3MgSXNBcHBCb3VuZCA6IGJvb2wgeyBO
bywgWWVzIH07CitzdGF0aWMgdm9pZCBydW5UZXN0V2l0aFJlc3BvbnNlKFJlc3BvbnNlVHlwZSBy
ZXNwb25zZVR5cGUsIElzQXBwQm91bmQgaXNBcHBCb3VuZCkKK3sKKyAgICB1c2luZyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3Rh
bnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGNv
bnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0g
bnVsbHB0cjsKKworICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CisgICAgY2FzZSBSZXNwb25z
ZVR5cGU6OlN5bnRoZXRpYzoKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJs
b2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0
eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50
aGV0aWMgcmVzcG9uc2UiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlc3BvbnNlVHlwZTo6
RmV0Y2hlZDoKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsi
OworICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8i
LCB7IG1haW5CeXRlczIgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5
cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2Zl
dGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2Ny
aXB0PiIgfSB9LAorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbZGVsZWdh
dGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkg
eworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRo
ZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsK
KyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWws
IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAgICB3ZWJWaWV3LmdldCgpLm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBpZiAoaXNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpO
bykgeworICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBb
TlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZl
ci5wb3J0KCldXV07CisgICAgICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAg
ICByZXF1ZXN0ID0gbm9uQXBwQm91bmRSZXF1ZXN0OworICAgIH0KKworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93
YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKKworICAgIGlmIChyZXNw
b25zZVR5cGUgIT0gUmVzcG9uc2VUeXBlOjpGZXRjaGVkKQorICAgICAgICBzZXJ2ZXIuY2FuY2Vs
KCk7CisKKyAgICBbd2ViVmlldyByZWxvYWRdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmll
dyBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsKKworICAgIGlzRG9uZSA9IGZh
bHNlOworICAgIGJvb2wgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyA9IGlzQXBwQm91bmQgPT0g
SXNBcHBCb3VuZDo6WWVzID8gdHJ1ZSA6IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5h
dmlnYXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRh
dGEpIHsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVz
dGluZywgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyk7CisgICAgICAgIEVYUEVDVF9FUShkYXRh
Lmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBCb3VuZFJl
cXVlc3RzKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKK30KKworVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3RXaXRoU2VydmljZVdvcmtlclJl
c3BvbnNlVHlwZSkKK3sKKyAgICBydW5UZXN0V2l0aFJlc3BvbnNlKFJlc3BvbnNlVHlwZTo6U3lu
dGhldGljLCBJc0FwcEJvdW5kOjpZZXMpOworICAgIHJ1blRlc3RXaXRoUmVzcG9uc2UoUmVzcG9u
c2VUeXBlOjpGZXRjaGVkLCBJc0FwcEJvdW5kOjpZZXMpOworfQorCitURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyUmVzcG9uc2VUeXBl
KQoreworICAgIHJ1blRlc3RXaXRoUmVzcG9uc2UoUmVzcG9uc2VUeXBlOjpTeW50aGV0aWMsIElz
QXBwQm91bmQ6Ok5vKTsKKyAgICBydW5UZXN0V2l0aFJlc3BvbnNlKFJlc3BvbnNlVHlwZTo6RmV0
Y2hlZCwgSXNBcHBCb3VuZDo6Tm8pOworfQorCitzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJ
c0FwcEJvdW5kIGlzQXBwQm91bmQpCit7CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKyAg
ICAKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRl
IGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBpc0RvbmUgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAg
ICBpc0RvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBSZXRhaW5QdHI8U1dB
cHBCb3VuZFJlcXVlc3RNZXNzYWdlSGFuZGxlcj4gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtb
U1dBcHBCb3VuZFJlcXVlc3RNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZE1l
c3NhZ2U6QCJSZWdpc3RyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgYW5kIHNlcnZpY2Ugd29ya2VyIHdh
cyBhY3RpdmF0ZWQiXSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3
Il07CisKKyAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgInRl
eHQvaHRtbCIsIG1haW5CeXRlczEgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCIsIHNjcmlwdEJ5dGVzIH0sCisgICAgfSwgeworICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWlu
Qnl0ZXMxIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRl
cyB9LAorICAgIH0pOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIGlmIChpc0FwcEJvdW5kID09
IElzQXBwQm91bmQ6Ok5vKSB7CisgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJv
dW5kUmVxdWVzdCA9IFtyZXF1ZXN0IG11dGFibGVDb3B5XTsKKyAgICAgICAgQVBQX0JPVU5EX1JF
UVVFU1RfQURESVRJT05TCisgICAgICAgIHJlcXVlc3QgPSBub25BcHBCb3VuZFJlcXVlc3Q7Cisg
ICAgfQorCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICB3ZWJWaWV3ID0gbnVsbHB0cjsKKyAg
ICBjb25maWd1cmF0aW9uID0gbnVsbHB0cjsKKyAgICBtZXNzYWdlSGFuZGxlciA9IG51bGxwdHI7
CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIG1lc3NhZ2VIYW5kbGVy
ID0gYWRvcHROUyhbW1NXQXBwQm91bmRSZXF1ZXN0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRX
aXRoRXhwZWN0ZWRNZXNzYWdlOkAiUmVnaXN0cmF0aW9uIGFscmVhZHkgaGFzIGFuIGFjdGl2ZSB3
b3JrZXIiXSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisK
KyAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIGJv
b2wgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyA9IGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6
WWVzID8gdHJ1ZSA6IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRh
OiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAg
ICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgZXhwZWN0
aW5nQXBwQm91bmRSZXF1ZXN0cyk7CisgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZE5v
bkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKKyAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICAKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CisgICAgaXNEb25lID0gZmFsc2U7Cit9CisKK1RFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
KQoreworICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQ6Olllcyk7Cit9CisKK1RFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlKQoreworICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQ6Ok5vKTsKK30KKworVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VX
b3JrZXIpCit7CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgCisgICAgW1tXS1dlYnNpdGVEYXRh
U3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBh
c3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgY29uc3Qg
Y2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBl
dmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVz
MiB9IH0sCisgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwg
eyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisg
ICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKworICAg
IGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgYXV0byB3ZWJW
aWV3MiA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFtkZWxlZ2F0ZSBzZXRE
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0
aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAg
ICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJM
Q3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5z
ZXJ2ZXJUcnVzdF0pOworICAgIH1dOworICAgIHdlYlZpZXcxLmdldCgpLm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0KCldOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZv
ckFsZXJ0XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7CisKKyAgICBbd2ViVmlldzEgcmVs
b2FkXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0s
IGV4cGVjdGVkQWxlcnQpOworICAgIAorICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3
MSBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAg
IH1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAg
IGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3MSBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25E
YXRhOl57CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgaXNEb25lID0gZmFsc2U7CisgICAg
TlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2ZXIucG9y
dCgpXV1dOworICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgIFt3ZWJWaWV3MiBs
b2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2Vi
VmlldzIgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImZldGNoZWQgZnJvbSBzZXJ2ZXIiKTsKKworICAg
IFt3ZWJWaWV3MiByZWxvYWRdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzIgX3Rlc3Rf
d2FpdEZvckFsZXJ0XSwgZXhwZWN0ZWRBbGVydCk7CisgICAgCisgICAgW3dlYlZpZXcyIF9hcHBC
b3VuZE5hdmlnYXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRS
ZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIGlzRG9uZSA9IGZhbHNl
OworfQorCitzdGF0aWMgdm9pZCBhc3luY0ZldGNoVGVzdChJc0FwcEJvdW5kIGlzQXBwQm91bmQp
Cit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAgaXNEb25lID0gZmFs
c2U7CisKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVE
YXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlm
aWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CisKKyAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGFzeW5jIGZ1bmN0aW9u
KCkgeyByZXR1cm4gZmV0Y2goJy9mZXRjaGVkLmh0bWwnKTsgfSgpKTsgfSkiOworICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CisKKyAgICBIVFRQ
U2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW5CeXRlczIgfSB9LAorICAgICAg
ICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCIgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxl
cnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgIH0sIEhUVFBTZXJ2
ZXI6OlByb3RvY29sOjpIdHRwcyk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dl
YlZpZXcgbmV3XSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
KmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRo
ZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlh
bEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9
XTsKKyAgICB3ZWJWaWV3LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBp
ZiAoaXNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpObykgeworICAgICAgICBOU011dGFibGVVUkxS
ZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Imh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07CisgICAgICAgIEFQUF9C
T1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAgICByZXF1ZXN0ID0gbm9uQXBwQm91bmRSZXF1
ZXN0OworICAgIH0KKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIEVY
UEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5
IHJlZ2lzdGVyZWQiKTsKKworICAgIFt3ZWJWaWV3IHJlbG9hZF07CisgICAgRVhQRUNUX1dLX1NU
UkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOworCisgICAg
aXNEb25lID0gZmFsc2U7CisgICAgYm9vbCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzID0gaXNB
cHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpZZXMgPyB0cnVlIDogZmFsc2U7CisgICAgW3dlYlZpZXcg
X2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6IF4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVz
dGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBCb3Vu
ZFJlcXVlc3RUZXN0aW5nLCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGlu
Z0FwcEJvdW5kUmVxdWVzdHMpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAg
IAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0RvbmUgPSBm
YWxzZTsKK30KKworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3RXaXRo
QXN5bmNGZXRjaCkKK3sKKyAgICBhc3luY0ZldGNoVGVzdChJc0FwcEJvdW5kOjpZZXMpOworfQor
CitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhBc3luY0Zl
dGNoKQoreworICAgIGFzeW5jRmV0Y2hUZXN0KElzQXBwQm91bmQ6Ok5vKTsKK30KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423238</attachid>
            <date>2021-03-15 14:22:48 -0700</date>
            <delta_ts>2021-03-23 17:27:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222635-20210315142247.patch</filename>
            <type>text/plain</type>
            <size>15470</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2MwMmFlMWNjNGQ1NzM3
NWU3MTkzY2ZkZTkwMjNhYWFmMGY1OTBkZC4uZDM3ZWQzMTA1ODkzYzMyYjhiNGFjYWRmZWU2MGNi
MjgyOGVhYThkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTAzLTE1ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ug
d29ya2VyIGxvYWRzIGFyZSBub3QgbWFya2VkIGFzIGFwcC1ib3VuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjM1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NDM5NTk1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBGaXggY2FwaXRhbGl6YXRpb24gZXJyb3IuIEFkZCBhIG5ldyBmdW5jdGlvbiB0
byBtYXJrIHRoZSBzZXJ2aWNlCisgICAgICAgIHdvcmtlciBkb2N1bWVudCBsb2FkZXIgYXMgYXBw
LWJvdW5kLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0bGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCk6IERlbGV0ZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5Lmg6CisKIDIwMjEt
MDMtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIGNh
bGxpbmcgW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIGluIHRo
ZSBXZWJQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM3MmIxMmI0MzIxNGZhYmFlZDdiMDE1MDFmMTIxODk3
OGVlYjgxNTAuLjYwNzZlZGE5OWRlOWM0ZGY2Mzc3YmJhZDk2MThlNDA3MTEzNzQzZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDMtMTUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSB3b3JrZXIgbG9hZHMgYXJlIG5v
dCBtYXJrZWQgYXMgYXBwLWJvdW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjI2MzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0Mzk1OTUwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hcmsgdGhl
IHNlcnZpY2Ugd29ya2VyIGRvY3VtZW50IGxvYWRlciBhcyBhcHAtYm91bmQgb3Igbm90IHdoZW4K
KyAgICAgICAgaW5pdGlhdGluZyBhIGZldGNoIGV2ZW50LgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICBGaXggY2FwaXRhbGl6YXRpb24g
ZXJyb3IuCisKIDIwMjEtMDMtMTUgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIzMzg0NSk6IEVNRSBLZXlzeXN0ZW0gcGVybWlz
c2lvbiB3aGVuIE1lZGlhU3RyZWFtIGlzIGRpc2FibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCmluZGV4IGVhYjcxMGEyN2RlZmQ4ZGQ1ZTNlYWIyMjcyZTg4YTFmMzM2Y2Rh
MmEuLjdiMmEwZWM1ODVhMTllYmRlOTZlZWE3Nzc1MzMwODE3NTM1Zjc0NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC00MjEsNyArNDIxLDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0KLSAgICB2b2lkIHNldGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQoYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSB7IG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0KKyAg
ICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCBsYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKSB7IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IGxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQ7IH0KIAogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50
TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCBkMmNhZDk2MTJmMjRjMTUw
ZGRlZDdhMWNkOThiMjg2Y2ZhODJjNDA5Li5hMzcwMzExY2UyMGUwMjRhMzIxMjA5ODM5ZGQ4OTNk
NDU0MjFiN2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTI5
LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJDYWNo
ZVN0b3JhZ2VQcm92aWRlci5oIgorI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZldGNo
TG9hZGVyLmgiCkBAIC0xMjMsNiArMTI0LDEyIEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6
flNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSgpCiAgICAgYWxsU2VydmljZVdvcmtlclRocmVhZFBy
b3hpZXMoKS5yZW1vdmUodGhpcyk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGJvb2wgd2FzQXBwQm91bmQpCit7CisgICAg
aWYgKG1fZG9jdW1lbnQtPmxvYWRlcigpKQorICAgICAgICBtX2RvY3VtZW50LT5sb2FkZXIoKS0+
c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCh3YXNBcHBCb3VuZCk7Cit9CisKIGJvb2wgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJp
bmcmIG1vZGUpCiB7CiAgICAgaWYgKG1faXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggYTFkNGQ5NTk1MzE0YWVmZDA0MTBiYTFi
YzA2ODUzYTM1ZDk2ZTk5My4uMDVhZTk0NzRkMmM0YjEyMDI0MDdkOWZlOTBjYWMwZjQ1OTE3ODky
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTc5LDYgKzc5LDggQEAg
cHVibGljOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZvaWQgZmlyZUFjdGl2
YXRlRXZlbnQoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZChib29sKTsKKwogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiwgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiwgU3RyaW5nJiYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYs
IFN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAppbmRleCA0NjI0YzgzNTY5YWI5MTUwMTk1ZTQ2NDQ2YzA0NjI0ZTVkMDAyOWNkLi4yMzAy
ZDI4YWI4ZWQyMDVmM2U3ZTZmMjBkYWZmMmY1MGM4NmJmMzhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCkBAIC0yMTMsNiArMjEzLDggQEAgdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IHNlcnYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChyZXF1ZXN0LmlzQXBwQm91bmQoKSk7
CisKICAgICBpZiAoIWlzVmFsaWRGZXRjaChyZXF1ZXN0LCBvcHRpb25zLCBzZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHktPnNjcmlwdFVSTCgpLCByZWZlcnJlcikpIHsKICAgICAgICAgbV9jb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmOWE5
MWE4MmM3ZDEzMjljYWNkNmQ5NGVhMTJkNDMwMWNhY2UzNDIzLi5mODdlMDg1ZTI1N2NjNjdkYzUy
YjRkNDMyMDQ3YThiZjc0MDA4NWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtNjQ3NCw3ICs2NDc0LDcgQEAgUmVmPERvY3VtZW50TG9hZGVy
PiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291
cmNlUmUKIHsKICAgICBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IGRvY3VtZW50TG9hZGVyID0gV2Vi
RG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiAKLSAgICBk
b2N1bWVudExvYWRlci0+c2V0bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChtX2xhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpOworICAgIGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CiAKICAgICBpZiAoZnJhbWUu
aXNNYWluRnJhbWUoKSkgewogICAgICAgICBpZiAobV9wZW5kaW5nTmF2aWdhdGlvbklEKSB7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTMxOTI0
NTc3MGYxZjhhNWM5NTk3MWVjYTdiMTA5ZDY4MGVhZTA5YS4uNjVhNTRlYTc0ZDljMjkwMmE3Njc2
MTM4Njc1ODc2MzI3YTE5NzVlYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIxLTAzLTE1ICBLYXRlIENoZW5leSAg
PGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ugd29ya2VyIGxv
YWRzIGFyZSBub3QgbWFya2VkIGFzIGFwcC1ib3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
NDM5NTk1MD4KKworICAgICAgICBBUEkgdGVzdCBjb3ZlcmFnZSBmb3IgZmV0Y2hlZCBhbmQgc3lu
dGhldGljIHJlc3BvbnNlcyB0byBtYWtlIHN1cmUKKyAgICAgICAgdGhleSBhcmUgbWFya2VkIGFz
IGFwcC1ib3VuZCBvciBub3QgYmFzZWQgb24gdGhlIG1haW4gcmVxdWVzdC4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKwogMjAyMS0wMy0xNSAgTGF1
cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xJQl0gRmlsdGVyIGNw
cGZpbHQgb3V0cHV0IHdoZW4gZ2VuZXJhdGluZyBjcmFzaCBsb2dzCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZh
Y3kubW0KaW5kZXggNDgxMTkxNWNiODUzNWRlYWZjN2NmZmViNzFjZDllMTM2ZGM4ZTkzZC4uMjFj
MzFiMGIyZDA5NjM4NmE1NTQzMzM1OTYzOTliZTkxY2UzYjc0MCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbQpAQCAtMjUsOSArMjUsMTEgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKKyNpbXBv
cnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlLmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFVSTFNjaGVt
ZUhhbmRsZXIuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmll
d0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKQEAgLTE1NTYsNCArMTU1OCwxOTMgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfTsKIAorZW51bSBjbGFzcyBSZXNwb25z
ZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKK2VudW0gY2xhc3MgSXNBcHBCb3VuZCA6IGJv
b2wgeyBObywgWWVzIH07CitzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKK3N0YXRpYyB2b2lk
IHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3VuZCkK
K3sKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRh
T2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVk
U2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAg
ICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogbWFpbiA9CisgICAgIjxzY3JpcHQ+
IgorICAgICJ0cnkgeyIKKyAgICAiICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVy
KCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgeyIKKyAgICAiICAgICAgICBpZiAocmVnLmFj
dGl2ZSkgeyIKKyAgICAiICAgICAgICAgICAgYWxlcnQoJ3dvcmtlciB1bmV4cGVjdGVkbHkgYWxy
ZWFkeSBhY3RpdmUnKTsiCisgICAgIiAgICAgICAgICAgIHJldHVybjsiCisgICAgIiAgICAgICAg
fSIKKyAgICAiICAgICAgICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsiCisgICAgIiAgICAgICAg
d29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7IgorICAg
ICIgICAgICAgICAgICBpZiAod29ya2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKSIKKyAgICAiICAg
ICAgICAgICAgICAgIGFsZXJ0KCdzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCcpOyIKKyAgICAiICAg
ICAgICB9KTsiCisgICAgIiAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeyIKKyAgICAiICAg
ICAgICBhbGVydCgnUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAnICsgZXJyb3IpOyIKKyAgICAi
ICAgIH0pOyIKKyAgICAifSBjYXRjaChlKSB7IgorICAgICIgICAgYWxlcnQoJ0V4Y2VwdGlvbjog
JyArIGUpOyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+IjsKKworICAgIGNvbnN0IGNoYXIqIGpz
ID0gbnVsbHB0cjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKKwor
ICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CisgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRo
ZXRpYzoKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVu
dCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0
PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9o
dG1sJ30pKSk7IH0pIjsKKyAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9u
c2UiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKKyAg
ICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBl
dmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBl
eHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsg
Ii8iLCB7IG1haW4gfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUi
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNo
ZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0
PiIgfSB9LAorICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cyk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsK
KyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tX
ZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAo
XmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3Jl
ZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNl
cnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVz
ZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAgICB3ZWJWaWV3Lmdl
dCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBpZiAoYXBwQm91bmQgPT0gSXNB
cHBCb3VuZDo6Tm8pIHsKKyAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRS
ZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTol
ZC8iLCBzZXJ2ZXIucG9ydCgpXV1dOworICAgICAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElP
TlMKKyAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKKyAgICB9CisKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZp
ZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7CisKKyAg
ICBpZiAocmVzcG9uc2VUeXBlICE9IFJlc3BvbnNlVHlwZTo6RmV0Y2hlZCkKKyAgICAgICAgc2Vy
dmVyLmNhbmNlbCgpOworCisgICAgW3dlYlZpZXcgcmVsb2FkXTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgZXhwZWN0ZWRBbGVydCk7CisKKyAgICBi
b29sIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMgPSBhcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpZ
ZXM7CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlv
bkRhdGE6IF4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewor
ICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBl
eHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9h
ZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMp
OworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFw
cEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyKQoreworICAgIHJ1blRlc3QoUmVzcG9uc2VU
eXBlOjpTeW50aGV0aWMsIElzQXBwQm91bmQ6Ok5vKTsKKyAgICBydW5UZXN0KFJlc3BvbnNlVHlw
ZTo6RmV0Y2hlZCwgSXNBcHBCb3VuZDo6Tm8pOworfQorCitURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyKQoreworICAgIHJ1blRlc3QoUmVz
cG9uc2VUeXBlOjpTeW50aGV0aWMsIElzQXBwQm91bmQ6Olllcyk7CisgICAgcnVuVGVzdChSZXNw
b25zZVR5cGU6OkZldGNoZWQsIElzQXBwQm91bmQ6Olllcyk7Cit9CisKK3N0YXRpYyBjb25zdCBj
aGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCis8c2NyaXB0PgordHJ5IHsKKyAgICBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcp
IHsKKyAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsKKyAgICAgICAgICAgIGFsZXJ0KCd3b3JrZXIg
YWxyZWFkeSBhY3RpdmUnKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsKKyAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVu
ZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAod29ya2VyLnN0
YXRlID09ICdhY3RpdmF0ZWQnKQorICAgICAgICAgICAgICAgIGFsZXJ0KCdzdWNjZXNzZnVsbHkg
cmVnaXN0ZXJlZCcpOworICAgICAgICB9KTsKKyAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikg
eworICAgICAgICBhbGVydCgnUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAnICsgZXJyb3IpOwor
ICAgIH0pOworfSBjYXRjaChlKSB7CisgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOworfQor
PC9zY3JpcHQ+CispU1dSRVNPVVJDRSI7CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTXVs
dGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQoreworICAgIGlzRG9uZSA9IGZh
bHNlOworCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3Zl
RGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2Rp
ZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7Cisg
ICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOworCisgICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3Rl
bmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNo
ZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVk
IGZyb20gc2VydmVyIjsKKworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsK
KyAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisg
ICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20g
c2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMpOworCisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10p
OworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUg
bmV3XSk7CisgICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2Us
IHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25N
ZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfV07CisgICAgd2Vi
VmlldzEuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgd2Vi
VmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisKKyAgICBb
d2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgRVhQRUNUX1dLX1NU
UkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVy
ZWQiKTsKKworICAgIFt3ZWJWaWV3MSByZWxvYWRdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2Vi
VmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgZXhwZWN0ZWRBbGVydCk7CisKKyAgICBpc0RvbmUg
PSBmYWxzZTsKKyAgICBbd2ViVmlldzEgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6IF4oc3RydWN0
IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1Rf
VFJVRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBF
Q1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAg
ICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3MSBfY2xlYXJB
cHBCb3VuZE5hdmlnYXRpb25EYXRhOl57CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBpc0RvbmUg
PSBmYWxzZTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBb
TlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkL21haW4uaHRt
bCIsIHNlcnZlci5wb3J0KCldXV07CisgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisg
ICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07CisgICAgRVhQRUNU
X1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiZmV0Y2hlZCBmcm9tIHNl
cnZlciIpOworCisgICAgW3dlYlZpZXcyIHJlbG9hZF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3
ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsKKworICAgIFt3ZWJW
aWV3MiBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRl
ZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xv
YWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICBpc0Rv
bmUgPSBmYWxzZTsKK30KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424081</attachid>
            <date>2021-03-23 17:27:30 -0700</date>
            <delta_ts>2021-03-23 18:14:40 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-222635-20210323172729.patch</filename>
            <type>text/plain</type>
            <size>16135</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0OTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDgxNGViNDQzN2UyOTky
ODUxYWRiMmQyNzMxNWJjZTJlZDdkYmUwMi4uYjk4N2YxMmNiNGI0ZjVlNmY3NzAxYTMzNjQyMjc2
MzM4OWY2ZjVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTAzLTIzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ug
d29ya2VyIGxvYWRzIGFyZSBub3QgbWFya2VkIGFzIGFwcC1ib3VuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjM1CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS83NDM5NTk1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0Lgor
CisgICAgICAgIEZpeCBjYXBpdGFsaXphdGlvbiBlcnJvci4gQWRkIGEgbmV3IGZ1bmN0aW9uIHRv
IG1hcmsgdGhlIHNlcnZpY2UKKyAgICAgICAgd29ya2VyIGRvY3VtZW50IGxvYWRlciBhcyBhcHAt
Ym91bmQuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRsYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRo
cmVhZFByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaDoKKwogMjAyMS0w
My0yMyAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtDTWFrZV0gVXNlIGFuIGltcG9ydGVkIHRhcmdldCBmb3IgdGhlIExDTVMyIGxpYnJhcnkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYjBkYzcwOWM0MTQ4YjMxYmJkYzc5NDU0ZDk4ODZjMmI1ZTg2OTIzZi4uMWQ5
YTc5ZDkyMGIxMTM4NWIyMGVjNzc0Njc4MjUwNzUxMWM1YWQ1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAyMS0wMy0yMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxl
LmNvbT4KKworICAgICAgICBTZXJ2aWNlIHdvcmtlciBsb2FkcyBhcmUgbm90IG1hcmtlZCBhcyBh
cHAtYm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyMjYzNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzQzOTU5NTA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBNYXJrIHRoZSBzZXJ2aWNlIHdvcmtl
ciBkb2N1bWVudCBsb2FkZXIgYXMgYXBwLWJvdW5kIG9yIG5vdCB3aGVuCisgICAgICAgIGluaXRp
YXRpbmcgYSBmZXRjaCBldmVudC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZURv
Y3VtZW50TG9hZGVyKToKKyAgICAgICAgRml4IGNhcGl0YWxpemF0aW9uIGVycm9yLgorCiAyMDIx
LTAzLTIzICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3NDg4OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKaW5kZXggZWFiNzEwYTI3ZGVmZDhkZDVlM2VhYjIyNzJlODhhMWYzMzZjZGEy
YS4uN2IyYTBlYzU4NWExOWViZGU5NmVlYTc3NzUzMzA4MTc1MzVmNzQ1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTQyMSw3ICs0MjEsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogICAgIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsgfQotICAgIHZvaWQgc2V0bGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZChib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpIHsgbV9sYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsgfQorICAg
IHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChib29sIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQpIHsgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRM
b2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDQ1ZGNhZjNmNzE0NmYzYWE2
YjFkYzQ0MTllMDZkYmYyY2M0OWI1OGIuLmVhMDRiZjk4ZGUwY2RlNDczMzA0NmYxZDEzM2E4ZDNh
OWEzMmY0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkNhY2hl
U3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRl
ICJFdmVudExvb3AuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmV0Y2hM
b2FkZXIuaCIKQEAgLTEyNCw2ICsxMjUsMTIgQEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojp+
U2VydmljZVdvcmtlclRocmVhZFByb3h5KCkKICAgICBhbGxTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eGllcygpLnJlbW92ZSh0aGlzKTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCB3YXNBcHBCb3VuZCkKK3sKKyAgICBp
ZiAobV9kb2N1bWVudC0+bG9hZGVyKCkpCisgICAgICAgIG1fZG9jdW1lbnQtPmxvYWRlcigpLT5z
ZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKHdhc0FwcEJvdW5kKTsKK30KKwogYm9vbCBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmlu
ZyYgbW9kZSkKIHsKICAgICBpZiAobV9pc1Rlcm1pbmF0aW5nT3JUZXJtaW5hdGVkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCAzNmQwZmY4ODhiZmQxYWZjNmRkNjhlYWMz
OTJhZTc5NWZiMThjZDdiLi42Yjc1MDMzM2NjZDU5OTc0YmY0Zjk4NjNiNmU2NDA0NGY0MWRlZGZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaApAQCAtNzksNiArNzksOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KCk7CiAgICAgdm9pZCBmaXJlQWN0aXZh
dGVFdmVudCgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKGJvb2wpOworCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiwg
U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCmluZGV4IGIzOWFiYjIyMDMwZDhkY2I4MDAxYjgzZTA0NTAyYWU4ZTNjMWZmNDMuLjQyZjM3
OWJhMWJiZmUwZDZjYWNkZDk5NGNkMGQ5ZmE4MDg1YjUyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKQEAgLTIyNyw2ICsyMjcsOCBAQCB2b2lkIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
c2VydgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgc2VydmljZVdvcmtlclRocmVhZFBy
b3h5LT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKHJlcXVlc3QuaXNBcHBCb3VuZCgpKTsK
KwogICAgIGlmICghaXNWYWxpZEZldGNoKHJlcXVlc3QsIG9wdGlvbnMsIHNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS0+c2NyaXB0VVJMKCksIHJlZmVycmVyKSkgewogICAgICAgICBtX2Nvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGI4ZWFh
YmVkZjY1OWNhMjJhNzg4YjE3ZWFhYjY4MDJlODliNDc5ZjIuLjg0ZDA3ODgwMjc5ZGRhOWFiYmRj
NzAxZTk1NzcxN2Y3MWQ1NzRhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC02NDc5LDcgKzY0NzksNyBAQCBSZWY8RG9jdW1lbnRMb2FkZXI+
IFdlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVyKEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3Vy
Y2VSZQogewogICAgIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gZG9jdW1lbnRMb2FkZXIgPSBXZWJE
b2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKIAotICAgIGRv
Y3VtZW50TG9hZGVyLT5zZXRsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKG1fbGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCk7CisgICAgZG9jdW1lbnRMb2FkZXItPnNldExhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQobV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKIAogICAgIGlmIChmcmFtZS5p
c01haW5GcmFtZSgpKSB7CiAgICAgICAgIGlmIChtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpIHsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYmUyMDIz
MzllMDNiYTk4NTdiNmNiYjFhOWI1NTE5OTAzZDMyNTE5Li4xNjg0OGY4ZjQwYWIxYjAxMTA0OTky
NmQwMmY1NjFmNWJhYzU2OTc1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDMtMjMgIEthdGUgQ2hlbmV5ICA8
a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSB3b3JrZXIgbG9h
ZHMgYXJlIG5vdCBtYXJrZWQgYXMgYXBwLWJvdW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI2MzUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0
Mzk1OTUwPgorCisgICAgICAgIEFQSSB0ZXN0IGNvdmVyYWdlIGZvciBmZXRjaGVkIGFuZCBzeW50
aGV0aWMgcmVzcG9uc2VzIHRvIG1ha2Ugc3VyZQorICAgICAgICB0aGV5IGFyZSBtYXJrZWQgYXMg
YXBwLWJvdW5kIG9yIG5vdCBiYXNlZCBvbiB0aGUgbWFpbiByZXF1ZXN0LgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisKIDIwMjEtMDMtMjMgIEppZXdl
biBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBQcm92aWRlIGEgd2F5IHRv
IHNwZWNpZnkgcGxhdGZvcm0gdnMgc2VjdXJpdHkga2V5IHdoZW4gcmVxdWVzdGluZyBhbiBhc3Nl
cnRpb24gaW4gdGhlIFNQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDQ4MTE5MTVjYjg1
MzVkZWFmYzdjZmZlYjcxY2Q5ZTEzNmRjOGU5M2QuLjlkZDg0MTc3NjIwZWQxNzZlYmZjNDA3NTlm
YWYzMmMxMDg2ZDdhYzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTI1LDkgKzI1LDEx
IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiU2VydmljZVdvcmtlclRDUFNlcnZl
ci5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFVJ
RGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJU
ZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgi
CkBAIC0xNTU2LDQgKzE1NTgsMjEyIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBw
Qm91bmRSZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKIH07CiAKK2VudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRj
aGVkIH07CitlbnVtIGNsYXNzIElzQXBwQm91bmQgOiBib29sIHsgTm8sIFllcyB9Oworc3RhdGlj
IGJvb2wgaXNEb25lID0gZmFsc2U7CitzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSBy
ZXNwb25zZVR5cGUsIElzQXBwQm91bmQgYXBwQm91bmQpCit7CisgICAgW1tXS1dlYnNpdGVEYXRh
U3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBh
c3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG1haW4gPQorICAgICI8c2NyaXB0PiIKKyAgICAidHJ5IHsiCisgICAgIiAg
ICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsiCisgICAgIiAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsiCisgICAgIiAgICAgICAg
ICAgIGFsZXJ0KCd3b3JrZXIgdW5leHBlY3RlZGx5IGFscmVhZHkgYWN0aXZlJyk7IgorICAgICIg
ICAgICAgICAgICByZXR1cm47IgorICAgICIgICAgICAgIH0iCisgICAgIiAgICAgICAgd29ya2Vy
ID0gcmVnLmluc3RhbGxpbmc7IgorICAgICIgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVy
KCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgeyIKKyAgICAiICAgICAgICAgICAgaWYgKHdvcmtl
ci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykiCisgICAgIiAgICAgICAgICAgICAgICBhbGVydCgnc3Vj
Y2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsiCisgICAgIiAgICAgICAgfSk7IgorICAgICIgICAgfSku
Y2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsiCisgICAgIiAgICAgICAgYWxlcnQoJ1JlZ2lzdHJhdGlv
biBmYWlsZWQgd2l0aDogJyArIGVycm9yKTsiCisgICAgIiAgICB9KTsiCisgICAgIn0gY2F0Y2go
ZSkgeyIKKyAgICAiICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsiCisgICAgIn0iCisgICAg
Ijwvc2NyaXB0PiI7CisKKyAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CisKKyAgICBzd2l0Y2ggKHJlc3BvbnNlVHlw
ZSkgeworICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6CisgICAgICAgIGpzID0gInNl
bGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdp
dGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNw
b25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAg
IGV4cGVjdGVkQWxlcnQgPSAic3ludGhldGljIHJlc3BvbnNlIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBSZXNwb25zZVR5cGU6OkZldGNoZWQ6CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZl
bnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2go
Jy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsKKyAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVk
IGZyb20gc2VydmVyIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWluIH0gfSwKKyAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFs
ZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICB9LCBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW2RlbGVnYXRlIHNldERpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25N
ZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNh
bGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVk
ZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZl
clRydXN0XSk7CisgICAgfV07CisgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IHNlcnZlci5y
ZXF1ZXN0KCk7CisgICAgaWYgKGFwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7CisgICAgICAg
IE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXTsK
KyAgICAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgICAgIHJlcXVlc3QgPSBu
b25BcHBCb3VuZFJlcXVlc3Q7CisgICAgfQorCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0s
ICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOworCisgICAgaWYgKHJlc3BvbnNlVHlwZSAhPSBS
ZXNwb25zZVR5cGU6OkZldGNoZWQpCisgICAgICAgIHNlcnZlci5jYW5jZWwoKTsKKworICAgIGJv
b2wgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyA9IGFwcEJvdW5kID09IElzQXBwQm91bmQ6Olll
czsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9u
RGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Cisg
ICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIGV4
cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOworICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2Fk
ZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyk7
CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBpc0RvbmUgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOl57CisgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CisKKyAgICBbd2ViVmlldyByZWxvYWRdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsKKworICAgIGlzRG9uZSA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOiBeKHN0cnVjdCBX
S0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgaWYgKHJlc3Bv
bnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYykgeworICAgICAgICAgICAgRVhQRUNU
X0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgICAg
ICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFw
cEJvdW5kUmVxdWVzdFRlc3RpbmcsIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOworICAgICAg
ICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywg
IWV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOworICAgICAgICB9CisgICAgICAgIGlzRG9uZSA9
IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
Cit9CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFNl
cnZpY2VXb3JrZXIpCit7CisgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OlN5bnRoZXRpYywgSXNB
cHBCb3VuZDo6Tm8pOworICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpGZXRjaGVkLCBJc0FwcEJv
dW5kOjpObyk7Cit9CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0
V2l0aFNlcnZpY2VXb3JrZXIpCit7CisgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OlN5bnRoZXRp
YywgSXNBcHBCb3VuZDo6WWVzKTsKKyAgICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6RmV0Y2hlZCwg
SXNBcHBCb3VuZDo6WWVzKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIi
U1dSRVNPVVJDRSgKKzxzY3JpcHQ+Cit0cnkgeworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgeworICAgICAgICBpZiAocmVn
LmFjdGl2ZSkgeworICAgICAgICAgICAgYWxlcnQoJ3dvcmtlciBhbHJlYWR5IGFjdGl2ZScpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHdvcmtlciA9IHJlZy5pbnN0
YWxsaW5nOworICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcp
CisgICAgICAgICAgICAgICAgYWxlcnQoJ3N1Y2Nlc3NmdWxseSByZWdpc3RlcmVkJyk7CisgICAg
ICAgIH0pOworICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIGFsZXJ0KCdS
ZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICcgKyBlcnJvcik7CisgICAgfSk7Cit9IGNhdGNoKGUp
IHsKKyAgICBhbGVydCgnRXhjZXB0aW9uOiAnICsgZSk7Cit9Cis8L3NjcmlwdD4KKylTV1JFU09V
UkNFIjsKKworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNo
YXJlZFNlcnZpY2VXb3JrZXIpCit7CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICBbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBk
aXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAg
ICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50
KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOworCisg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBt
YWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQu
aHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIg
fSB9LAorICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7
CisKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIGF1
dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbZGVsZWdh
dGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkg
eworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRo
ZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsK
KyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWws
IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAgICB3ZWJWaWV3MS5nZXQoKS5uYXZpZ2F0
aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0
aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKworICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0
X3dhaXRGb3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOworCisgICAgW3dlYlZp
ZXcxIHJlbG9hZF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9y
QWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJW
aWV3MSBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVk
QXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xv
YWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAg
aXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcxIF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRh
dGE6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIE5TTXV0
YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvbWFpbi5odG1sIiwgc2VydmVyLnBvcnQoKV1d
XTsKKyAgICBBUFBfQk9VTkRfUkVRVUVTVF9BRERJVElPTlMKKyAgICBbd2ViVmlldzIgbG9hZFJl
cXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcy
IF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRjaGVkIGZyb20gc2VydmVyIik7CisKKyAgICBbd2Vi
VmlldzIgcmVsb2FkXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRG
b3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOworCisgICAgW3dlYlZpZXcyIF9hcHBCb3VuZE5hdmln
YXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEp
IHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVz
dGluZyk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1
ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIGlzRG9uZSA9IGZhbHNlOworfQogI2Vu
ZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>