<?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>223200</bug_id>
          
          <creation_ts>2021-03-15 11:31:03 -0700</creation_ts>
          <short_desc>Service worker soft-update loads not being marked app-bound</short_desc>
          <delta_ts>2021-04-14 10:54:14 -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>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1739548</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-03-15 11:31:03 -0700</bug_when>
    <thetext>We should mark service worker soft-update loads as app-bound.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739549</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-03-15 11:31:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/75438555&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746684</commentid>
    <comment_count>2</comment_count>
      <attachid>425058</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-04-02 15:01:07 -0700</bug_when>
    <thetext>Created attachment 425058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747013</commentid>
    <comment_count>3</comment_count>
      <attachid>425058</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-05 10:45:21 -0700</bug_when>
    <thetext>Comment on attachment 425058
Patch

Looks good overall, a few suggestions below.

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

&gt; Source/WebCore/workers/service/ServiceWorkerJobData.h:56
&gt; +    bool lastNavigationWasAppBound;

ServiceWorkerJobData is serialised between Web and Networking process but lastNavigationWasAppBound use is internal to networking process.
Can we get this information from the registration directly?

&gt; Source/WebCore/workers/service/server/SWServer.cpp:469
&gt; +        request.setIsAppBound(jobData.lastNavigationWasAppBound);

We can probably get that information from the registration directly.
There are some timing differences in case of multiple appbound/not app bound requests to the same registration but I am not sure we can really fix it in all cases given we agglomerate soft update requests.
We can probably pass the registration to startScriptFetch instead.

&gt; Source/WebCore/workers/service/server/SWServerRegistration.h:50
&gt; +enum class LastNavigationWasAppBound : bool { No, Yes };

I am not sure the name is right.
The last navigation may not be appbound but the last request by a page may be app bound.
I would simplify it to IsAppBound.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:258
&gt; +        registration-&gt;scheduleSoftUpdate(m_loader.lastNavigationWasAppBound() ? WebCore::LastNavigationWasAppBound::Yes : WebCore::LastNavigationWasAppBound::No);

I would rename it to isAppBound() since this is what it really is.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1777
&gt; +    EXPECT_WK_STREQ([webView _test_waitForAlert], &quot;successfully registered&quot;);

Shouldn&apos;t we reset the appBoundNavigationData here?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1782
&gt; +    [webView loadRequest:request];

We need to make sure this request alone will not hit the network so that only soft update will actually change the appbound navigation data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747512</commentid>
    <comment_count>4</comment_count>
      <attachid>425058</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-04-06 10:32:17 -0700</bug_when>
    <thetext>Comment on attachment 425058
Patch

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

&gt;&gt; Source/WebCore/workers/service/ServiceWorkerJobData.h:56
&gt;&gt; +    bool lastNavigationWasAppBound;
&gt; 
&gt; ServiceWorkerJobData is serialised between Web and Networking process but lastNavigationWasAppBound use is internal to networking process.
&gt; Can we get this information from the registration directly?

Yes, will fix.

&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:469
&gt;&gt; +        request.setIsAppBound(jobData.lastNavigationWasAppBound);
&gt; 
&gt; We can probably get that information from the registration directly.
&gt; There are some timing differences in case of multiple appbound/not app bound requests to the same registration but I am not sure we can really fix it in all cases given we agglomerate soft update requests.
&gt; We can probably pass the registration to startScriptFetch instead.

Good point, will fix this in the next patch.

&gt;&gt; Source/WebCore/workers/service/server/SWServerRegistration.h:50
&gt;&gt; +enum class LastNavigationWasAppBound : bool { No, Yes };
&gt; 
&gt; I am not sure the name is right.
&gt; The last navigation may not be appbound but the last request by a page may be app bound.
&gt; I would simplify it to IsAppBound.

That makes sense. Will change.

&gt;&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:258
&gt;&gt; +        registration-&gt;scheduleSoftUpdate(m_loader.lastNavigationWasAppBound() ? WebCore::LastNavigationWasAppBound::Yes : WebCore::LastNavigationWasAppBound::No);
&gt; 
&gt; I would rename it to isAppBound() since this is what it really is.

Ditto, will change.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1777
&gt;&gt; +    EXPECT_WK_STREQ([webView _test_waitForAlert], &quot;successfully registered&quot;);
&gt; 
&gt; Shouldn&apos;t we reset the appBoundNavigationData here?

Yes we can, that will make the test more robust I think.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1782
&gt;&gt; +    [webView loadRequest:request];
&gt; 
&gt; We need to make sure this request alone will not hit the network so that only soft update will actually change the appbound navigation data.

I guess that is true. Although I wonder if it is enough to know that the soft-update got loaded (which I think is indicated from the &quot;worker already active&quot; alert) and then check the app-bound navigation data. If the load was incorrectly marked, the opposite boolean value will have the wrong value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747536</commentid>
    <comment_count>5</comment_count>
      <attachid>425303</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-04-06 11:14:00 -0700</bug_when>
    <thetext>Created attachment 425303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747537</commentid>
    <comment_count>6</comment_count>
      <attachid>425058</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-04-06 11:14:47 -0700</bug_when>
    <thetext>Comment on attachment 425058
Patch

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

New patch posted. Thanks for the comments.

&gt;&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1782
&gt;&gt;&gt; +    [webView loadRequest:request];
&gt;&gt; 
&gt;&gt; We need to make sure this request alone will not hit the network so that only soft update will actually change the appbound navigation data.
&gt; 
&gt; I guess that is true. Although I wonder if it is enough to know that the soft-update got loaded (which I think is indicated from the &quot;worker already active&quot; alert) and then check the app-bound navigation data. If the load was incorrectly marked, the opposite boolean value will have the wrong value.

I added didScheduleSoftUpdate to the testing data. This will track if a soft update occurred for these tests so we know the soft update is changing the app-bound data we get from the network process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747569</commentid>
    <comment_count>7</comment_count>
      <attachid>425310</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-04-06 12:33:56 -0700</bug_when>
    <thetext>Created attachment 425310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747851</commentid>
    <comment_count>8</comment_count>
      <attachid>425310</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-04-07 04:43:37 -0700</bug_when>
    <thetext>Comment on attachment 425310
Patch

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

&gt; Source/WebCore/workers/service/server/SWServerRegistration.h:111
&gt; +    void setIsAppBound(bool isAppBound) { m_isAppBound = isAppBound; }

This setter does not seem needed given we set m_isAppBound in scheduleSoftUpdate.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1764
&gt; +        { &quot;application/javascript&quot;, &quot;&quot; },

As I see it, the service worker script is empty so the second web page load will go to the network process.
I think it would be better if we were using the following js:
&quot;self.addEventListener(&apos;fetch&apos;, (event) =&gt; { event.respondWith(new Response(new Blob([&apos;&lt;script&gt;alert(\&quot;synthetic response\&quot;)&lt;/script&gt;&apos;], {type: &apos;text/html&apos;}))); })&quot;

For the second load page, we would have something like:
EXPECT_WK_STREQ([webView _test_waitForAlert], &quot;synthetic response&quot;);

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

This might be racy once only the soft update load happens given there is a timer of 1 second between the scheduling of the soft update and the actual soft update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749823</commentid>
    <comment_count>9</comment_count>
      <attachid>425310</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-04-13 13:04:00 -0700</bug_when>
    <thetext>Comment on attachment 425310
Patch

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

&gt;&gt; Source/WebCore/workers/service/server/SWServerRegistration.h:111
&gt;&gt; +    void setIsAppBound(bool isAppBound) { m_isAppBound = isAppBound; }
&gt; 
&gt; This setter does not seem needed given we set m_isAppBound in scheduleSoftUpdate.

Good point, will remove.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1764
&gt;&gt; +        { &quot;application/javascript&quot;, &quot;&quot; },
&gt; 
&gt; As I see it, the service worker script is empty so the second web page load will go to the network process.
&gt; I think it would be better if we were using the following js:
&gt; &quot;self.addEventListener(&apos;fetch&apos;, (event) =&gt; { event.respondWith(new Response(new Blob([&apos;&lt;script&gt;alert(\&quot;synthetic response\&quot;)&lt;/script&gt;&apos;], {type: &apos;text/html&apos;}))); })&quot;
&gt; 
&gt; For the second load page, we would have something like:
&gt; EXPECT_WK_STREQ([webView _test_waitForAlert], &quot;synthetic response&quot;);

If I change the js to return a synthetic response, I think the test exits earlier than the soft update happens. I maybe need some way to wait for the soft update before exiting.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1794
&gt;&gt; +    [webView _appBoundNavigationData: ^(struct WKAppBoundNavigationTestingData data) {
&gt; 
&gt; This might be racy once only the soft update load happens given there is a timer of 1 second between the scheduling of the soft update and the actual soft update.

Ok, I might use this to make sure we wait for the soft-update to finish as mentioned above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749831</commentid>
    <comment_count>10</comment_count>
      <attachid>425310</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-04-13 13:18:16 -0700</bug_when>
    <thetext>Comment on attachment 425310
Patch

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

&gt;&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InAppBrowserPrivacy.mm:1764
&gt;&gt;&gt; +        { &quot;application/javascript&quot;, &quot;&quot; },
&gt;&gt; 
&gt;&gt; As I see it, the service worker script is empty so the second web page load will go to the network process.
&gt;&gt; I think it would be better if we were using the following js:
&gt;&gt; &quot;self.addEventListener(&apos;fetch&apos;, (event) =&gt; { event.respondWith(new Response(new Blob([&apos;&lt;script&gt;alert(\&quot;synthetic response\&quot;)&lt;/script&gt;&apos;], {type: &apos;text/html&apos;}))); })&quot;
&gt;&gt; 
&gt;&gt; For the second load page, we would have something like:
&gt;&gt; EXPECT_WK_STREQ([webView _test_waitForAlert], &quot;synthetic response&quot;);
&gt; 
&gt; If I change the js to return a synthetic response, I think the test exits earlier than the soft update happens. I maybe need some way to wait for the soft update before exiting.

Also I think even with the synthetic response there will still be one load to the network process from the main request, or at least that is what I see in the test. Without the synthetic response there were 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749875</commentid>
    <comment_count>11</comment_count>
      <attachid>425917</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-04-13 14:47:08 -0700</bug_when>
    <thetext>Created attachment 425917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749876</commentid>
    <comment_count>12</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-04-13 14:48:25 -0700</bug_when>
    <thetext>Ok, latest patch addresses the changes you mentioned. First, it uses the synthetic response JS code you suggested instead of an empty string. I also updated the test to continuously check for a soft update until one has occurred to account for the delay between the update and the synthetic response, and I moved the code that changes the AppBoundNavigationTestingData.didPerformSoftUpdate value to be when the actual soft update load occurs, not when it is scheduled. This should fix any raciness, I confirmed by running 200 iterations.

I also was having local timeout issues with ServiceWorkerTCPServer (I filed rdar://76611319 to investigate) so I switched to TestWebKitAPI::HTTPServer, but the soft update logic is the same.

Waiting on EWS before landing.

Thanks for the help Youenn!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749913</commentid>
    <comment_count>13</comment_count>
      <attachid>425927</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-04-13 16:01:26 -0700</bug_when>
    <thetext>Created attachment 425927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750225</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-14 10:54:12 -0700</bug_when>
    <thetext>Committed r275952 (236512@main): &lt;https://commits.webkit.org/236512@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425927.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425058</attachid>
            <date>2021-04-02 15:01:07 -0700</date>
            <delta_ts>2021-04-06 11:13:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223200-20210402150106.patch</filename>
            <type>text/plain</type>
            <size>18336</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRhNDE5YTRhZDA1YzE2
NDdiOGMwZDBmNWU1NDFkOWRhNjgzY2VlMi4uYzI1MTRmY2IxZDNjNGNkODkwZmFiOTMzNTI2NDdh
MmVjN2E4NzY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA0LTAyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ug
d29ya2VyIHNvZnQtdXBkYXRlIGxvYWRzIG5vdCBiZWluZyBtYXJrZWQgYXBwLWJvdW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzc1NDM4NTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIG5lZWQgdG8gbWFyayByZXF1ZXN0cyBpbml0aWF0ZWQg
Ynkgc2VydmljZSB3b3JrZXIgc29mdCB1cGRhdGVzIGFzCisgICAgICAgIGFwcC1ib3VuZCBiYXNl
ZCBvbiB0aGUgbGFzdCBuYXZpZ2F0aW9uLiBXZSBzaG91bGQgZ2V0IHRoaXMgdmFsdWUgZnJvbSB0
aGUKKyAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyIGFuZCBzdG9yZSBpdCBpbiBTV1NlcnZl
clJlZ2lzdHJhdGlvbiBhbmQKKyAgICAgICAgZXZlbnR1YWxseSBTZXJ2aWNlV29ya2VySm9iRGF0
YSBzbyBpdCBpcyBhdmFpbGFibGUgaW4gU1dTZXJ2ZXI6OnNvZnRVcGRhdGUuCisKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmRlY29kZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c3Rh
cnRTY3JpcHRGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c29mdFVwZGF0ZSk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0
VXBkYXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0
cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6bGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJh
dGlvbjo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6CisKIDIwMjEtMDQtMDIgIENocmlz
IExvcmQgIDxjbG9yZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIEltcGxlbWVudCB0ZXh0IHJlbmRl
cmluZyBvbiBPZmZzY3JlZW5DYW52YXMgaW4gYSBXb3JrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODZhZGE4YTA0
NGIwODAxYjUwMzJmZWUyZWNmNjY3ZjNmNjQwYjNiOS4uYmRhYjI2ZmFmODkxNjM5MDk5ZTUyOWIx
NzgxZGVkYjk2NjMwZGY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNC0wMiAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2
aWNlIHdvcmtlciBzb2Z0LXVwZGF0ZSBsb2FkcyBub3QgYmVpbmcgbWFya2VkIGFwcC1ib3VuZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIzMjAwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NTQzODU1NT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBzaG91bGQgcGFzcyB0aGUgYXBwLWJvdW5kIHJl
cXVlc3QgdmFsdWUgd2hlbiBkb2luZyBhIHNvZnQgdXBkYXRlLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgTWFrZSBh
IGhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIHJlcXVlc3QncyBhcHAtYm91bmQgdmFsdWUuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzb2Z0
VXBkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2spOgorCiAyMDIxLTA0LTAyICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBEbyBub3Qgc2VuZCBzYW1wbGVzIHRvIEdQ
VVByb2Nlc3MgaWYgbWVkaWFzdHJlYW0gdmlkZW8gaXMgbm90IHBsYXlpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKaW5k
ZXggYjgxNTYyNDcyYzNlNGY2NmEwMGY2MjViYWVlYzA4OTQyYzZkMTViMS4uYzAyNWY0YzY2OTZk
Njg0ZDRiYjUwYzk2OGE5ZGU0ZDI3NTVlYmUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKQEAgLTUzLDYgKzUzLDgg
QEAgc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsKICAgICBVUkwgc2NvcGVVUkw7CiAgICAg
U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciBzb3VyY2VDb250ZXh0OwogICAgIFdvcmtl
clR5cGUgd29ya2VyVHlwZTsKKyAgICBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisK
ICAgICBTZXJ2aWNlV29ya2VySm9iVHlwZSB0eXBlOwogCiAgICAgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbk9wdGlvbnMgcmVnaXN0cmF0aW9uT3B0aW9uczsKQEAgLTczLDcgKzc1LDcgQEAgcHJp
dmF0ZToKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJKb2JEYXRh
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGlkZW50
aWZpZXIoKSA8PCBzY3JpcHRVUkwgPDwgY2xpZW50Q3JlYXRpb25VUkwgPDwgdG9wT3JpZ2luIDw8
IHNjb3BlVVJMIDw8IHNvdXJjZUNvbnRleHQgPDwgd29ya2VyVHlwZTsKKyAgICBlbmNvZGVyIDw8
IGlkZW50aWZpZXIoKSA8PCBzY3JpcHRVUkwgPDwgY2xpZW50Q3JlYXRpb25VUkwgPDwgdG9wT3Jp
Z2luIDw8IHNjb3BlVVJMIDw8IHNvdXJjZUNvbnRleHQgPDwgd29ya2VyVHlwZSA8PCBsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kOwogICAgIGVuY29kZXIgPDwgdHlwZTsKICAgICBzd2l0Y2ggKHR5
cGUpIHsKICAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKQEAgLTExMyw2
ICsxMTUsOCBAQCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YT4gU2VydmljZVdvcmtlckpv
YkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoam9iRGF0YS53b3JrZXJUeXBlKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGpvYkRhdGEu
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLnR5cGUpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGRjZTIwMTZmYzE1MzgzMDBmZmFhMTE3NTllYWUzMzQw
OGM0ZjllNTMuLjBjZDRmY2ZiNDk5Yzg0ZWQxNTY2NDNiNWZkNzg4NTY2ZmRmOTA4ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CkBAIC00NjYsNiArNDY2LDcgQEAgdm9pZCBTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaChjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgYm9vbCBzaG91bGQKICAgICAgICAgcmVx
dWVzdC5zZXRIVFRQUmVmZXJyZXIob3JpZ2luVVJMKG9yaWdpbikuc3RyaW5nKCkpOwogICAgICAg
ICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoc2VydmljZVdvcmtlckNsaWVudFVzZXJBZ2VudChD
bGllbnRPcmlnaW4geyBqb2JEYXRhLnRvcE9yaWdpbiwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShq
b2JEYXRhLnNjcmlwdFVSTCktPmRhdGEoKSB9KSk7CiAgICAgICAgIHJlcXVlc3Quc2V0UHJpb3Jp
dHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7CisgICAgICAgIHJlcXVlc3Quc2V0SXNBcHBC
b3VuZChqb2JEYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOwogCiAgICAgICAgIG1fc29m
dFVwZGF0ZUNhbGxiYWNrKFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsgam9iRGF0YSB9LCBzaG91bGRS
ZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpXShhdXRvJiByZXN1bHQpIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCkBA
IC0xMTEzLDYgKzExMTQsNyBAQCB2b2lkIFNXU2VydmVyOjpzb2Z0VXBkYXRlKFNXU2VydmVyUmVn
aXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiAgICAgam9iRGF0YS5zY29wZVVSTCA9IHJlZ2lzdHJh
dGlvbi5zY29wZVVSTFdpdGhvdXRGcmFnbWVudCgpOwogICAgIGpvYkRhdGEud29ya2VyVHlwZSA9
IG5ld2VzdFdvcmtlci0+dHlwZSgpOwogICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJK
b2JUeXBlOjpVcGRhdGU7CisgICAgam9iRGF0YS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0g
cmVnaXN0cmF0aW9uLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKTsKICAgICBzY2hlZHVsZUpv
YihXVEZNb3ZlKGpvYkRhdGEpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAppbmRl
eCBhNThiYjAzMzVkMmE3YWMzZmQ4NDE3ZjVmMTA5YzJjOGEzNGE4M2YxLi4xZGQzZDVmNGI5ZGM4
NTZkZmI0YWYyYzYxMGY5NzNjNGFkMjA0OWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNw
cApAQCAtMzcwLDEzICszNzAsMTUgQEAgdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c29mdFVw
ZGF0ZSgpCiAgICAgbV9zZXJ2ZXIuc29mdFVwZGF0ZSgqdGhpcyk7CiB9CiAKLXZvaWQgU1dTZXJ2
ZXJSZWdpc3RyYXRpb246OnNjaGVkdWxlU29mdFVwZGF0ZSgpCit2b2lkIFNXU2VydmVyUmVnaXN0
cmF0aW9uOjpzY2hlZHVsZVNvZnRVcGRhdGUoTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKQogewogICAgIC8vIFRvIGF2b2lkIHNjaGVkdWxpbmcgbWFu
eSB1cGRhdGVzIGR1cmluZyBhIHNpbmdsZSBwYWdlIGxvYWQsIHdlIGRvIHNvZnQgdXBkYXRlcyBv
biBhIDEgc2Vjb25kIGRlbGF5IGFuZCBrZWVwIGRlbGF5aW5nCiAgICAgLy8gYXMgbG9uZyBhcyBz
b2Z0IHVwZGF0ZSByZXF1ZXN0cyBrZWVwIGNvbWluZy4gVGhpcyBzZWVtcyB0byBtYXRjaCBDaHJv
bWUncyBiZWhhdmlvci4KICAgICBpZiAobV9zb2Z0VXBkYXRlVGltZXIuaXNBY3RpdmUoKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCA9PSBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXM7CisK
ICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNv
ZnRVcGRhdGVJZk5lZWRlZCIpOwogICAgIG1fc29mdFVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChz
b2Z0VXBkYXRlRGVsYXkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4IDcwNWU2YTcw
NmEyM2E0MjNhN2YzZmQ3M2I3ZjdjMzljYzZiZmNkNjYuLjQyMzM2ZjQzMDFhYjU2MzIwZjUwZGVl
NTNhYmNmMmE3NmE3ZmY2NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKQEAgLTQ3LDYgKzQ3
LDggQEAgc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKIAorZW51bSBjbGFzcyBMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgU1dTZXJ2
ZXJSZWdpc3RyYXRpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRp
b24+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTk5LDEyICsx
MDEsMTUgQEAgcHVibGljOgogICAgIHZvaWQgZm9yRWFjaENvbm5lY3Rpb24oY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkKFNXU2VydmVyOjpDb25uZWN0aW9uJik+Jik7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHNob3VsZFNvZnRVcGRhdGUoY29uc3QgRmV0Y2hPcHRpb25zJikgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZVNvZnRVcGRhdGUoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNjaGVkdWxlU29mdFVwZGF0ZShMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
KTsKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc29mdFVwZGF0ZURlbGF5IHsgMV9zIH07
CiAKICAgICBVUkwgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3Nj
b3BlVVJMOyB9CiAgICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0VVJM
OyB9CiAKKyAgICBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSB7IHJldHVybiBtX2xh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0KKyAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQoYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSB7IG1fbGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0KKwogcHJpdmF0ZToK
ICAgICB2b2lkIGFjdGl2YXRlKCk7CiAgICAgdm9pZCBoYW5kbGVDbGllbnRVbmxvYWQoKTsKQEAg
LTEzMCw2ICsxMzUsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgSGFzaFNldDxEb2N1bWVudElkZW50aWZpZXI+PiBtX2NsaWVudHNVc2luZ1Jl
Z2lzdHJhdGlvbjsKIAogICAgIFdlYkNvcmU6OlRpbWVyIG1fc29mdFVwZGF0ZVRpbWVyOworICAg
IAorICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBjZjk1YzdkZWUyNTFjYjA4
OWYzZGQ1OTBkMWE2NjFiYWQzOTcxOTE0Li5iYjVlN2QwNDI4NTBiMmZhY2FiNjlhZGFlNTYxNmJi
MmQwZjc4MDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNTEwLDYgKzE1MTAsMTEgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoU2VydmljZVdvcmtl
ckZldGNoVGFzayogZmUKIH0KICNlbmRpZgogCitib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpCit7CisgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5y
ZXF1ZXN0LmlzQXBwQm91bmQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRl
ZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0NjMzYTE2MjZkZDE0MzYyOTMw
YmMxMDEzN2UxNDE3ZGRjNTlmNzYxLi4zYzQ4MzI0NGUzNWFkZWQ2YjVhMGEyMmNhZDE2ZDk5Njdh
ZjMwOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgKQEAgLTE0Myw2ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqKTsKICNlbmRp
ZgogCisgICAgYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCk7CisKIHByaXZhdGU6CiAg
ICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYs
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggYWUxOTVmMDYy
ZDllOWVmNWUyNzc4ZGM2YzcwZTczNGNmMTlhYmVkMC4uMzE5ODhmYjdiZTVmY2ZkNTAxOGQzZWZl
YTAwY2E2YzEyMWJiYzJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmNwcApAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6c29m
dFVwZGF0ZUlmTmVlZGVkKCkKICAgICBpZiAoIW1fc2hvdWxkU29mdFVwZGF0ZSkKICAgICAgICAg
cmV0dXJuOwogICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBtX2xvYWRlci5jb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkuc3dDb25uZWN0aW9uKCkuc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9uKG1f
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpKQotICAgICAgICByZWdpc3RyYXRp
b24tPnNjaGVkdWxlU29mdFVwZGF0ZSgpOworICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxl
U29mdFVwZGF0ZShtX2xvYWRlci5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkgPyBXZWJDb3Jl
OjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kOjpObyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCAxZjAyNjBiN2VjZTBhYjY2MmYyMDdm
NDY0ODlkMDk0ZTc1MmI4ZDFlLi5kOWMzNjNkODAwZDM2ZTYyYjBhN2E4ZmE3OGM5ZDRhMjE2YjRk
NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTg3LDcg
KzE4Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOCiAgICAgYm9vbCBzaG91bGRTb2Z0VXBk
YXRlID0gcmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+c2hvdWxkU29mdFVwZGF0ZShsb2Fk
ZXIucGFyYW1ldGVycygpLm9wdGlvbnMpOwogICAgIGlmICh3b3JrZXItPnNob3VsZFNraXBGZXRj
aEV2ZW50KCkpIHsKICAgICAgICAgaWYgKHNob3VsZFNvZnRVcGRhdGUpCi0gICAgICAgICAgICBy
ZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0ZSgpOworICAgICAgICAgICAgcmVnaXN0cmF0
aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUobG9hZGVyLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
KSA/IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6OlllcyA6IFdlYkNvcmU6Okxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMDAwMjk1OTFlNTI3YzNmMTlkM2Q2YWE3NzNmZWY5MWI1Y2FlYmNjOS4uYWYxNDUxMmM0MWIy
ZjBmZTE5MmFmNzc0ZWJiMDRhZDQzMGY4MjhkNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA0LTAyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ug
d29ya2VyIHNvZnQtdXBkYXRlIGxvYWRzIG5vdCBiZWluZyBtYXJrZWQgYXBwLWJvdW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzc1NDM4NTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFQSSB0ZXN0IGNvdmVyYWdlLiBSZWZhY3RvciB0byBhdm9p
ZCBjb2RlIGR1cGxpY2F0aW9uIGluIG90aGVyIHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorCiAyMDIxLTA0
LTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjT1Nd
IEVuYWJsZSBOU1VSTFNlc3Npb24gV2ViU29ja2V0IGNvZGUgcGF0aCBpbiBXZWJLaXRUZXN0UnVu
bmVyCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggNmY3MGFhMTg3NTVhNDdhYTM4MThkY2Zk
YTFkMTY1YzA2ZmZjNjQ3Ni4uOTJhMGU4MWRmNmYzMTJlZDFlZDJiNTFmOWYxYTk5MGZmNjM4YzRh
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTQxOCw3ICsxNDE4LDcgQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25B
cHBCb3VuZCkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLSNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorI2VuZGlmIC8vIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdCkKQEAgLTE1NTgsNiArMTU1OCwyOCBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9OwogCitzdGF0aWMgY29uc3QgY2hh
ciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCis8c2NyaXB0PgordHJ5IHsKKyAgICBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcp
IHsKKyAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsKKyAgICAgICAgICAgIGFsZXJ0KCd3b3JrZXIg
YWxyZWFkeSBhY3RpdmUnKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsKKyAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVu
ZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAod29ya2VyLnN0
YXRlID09ICdhY3RpdmF0ZWQnKQorICAgICAgICAgICAgICAgIGFsZXJ0KCdzdWNjZXNzZnVsbHkg
cmVnaXN0ZXJlZCcpOworICAgICAgICB9KTsKKyAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikg
eworICAgICAgICBhbGVydCgnUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAnICsgZXJyb3IpOwor
ICAgIH0pOworfSBjYXRjaChlKSB7CisgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOworfQor
PC9zY3JpcHQ+CispU1dSRVNPVVJDRSI7CisKIGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3lu
dGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNsYXNzIElzQXBwQm91bmQgOiBib29sIHsgTm8sIFll
cyB9Owogc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0Fw
cEJvdW5kIGFwcEJvdW5kKQpAQCAtMTU2OCwyNyArMTU5MCw2IEBAIHN0YXRpYyB2b2lkIHJ1blRl
c3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3VuZCkKICAgICB9
XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBzdGF0aWMg
Y29uc3QgY2hhciogbWFpbiA9Ci0gICAgIjxzY3JpcHQ+IgotICAgICJ0cnkgeyIKLSAgICAiICAg
IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9u
KHJlZykgeyIKLSAgICAiICAgICAgICBpZiAocmVnLmFjdGl2ZSkgeyIKLSAgICAiICAgICAgICAg
ICAgYWxlcnQoJ3dvcmtlciB1bmV4cGVjdGVkbHkgYWxyZWFkeSBhY3RpdmUnKTsiCi0gICAgIiAg
ICAgICAgICAgIHJldHVybjsiCi0gICAgIiAgICAgICAgfSIKLSAgICAiICAgICAgICB3b3JrZXIg
PSByZWcuaW5zdGFsbGluZzsiCi0gICAgIiAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIo
J3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7IgotICAgICIgICAgICAgICAgICBpZiAod29ya2Vy
LnN0YXRlID09ICdhY3RpdmF0ZWQnKSIKLSAgICAiICAgICAgICAgICAgICAgIGFsZXJ0KCdzdWNj
ZXNzZnVsbHkgcmVnaXN0ZXJlZCcpOyIKLSAgICAiICAgICAgICB9KTsiCi0gICAgIiAgICB9KS5j
YXRjaChmdW5jdGlvbihlcnJvcikgeyIKLSAgICAiICAgICAgICBhbGVydCgnUmVnaXN0cmF0aW9u
IGZhaWxlZCB3aXRoOiAnICsgZXJyb3IpOyIKLSAgICAiICAgIH0pOyIKLSAgICAifSBjYXRjaChl
KSB7IgotICAgICIgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOyIKLSAgICAifSIKLSAgICAi
PC9zY3JpcHQ+IjsKLQogICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKICAgICBjb25zdCBj
aGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIApAQCAtMTYwNCw3ICsxNjA1LDcgQEAgc3Rh
dGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEJvdW5kIGFw
cEJvdW5kKQogICAgIH0KIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsK
LSAgICAgICAgeyAiLyIsIHsgbWFpbiB9IH0sCisgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVz
IH0gfSwKICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCiAgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7
ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKICAg
ICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwpAQCAtMTY3
NiwzMiArMTY3Nyw5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0
V2l0aFNlcnZpY2VXb3JrZXIpCiAgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OkZldGNoZWQsIElz
QXBwQm91bmQ6Olllcyk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIi
U1dSRVNPVVJDRSgKLTxzY3JpcHQ+Ci10cnkgewotICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewotICAgICAgICBpZiAocmVn
LmFjdGl2ZSkgewotICAgICAgICAgICAgYWxlcnQoJ3dvcmtlciBhbHJlYWR5IGFjdGl2ZScpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHdvcmtlciA9IHJlZy5pbnN0
YWxsaW5nOwotICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcp
Ci0gICAgICAgICAgICAgICAgYWxlcnQoJ3N1Y2Nlc3NmdWxseSByZWdpc3RlcmVkJyk7Ci0gICAg
ICAgIH0pOwotICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgIGFsZXJ0KCdS
ZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICcgKyBlcnJvcik7Ci0gICAgfSk7Ci19IGNhdGNoKGUp
IHsKLSAgICBhbGVydCgnRXhjZXB0aW9uOiAnICsgZSk7Ci19Ci08L3NjcmlwdD4KLSlTV1JFU09V
UkNFIjsKLQogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNo
YXJlZFNlcnZpY2VXb3JrZXIpCiB7CiAgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7Ci0g
ICAgaXNEb25lID0gZmFsc2U7CiAKICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0
YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVE
YXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhh
bmRsZXI6XigpIHsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKQEAgLTE3NjcsNCArMTc0NSw2MSBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2Vy
dmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAg
aXNEb25lID0gZmFsc2U7CiB9CisKK3N0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91
bmQgaXNBcHBCb3VuZCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBb
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNd
OworCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0
YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmll
ZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAg
ICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworCisgICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoeworICAgICAg
ICB7ICJ0ZXh0L2h0bWwiLCBtYWluU1dCeXRlcyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiwgIiIgfSwKKyAgICAgICAgfSwgeworICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBt
YWluU1dCeXRlcyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwgIiIgfSwK
KyAgICB9KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsK
KworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7CisgICAgaWYg
KGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKKyAgICAgICAgTlNNdXRhYmxlVVJMUmVx
dWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJo
dHRwOi8vMTI3LjAuMC4xOiVkL21haW4uaHRtbCIsIHNlcnZlci5wb3J0KCldXV07CisgICAgICAg
IEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAgICByZXF1ZXN0ID0gbm9uQXBwQm91
bmRSZXF1ZXN0OworICAgIH0KKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwor
ICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vz
c2Z1bGx5IHJlZ2lzdGVyZWQiKTsKKworICAgIHdlYlZpZXcgPSBudWxscHRyOworICAgIHdlYlZp
ZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpyZXF1ZXN0XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFs
ZXJ0XSwgIndvcmtlciBhbHJlYWR5IGFjdGl2ZSIpOworCisgICAgaXNEb25lID0gZmFsc2U7Cisg
ICAgYm9vbCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzID0gaXNBcHBCb3VuZCA9PSBJc0FwcEJv
dW5kOjpZZXMgPyB0cnVlIDogZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlv
bkRhdGE6IF4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewor
ICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBl
eHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9h
ZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMp
OworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJv
dW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZSkKK3sKKyAgICBzb2Z0VXBkYXRl
VGVzdChJc0FwcEJvdW5kOjpZZXMpOworfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5v
bkFwcEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZSkKK3sKKyAgICBzb2Z0
VXBkYXRlVGVzdChJc0FwcEJvdW5kOjpObyk7Cit9CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425303</attachid>
            <date>2021-04-06 11:14:00 -0700</date>
            <delta_ts>2021-04-06 12:55:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223200-20210406111359.patch</filename>
            <type>text/plain</type>
            <size>25313</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI5MWY0OWVjYWY3ODBi
NDgwNTI2YmY1NDlhZWNhNzg2YzE5YjdjMC4uZWE5OTBkNGRlNzkzN2NlOWIyZTgwMWY3YTc0ODdj
YWVlOTYwYjI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTA0LTA2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ug
d29ya2VyIHNvZnQtdXBkYXRlIGxvYWRzIG5vdCBiZWluZyBtYXJrZWQgYXBwLWJvdW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzc1NDM4NTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIG5lZWQgdG8gbWFyayByZXF1ZXN0cyBpbml0aWF0ZWQg
Ynkgc2VydmljZSB3b3JrZXIgc29mdCB1cGRhdGVzIGFzCisgICAgICAgIGFwcC1ib3VuZCBiYXNl
ZCBvbiB0aGUgbGFzdCBuYXZpZ2F0aW9uLiBXZSBzaG91bGQgZ2V0IHRoaXMgdmFsdWUgZnJvbSB0
aGUKKyAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyIGFuZCBzdG9yZSBpdCBpbiBTV1NlcnZl
clJlZ2lzdHJhdGlvbiBzbyB3ZSBjYW4KKyAgICAgICAgdXNlIGl0IHRvIGJ1aWxkIGEgbmV3IHJl
cXVlc3QuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIFBhc3MgdGhlIGVu
dGlyZSBTV1NlcnZlclJlZ2lzdHJhdGlvbiB0byBTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaAor
ICAgICAgICBub3cgdGhhdCB3ZSBuZWVkIG1vcmUgdGhhbiBvbmUgdmFsdWUgZnJvbSBpdC4gTW92
ZSBzaG91bGRSZWZyZXNoQ2FjaGUKKyAgICAgICAgbG9naWMgaGVyZSBpbnN0ZWFkIG9mIFNXU2Vy
dmVySm9iUXVldWU6OnJ1blVwZGF0ZUpvYi4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpv
YlF1ZXVlOjpydW5VcGRhdGVKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdp
c3RyYXRpb246OnNjaGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJSZWdpc3RyYXRpb246OmlzQXBwQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJS
ZWdpc3RyYXRpb246OnNldElzQXBwQm91bmQpOgorCiAyMDIxLTA0LTA2ICBBZGl0eWEgS2VlcnRo
aSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtGQ1JdIFVzZSBvcGFxdWUg
c3lzdGVtIGNvbG9ycyBmb3IgY29udHJvbCBiYWNrZ3JvdW5kcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5NWE0OTVi
N2I4MDQ1MWQ4YzMwZDMwODAzZmVmY2UwMzA0ZDE2MDYyLi5kNThkZmM2M2FkMzhmYjA2MTA0MWMy
YzcxOTVkOTIzZjc2YmEzYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTA0LTA2
ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNl
cnZpY2Ugd29ya2VyIHNvZnQtdXBkYXRlIGxvYWRzIG5vdCBiZWluZyBtYXJrZWQgYXBwLWJvdW5k
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDAK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NDM4NTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHNob3VsZCBwYXNzIHRoZSBhcHAtYm91bmQg
cmVxdWVzdCB2YWx1ZSB3aGVuIGRvaW5nIGEgc29mdCB1cGRhdGUuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQXBwQm91bmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnNldERpZFNjaGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIE1ha2UgYSBo
ZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSByZXF1ZXN0J3MgYXBwLWJvdW5kIHZhbHVlLiBNYXJr
IGEKKyAgICAgICAgc29mdCB1cGRhdGUgbG9hZCBpbiB0aGUgc2Vzc2lvbiBmb3IgdGVzdGluZy4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNv
ZnRVcGRhdGVJZk5lZWRlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayk6CisKKyAgICAgICAgKiBTaGFyZWQvTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4uaDoKKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0
aW9uVGVzdGluZ0RhdGE6OnNldERpZFNjaGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlv
bkRhdGFUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1Rlc3RpbmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZp
Z2F0aW9uRGF0YTpdKToKKyAgICAgICAgVXBkYXRlIHRlc3Rpbmcgc3RydWN0IHRvIG1ha2Ugc3Vy
ZSBhIHNvZnQtdXBkYXRlIG9jY3VycmVkLiBUaGlzCisgICAgICAgIGVuc3VyZXMgd2UgZG9uJ3Qg
Z2V0IGEgZmFsc2UgcGFzcyBmb3IgYSBub24tc29mdCB1cGRhdGUgbG9hZC4KKwogMjAyMS0wNC0w
NiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBkZWZpbml0aW9uIHVzZWQgZm9yIHN0YWdpbmcgY2hhbmdlIHdpdGggaW50ZXJuYWwg
cmVwbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAppbmRleCA5NWNkM2UxOGQ2ZWYwZjE3NDMzODYwZWRhYzNiYmFlOWY2NTllZjVmLi4x
MzkyZjQ0MTRkOWFmZWRmNDYwMDI0Zjk3OGFiNmNkYjQxMTQwYjBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNDQxLDkg
KzQ0MSwxNyBAQCBVUkwgc3RhdGljIGlubGluZSBvcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKICAgICByZXR1cm4gdXJsOwogfQogCi12b2lkIFNXU2VydmVyOjpzdGFydFNj
cmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBib29sIHNob3Vs
ZFJlZnJlc2hDYWNoZSkKK3ZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3Ry
YXRpb24pCiB7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2ZXIgaXNzdWluZyBzdGFydFNj
cmlwdEZldGNoIGZvciBjdXJyZW50IGpvYiAlcyBpbiBjbGllbnQiLCBqb2JEYXRhLmlkZW50aWZp
ZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICAvLyBTZXQgcmVxdWVz
dCdzIGNhY2hlIG1vZGUgdG8gIm5vLWNhY2hlIiBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBhcmUg
dHJ1ZToKKyAgICAvLyAtIHJlZ2lzdHJhdGlvbidzIHVwZGF0ZSB2aWEgY2FjaGUgbW9kZSBpcyBu
b3QgImFsbCIuCisgICAgLy8gLSBqb2IncyBmb3JjZSBieXBhc3MgY2FjaGUgZmxhZyBpcyBzZXQu
CisgICAgLy8gLSBuZXdlc3RXb3JrZXIgaXMgbm90IG51bGwsIGFuZCByZWdpc3RyYXRpb24ncyBs
YXN0IHVwZGF0ZSBjaGVjayB0aW1lIGlzIG5vdCBudWxsIGFuZCB0aGUgdGltZSBkaWZmZXJlbmNl
IGluIHNlY29uZHMgY2FsY3VsYXRlZCBieSB0aGUKKyAgICAvLyAgIGN1cnJlbnQgdGltZSBtaW51
cyByZWdpc3RyYXRpb24ncyBsYXN0IHVwZGF0ZSBjaGVjayB0aW1lIGlzIGdyZWF0ZXIgdGhhbiA4
NjQwMC4KKyAgICBib29sIHNob3VsZFJlZnJlc2hDYWNoZSA9IHJlZ2lzdHJhdGlvbi51cGRhdGVW
aWFDYWNoZSgpICE9IFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6QWxsIHx8IChyZWdpc3Ry
YXRpb24uZ2V0TmV3ZXN0V29ya2VyKCkgJiYgcmVnaXN0cmF0aW9uLmlzU3RhbGUoKSk7CisKICAg
ICBhdXRvKiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoam9iRGF0YS5jb25uZWN0aW9u
SWRlbnRpZmllcigpKTsKICAgICBpZiAoY29ubmVjdGlvbikgewogICAgICAgICBjb25uZWN0aW9u
LT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQoam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRp
Zmllciwgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgc2hvdWxkUmVmcmVzaENhY2hlID8gRmV0
Y2hPcHRpb25zOjpDYWNoZTo6Tm9DYWNoZSA6IEZldGNoT3B0aW9uczo6Q2FjaGU6OkRlZmF1bHQp
OwpAQCAtNDY2LDYgKzQ3NCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIGJvb2wgc2hvdWxkCiAgICAgICAgIHJl
cXVlc3Quc2V0SFRUUFJlZmVycmVyKG9yaWdpblVSTChvcmlnaW4pLnN0cmluZygpKTsKICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KHNlcnZpY2VXb3JrZXJDbGllbnRVc2VyQWdlbnQo
Q2xpZW50T3JpZ2luIHsgam9iRGF0YS50b3BPcmlnaW4sIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
am9iRGF0YS5zY3JpcHRVUkwpLT5kYXRhKCkgfSkpOwogICAgICAgICByZXF1ZXN0LnNldFByaW9y
aXR5KFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3cpOworICAgICAgICByZXF1ZXN0LnNldElzQXBw
Qm91bmQocmVnaXN0cmF0aW9uLmlzQXBwQm91bmQoKSk7CiAKICAgICAgICAgbV9zb2Z0VXBkYXRl
Q2FsbGJhY2soU2VydmljZVdvcmtlckpvYkRhdGEgeyBqb2JEYXRhIH0sIHNob3VsZFJlZnJlc2hD
YWNoZSwgV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyldKGF1dG8mIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCAzYjZk
MWU3NjUxMDI5NzA0NmJhMDcyZThlODg5M2IyZmFkZTZkYjc5Li5iYzc1MDQ5NTNjOGJlYmRjMDY3
YjNmNjIyNTRiNjE2OGViMGJiYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVqZWN0Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgRXhjZXB0
aW9uRGF0YSYpOwogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiwgU2hv
dWxkTm90aWZ5V2hlblJlc29sdmVkKTsKICAgICB2b2lkIHJlc29sdmVVbnJlZ2lzdHJhdGlvbkpv
Yihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKLSAgICB2b2lkIHN0YXJ0U2Ny
aXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBib29sIHNob3VsZFJlZnJlc2hD
YWNoZSk7CisgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIAogICAgIHZvaWQgdXBkYXRlV29ya2VyKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9u
JiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogICAgIHZvaWQgZmlyZUluc3RhbGxF
dmVudChTV1NlcnZlcldvcmtlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggODAyYTQ4MDEx
NTFhNzI4ZmJjNWEyYTY5MTI0ZGI5NjNjNzcyY2IwYS4uN2IwZjU3Zjk3NzAxZTcxZjBlMDQ2Nzkz
OWUzZWM3YTcyYmU5NTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC0zNTIsMTMgKzM1Miw3
IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuVXBkYXRlSm9iKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiBqb2IpCiAgICAgaWYgKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBl
OjpVcGRhdGUgJiYgbmV3ZXN0V29ya2VyICYmICFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKGpvYi5zY3JpcHRVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCkpKQogICAgICAgICBy
ZXR1cm4gcmVqZWN0Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAiQ2Fubm90
IHVwZGF0ZSBhIHNlcnZpY2Ugd29ya2VyIHdpdGggYSByZXF1ZXN0ZWQgc2NyaXB0IFVSTCB3aG9z
ZSBuZXdlc3Qgd29ya2VyIGhhcyBhIGRpZmZlcmVudCBzY3JpcHQgVVJMIl9zIH0pOwogCi0gICAg
Ly8gU2V0IHJlcXVlc3QncyBjYWNoZSBtb2RlIHRvICJuby1jYWNoZSIgaWYgYW55IG9mIHRoZSBm
b2xsb3dpbmcgYXJlIHRydWU6Ci0gICAgLy8gLSByZWdpc3RyYXRpb24ncyB1cGRhdGUgdmlhIGNh
Y2hlIG1vZGUgaXMgbm90ICJhbGwiLgotICAgIC8vIC0gam9iJ3MgZm9yY2UgYnlwYXNzIGNhY2hl
IGZsYWcgaXMgc2V0LgotICAgIC8vIC0gbmV3ZXN0V29ya2VyIGlzIG5vdCBudWxsLCBhbmQgcmVn
aXN0cmF0aW9uJ3MgbGFzdCB1cGRhdGUgY2hlY2sgdGltZSBpcyBub3QgbnVsbCBhbmQgdGhlIHRp
bWUgZGlmZmVyZW5jZSBpbiBzZWNvbmRzIGNhbGN1bGF0ZWQgYnkgdGhlCi0gICAgLy8gICBjdXJy
ZW50IHRpbWUgbWludXMgcmVnaXN0cmF0aW9uJ3MgbGFzdCB1cGRhdGUgY2hlY2sgdGltZSBpcyBn
cmVhdGVyIHRoYW4gODY0MDAuCi0gICAgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUgPSByZWdpc3Ry
YXRpb24tPnVwZGF0ZVZpYUNhY2hlKCkgIT0gU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpB
bGwgfHwgKG5ld2VzdFdvcmtlciAmJiByZWdpc3RyYXRpb24tPmlzU3RhbGUoKSk7Ci0gICAgbV9z
ZXJ2ZXIuc3RhcnRTY3JpcHRGZXRjaChqb2IsIHNob3VsZFJlZnJlc2hDYWNoZSk7CisgICAgbV9z
ZXJ2ZXIuc3RhcnRTY3JpcHRGZXRjaChqb2IsICpyZWdpc3RyYXRpb24pOwogfQogCiB2b2lkIFNX
U2VydmVySm9iUXVldWU6OnJlamVjdEN1cnJlbnRKb2IoY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhj
ZXB0aW9uRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggYTU4YmIwMzM1ZDJh
N2FjM2ZkODQxN2Y1ZjEwOWMyYzhhMzRhODNmMS4uM2YyODU3YzUwNTQ4M2QyYTczMGUyYTA5NzMz
NmFiYTZlYzg1MGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTM3MCwxMyAr
MzcwLDE1IEBAIHZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNvZnRVcGRhdGUoKQogICAgIG1f
c2VydmVyLnNvZnRVcGRhdGUoKnRoaXMpOwogfQogCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9u
OjpzY2hlZHVsZVNvZnRVcGRhdGUoKQordm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1
bGVTb2Z0VXBkYXRlKElzQXBwQm91bmQgaXNBcHBCb3VuZCkKIHsKICAgICAvLyBUbyBhdm9pZCBz
Y2hlZHVsaW5nIG1hbnkgdXBkYXRlcyBkdXJpbmcgYSBzaW5nbGUgcGFnZSBsb2FkLCB3ZSBkbyBz
b2Z0IHVwZGF0ZXMgb24gYSAxIHNlY29uZCBkZWxheSBhbmQga2VlcCBkZWxheWluZwogICAgIC8v
IGFzIGxvbmcgYXMgc29mdCB1cGRhdGUgcmVxdWVzdHMga2VlcCBjb21pbmcuIFRoaXMgc2VlbXMg
dG8gbWF0Y2ggQ2hyb21lJ3MgYmVoYXZpb3IuCiAgICAgaWYgKG1fc29mdFVwZGF0ZVRpbWVyLmlz
QWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1faXNBcHBCb3VuZCA9IGlzQXBwQm91
bmQgPT0gSXNBcHBCb3VuZDo6WWVzOworCiAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwg
IlNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlSWZOZWVkZWQiKTsKICAgICBtX3NvZnRV
cGRhdGVUaW1lci5zdGFydE9uZVNob3Qoc29mdFVwZGF0ZURlbGF5KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdp
c3RyYXRpb24uaAppbmRleCA3MDVlNmE3MDZhMjNhNDIzYTdmM2ZkNzNiN2Y3YzM5Y2M2YmZjZDY2
Li5kOWY4MDE5MzM4ZGU2MTA2OGZmZjAwN2JiZTgzYjM4MTk5Njg5MTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJl
Z2lzdHJhdGlvbi5oCkBAIC00Nyw2ICs0Nyw4IEBAIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hS
ZXN1bHQ7CiAKK2VudW0gY2xhc3MgSXNBcHBCb3VuZCA6IGJvb2wgeyBObywgWWVzIH07CisKIGNs
YXNzIFNXU2VydmVyUmVnaXN0cmF0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNXU2VydmVy
UmVnaXN0cmF0aW9uPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBA
IC05OSwxMiArMTAxLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvckVhY2hDb25uZWN0aW9uKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYpPiYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRTb2Z0VXBkYXRlKGNvbnN0IEZldGNoT3B0aW9ucyYp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0VXBkYXRlKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZVNvZnRVcGRhdGUoSXNBcHBCb3VuZCk7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIHNvZnRVcGRhdGVEZWxheSB7IDFfcyB9OwogCiAg
ICAgVVJMIHNjb3BlVVJMV2l0aG91dEZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zY29wZVVS
TDsgfQogICAgIFVSTCBzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFVSTDsgfQog
CisgICAgYm9vbCBpc0FwcEJvdW5kKCkgeyByZXR1cm4gbV9pc0FwcEJvdW5kOyB9CisgICAgdm9p
ZCBzZXRJc0FwcEJvdW5kKGJvb2wgaXNBcHBCb3VuZCkgeyBtX2lzQXBwQm91bmQgPSBpc0FwcEJv
dW5kOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBhY3RpdmF0ZSgpOwogICAgIHZvaWQgaGFuZGxl
Q2xpZW50VW5sb2FkKCk7CkBAIC0xMzAsNiArMTM1LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFw
PFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVy
Pj4gbV9jbGllbnRzVXNpbmdSZWdpc3RyYXRpb247CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX3Nv
ZnRVcGRhdGVUaW1lcjsKKyAgICAKKyAgICBib29sIG1faXNBcHBCb3VuZCB7IGZhbHNlIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2Y5NWM3ZGVlMjUx
Y2IwODlmM2RkNTkwZDFhNjYxYmFkMzk3MTkxNC4uYTQ5OTA4ZjI0ODMwMzBhNDgwNWIyN2I2NGQ0
MzQ4NTNmZDZjZDhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTUxMCw2ICsxNTEwLDE3IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2sqIGZlCiB9CiAjZW5kaWYKIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmlzQXBwQm91bmQoKQoreworICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5pc0Fw
cEJvdW5kKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXREaWRTY2hlZHVs
ZVNvZnRVcGRhdGUoKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9jb25uZWN0aW9uLT5u
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCgpKSkKKyAgICAgICAgc2Vz
c2lvbi0+YXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS5zZXREaWRTY2hlZHVsZVNvZnRV
cGRhdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xP
R19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCA0NjMzYTE2MjZkZDE0MzYyOTMwYmMxMDEzN2UxNDE3
ZGRjNTlmNzYxLi5jYThmMTg1MTIxYmYxNjkyNzllNjY1NDEyYmEzNzc0YmY5NmRhMDY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKQEAgLTE0Myw2ICsxNDMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXJ2aWNlV29ya2Vy
RGlkTm90SGFuZGxlKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqKTsKICNlbmRpZgogCisgICAgYm9v
bCBpc0FwcEJvdW5kKCk7CisgICAgdm9pZCBzZXREaWRTY2hlZHVsZVNvZnRVcGRhdGUoKTsKKwog
cHJpdmF0ZToKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxheWVk
UmVwbHkmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRl
eCBhZTE5NWYwNjJkOWU5ZWY1ZTI3NzhkYzZjNzBlNzM0Y2YxOWFiZWQwLi5lZWI0M2NhNDA5ODM2
ZTE0YjYwZTQzYTZhYWFlOGExZjMyYzFhZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suY3BwCkBAIC0yNTQsOCArMjU0LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6c29mdFVwZGF0ZUlmTmVlZGVkKCkKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJzb2Z0VXBkYXRlSWZOZWVkZWQ6IChtX3Nob3VsZFNvZnRVcGRhdGU9JWQpIiwgbV9zaG91bGRT
b2Z0VXBkYXRlKTsKICAgICBpZiAoIW1fc2hvdWxkU29mdFVwZGF0ZSkKICAgICAgICAgcmV0dXJu
OwotICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCkuc3dDb25uZWN0aW9uKCkuc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9uKG1fc2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpKQotICAgICAgICByZWdpc3RyYXRpb24tPnNj
aGVkdWxlU29mdFVwZGF0ZSgpOworICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBtX2xvYWRl
ci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuc3dDb25uZWN0aW9uKCkuc2VydmVyKCkuZ2V0UmVn
aXN0cmF0aW9uKG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpKSB7CisgICAg
ICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBkYXRlKG1fbG9hZGVyLmlzQXBwQm91bmQo
KSA/IFdlYkNvcmU6OklzQXBwQm91bmQ6OlllcyA6IFdlYkNvcmU6OklzQXBwQm91bmQ6Ok5vKTsK
KyAgICAgICAgbV9sb2FkZXIuc2V0RGlkU2NoZWR1bGVTb2Z0VXBkYXRlKCk7CisgICAgfQogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAKaW5kZXggMWYwMjYwYjdlY2UwYWI2NjJmMjA3ZjQ2NDg5ZDA5NGU3NTJiOGQxZS4uM2Nk
NWVhOWMyZGJjNDE4MjM0Mjg0YTdmZmFiMmU5ZWQ2ZTYyYzViYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTE4Niw4ICsxODYsMTAgQEAgc3RkOjp1bmlxdWVf
cHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRl
RmV0Y2hUYXNrKE4KICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZXJ2ZXIoKS5nZXRSZWdpc3Ry
YXRpb24oKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKICAgICBib29sIHNo
b3VsZFNvZnRVcGRhdGUgPSByZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0
VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucyk7CiAgICAgaWYgKHdvcmtlci0+c2hv
dWxkU2tpcEZldGNoRXZlbnQoKSkgewotICAgICAgICBpZiAoc2hvdWxkU29mdFVwZGF0ZSkKLSAg
ICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBkYXRlKCk7CisgICAgICAgIGlm
IChzaG91bGRTb2Z0VXBkYXRlKSB7CisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxl
U29mdFVwZGF0ZShsb2FkZXIuaXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6SXNBcHBCb3VuZDo6WWVz
IDogV2ViQ29yZTo6SXNBcHBCb3VuZDo6Tm8pOworICAgICAgICAgICAgbG9hZGVyLnNldERpZFNj
aGVkdWxlU29mdFVwZGF0ZSgpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLmgKaW5kZXggNGVjZTVmMmFhYWVmMjY0OThlYzQ4MTIwMTcwM2RiODNhNjJlMWUyYi4u
MDkxOWVlZTYxOTE0MThiYjVkNDMwN2Q1MTNmNTMzYjdhYzE2NmI0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCkBAIC0zNywxMCAr
MzcsMTYgQEAgZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIDogYm9vbCB7IE5v
LCBZZXMgfTsKICNpZiBQTEFURk9STShDT0NPQSkKIHN0cnVjdCBBcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YSB7CiAKKyAgICB2b2lkIHNldERpZFNjaGVkdWxlU29mdFVwZGF0ZSgpCisgICAg
eworICAgICAgICBkaWRTY2hlZHVsZVNvZnRVcGRhdGUgPSB0cnVlOworICAgIH0KKyAgICAKICAg
ICB2b2lkIGNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YVRlc3RpbmcoKQogICAgIHsKICAgICAg
ICAgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyA9IGZhbHNlOwogICAgICAgICBoYXNM
b2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nID0gZmFsc2U7CisgICAgICAgIGRpZFNjaGVk
dWxlU29mdFVwZGF0ZSA9IGZhbHNlOwogICAgIH0KICAgICAKICAgICB2b2lkIHVwZGF0ZUFwcEJv
dW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKGJvb2wgcmVxdWVzdElzQXBwQm91bmQpCkBAIC01Miw2
ICs1OCw3IEBAIHN0cnVjdCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAgICAgewog
ICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CiAgICAg
ICAgIGVuY29kZXIgPDwgaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICAg
ICAgZW5jb2RlciA8PCBkaWRTY2hlZHVsZVNvZnRVcGRhdGU7CiAgICAgfQogCiAgICAgc3RhdGlj
IE9wdGlvbmFsPEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhPiBkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQpAQCAtNjYsMTEgKzczLDE3IEBAIHN0cnVjdCBBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YSB7CiAgICAgICAgIGlmICghaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0
VGVzdGluZykKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAgcmV0
dXJuIHt7ICpoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAqaGFzTG9hZGVkTm9uQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZyB9fTsKKyAgICAgICAgT3B0aW9uYWw8Ym9vbD4gZGlkU2NoZWR1
bGVTb2Z0VXBkYXRlOworICAgICAgICBkZWNvZGVyID4+IGRpZFNjaGVkdWxlU29mdFVwZGF0ZTsK
KyAgICAgICAgaWYgKCFkaWRTY2hlZHVsZVNvZnRVcGRhdGUpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eyAqaGFzTG9hZGVkQXBwQm91bmRSZXF1
ZXN0VGVzdGluZywgKmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICpkaWRTY2hl
ZHVsZVNvZnRVcGRhdGUgfX07CiAgICAgfQogCiAgICAgYm9vbCBoYXNMb2FkZWRBcHBCb3VuZFJl
cXVlc3RUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVx
dWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgZGlkU2NoZWR1bGVTb2Z0VXBkYXRlIHsg
ZmFsc2UgfTsKIH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaAppbmRleCBk
YmI4NGQ4Y2NiYjVjZjI1ZmYxZmMzZjc2OTQxNjEwODczODQ0MDkwLi45OWIyM2ExNDFhMDU5YTYz
Yzk2ZGJiZmEwNGY5NGJjYWM4N2VjNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaApA
QCAtMzUsNiArMzUsNyBAQCB0eXBlZGVmIGVudW0gewogc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0
aW9uVGVzdGluZ0RhdGEgewogICAgIEJPT0wgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZzsKICAgICBCT09MIGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CisgICAgQk9P
TCBkaWRTY2hlZHVsZVNvZnRVcGRhdGU7CiB9OwogCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tU
ZXN0aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1Rlc3RpbmcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3VGVzdGluZy5tbQppbmRleCA0ZjkyOGUyODgxNzc2N2Q3NTBlZjM1OWRhODQ2OTBiNzE3
OGUyN2ZiLi5iYzgzZDU5OTVjNWNhMDUxZjM4ZDUxYjMzMzJhYzJlMDAzM2I0MjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGlu
Zy5tbQpAQCAtMzQ5LDcgKzM0OSw3IEBACiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRh
Oih2b2lkKF4pKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpKWNv
bXBsZXRpb25IYW5kbGVyCiB7CiAgICAgX3BhZ2UtPmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8m
JiBhcHBCb3VuZERhdGEpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBhcHBCb3VuZERh
dGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgYXBwQm91bmREYXRhLmhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgYXBwQm91bmREYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIGFwcEJvdW5k
RGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBhcHBCb3VuZERhdGEuZGlk
U2NoZWR1bGVTb2Z0VXBkYXRlIH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjdjYTFiM2NhYWZkNGI5NzdjYjgxZTc4
ZmM1ZDFjYWQxZTJkNjkzNi4uOTc0YTNmOGRmNDlmMTE5NjZiZDYyOGMyMjM5MzlmYzFmYjUyMGNl
OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDIxLTA0LTA2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ugd29ya2VyIHNvZnQtdXBkYXRlIGxvYWRzIG5v
dCBiZWluZyBtYXJrZWQgYXBwLWJvdW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjMyMDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NDM4NTU1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFQSSB0
ZXN0IGNvdmVyYWdlLiBSZWZhY3RvciB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uIGluIG90aGVy
IHRlc3RzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tOgorCiAyMDIxLTA0LTA2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBFbmFibGUgQ29nJ3MgR1RLNCBiYWNr
ZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggNmY3MGFhMTg3NTVhNDdhYTM4MThkY2Zk
YTFkMTY1YzA2ZmZjNjQ3Ni4uNjk2MTIyM2JiZmMxM2JiY2FhMDFjMzMxNjJkZjViZDIwZTJkOTIw
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTQxOCw3ICsxNDE4LDcgQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25B
cHBCb3VuZCkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLSNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorI2VuZGlmIC8vIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdCkKQEAgLTE1NTgsNiArMTU1OCwyOCBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9OwogCitzdGF0aWMgY29uc3QgY2hh
ciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCis8c2NyaXB0PgordHJ5IHsKKyAgICBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcp
IHsKKyAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsKKyAgICAgICAgICAgIGFsZXJ0KCd3b3JrZXIg
YWxyZWFkeSBhY3RpdmUnKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsKKyAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVu
ZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAod29ya2VyLnN0
YXRlID09ICdhY3RpdmF0ZWQnKQorICAgICAgICAgICAgICAgIGFsZXJ0KCdzdWNjZXNzZnVsbHkg
cmVnaXN0ZXJlZCcpOworICAgICAgICB9KTsKKyAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikg
eworICAgICAgICBhbGVydCgnUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAnICsgZXJyb3IpOwor
ICAgIH0pOworfSBjYXRjaChlKSB7CisgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOworfQor
PC9zY3JpcHQ+CispU1dSRVNPVVJDRSI7CisKIGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3lu
dGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNsYXNzIElzQXBwQm91bmQgOiBib29sIHsgTm8sIFll
cyB9Owogc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0Fw
cEJvdW5kIGFwcEJvdW5kKQpAQCAtMTU2OCwyNyArMTU5MCw2IEBAIHN0YXRpYyB2b2lkIHJ1blRl
c3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3VuZCkKICAgICB9
XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBzdGF0aWMg
Y29uc3QgY2hhciogbWFpbiA9Ci0gICAgIjxzY3JpcHQ+IgotICAgICJ0cnkgeyIKLSAgICAiICAg
IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9u
KHJlZykgeyIKLSAgICAiICAgICAgICBpZiAocmVnLmFjdGl2ZSkgeyIKLSAgICAiICAgICAgICAg
ICAgYWxlcnQoJ3dvcmtlciB1bmV4cGVjdGVkbHkgYWxyZWFkeSBhY3RpdmUnKTsiCi0gICAgIiAg
ICAgICAgICAgIHJldHVybjsiCi0gICAgIiAgICAgICAgfSIKLSAgICAiICAgICAgICB3b3JrZXIg
PSByZWcuaW5zdGFsbGluZzsiCi0gICAgIiAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIo
J3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7IgotICAgICIgICAgICAgICAgICBpZiAod29ya2Vy
LnN0YXRlID09ICdhY3RpdmF0ZWQnKSIKLSAgICAiICAgICAgICAgICAgICAgIGFsZXJ0KCdzdWNj
ZXNzZnVsbHkgcmVnaXN0ZXJlZCcpOyIKLSAgICAiICAgICAgICB9KTsiCi0gICAgIiAgICB9KS5j
YXRjaChmdW5jdGlvbihlcnJvcikgeyIKLSAgICAiICAgICAgICBhbGVydCgnUmVnaXN0cmF0aW9u
IGZhaWxlZCB3aXRoOiAnICsgZXJyb3IpOyIKLSAgICAiICAgIH0pOyIKLSAgICAifSBjYXRjaChl
KSB7IgotICAgICIgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOyIKLSAgICAifSIKLSAgICAi
PC9zY3JpcHQ+IjsKLQogICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKICAgICBjb25zdCBj
aGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIApAQCAtMTYwNCw3ICsxNjA1LDcgQEAgc3Rh
dGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEJvdW5kIGFw
cEJvdW5kKQogICAgIH0KIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsK
LSAgICAgICAgeyAiLyIsIHsgbWFpbiB9IH0sCisgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVz
IH0gfSwKICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCiAgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7
ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKICAg
ICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwpAQCAtMTY3
NiwzMiArMTY3Nyw5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0
V2l0aFNlcnZpY2VXb3JrZXIpCiAgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OkZldGNoZWQsIElz
QXBwQm91bmQ6Olllcyk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIi
U1dSRVNPVVJDRSgKLTxzY3JpcHQ+Ci10cnkgewotICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewotICAgICAgICBpZiAocmVn
LmFjdGl2ZSkgewotICAgICAgICAgICAgYWxlcnQoJ3dvcmtlciBhbHJlYWR5IGFjdGl2ZScpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHdvcmtlciA9IHJlZy5pbnN0
YWxsaW5nOwotICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcp
Ci0gICAgICAgICAgICAgICAgYWxlcnQoJ3N1Y2Nlc3NmdWxseSByZWdpc3RlcmVkJyk7Ci0gICAg
ICAgIH0pOwotICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgIGFsZXJ0KCdS
ZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICcgKyBlcnJvcik7Ci0gICAgfSk7Ci19IGNhdGNoKGUp
IHsKLSAgICBhbGVydCgnRXhjZXB0aW9uOiAnICsgZSk7Ci19Ci08L3NjcmlwdD4KLSlTV1JFU09V
UkNFIjsKLQogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNo
YXJlZFNlcnZpY2VXb3JrZXIpCiB7CiAgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7Ci0g
ICAgaXNEb25lID0gZmFsc2U7CiAKICAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0
YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVE
YXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhh
bmRsZXI6XigpIHsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKQEAgLTE3NjcsNCArMTc0NSw2OSBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2Vy
dmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAg
aXNEb25lID0gZmFsc2U7CiB9CisKK3N0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91
bmQgaXNBcHBCb3VuZCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBb
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNd
OworCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0
YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmll
ZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAg
ICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworCisgICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoeworICAgICAg
ICB7ICJ0ZXh0L2h0bWwiLCBtYWluU1dCeXRlcyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiwgIiIgfSwKKyAgICAgICAgfSwgeworICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBt
YWluU1dCeXRlcyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwgIiIgfSwK
KyAgICB9KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsK
KworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7CisgICAgaWYg
KGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKKyAgICAgICAgTlNNdXRhYmxlVVJMUmVx
dWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJo
dHRwOi8vMTI3LjAuMC4xOiVkL21haW4uaHRtbCIsIHNlcnZlci5wb3J0KCldXV07CisgICAgICAg
IEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAgICByZXF1ZXN0ID0gbm9uQXBwQm91
bmRSZXF1ZXN0OworICAgIH0KKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwor
ICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vz
c2Z1bGx5IHJlZ2lzdGVyZWQiKTsKKworICAgIHdlYlZpZXcgPSBudWxscHRyOworICAgIHdlYlZp
ZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAg
ICBbd2ViVmlldyBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOl57CisgICAgICAgIGlzRG9u
ZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgIndvcmtlciBhbHJlYWR5IGFjdGl2
ZSIpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgYm9vbCBleHBlY3RpbmdBcHBCb3VuZFJl
cXVlc3RzID0gaXNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpZZXMgPyB0cnVlIDogZmFsc2U7Cisg
ICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6IF4oc3RydWN0IFdLQXBwQm91bmRO
YXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsK
KyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZywgIWV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOworICAgICAgICBFWFBFQ1RfVFJVRShkYXRh
LmRpZFNjaGVkdWxlU29mdFVwZGF0ZSk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlKQoreworICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQ6Olllcyk7Cit9CisKK1RFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlKQoreworICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQ6Ok5vKTsKK30KICNl
bmRpZgo=
</data>
<flag name="commit-queue"
          id="445224"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425310</attachid>
            <date>2021-04-06 12:33:56 -0700</date>
            <delta_ts>2021-04-13 14:47:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223200-20210406123355.patch</filename>
            <type>text/plain</type>
            <size>25342</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI5MWY0OWVjYWY3ODBi
NDgwNTI2YmY1NDlhZWNhNzg2YzE5YjdjMC4uZWE5OTBkNGRlNzkzN2NlOWIyZTgwMWY3YTc0ODdj
YWVlOTYwYjI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIxLTA0LTA2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ug
d29ya2VyIHNvZnQtdXBkYXRlIGxvYWRzIG5vdCBiZWluZyBtYXJrZWQgYXBwLWJvdW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzc1NDM4NTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIG5lZWQgdG8gbWFyayByZXF1ZXN0cyBpbml0aWF0ZWQg
Ynkgc2VydmljZSB3b3JrZXIgc29mdCB1cGRhdGVzIGFzCisgICAgICAgIGFwcC1ib3VuZCBiYXNl
ZCBvbiB0aGUgbGFzdCBuYXZpZ2F0aW9uLiBXZSBzaG91bGQgZ2V0IHRoaXMgdmFsdWUgZnJvbSB0
aGUKKyAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyIGFuZCBzdG9yZSBpdCBpbiBTV1NlcnZl
clJlZ2lzdHJhdGlvbiBzbyB3ZSBjYW4KKyAgICAgICAgdXNlIGl0IHRvIGJ1aWxkIGEgbmV3IHJl
cXVlc3QuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgIFBhc3MgdGhlIGVu
dGlyZSBTV1NlcnZlclJlZ2lzdHJhdGlvbiB0byBTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaAor
ICAgICAgICBub3cgdGhhdCB3ZSBuZWVkIG1vcmUgdGhhbiBvbmUgdmFsdWUgZnJvbSBpdC4gTW92
ZSBzaG91bGRSZWZyZXNoQ2FjaGUKKyAgICAgICAgbG9naWMgaGVyZSBpbnN0ZWFkIG9mIFNXU2Vy
dmVySm9iUXVldWU6OnJ1blVwZGF0ZUpvYi4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpv
YlF1ZXVlOjpydW5VcGRhdGVKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdp
c3RyYXRpb246OnNjaGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJSZWdpc3RyYXRpb246OmlzQXBwQm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJS
ZWdpc3RyYXRpb246OnNldElzQXBwQm91bmQpOgorCiAyMDIxLTA0LTA2ICBBZGl0eWEgS2VlcnRo
aSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtGQ1JdIFVzZSBvcGFxdWUg
c3lzdGVtIGNvbG9ycyBmb3IgY29udHJvbCBiYWNrZ3JvdW5kcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5NWE0OTVi
N2I4MDQ1MWQ4YzMwZDMwODAzZmVmY2UwMzA0ZDE2MDYyLi5kNThkZmM2M2FkMzhmYjA2MTA0MWMy
YzcxOTVkOTIzZjc2YmEzYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTA0LTA2
ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNl
cnZpY2Ugd29ya2VyIHNvZnQtdXBkYXRlIGxvYWRzIG5vdCBiZWluZyBtYXJrZWQgYXBwLWJvdW5k
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDAK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc1NDM4NTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHNob3VsZCBwYXNzIHRoZSBhcHAtYm91bmQg
cmVxdWVzdCB2YWx1ZSB3aGVuIGRvaW5nIGEgc29mdCB1cGRhdGUuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQXBwQm91bmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnNldERpZFNjaGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmg6CisgICAgICAgIE1ha2UgYSBo
ZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSByZXF1ZXN0J3MgYXBwLWJvdW5kIHZhbHVlLiBNYXJr
IGEKKyAgICAgICAgc29mdCB1cGRhdGUgbG9hZCBpbiB0aGUgc2Vzc2lvbiBmb3IgdGVzdGluZy4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNv
ZnRVcGRhdGVJZk5lZWRlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayk6CisKKyAgICAgICAgKiBTaGFyZWQvTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4uaDoKKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0
aW9uVGVzdGluZ0RhdGE6OnNldERpZFNjaGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlv
bkRhdGFUZXN0aW5nKToKKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1Rlc3RpbmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZp
Z2F0aW9uRGF0YTpdKToKKyAgICAgICAgVXBkYXRlIHRlc3Rpbmcgc3RydWN0IHRvIG1ha2Ugc3Vy
ZSBhIHNvZnQtdXBkYXRlIG9jY3VycmVkLiBUaGlzCisgICAgICAgIGVuc3VyZXMgd2UgZG9uJ3Qg
Z2V0IGEgZmFsc2UgcGFzcyBmb3IgYSBub24tc29mdCB1cGRhdGUgbG9hZC4KKwogMjAyMS0wNC0w
NiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJlbW92ZSBkZWZpbml0aW9uIHVzZWQgZm9yIHN0YWdpbmcgY2hhbmdlIHdpdGggaW50ZXJuYWwg
cmVwbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAppbmRleCA5NWNkM2UxOGQ2ZWYwZjE3NDMzODYwZWRhYzNiYmFlOWY2NTllZjVmLi4x
MzkyZjQ0MTRkOWFmZWRmNDYwMDI0Zjk3OGFiNmNkYjQxMTQwYjBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtNDQxLDkg
KzQ0MSwxNyBAQCBVUkwgc3RhdGljIGlubGluZSBvcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmln
aW4mIG9yaWdpbikKICAgICByZXR1cm4gdXJsOwogfQogCi12b2lkIFNXU2VydmVyOjpzdGFydFNj
cmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBib29sIHNob3Vs
ZFJlZnJlc2hDYWNoZSkKK3ZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3Ry
YXRpb24pCiB7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2ZXIgaXNzdWluZyBzdGFydFNj
cmlwdEZldGNoIGZvciBjdXJyZW50IGpvYiAlcyBpbiBjbGllbnQiLCBqb2JEYXRhLmlkZW50aWZp
ZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICAvLyBTZXQgcmVxdWVz
dCdzIGNhY2hlIG1vZGUgdG8gIm5vLWNhY2hlIiBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBhcmUg
dHJ1ZToKKyAgICAvLyAtIHJlZ2lzdHJhdGlvbidzIHVwZGF0ZSB2aWEgY2FjaGUgbW9kZSBpcyBu
b3QgImFsbCIuCisgICAgLy8gLSBqb2IncyBmb3JjZSBieXBhc3MgY2FjaGUgZmxhZyBpcyBzZXQu
CisgICAgLy8gLSBuZXdlc3RXb3JrZXIgaXMgbm90IG51bGwsIGFuZCByZWdpc3RyYXRpb24ncyBs
YXN0IHVwZGF0ZSBjaGVjayB0aW1lIGlzIG5vdCBudWxsIGFuZCB0aGUgdGltZSBkaWZmZXJlbmNl
IGluIHNlY29uZHMgY2FsY3VsYXRlZCBieSB0aGUKKyAgICAvLyAgIGN1cnJlbnQgdGltZSBtaW51
cyByZWdpc3RyYXRpb24ncyBsYXN0IHVwZGF0ZSBjaGVjayB0aW1lIGlzIGdyZWF0ZXIgdGhhbiA4
NjQwMC4KKyAgICBib29sIHNob3VsZFJlZnJlc2hDYWNoZSA9IHJlZ2lzdHJhdGlvbi51cGRhdGVW
aWFDYWNoZSgpICE9IFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6QWxsIHx8IChyZWdpc3Ry
YXRpb24uZ2V0TmV3ZXN0V29ya2VyKCkgJiYgcmVnaXN0cmF0aW9uLmlzU3RhbGUoKSk7CisKICAg
ICBhdXRvKiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoam9iRGF0YS5jb25uZWN0aW9u
SWRlbnRpZmllcigpKTsKICAgICBpZiAoY29ubmVjdGlvbikgewogICAgICAgICBjb25uZWN0aW9u
LT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQoam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRp
Zmllciwgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgc2hvdWxkUmVmcmVzaENhY2hlID8gRmV0
Y2hPcHRpb25zOjpDYWNoZTo6Tm9DYWNoZSA6IEZldGNoT3B0aW9uczo6Q2FjaGU6OkRlZmF1bHQp
OwpAQCAtNDY2LDYgKzQ3NCw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIGJvb2wgc2hvdWxkCiAgICAgICAgIHJl
cXVlc3Quc2V0SFRUUFJlZmVycmVyKG9yaWdpblVSTChvcmlnaW4pLnN0cmluZygpKTsKICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KHNlcnZpY2VXb3JrZXJDbGllbnRVc2VyQWdlbnQo
Q2xpZW50T3JpZ2luIHsgam9iRGF0YS50b3BPcmlnaW4sIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
am9iRGF0YS5zY3JpcHRVUkwpLT5kYXRhKCkgfSkpOwogICAgICAgICByZXF1ZXN0LnNldFByaW9y
aXR5KFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3cpOworICAgICAgICByZXF1ZXN0LnNldElzQXBw
Qm91bmQocmVnaXN0cmF0aW9uLmlzQXBwQm91bmQoKSk7CiAKICAgICAgICAgbV9zb2Z0VXBkYXRl
Q2FsbGJhY2soU2VydmljZVdvcmtlckpvYkRhdGEgeyBqb2JEYXRhIH0sIHNob3VsZFJlZnJlc2hD
YWNoZSwgV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhp
cyldKGF1dG8mIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCAzYjZk
MWU3NjUxMDI5NzA0NmJhMDcyZThlODg5M2IyZmFkZTZkYjc5Li5iYzc1MDQ5NTNjOGJlYmRjMDY3
YjNmNjIyNTRiNjE2OGViMGJiYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xNDksNyArMTQ5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVqZWN0Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgRXhjZXB0
aW9uRGF0YSYpOwogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiwgU2hv
dWxkTm90aWZ5V2hlblJlc29sdmVkKTsKICAgICB2b2lkIHJlc29sdmVVbnJlZ2lzdHJhdGlvbkpv
Yihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKLSAgICB2b2lkIHN0YXJ0U2Ny
aXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBib29sIHNob3VsZFJlZnJlc2hD
YWNoZSk7CisgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIAogICAgIHZvaWQgdXBkYXRlV29ya2VyKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9u
JiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogICAgIHZvaWQgZmlyZUluc3RhbGxF
dmVudChTV1NlcnZlcldvcmtlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggODAyYTQ4MDEx
NTFhNzI4ZmJjNWEyYTY5MTI0ZGI5NjNjNzcyY2IwYS4uN2IwZjU3Zjk3NzAxZTcxZjBlMDQ2Nzkz
OWUzZWM3YTcyYmU5NTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC0zNTIsMTMgKzM1Miw3
IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuVXBkYXRlSm9iKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiBqb2IpCiAgICAgaWYgKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBl
OjpVcGRhdGUgJiYgbmV3ZXN0V29ya2VyICYmICFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKGpvYi5zY3JpcHRVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCkpKQogICAgICAgICBy
ZXR1cm4gcmVqZWN0Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAiQ2Fubm90
IHVwZGF0ZSBhIHNlcnZpY2Ugd29ya2VyIHdpdGggYSByZXF1ZXN0ZWQgc2NyaXB0IFVSTCB3aG9z
ZSBuZXdlc3Qgd29ya2VyIGhhcyBhIGRpZmZlcmVudCBzY3JpcHQgVVJMIl9zIH0pOwogCi0gICAg
Ly8gU2V0IHJlcXVlc3QncyBjYWNoZSBtb2RlIHRvICJuby1jYWNoZSIgaWYgYW55IG9mIHRoZSBm
b2xsb3dpbmcgYXJlIHRydWU6Ci0gICAgLy8gLSByZWdpc3RyYXRpb24ncyB1cGRhdGUgdmlhIGNh
Y2hlIG1vZGUgaXMgbm90ICJhbGwiLgotICAgIC8vIC0gam9iJ3MgZm9yY2UgYnlwYXNzIGNhY2hl
IGZsYWcgaXMgc2V0LgotICAgIC8vIC0gbmV3ZXN0V29ya2VyIGlzIG5vdCBudWxsLCBhbmQgcmVn
aXN0cmF0aW9uJ3MgbGFzdCB1cGRhdGUgY2hlY2sgdGltZSBpcyBub3QgbnVsbCBhbmQgdGhlIHRp
bWUgZGlmZmVyZW5jZSBpbiBzZWNvbmRzIGNhbGN1bGF0ZWQgYnkgdGhlCi0gICAgLy8gICBjdXJy
ZW50IHRpbWUgbWludXMgcmVnaXN0cmF0aW9uJ3MgbGFzdCB1cGRhdGUgY2hlY2sgdGltZSBpcyBn
cmVhdGVyIHRoYW4gODY0MDAuCi0gICAgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUgPSByZWdpc3Ry
YXRpb24tPnVwZGF0ZVZpYUNhY2hlKCkgIT0gU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpB
bGwgfHwgKG5ld2VzdFdvcmtlciAmJiByZWdpc3RyYXRpb24tPmlzU3RhbGUoKSk7Ci0gICAgbV9z
ZXJ2ZXIuc3RhcnRTY3JpcHRGZXRjaChqb2IsIHNob3VsZFJlZnJlc2hDYWNoZSk7CisgICAgbV9z
ZXJ2ZXIuc3RhcnRTY3JpcHRGZXRjaChqb2IsICpyZWdpc3RyYXRpb24pOwogfQogCiB2b2lkIFNX
U2VydmVySm9iUXVldWU6OnJlamVjdEN1cnJlbnRKb2IoY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhj
ZXB0aW9uRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggYTU4YmIwMzM1ZDJh
N2FjM2ZkODQxN2Y1ZjEwOWMyYzhhMzRhODNmMS4uM2YyODU3YzUwNTQ4M2QyYTczMGUyYTA5NzMz
NmFiYTZlYzg1MGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTM3MCwxMyAr
MzcwLDE1IEBAIHZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNvZnRVcGRhdGUoKQogICAgIG1f
c2VydmVyLnNvZnRVcGRhdGUoKnRoaXMpOwogfQogCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9u
OjpzY2hlZHVsZVNvZnRVcGRhdGUoKQordm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1
bGVTb2Z0VXBkYXRlKElzQXBwQm91bmQgaXNBcHBCb3VuZCkKIHsKICAgICAvLyBUbyBhdm9pZCBz
Y2hlZHVsaW5nIG1hbnkgdXBkYXRlcyBkdXJpbmcgYSBzaW5nbGUgcGFnZSBsb2FkLCB3ZSBkbyBz
b2Z0IHVwZGF0ZXMgb24gYSAxIHNlY29uZCBkZWxheSBhbmQga2VlcCBkZWxheWluZwogICAgIC8v
IGFzIGxvbmcgYXMgc29mdCB1cGRhdGUgcmVxdWVzdHMga2VlcCBjb21pbmcuIFRoaXMgc2VlbXMg
dG8gbWF0Y2ggQ2hyb21lJ3MgYmVoYXZpb3IuCiAgICAgaWYgKG1fc29mdFVwZGF0ZVRpbWVyLmlz
QWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIG1faXNBcHBCb3VuZCA9IGlzQXBwQm91
bmQgPT0gSXNBcHBCb3VuZDo6WWVzOworCiAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwg
IlNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlSWZOZWVkZWQiKTsKICAgICBtX3NvZnRV
cGRhdGVUaW1lci5zdGFydE9uZVNob3Qoc29mdFVwZGF0ZURlbGF5KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdp
c3RyYXRpb24uaAppbmRleCA3MDVlNmE3MDZhMjNhNDIzYTdmM2ZkNzNiN2Y3YzM5Y2M2YmZjZDY2
Li5kOWY4MDE5MzM4ZGU2MTA2OGZmZjAwN2JiZTgzYjM4MTk5Njg5MTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJl
Z2lzdHJhdGlvbi5oCkBAIC00Nyw2ICs0Nyw4IEBAIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hS
ZXN1bHQ7CiAKK2VudW0gY2xhc3MgSXNBcHBCb3VuZCA6IGJvb2wgeyBObywgWWVzIH07CisKIGNs
YXNzIFNXU2VydmVyUmVnaXN0cmF0aW9uIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNXU2VydmVy
UmVnaXN0cmF0aW9uPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBA
IC05OSwxMiArMTAxLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvckVhY2hDb25uZWN0aW9uKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYpPiYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRTb2Z0VXBkYXRlKGNvbnN0IEZldGNoT3B0aW9ucyYp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0VXBkYXRlKCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZVNvZnRVcGRhdGUoSXNBcHBCb3VuZCk7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIHNvZnRVcGRhdGVEZWxheSB7IDFfcyB9OwogCiAg
ICAgVVJMIHNjb3BlVVJMV2l0aG91dEZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9zY29wZVVS
TDsgfQogICAgIFVSTCBzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFVSTDsgfQog
CisgICAgYm9vbCBpc0FwcEJvdW5kKCkgeyByZXR1cm4gbV9pc0FwcEJvdW5kOyB9CisgICAgdm9p
ZCBzZXRJc0FwcEJvdW5kKGJvb2wgaXNBcHBCb3VuZCkgeyBtX2lzQXBwQm91bmQgPSBpc0FwcEJv
dW5kOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBhY3RpdmF0ZSgpOwogICAgIHZvaWQgaGFuZGxl
Q2xpZW50VW5sb2FkKCk7CkBAIC0xMzAsNiArMTM1LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFw
PFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVy
Pj4gbV9jbGllbnRzVXNpbmdSZWdpc3RyYXRpb247CiAKICAgICBXZWJDb3JlOjpUaW1lciBtX3Nv
ZnRVcGRhdGVUaW1lcjsKKyAgICAKKyAgICBib29sIG1faXNBcHBCb3VuZCB7IGZhbHNlIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggY2Y5NWM3ZGVlMjUx
Y2IwODlmM2RkNTkwZDFhNjYxYmFkMzk3MTkxNC4uMjExODkzYjEwZWVjMWIwNDVkMmM4ZmY5YWE0
YTQ1MWIwZjA0OWNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTUxMCw2ICsxNTEwLDE5IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2sqIGZlCiB9CiAjZW5kaWYKIAorYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmlzQXBwQm91bmQoKQoreworICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5pc0Fw
cEJvdW5kKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXREaWRTY2hlZHVs
ZVNvZnRVcGRhdGUoKQoreworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCgpKSkKKyAgICAgICAgc2Vzc2lvbi0+YXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEo
KS5zZXREaWRTY2hlZHVsZVNvZnRVcGRhdGUoKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IDQ2
MzNhMTYyNmRkMTQzNjI5MzBiYzEwMTM3ZTE0MTdkZGM1OWY3NjEuLmNhOGYxODUxMjFiZjE2OTI3
OWU2NjU0MTJiYTM3NzRiZjk2ZGEwNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTQzLDYgKzE0Myw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoU2VydmljZVdvcmtlckZl
dGNoVGFzayopOwogI2VuZGlmCiAKKyAgICBib29sIGlzQXBwQm91bmQoKTsKKyAgICB2b2lkIHNl
dERpZFNjaGVkdWxlU29mdFVwZGF0ZSgpOworCiBwcml2YXRlOgogICAgIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UGVyZm9ybVN5bmNocm9ub3VzTG9hZERlbGF5ZWRSZXBseSYmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IGFlMTk1ZjA2MmQ5ZTllZjVlMjc3OGRjNmM3
MGU3MzRjZjE5YWJlZDAuLmVlYjQzY2E0MDk4MzZlMTRiNjBlNDNhNmFhYWU4YTFmMzJjMWFlOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTI1NCw4ICsy
NTQsMTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzb2Z0VXBkYXRlSWZOZWVkZWQo
KQogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInNvZnRVcGRhdGVJZk5lZWRlZDogKG1fc2hv
dWxkU29mdFVwZGF0ZT0lZCkiLCBtX3Nob3VsZFNvZnRVcGRhdGUpOwogICAgIGlmICghbV9zaG91
bGRTb2Z0VXBkYXRlKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlv
biA9IG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5zd0Nvbm5lY3Rpb24oKS5zZXJ2
ZXIoKS5nZXRSZWdpc3RyYXRpb24obV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cikpCi0gICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBkYXRlKCk7CisgICAgaWYg
KGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5z
d0Nvbm5lY3Rpb24oKS5zZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24obV9zZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllcikpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLT5zY2hlZHVsZVNv
ZnRVcGRhdGUobV9sb2FkZXIuaXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6SXNBcHBCb3VuZDo6WWVz
IDogV2ViQ29yZTo6SXNBcHBCb3VuZDo6Tm8pOworICAgICAgICBtX2xvYWRlci5zZXREaWRTY2hl
ZHVsZVNvZnRVcGRhdGUoKTsKKyAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCAxZjAyNjBiN2VjZTBhYjY2
MmYyMDdmNDY0ODlkMDk0ZTc1MmI4ZDFlLi4zY2Q1ZWE5YzJkYmM0MTgyMzQyODRhN2ZmYWIyZTll
ZDZlNjJjNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAt
MTg2LDggKzE4NiwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4g
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTgogICAgIGF1dG8qIHJlZ2lz
dHJhdGlvbiA9IHNlcnZlcigpLmdldFJlZ2lzdHJhdGlvbigqc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIpOwogICAgIGJvb2wgc2hvdWxkU29mdFVwZGF0ZSA9IHJlZ2lzdHJhdGlv
biAmJiByZWdpc3RyYXRpb24tPnNob3VsZFNvZnRVcGRhdGUobG9hZGVyLnBhcmFtZXRlcnMoKS5v
cHRpb25zKTsKICAgICBpZiAod29ya2VyLT5zaG91bGRTa2lwRmV0Y2hFdmVudCgpKSB7Ci0gICAg
ICAgIGlmIChzaG91bGRTb2Z0VXBkYXRlKQotICAgICAgICAgICAgcmVnaXN0cmF0aW9uLT5zY2hl
ZHVsZVNvZnRVcGRhdGUoKTsKKyAgICAgICAgaWYgKHNob3VsZFNvZnRVcGRhdGUpIHsKKyAgICAg
ICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBkYXRlKGxvYWRlci5pc0FwcEJvdW5k
KCkgPyBXZWJDb3JlOjpJc0FwcEJvdW5kOjpZZXMgOiBXZWJDb3JlOjpJc0FwcEJvdW5kOjpObyk7
CisgICAgICAgICAgICBsb2FkZXIuc2V0RGlkU2NoZWR1bGVTb2Z0VXBkYXRlKCk7CisgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAppbmRleCA0ZWNlNWYyYWFhZWYy
NjQ5OGVjNDgxMjAxNzAzZGI4M2E2MmUxZTJiLi4wOTE5ZWVlNjE5MTQxOGJiNWQ0MzA3ZDUxM2Y1
MzNiN2FjMTY2YjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLmgKQEAgLTM3LDEwICszNywxNiBAQCBlbnVtIGNsYXNzIExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQgOiBib29sIHsgTm8sIFllcyB9OwogI2lmIFBMQVRGT1JNKENPQ09B
KQogc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIHsKIAorICAgIHZvaWQgc2V0
RGlkU2NoZWR1bGVTb2Z0VXBkYXRlKCkKKyAgICB7CisgICAgICAgIGRpZFNjaGVkdWxlU29mdFVw
ZGF0ZSA9IHRydWU7CisgICAgfQorICAgIAogICAgIHZvaWQgY2xlYXJBcHBCb3VuZE5hdmlnYXRp
b25EYXRhVGVzdGluZygpCiAgICAgewogICAgICAgICBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RU
ZXN0aW5nID0gZmFsc2U7CiAgICAgICAgIGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rp
bmcgPSBmYWxzZTsKKyAgICAgICAgZGlkU2NoZWR1bGVTb2Z0VXBkYXRlID0gZmFsc2U7CiAgICAg
fQogICAgIAogICAgIHZvaWQgdXBkYXRlQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoYm9v
bCByZXF1ZXN0SXNBcHBCb3VuZCkKQEAgLTUyLDYgKzU4LDcgQEAgc3RydWN0IEFwcEJvdW5kTmF2
aWdhdGlvblRlc3RpbmdEYXRhIHsKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgaGFzTG9hZGVk
QXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKICAgICAgICAgZW5jb2RlciA8PCBoYXNMb2FkZWROb25B
cHBCb3VuZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGRpZFNjaGVkdWxlU29m
dFVwZGF0ZTsKICAgICB9CiAKICAgICBzdGF0aWMgT3B0aW9uYWw8QXBwQm91bmROYXZpZ2F0aW9u
VGVzdGluZ0RhdGE+IGRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC02NiwxMSArNzMs
MTcgQEAgc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIHsKICAgICAgICAgaWYg
KCFoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKQogICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAotICAgICAgICByZXR1cm4ge3sgKmhhc0xvYWRlZEFwcEJvdW5kUmVx
dWVzdFRlc3RpbmcsICpoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nIH19OworICAg
ICAgICBPcHRpb25hbDxib29sPiBkaWRTY2hlZHVsZVNvZnRVcGRhdGU7CisgICAgICAgIGRlY29k
ZXIgPj4gZGlkU2NoZWR1bGVTb2Z0VXBkYXRlOworICAgICAgICBpZiAoIWRpZFNjaGVkdWxlU29m
dFVwZGF0ZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0
dXJuIHt7ICpoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAqaGFzTG9hZGVkTm9uQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZywgKmRpZFNjaGVkdWxlU29mdFVwZGF0ZSB9fTsKICAgICB9CiAK
ICAgICBib29sIGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OwogICAg
IGJvb2wgaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07CisgICAg
Ym9vbCBkaWRTY2hlZHVsZVNvZnRVcGRhdGUgeyBmYWxzZSB9OwogfTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4IGRiYjg0ZDhjY2JiNWNmMjVmZjFmYzNmNzY5NDE2
MTA4NzM4NDQwOTAuLjk5YjIzYTE0MWEwNTlhNjNjOTZkYmJmYTA0Zjk0YmNhYzg3ZWM0ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgZW51
bSB7CiBzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAgICAgQk9PTCBo
YXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogICAgIEJPT0wgaGFzTG9hZGVkTm9uQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICBCT09MIGRpZFNjaGVkdWxlU29mdFVwZGF0ZTsKIH07
CiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS1Rlc3RpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCmluZGV4IDRmOTI4
ZTI4ODE3NzY3ZDc1MGVmMzU5ZGE4NDY5MGI3MTc4ZTI3ZmIuLmJjODNkNTk5NWM1Y2EwNTFmMzhk
NTFiMzMzMmFjMmUwMDMzYjQyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tCkBAIC0zNDksNyArMzQ5LDcgQEAKIC0g
KHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZvaWQoXikoc3RydWN0IFdLQXBwQm91bmRO
YXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBfcGFn
ZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJvdW5kRGF0YSkgewotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IGFwcEJvdW5kRGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RU
ZXN0aW5nLCBhcHBCb3VuZERhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyB9
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBhcHBCb3VuZERhdGEuaGFzTG9hZGVkQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZywgYXBwQm91bmREYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVx
dWVzdFRlc3RpbmcsIGFwcEJvdW5kRGF0YS5kaWRTY2hlZHVsZVNvZnRVcGRhdGUgfSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAyN2NhMWIzY2FhZmQ0Yjk3N2NiODFlNzhmYzVkMWNhZDFlMmQ2OTM2Li45NzRhM2Y4ZGY0
OWYxMTk2NmJkNjI4YzIyMzkzOWZjMWZiNTIwY2U4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDQtMDYgIEth
dGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgU2Vydmlj
ZSB3b3JrZXIgc29mdC11cGRhdGUgbG9hZHMgbm90IGJlaW5nIG1hcmtlZCBhcHAtYm91bmQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzIwMAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzU0Mzg1NTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQVBJIHRlc3QgY292ZXJhZ2UuIFJlZmFjdG9yIHRvIGF2
b2lkIGNvZGUgZHVwbGljYXRpb24gaW4gb3RoZXIgdGVzdHMuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisKIDIwMjEt
MDQtMDYgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtXUEVdIEVuYWJsZSBDb2cncyBHVEs0IGJhY2tlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpp
bmRleCA2ZjcwYWExODc1NWE0N2FhMzgxOGRjZmRhMWQxNjVjMDZmZmM2NDc2Li42OTYxMjIzYmJm
YzEzYmJjYWEwMWMzMzE2MmRmNWJkMjBlMmQ5MjA2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
CkBAIC0xNDE4LDcgKzE0MTgsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFib3V0Qmxh
bmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZU5vbkFwcEJvdW5kKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CisjZW5kaWYgLy8gRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogCiAjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0KQpA
QCAtMTU1OCw2ICsxNTU4LDI4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91
bmRSZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKIH07CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKKzxzY3JpcHQ+Cit0cnkgeworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVy
KCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgeworICAgICAgICBpZiAocmVnLmFjdGl2ZSkg
eworICAgICAgICAgICAgYWxlcnQoJ3dvcmtlciBhbHJlYWR5IGFjdGl2ZScpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHdvcmtlciA9IHJlZy5pbnN0YWxsaW5nOwor
ICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpCisgICAgICAg
ICAgICAgICAgYWxlcnQoJ3N1Y2Nlc3NmdWxseSByZWdpc3RlcmVkJyk7CisgICAgICAgIH0pOwor
ICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIGFsZXJ0KCdSZWdpc3RyYXRp
b24gZmFpbGVkIHdpdGg6ICcgKyBlcnJvcik7CisgICAgfSk7Cit9IGNhdGNoKGUpIHsKKyAgICBh
bGVydCgnRXhjZXB0aW9uOiAnICsgZSk7Cit9Cis8L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKwog
ZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xh
c3MgSXNBcHBCb3VuZCA6IGJvb2wgeyBObywgWWVzIH07CiBzdGF0aWMgdm9pZCBydW5UZXN0KFJl
c3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElzQXBwQm91bmQgYXBwQm91bmQpCkBAIC0xNTY4LDI3
ICsxNTkwLDYgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBl
LCBJc0FwcEJvdW5kIGFwcEJvdW5kKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtYWluID0KLSAgICAiPHNj
cmlwdD4iCi0gICAgInRyeSB7IgotICAgICIgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7IgotICAgICIgICAgICAgIGlmIChy
ZWcuYWN0aXZlKSB7IgotICAgICIgICAgICAgICAgICBhbGVydCgnd29ya2VyIHVuZXhwZWN0ZWRs
eSBhbHJlYWR5IGFjdGl2ZScpOyIKLSAgICAiICAgICAgICAgICAgcmV0dXJuOyIKLSAgICAiICAg
ICAgICB9IgotICAgICIgICAgICAgIHdvcmtlciA9IHJlZy5pbnN0YWxsaW5nOyIKLSAgICAiICAg
ICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsi
Ci0gICAgIiAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpIgotICAg
ICIgICAgICAgICAgICAgICAgYWxlcnQoJ3N1Y2Nlc3NmdWxseSByZWdpc3RlcmVkJyk7IgotICAg
ICIgICAgICAgIH0pOyIKLSAgICAiICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7IgotICAg
ICIgICAgICAgIGFsZXJ0KCdSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICcgKyBlcnJvcik7Igot
ICAgICIgICAgfSk7IgotICAgICJ9IGNhdGNoKGUpIHsiCi0gICAgIiAgICBhbGVydCgnRXhjZXB0
aW9uOiAnICsgZSk7IgotICAgICJ9IgotICAgICI8L3NjcmlwdD4iOwotCiAgICAgY29uc3QgY2hh
cioganMgPSBudWxscHRyOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSBudWxscHRy
OwogCkBAIC0xNjA0LDcgKzE2MDUsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlw
ZSByZXNwb25zZVR5cGUsIElzQXBwQm91bmQgYXBwQm91bmQpCiAgICAgfQogCiAgICAgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluIH0gfSwK
KyAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAogICAgICAgICB7ICIvc3cuanMiLCB7
IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwK
ICAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJv
bSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXI6OlByb3RvY29sOjpIdHRwcyk7CkBAIC0xNjc2LDMyICsxNjc3LDkgQEAgVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3RXaXRoU2VydmljZVdvcmtlcikKICAgICBydW5U
ZXN0KFJlc3BvbnNlVHlwZTo6RmV0Y2hlZCwgSXNBcHBCb3VuZDo6WWVzKTsKIH0KIAotc3RhdGlj
IGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAotPHNjcmlwdD4KLXRyeSB7
Ci0gICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVu
Y3Rpb24ocmVnKSB7Ci0gICAgICAgIGlmIChyZWcuYWN0aXZlKSB7Ci0gICAgICAgICAgICBhbGVy
dCgnd29ya2VyIGFscmVhZHkgYWN0aXZlJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7Ci0gICAgICAgIHdvcmtlci5hZGRF
dmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYg
KHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykKLSAgICAgICAgICAgICAgICBhbGVydCgnc3Vj
Y2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsKLSAgICAgICAgfSk7Ci0gICAgfSkuY2F0Y2goZnVuY3Rp
b24oZXJyb3IpIHsKLSAgICAgICAgYWxlcnQoJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyAr
IGVycm9yKTsKLSAgICB9KTsKLX0gY2F0Y2goZSkgewotICAgIGFsZXJ0KCdFeGNlcHRpb246ICcg
KyBlKTsKLX0KLTwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOwotCiBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKIHsKICAgICBz
dGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKLSAgICBpc0RvbmUgPSBmYWxzZTsKIAogICAgIFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNE
YXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBpc0RvbmUg
PSB0cnVlOwpAQCAtMTc2Nyw0ICsxNzQ1LDY5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
TXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIH0KKworc3RhdGlj
IHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBCb3VuZCBpc0FwcEJvdW5kKQoreworICAgIHN0YXRp
YyBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vi
c2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9y
ZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0g
Y29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBTZXJ2aWNlV29y
a2VyVENQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5TV0J5dGVz
IH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCAiIiB9LAorICAgICAgICB9
LCB7CisgICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5TV0J5dGVzIH0sCisgICAgICAgIHsgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiLCAiIiB9LAorICAgIH0pOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBpZiAoaXNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpO
bykgeworICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBb
TlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvbWFpbi5odG1s
Iiwgc2VydmVyLnBvcnQoKV1dXTsKKyAgICAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05T
CisgICAgICAgIHJlcXVlc3QgPSBub25BcHBCb3VuZFJlcXVlc3Q7CisgICAgfQorCisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3
IF90ZXN0X3dhaXRGb3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOworCisgICAg
d2ViVmlldyA9IG51bGxwdHI7CisgICAgd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXdd
KTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9jbGVhckFwcEJvdW5kTmF2
aWdhdGlvbkRhdGE6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnJlcXVlc3RdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9y
QWxlcnRdLCAid29ya2VyIGFscmVhZHkgYWN0aXZlIik7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsK
KyAgICBib29sIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMgPSBpc0FwcEJvdW5kID09IElzQXBw
Qm91bmQ6OlllcyA/IHRydWUgOiBmYWxzZTsKKyAgICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0
aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7
CisgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmcs
IGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOworICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNM
b2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0
cyk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuZGlkU2NoZWR1bGVTb2Z0VXBkYXRlKTsKKyAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJl
cXVlc3RXaXRoU2VydmljZVdvcmtlclNvZnRVcGRhdGUpCit7CisgICAgc29mdFVwZGF0ZVRlc3Qo
SXNBcHBCb3VuZDo6WWVzKTsKK30KKworVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBC
b3VuZFJlcXVlc3RXaXRoU2VydmljZVdvcmtlclNvZnRVcGRhdGUpCit7CisgICAgc29mdFVwZGF0
ZVRlc3QoSXNBcHBCb3VuZDo6Tm8pOworfQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425917</attachid>
            <date>2021-04-13 14:47:08 -0700</date>
            <delta_ts>2021-04-13 16:13:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223200-20210413144707.patch</filename>
            <type>text/plain</type>
            <size>27707</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg4MjQ2NjUyOTQwNzNl
MDAzZDY2ZjYxZThmMDhjMmMwYWQ4Mjc0Yi4uNTFhNTgyZjE3MWI5ZjhhN2M3NTkyZjE4ZGZhNmZl
NWMwZjAwMjljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA0LTEzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ug
d29ya2VyIHNvZnQtdXBkYXRlIGxvYWRzIG5vdCBiZWluZyBtYXJrZWQgYXBwLWJvdW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzc1NDM4NTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgV2UgbmVlZCB0byBtYXJrIHJlcXVlc3RzIGluaXRpYXRlZCBi
eSBzZXJ2aWNlIHdvcmtlciBzb2Z0IHVwZGF0ZXMgYXMKKyAgICAgICAgYXBwLWJvdW5kIGJhc2Vk
IG9uIHRoZSBsYXN0IG5hdmlnYXRpb24uIFdlIHNob3VsZCBnZXQgdGhpcyB2YWx1ZSBmcm9tIHRo
ZQorICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgYW5kIHN0b3JlIGl0IGluIFNXU2VydmVy
UmVnaXN0cmF0aW9uIHNvIHdlIGNhbgorICAgICAgICB1c2UgaXQgdG8gYnVpbGQgYSBuZXcgcmVx
dWVzdC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2gpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgUGFzcyB0aGUgZW50
aXJlIFNXU2VydmVyUmVnaXN0cmF0aW9uIHRvIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoCisg
ICAgICAgIG5vdyB0aGF0IHdlIG5lZWQgbW9yZSB0aGFuIG9uZSB2YWx1ZSBmcm9tIGl0LiBNb3Zl
IHNob3VsZFJlZnJlc2hDYWNoZQorICAgICAgICBsb2dpYyBoZXJlIGluc3RlYWQgb2YgU1dTZXJ2
ZXJKb2JRdWV1ZTo6cnVuVXBkYXRlSm9iLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9i
UXVldWU6OnJ1blVwZGF0ZUpvYik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lz
dHJhdGlvbjo6c2NoZWR1bGVTb2Z0VXBkYXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
clJlZ2lzdHJhdGlvbjo6aXNBcHBCb3VuZCk6CisKIDIwMjEtMDQtMTIgIFJvYiBCdWlzICA8cmJ1
aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBDbGFtcCBvdmVycmlkaW5nQ29udGVudExvZ2ljYWxX
aWR0aC9IZWlnaHQgdG8gemVybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5NjgyODQwY2Y5MGExNWYyNTVlN2YwNjdl
ZmIyNWJjZDgyYWM1YWRlLi5mOGY0NmI2MGE3YzQ3YTQzYThhODdmYjdjZTc1NzU1ZjcwNTI1YTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTA0LTEzICBLYXRlIENoZW5leSAgPGth
dGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ugd29ya2VyIHNvZnQt
dXBkYXRlIGxvYWRzIG5vdCBiZWluZyBtYXJrZWQgYXBwLWJvdW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc1NDM4NTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisK
KyAgICAgICAgV2Ugc2hvdWxkIHBhc3MgdGhlIGFwcC1ib3VuZCByZXF1ZXN0IHZhbHVlIHdoZW4g
ZG9pbmcgYSBzb2Z0IHVwZGF0ZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6aXNBcHBCb3VuZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmg6CisgICAgICAgIE1ha2UgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSByZXF1
ZXN0J3MgYXBwLWJvdW5kIHZhbHVlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6c29mdFVwZGF0ZUlmTmVlZGVkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWRG
cm9tTmV0d29yayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OmNyZWF0ZUZldGNoVGFzayk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLmg6CisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3Rp
bmdEYXRhOjpzZXREaWRQZXJmb3JtU29mdFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFwcEJv
dW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFUZXN0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZUZvclRlc3RpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1Rlc3RpbmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0
YTpdKToKKyAgICAgICAgVXBkYXRlIHRlc3Rpbmcgc3RydWN0IHRvIG1ha2Ugc3VyZSBhIHNvZnQt
dXBkYXRlIG9jY3VycmVkIGJlZm9yZQorICAgICAgICBjaGVja2luZyBhcHAtYm91bmQgZGF0YS4g
VGhpcyBhY2NvdW50cyBmb3IgdGhlIGRlbGF5IGJldHdlZW4gdGhlCisgICAgICAgIHBhZ2UgbG9h
ZCBhbmQgdGhlIHNvZnQgdXBkYXRlLgorCiAyMDIxLTA0LTEyICBBZHJpYW4gUGVyZXogZGUgQ2Fz
dHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBVc2UgZ19vYmpl
Y3Rfbm90aWZ5X2J5X3BzcGVjKCkgd2hlbmV2ZXIgcG9zc2libGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggOTVjZDNlMThk
NmVmMGYxNzQzMzg2MGVkYWMzYmJhZTlmNjU5ZWY1Zi4uMTM5MmY0NDE0ZDlhZmVkZjQ2MDAyNGY5
NzhhYjZjZGI0MTE0MGIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTQ0MSw5ICs0NDEsMTcgQEAgVVJMIHN0YXRpYyBp
bmxpbmUgb3JpZ2luVVJMKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiAgICAgcmV0dXJu
IHVybDsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUpCit2b2lkIFNX
U2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JE
YXRhLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogewogICAgIExPRyhTZXJ2
aWNlV29ya2VyLCAiU2VydmVyIGlzc3Vpbmcgc3RhcnRTY3JpcHRGZXRjaCBmb3IgY3VycmVudCBq
b2IgJXMgaW4gY2xpZW50Iiwgam9iRGF0YS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworCisgICAgLy8gU2V0IHJlcXVlc3QncyBjYWNoZSBtb2RlIHRvICJuby1j
YWNoZSIgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6CisgICAgLy8gLSByZWdpc3Ry
YXRpb24ncyB1cGRhdGUgdmlhIGNhY2hlIG1vZGUgaXMgbm90ICJhbGwiLgorICAgIC8vIC0gam9i
J3MgZm9yY2UgYnlwYXNzIGNhY2hlIGZsYWcgaXMgc2V0LgorICAgIC8vIC0gbmV3ZXN0V29ya2Vy
IGlzIG5vdCBudWxsLCBhbmQgcmVnaXN0cmF0aW9uJ3MgbGFzdCB1cGRhdGUgY2hlY2sgdGltZSBp
cyBub3QgbnVsbCBhbmQgdGhlIHRpbWUgZGlmZmVyZW5jZSBpbiBzZWNvbmRzIGNhbGN1bGF0ZWQg
YnkgdGhlCisgICAgLy8gICBjdXJyZW50IHRpbWUgbWludXMgcmVnaXN0cmF0aW9uJ3MgbGFzdCB1
cGRhdGUgY2hlY2sgdGltZSBpcyBncmVhdGVyIHRoYW4gODY0MDAuCisgICAgYm9vbCBzaG91bGRS
ZWZyZXNoQ2FjaGUgPSByZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUoKSAhPSBTZXJ2aWNlV29y
a2VyVXBkYXRlVmlhQ2FjaGU6OkFsbCB8fCAocmVnaXN0cmF0aW9uLmdldE5ld2VzdFdvcmtlcigp
ICYmIHJlZ2lzdHJhdGlvbi5pc1N0YWxlKCkpOworCiAgICAgYXV0byogY29ubmVjdGlvbiA9IG1f
Y29ubmVjdGlvbnMuZ2V0KGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAgICAgaWYg
KGNvbm5lY3Rpb24pIHsKICAgICAgICAgY29ubmVjdGlvbi0+c3RhcnRTY3JpcHRGZXRjaEluQ2xp
ZW50KGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIsIGpvYkRhdGEucmVnaXN0cmF0
aW9uS2V5KCksIHNob3VsZFJlZnJlc2hDYWNoZSA/IEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vQ2Fj
aGUgOiBGZXRjaE9wdGlvbnM6OkNhY2hlOjpEZWZhdWx0KTsKQEAgLTQ2Niw2ICs0NzQsNyBAQCB2
b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
JiBqb2JEYXRhLCBib29sIHNob3VsZAogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihv
cmlnaW5VUkwob3JpZ2luKS5zdHJpbmcoKSk7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJB
Z2VudChzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KENsaWVudE9yaWdpbiB7IGpvYkRhdGEu
dG9wT3JpZ2luLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0VVJMKS0+ZGF0
YSgpIH0pKTsKICAgICAgICAgcmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0
eTo6TG93KTsKKyAgICAgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKHJlZ2lzdHJhdGlvbi5pc0Fw
cEJvdW5kKCkpOwogCiAgICAgICAgIG1fc29mdFVwZGF0ZUNhbGxiYWNrKFNlcnZpY2VXb3JrZXJK
b2JEYXRhIHsgam9iRGF0YSB9LCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCks
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiByZXN1bHQpIHsKICAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggOTJhYWI4NmMzMTljNGNmNjFkZjM5MTU0Y2Yw
ZGZmMmUyODY1ODZhZS4uZDBlZDdjOTIzNjdlMTdiYzkzODJjZjgwY2Q1ZThjNjgzN2I3M2NlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aApAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlamVjdEpvYihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsKICAgICB2b2lkIHJl
c29sdmVSZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7
CiAgICAgdm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGEmLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCB1bnJlZ2lz
dHJhdGlvblJlc3VsdCk7Ci0gICAgdm9pZCBzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUpOworICAgIHZvaWQgc3RhcnRT
Y3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJik7CiAKICAgICB2b2lkIHVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdv
cmtlclR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0PiYmKTsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCmluZGV4IDgwMmE0ODAxMTUxYTcyOGZiYzVhMmE2OTEyNGRiOTYz
Yzc3MmNiMGEuLjdiMGY1N2Y5NzcwMWU3MWYwZTA0Njc5MzllM2VjN2E3MmJlOTU3ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcApAQCAtMzUyLDEzICszNTIsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVl
dWU6OnJ1blVwZGF0ZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogICAgIGlm
IChqb2IudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlICYmIG5ld2VzdFdvcmtl
ciAmJiAhZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdl
c3RXb3JrZXItPnNjcmlwdFVSTCgpKSkKICAgICAgICAgcmV0dXJuIHJlamVjdEN1cnJlbnRKb2Io
RXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIkNhbm5vdCB1cGRhdGUgYSBzZXJ2aWNlIHdvcmtl
ciB3aXRoIGEgcmVxdWVzdGVkIHNjcmlwdCBVUkwgd2hvc2UgbmV3ZXN0IHdvcmtlciBoYXMgYSBk
aWZmZXJlbnQgc2NyaXB0IFVSTCJfcyB9KTsKIAotICAgIC8vIFNldCByZXF1ZXN0J3MgY2FjaGUg
bW9kZSB0byAibm8tY2FjaGUiIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIGFyZSB0cnVlOgotICAg
IC8vIC0gcmVnaXN0cmF0aW9uJ3MgdXBkYXRlIHZpYSBjYWNoZSBtb2RlIGlzIG5vdCAiYWxsIi4K
LSAgICAvLyAtIGpvYidzIGZvcmNlIGJ5cGFzcyBjYWNoZSBmbGFnIGlzIHNldC4KLSAgICAvLyAt
IG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgYW5kIHJlZ2lzdHJhdGlvbidzIGxhc3QgdXBkYXRl
IGNoZWNrIHRpbWUgaXMgbm90IG51bGwgYW5kIHRoZSB0aW1lIGRpZmZlcmVuY2UgaW4gc2Vjb25k
cyBjYWxjdWxhdGVkIGJ5IHRoZQotICAgIC8vICAgY3VycmVudCB0aW1lIG1pbnVzIHJlZ2lzdHJh
dGlvbidzIGxhc3QgdXBkYXRlIGNoZWNrIHRpbWUgaXMgZ3JlYXRlciB0aGFuIDg2NDAwLgotICAg
IGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlID0gcmVnaXN0cmF0aW9uLT51cGRhdGVWaWFDYWNoZSgp
ICE9IFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6QWxsIHx8IChuZXdlc3RXb3JrZXIgJiYg
cmVnaXN0cmF0aW9uLT5pc1N0YWxlKCkpOwotICAgIG1fc2VydmVyLnN0YXJ0U2NyaXB0RmV0Y2go
am9iLCBzaG91bGRSZWZyZXNoQ2FjaGUpOworICAgIG1fc2VydmVyLnN0YXJ0U2NyaXB0RmV0Y2go
am9iLCAqcmVnaXN0cmF0aW9uKTsKIH0KIAogdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpyZWplY3RD
dXJyZW50Sm9iKGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbkRhdGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24uY3BwCmluZGV4IGE1OGJiMDMzNWQyYTdhYzNmZDg0MTdmNWYxMDljMmM4YTM0
YTgzZjEuLjNmMjg1N2M1MDU0ODNkMmE3MzBlMmEwOTczMzZhYmE2ZWM4NTBkYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zNzAsMTMgKzM3MCwxNSBAQCB2b2lkIFNXU2VydmVy
UmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlKCkKICAgICBtX3NlcnZlci5zb2Z0VXBkYXRlKCp0aGlz
KTsKIH0KIAotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0VXBkYXRlKCkK
K3ZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNjaGVkdWxlU29mdFVwZGF0ZShJc0FwcEJvdW5k
IGlzQXBwQm91bmQpCiB7CiAgICAgLy8gVG8gYXZvaWQgc2NoZWR1bGluZyBtYW55IHVwZGF0ZXMg
ZHVyaW5nIGEgc2luZ2xlIHBhZ2UgbG9hZCwgd2UgZG8gc29mdCB1cGRhdGVzIG9uIGEgMSBzZWNv
bmQgZGVsYXkgYW5kIGtlZXAgZGVsYXlpbmcKICAgICAvLyBhcyBsb25nIGFzIHNvZnQgdXBkYXRl
IHJlcXVlc3RzIGtlZXAgY29taW5nLiBUaGlzIHNlZW1zIHRvIG1hdGNoIENocm9tZSdzIGJlaGF2
aW9yLgogICAgIGlmIChtX3NvZnRVcGRhdGVUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1
cm47CiAKKyAgICBtX2lzQXBwQm91bmQgPSBpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6OlllczsK
KwogICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTV1NlcnZlclJlZ2lzdHJhdGlvbjo6
c29mdFVwZGF0ZUlmTmVlZGVkIik7CiAgICAgbV9zb2Z0VXBkYXRlVGltZXIuc3RhcnRPbmVTaG90
KHNvZnRVcGRhdGVEZWxheSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKaW5kZXggNzA1ZTZh
NzA2YTIzYTQyM2E3ZjNmZDczYjdmN2MzOWNjNmJmY2Q2Ni4uOWY3ZjA2MGY3Y2MwNGEyYzg3NWJi
MDQ2YzdiODE1ODhiMTIyOGI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtNDcsNiAr
NDcsOCBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0OwogCitlbnVtIGNsYXNzIElz
QXBwQm91bmQgOiBib29sIHsgTm8sIFllcyB9OworCiBjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlv
biA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTksMTIgKzEwMSwxNCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBmb3JFYWNoQ29ubmVjdGlvbihjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U1dTZXJ2ZXI6OkNvbm5lY3Rpb24mKT4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hv
dWxkU29mdFVwZGF0ZShjb25zdCBGZXRjaE9wdGlvbnMmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNjaGVkdWxlU29mdFVwZGF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2NoZWR1bGVTb2Z0VXBkYXRlKElzQXBwQm91bmQpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vj
b25kcyBzb2Z0VXBkYXRlRGVsYXkgeyAxX3MgfTsKIAogICAgIFVSTCBzY29wZVVSTFdpdGhvdXRG
cmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVVUkw7IH0KICAgICBVUkwgc2NyaXB0VVJM
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRVUkw7IH0KIAorICAgIGJvb2wgaXNBcHBCb3VuZCgp
IHsgcmV0dXJuIG1faXNBcHBCb3VuZDsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgYWN0aXZhdGUo
KTsKICAgICB2b2lkIGhhbmRsZUNsaWVudFVubG9hZCgpOwpAQCAtMTMwLDYgKzEzNCw4IEBAIHBy
aXZhdGU6CiAgICAgSGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBIYXNoU2V0
PERvY3VtZW50SWRlbnRpZmllcj4+IG1fY2xpZW50c1VzaW5nUmVnaXN0cmF0aW9uOwogCiAgICAg
V2ViQ29yZTo6VGltZXIgbV9zb2Z0VXBkYXRlVGltZXI7CisgICAgCisgICAgYm9vbCBtX2lzQXBw
Qm91bmQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDA5ZmQ5MWNlODVlMzNhY2IzMzVhYzI3OTQxMGNkOGRkZjM1Nzk5ZGMuLjYzM2JlMzMx
ZGIwOGZmODMwOTM4M2NkYTVkOGU2YTAwYWYxMTI2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1MTMs
NiArMTUxMywxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRp
ZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKiBmZQogfQogI2VuZGlmCiAKK2Jvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0FwcEJvdW5kKCkKK3sKKyAgICByZXR1cm4gbV9wYXJh
bWV0ZXJzLnJlcXVlc3QuaXNBcHBCb3VuZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IDQ2MzNhMTYyNmRk
MTQzNjI5MzBiYzEwMTM3ZTE0MTdkZGM1OWY3NjEuLmZhMGFiODdhMDc1NmRkZWYxOGZhODA0Yjhh
ODE2ODMyMzZlMGMzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTQzLDYgKzE0Myw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoU2VydmljZVdvcmtlckZldGNoVGFzayop
OwogI2VuZGlmCiAKKyAgICBib29sIGlzQXBwQm91bmQoKTsKKwogcHJpdmF0ZToKICAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxheWVkUmVwbHkmJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCBhZTE5NWYwNjJkOWU5ZWY1
ZTI3NzhkYzZjNzBlNzM0Y2YxOWFiZWQwLi44OTVjZGM3MTA2YzZjZjI5YTk2NTJlMzEwMzFmMmUx
YTM0NWVhOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBA
IC0yNTUsNyArMjU1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzb2Z0VXBkYXRl
SWZOZWVkZWQoKQogICAgIGlmICghbV9zaG91bGRTb2Z0VXBkYXRlKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKS5zd0Nvbm5lY3Rpb24oKS5zZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24obV9zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIHJlZ2lzdHJhdGlvbi0+c2No
ZWR1bGVTb2Z0VXBkYXRlKCk7CisgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBk
YXRlKG1fbG9hZGVyLmlzQXBwQm91bmQoKSA/IFdlYkNvcmU6OklzQXBwQm91bmQ6OlllcyA6IFdl
YkNvcmU6OklzQXBwQm91bmQ6Ok5vKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCBh
ODJkNzM3MTc4MWM0OGM2NjMzMzRlM2M1NTRlZDg1MjQ2M2QxZGEyLi5mNDU4NTJjYjNmM2U5MTIz
YmY5YmUzMmQ2ZTFlNjBiOWFkY2MyYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTEyOSw2ICsxMjksOCBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkRnJvbU5ldHdvcmsoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24sIFJlcwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7
CiAgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxs
cHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBzZXNzaW9uKTsKICAgICBtX25ldHdvcmtMb2FkLT5z
dGFydCgpOworCisgICAgc2Vzc2lvbi5hcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSgpLnNl
dERpZFBlcmZvcm1Tb2Z0VXBkYXRlKCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJl
c291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDFmMDI2MGI3ZWNlMGFiNjYyZjIwN2Y0NjQ4OWQwOTRl
NzUyYjhkMWUuLmJkNDI1NjA0M2UxNDM3ZDhkNmMyOTM3ZmI3MDhmMmFiYWI5NDc3OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xODcsNyArMTg3LDggQEAg
c3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE4KICAgICBib29sIHNob3VsZFNvZnRVcGRhdGUgPSByZWdp
c3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0
ZXJzKCkub3B0aW9ucyk7CiAgICAgaWYgKHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkg
ewogICAgICAgICBpZiAoc2hvdWxkU29mdFVwZGF0ZSkKLSAgICAgICAgICAgIHJlZ2lzdHJhdGlv
bi0+c2NoZWR1bGVTb2Z0VXBkYXRlKCk7CisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVk
dWxlU29mdFVwZGF0ZShsb2FkZXIuaXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6SXNBcHBCb3VuZDo6
WWVzIDogV2ViQ29yZTo6SXNBcHBCb3VuZDo6Tm8pOworCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLmgKaW5kZXggNDdlODRmZDI2ZDQxMzRlODZhOTdjMzk1OTgyYWQ2NDlmZmQ3NTdi
ZS4uY2E3MGE1YTBlY2E3ZGNjMzQ2YWMwNThmMzBkOGNlN2IyZjcyYWI2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCkBAIC00Mywx
MCArNDMsMTYgQEAgdXNpbmcgUmVxdWVzdERvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOwogI2lmIFBMQVRGT1JNKENPQ09BKQogc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3Rp
bmdEYXRhIHsKIAorICAgIHZvaWQgc2V0RGlkUGVyZm9ybVNvZnRVcGRhdGUoKQorICAgIHsKKyAg
ICAgICAgZGlkUGVyZm9ybVNvZnRVcGRhdGUgPSB0cnVlOworICAgIH0KKyAgICAKICAgICB2b2lk
IGNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YVRlc3RpbmcoKQogICAgIHsKICAgICAgICAgaGFz
TG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyA9IGZhbHNlOwogICAgICAgICBoYXNMb2FkZWRO
b25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nID0gZmFsc2U7CisgICAgICAgIGRpZFBlcmZvcm1Tb2Z0
VXBkYXRlID0gZmFsc2U7CiAgICAgICAgIGNvbnRleHREYXRhLmNsZWFyKCk7CiAgICAgfQogCkBA
IC02MCw2ICs2Niw3IEBAIHN0cnVjdCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAg
ICAgewogICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7
CiAgICAgICAgIGVuY29kZXIgPDwgaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsK
KyAgICAgICAgZW5jb2RlciA8PCBkaWRQZXJmb3JtU29mdFVwZGF0ZTsKICAgICAgICAgZW5jb2Rl
ciA8PCBjb250ZXh0RGF0YTsKICAgICB9CiAKQEAgLTc0LDE3ICs4MSwyMyBAQCBzdHJ1Y3QgQXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgewogICAgICAgICBkZWNvZGVyID4+IGhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CiAgICAgICAgIGlmICghaGFzTG9hZGVkTm9uQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZykKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgICAgIAorICAgICAgICBPcHRpb25hbDxib29sPiBkaWRQZXJmb3JtU29mdFVwZGF0ZTsKKyAg
ICAgICAgZGVjb2RlciA+PiBkaWRQZXJmb3JtU29mdFVwZGF0ZTsKKyAgICAgICAgaWYgKCFkaWRQ
ZXJmb3JtU29mdFVwZGF0ZSkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8SGFzaE1hcDxSZXF1ZXN0RG9tYWluLCBDb250ZXh0RG9tYWluPj4gY29u
dGV4dERhdGE7CiAgICAgICAgIGRlY29kZXIgPj4gY29udGV4dERhdGE7CiAgICAgICAgIGlmICgh
Y29udGV4dERhdGEpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAg
IHJldHVybiB7eyAqaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgKmhhc0xvYWRlZE5v
bkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIFdURk1vdmUoKmNvbnRleHREYXRhKSB9fTsKKyAgICAg
ICAgcmV0dXJuIHt7ICpoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAqaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgKmRpZFBlcmZvcm1Tb2Z0VXBkYXRlLCBXVEZNb3Zl
KCpjb250ZXh0RGF0YSkgfX07CiAgICAgfQogCiAgICAgYm9vbCBoYXNMb2FkZWRBcHBCb3VuZFJl
cXVlc3RUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVx
dWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgZGlkUGVyZm9ybVNvZnRVcGRhdGUgeyBm
YWxzZSB9OwogICAgIEhhc2hNYXA8UmVxdWVzdERvbWFpbiwgQ29udGV4dERvbWFpbj4gY29udGV4
dERhdGE7CiB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4IDFmOGU5
MDY0MTJiNThiZWZmYmVmN2NkODZkOTE3OGE0NWFkMGYyMzMuLjcxNjViYzRmZDdjYmU0MTIyNjc2
NjgwNTA1MzRlZjhjOTIxYmYzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCkBAIC0z
Nyw2ICszNyw3IEBAIHR5cGVkZWYgZW51bSB7CiBzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YSB7CiAgICAgQk9PTCBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwog
ICAgIEJPT0wgaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICBCT09MIGRp
ZFBlcmZvcm1Tb2Z0VXBkYXRlOwogfTsKIAogQHByb3RvY29sIF9XS01lZGlhU2Vzc2lvbkNvb3Jk
aW5hdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1Rlc3RpbmcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3VGVzdGluZy5tbQppbmRleCAwN2NhMWRiZTkwZDc1NjQ2Y2Q3ZmExNGEyYTY3ODI1NDdh
ZGVkY2UzLi45Y2I0YTkxYmNlY2E2Yjg3MjE4MmQzZWU1MDM2ZTk1ZTYyYjE4NGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGlu
Zy5tbQpAQCAtMzc0LDcgKzM3NCw3IEBACiAtICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRh
Oih2b2lkKF4pKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpKWNv
bXBsZXRpb25IYW5kbGVyCiB7CiAgICAgX3BhZ2UtPmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoW2Nv
bXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8m
JiBhcHBCb3VuZERhdGEpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBhcHBCb3VuZERh
dGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgYXBwQm91bmREYXRhLmhhc0xvYWRl
ZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgYXBwQm91bmREYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIGFwcEJvdW5k
RGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBhcHBCb3VuZERhdGEuZGlk
UGVyZm9ybVNvZnRVcGRhdGUgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMDQwMTAxMjJiNjZiYTRiNjMxNTQwZDEx
MmI1YjQ4NGY4MTdkYzJiLi4zZDAxOGVjN2UxYzlkMGZjNjU2MWI2OWM5NzE2NTNkMDg1ODUwZTdj
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMjEtMDQtMTMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBh
cHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSB3b3JrZXIgc29mdC11cGRhdGUgbG9hZHMgbm90
IGJlaW5nIG1hcmtlZCBhcHAtYm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMzIwMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzU0Mzg1NTU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBBUEkgdGVz
dCBjb3ZlcmFnZS4gUmVmYWN0b3IgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbiBpbiBvdGhlciB0
ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgQSBzb2Z0IHVwZGF0ZSBtaWdodCBiZSBkZWxheWVk
IGFmdGVyIHRoZSBzeW50aGV0aWMgcmVzcG9uc2UgY29tZXMKKyAgICAgICAgYmFjay4gV2Ugc2hv
dWxkIHdhaXQgdW50aWwgd2UgcmVjZWl2ZSB0aGUgdGVzdCBkYXRhIGluZGljYXRpbmcgdGhhdAor
ICAgICAgICBhIHNvZnQgdXBkYXRlIGhhcyBvY2N1cnJlZCBiZWZvcmUgY2hlY2tpbmcgdGhlIGFw
cC1ib3VuZCB2YWx1ZXMuCisKIDIwMjEtMDQtMTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjc1ODAxLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJy
b3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDZmNzBhYTE4NzU1YTQ3YWEzODE4ZGNmZGExZDE2
NWMwNmZmYzY0NzYuLjEwNTE4MWEyYzgwNjU2YWY5NmRhYzg1NjQ4ZjQwMzE3MDgwMDU4MWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93
c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTE0MTgsNyArMTQxOCw3IEBAIFRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lTm9uQXBwQm91
bmQpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi0jZW5kaWYg
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNlbmRpZiAvLyBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpCiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBBcHBCb3VuZFJlcXVlc3QpCkBAIC0xNTU4LDYgKzE1NTgsMjggQEAgVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfTsKIAorc3RhdGljIGNvbnN0IGNoYXIqIG1h
aW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorPHNjcmlwdD4KK3RyeSB7CisgICAgbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7Cisg
ICAgICAgIGlmIChyZWcuYWN0aXZlKSB7CisgICAgICAgICAgICBhbGVydCgnd29ya2VyIGFscmVh
ZHkgYWN0aXZlJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgd29y
a2VyID0gcmVnLmluc3RhbGxpbmc7CisgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdz
dGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9
PSAnYWN0aXZhdGVkJykKKyAgICAgICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lz
dGVyZWQnKTsKKyAgICAgICAgfSk7CisgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAg
ICAgICAgYWxlcnQoJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyArIGVycm9yKTsKKyAgICB9
KTsKK30gY2F0Y2goZSkgeworICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsKK30KKzwvc2Ny
aXB0PgorKVNXUkVTT1VSQ0UiOworCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRp
YywgRmV0Y2hlZCB9OwogZW51bSBjbGFzcyBJc0FwcEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsK
IHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3Vu
ZCBhcHBCb3VuZCkKQEAgLTE1NjgsMjcgKzE1OTAsNiBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJl
c3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElzQXBwQm91bmQgYXBwQm91bmQpCiAgICAgfV07CiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIG1haW4gPQotICAgICI8c2NyaXB0PiIKLSAgICAidHJ5IHsiCi0gICAgIiAgICBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcp
IHsiCi0gICAgIiAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsiCi0gICAgIiAgICAgICAgICAgIGFs
ZXJ0KCd3b3JrZXIgdW5leHBlY3RlZGx5IGFscmVhZHkgYWN0aXZlJyk7IgotICAgICIgICAgICAg
ICAgICByZXR1cm47IgotICAgICIgICAgICAgIH0iCi0gICAgIiAgICAgICAgd29ya2VyID0gcmVn
Lmluc3RhbGxpbmc7IgotICAgICIgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0
ZWNoYW5nZScsIGZ1bmN0aW9uKCkgeyIKLSAgICAiICAgICAgICAgICAgaWYgKHdvcmtlci5zdGF0
ZSA9PSAnYWN0aXZhdGVkJykiCi0gICAgIiAgICAgICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1
bGx5IHJlZ2lzdGVyZWQnKTsiCi0gICAgIiAgICAgICAgfSk7IgotICAgICIgICAgfSkuY2F0Y2go
ZnVuY3Rpb24oZXJyb3IpIHsiCi0gICAgIiAgICAgICAgYWxlcnQoJ1JlZ2lzdHJhdGlvbiBmYWls
ZWQgd2l0aDogJyArIGVycm9yKTsiCi0gICAgIiAgICB9KTsiCi0gICAgIn0gY2F0Y2goZSkgeyIK
LSAgICAiICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsiCi0gICAgIn0iCi0gICAgIjwvc2Ny
aXB0PiI7Ci0KICAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CiAgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAKQEAgLTE2MDQsNyArMTYwNSw3IEBAIHN0YXRpYyB2
b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3Vu
ZCkKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAg
ICAgIHsgIi8iLCB7IG1haW4gfSB9LAorICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0s
CiAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9fSwganMgfSB9LAogICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNj
cmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCiAgICAgfSwg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKQEAgLTE2NzYsMzIg
KzE2NzcsOSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhT
ZXJ2aWNlV29ya2VyKQogICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpGZXRjaGVkLCBJc0FwcEJv
dW5kOjpZZXMpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVT
T1VSQ0UoCi08c2NyaXB0PgotdHJ5IHsKLSAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKLSAgICAgICAgaWYgKHJlZy5hY3Rp
dmUpIHsKLSAgICAgICAgICAgIGFsZXJ0KCd3b3JrZXIgYWxyZWFkeSBhY3RpdmUnKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICB3b3JrZXIgPSByZWcuaW5zdGFsbGlu
ZzsKLSAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBpZiAod29ya2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKQotICAg
ICAgICAgICAgICAgIGFsZXJ0KCdzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCcpOwotICAgICAgICB9
KTsKLSAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgewotICAgICAgICBhbGVydCgnUmVnaXN0
cmF0aW9uIGZhaWxlZCB3aXRoOiAnICsgZXJyb3IpOwotICAgIH0pOwotfSBjYXRjaChlKSB7Ci0g
ICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOwotfQotPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7
Ci0KIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRT
ZXJ2aWNlV29ya2VyKQogewogICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOwotICAgIGlz
RG9uZSA9IGZhbHNlOwogCiAgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9y
ZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5
cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVy
Ol4oKSB7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CkBAIC0xNzY3LDQgKzE3NDUsOTcgQEAgVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VX
b3JrZXIpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9u
ZSA9IGZhbHNlOwogfQorCitzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEJvdW5kIGlz
QXBwQm91bmQpCit7CisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRl
IGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBpc0RvbmUgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10p
OworICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihX
S1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lk
ICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxD
cmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9k
U2VydmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
VXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1dOworCisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIHdlYlZpZXcxLmdldCgpLm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIHdlYlZpZXcyLmdldCgpLm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgdWludDE2X3Qgc2VydmVyUG9y
dDsKKyAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJs
b2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0
eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKworICAgIHsKKyAgICAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKKyAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVz
IH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAorICAgICAgICB9LCBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsK
KyAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOworCisgICAgICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCA9IHNlcnZlcjEucmVxdWVzdCgpOworICAgICAgICBpZiAoaXNBcHBCb3Vu
ZCA9PSBJc0FwcEJvdW5kOjpObykgeworICAgICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAq
bm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczov
LzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIxLnBvcnQoKV1dXTsKKyAgICAgICAgICAgIEFQUF9CT1VO
RF9SRVFVRVNUX0FERElUSU9OUworICAgICAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVx
dWVzdDsKKyAgICAgICAgfQorCisgICAgICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpyZXF1ZXN0
XTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRd
LCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKKworICAgICAgICBzZXJ2ZXIxLmNhbmNlbCgp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIyKHsKKyAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAg
IHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9fSwganMgfSB9CisgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKKworICAg
ICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QyID0gc2VydmVyMi5yZXF1ZXN0KCk7CisgICAgICAg
IGlmIChpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7CisgICAgICAgICAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOworICAgICAg
ICAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURESVRJT05TCisgICAgICAgICAgICByZXF1ZXN0MiA9
IG5vbkFwcEJvdW5kUmVxdWVzdDsKKyAgICAgICAgfQorCisgICAgICAgIGlzRG9uZSA9IGZhbHNl
OworICAgICAgICBbd2ViVmlldzEgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeeworICAg
ICAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisKKyAgICAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVz
dDpyZXF1ZXN0Ml07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzIgX3Rlc3Rfd2Fp
dEZvckFsZXJ0XSwgInN5bnRoZXRpYyByZXNwb25zZSIpOworICAgIH0KKworICAgIGlzRG9uZSA9
IGZhbHNlOworICAgIGJvb2wgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyA9IGlzQXBwQm91bmQg
PT0gSXNBcHBCb3VuZDo6WWVzID8gdHJ1ZSA6IGZhbHNlOworICAgIHdoaWxlICghaXNEb25lKSB7
CisgICAgICAgIFt3ZWJWaWV3MiBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tB
cHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgICAgICBpZiAoIWRh
dGEuZGlkUGVyZm9ybVNvZnRVcGRhdGUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBl
eHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhh
c0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBCb3VuZFJlcXVl
c3RzKTsKKyAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxKTsKKyAgICB9Cit9CisKK1RFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlKQoreworICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQ6Olllcyk7Cit9CisKK1RFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlKQoreworICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQ6Ok5vKTsKK30KICNl
bmRpZgo=
</data>
<flag name="commit-queue"
          id="446041"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425927</attachid>
            <date>2021-04-13 16:01:26 -0700</date>
            <delta_ts>2021-04-14 10:54:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223200-20210413160125.patch</filename>
            <type>text/plain</type>
            <size>27737</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg4MjQ2NjUyOTQwNzNl
MDAzZDY2ZjYxZThmMDhjMmMwYWQ4Mjc0Yi4uNTFhNTgyZjE3MWI5ZjhhN2M3NTkyZjE4ZGZhNmZl
NWMwZjAwMjljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA0LTEzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ug
d29ya2VyIHNvZnQtdXBkYXRlIGxvYWRzIG5vdCBiZWluZyBtYXJrZWQgYXBwLWJvdW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzc1NDM4NTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVu
biBGYWJsZXQuCisKKyAgICAgICAgV2UgbmVlZCB0byBtYXJrIHJlcXVlc3RzIGluaXRpYXRlZCBi
eSBzZXJ2aWNlIHdvcmtlciBzb2Z0IHVwZGF0ZXMgYXMKKyAgICAgICAgYXBwLWJvdW5kIGJhc2Vk
IG9uIHRoZSBsYXN0IG5hdmlnYXRpb24uIFdlIHNob3VsZCBnZXQgdGhpcyB2YWx1ZSBmcm9tIHRo
ZQorICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgYW5kIHN0b3JlIGl0IGluIFNXU2VydmVy
UmVnaXN0cmF0aW9uIHNvIHdlIGNhbgorICAgICAgICB1c2UgaXQgdG8gYnVpbGQgYSBuZXcgcmVx
dWVzdC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2gpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgUGFzcyB0aGUgZW50
aXJlIFNXU2VydmVyUmVnaXN0cmF0aW9uIHRvIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoCisg
ICAgICAgIG5vdyB0aGF0IHdlIG5lZWQgbW9yZSB0aGFuIG9uZSB2YWx1ZSBmcm9tIGl0LiBNb3Zl
IHNob3VsZFJlZnJlc2hDYWNoZQorICAgICAgICBsb2dpYyBoZXJlIGluc3RlYWQgb2YgU1dTZXJ2
ZXJKb2JRdWV1ZTo6cnVuVXBkYXRlSm9iLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9i
UXVldWU6OnJ1blVwZGF0ZUpvYik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lz
dHJhdGlvbjo6c2NoZWR1bGVTb2Z0VXBkYXRlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
clJlZ2lzdHJhdGlvbjo6aXNBcHBCb3VuZCk6CisKIDIwMjEtMDQtMTIgIFJvYiBCdWlzICA8cmJ1
aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBDbGFtcCBvdmVycmlkaW5nQ29udGVudExvZ2ljYWxX
aWR0aC9IZWlnaHQgdG8gemVybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5NjgyODQwY2Y5MGExNWYyNTVlN2YwNjdl
ZmIyNWJjZDgyYWM1YWRlLi5mOGY0NmI2MGE3YzQ3YTQzYThhODdmYjdjZTc1NzU1ZjcwNTI1YTE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTA0LTEzICBLYXRlIENoZW5leSAgPGth
dGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2Ugd29ya2VyIHNvZnQt
dXBkYXRlIGxvYWRzIG5vdCBiZWluZyBtYXJrZWQgYXBwLWJvdW5kCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMyMDAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzc1NDM4NTU1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisK
KyAgICAgICAgV2Ugc2hvdWxkIHBhc3MgdGhlIGFwcC1ib3VuZCByZXF1ZXN0IHZhbHVlIHdoZW4g
ZG9pbmcgYSBzb2Z0IHVwZGF0ZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6aXNBcHBCb3VuZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmg6CisgICAgICAgIE1ha2UgYSBoZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSByZXF1
ZXN0J3MgYXBwLWJvdW5kIHZhbHVlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6c29mdFVwZGF0ZUlmTmVlZGVkKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWRG
cm9tTmV0d29yayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OmNyZWF0ZUZldGNoVGFzayk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLmg6CisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3Rp
bmdEYXRhOjpzZXREaWRQZXJmb3JtU29mdFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFwcEJv
dW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFUZXN0
aW5nKToKKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZUZvclRlc3RpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1Rlc3RpbmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0
YTpdKToKKyAgICAgICAgVXBkYXRlIHRlc3Rpbmcgc3RydWN0IHRvIG1ha2Ugc3VyZSBhIHNvZnQt
dXBkYXRlIG9jY3VycmVkIGJlZm9yZQorICAgICAgICBjaGVja2luZyBhcHAtYm91bmQgZGF0YS4g
VGhpcyBhY2NvdW50cyBmb3IgdGhlIGRlbGF5IGJldHdlZW4gdGhlCisgICAgICAgIHBhZ2UgbG9h
ZCBhbmQgdGhlIHNvZnQgdXBkYXRlLgorCiAyMDIxLTA0LTEyICBBZHJpYW4gUGVyZXogZGUgQ2Fz
dHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBVc2UgZ19vYmpl
Y3Rfbm90aWZ5X2J5X3BzcGVjKCkgd2hlbmV2ZXIgcG9zc2libGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggOTVjZDNlMThk
NmVmMGYxNzQzMzg2MGVkYWMzYmJhZTlmNjU5ZWY1Zi4uMTM5MmY0NDE0ZDlhZmVkZjQ2MDAyNGY5
NzhhYjZjZGI0MTE0MGIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTQ0MSw5ICs0NDEsMTcgQEAgVVJMIHN0YXRpYyBp
bmxpbmUgb3JpZ2luVVJMKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiAgICAgcmV0dXJu
IHVybDsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUpCit2b2lkIFNX
U2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JE
YXRhLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogewogICAgIExPRyhTZXJ2
aWNlV29ya2VyLCAiU2VydmVyIGlzc3Vpbmcgc3RhcnRTY3JpcHRGZXRjaCBmb3IgY3VycmVudCBq
b2IgJXMgaW4gY2xpZW50Iiwgam9iRGF0YS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworCisgICAgLy8gU2V0IHJlcXVlc3QncyBjYWNoZSBtb2RlIHRvICJuby1j
YWNoZSIgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6CisgICAgLy8gLSByZWdpc3Ry
YXRpb24ncyB1cGRhdGUgdmlhIGNhY2hlIG1vZGUgaXMgbm90ICJhbGwiLgorICAgIC8vIC0gam9i
J3MgZm9yY2UgYnlwYXNzIGNhY2hlIGZsYWcgaXMgc2V0LgorICAgIC8vIC0gbmV3ZXN0V29ya2Vy
IGlzIG5vdCBudWxsLCBhbmQgcmVnaXN0cmF0aW9uJ3MgbGFzdCB1cGRhdGUgY2hlY2sgdGltZSBp
cyBub3QgbnVsbCBhbmQgdGhlIHRpbWUgZGlmZmVyZW5jZSBpbiBzZWNvbmRzIGNhbGN1bGF0ZWQg
YnkgdGhlCisgICAgLy8gICBjdXJyZW50IHRpbWUgbWludXMgcmVnaXN0cmF0aW9uJ3MgbGFzdCB1
cGRhdGUgY2hlY2sgdGltZSBpcyBncmVhdGVyIHRoYW4gODY0MDAuCisgICAgYm9vbCBzaG91bGRS
ZWZyZXNoQ2FjaGUgPSByZWdpc3RyYXRpb24udXBkYXRlVmlhQ2FjaGUoKSAhPSBTZXJ2aWNlV29y
a2VyVXBkYXRlVmlhQ2FjaGU6OkFsbCB8fCAocmVnaXN0cmF0aW9uLmdldE5ld2VzdFdvcmtlcigp
ICYmIHJlZ2lzdHJhdGlvbi5pc1N0YWxlKCkpOworCiAgICAgYXV0byogY29ubmVjdGlvbiA9IG1f
Y29ubmVjdGlvbnMuZ2V0KGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAgICAgaWYg
KGNvbm5lY3Rpb24pIHsKICAgICAgICAgY29ubmVjdGlvbi0+c3RhcnRTY3JpcHRGZXRjaEluQ2xp
ZW50KGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIsIGpvYkRhdGEucmVnaXN0cmF0
aW9uS2V5KCksIHNob3VsZFJlZnJlc2hDYWNoZSA/IEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vQ2Fj
aGUgOiBGZXRjaE9wdGlvbnM6OkNhY2hlOjpEZWZhdWx0KTsKQEAgLTQ2Niw2ICs0NzQsNyBAQCB2
b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
JiBqb2JEYXRhLCBib29sIHNob3VsZAogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihv
cmlnaW5VUkwob3JpZ2luKS5zdHJpbmcoKSk7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJB
Z2VudChzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KENsaWVudE9yaWdpbiB7IGpvYkRhdGEu
dG9wT3JpZ2luLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0VVJMKS0+ZGF0
YSgpIH0pKTsKICAgICAgICAgcmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0
eTo6TG93KTsKKyAgICAgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKHJlZ2lzdHJhdGlvbi5pc0Fw
cEJvdW5kKCkpOwogCiAgICAgICAgIG1fc29mdFVwZGF0ZUNhbGxiYWNrKFNlcnZpY2VXb3JrZXJK
b2JEYXRhIHsgam9iRGF0YSB9LCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCks
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiByZXN1bHQpIHsKICAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggOTJhYWI4NmMzMTljNGNmNjFkZjM5MTU0Y2Yw
ZGZmMmUyODY1ODZhZS4uZDBlZDdjOTIzNjdlMTdiYzkzODJjZjgwY2Q1ZThjNjgzN2I3M2NlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aApAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlamVjdEpvYihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsKICAgICB2b2lkIHJl
c29sdmVSZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7
CiAgICAgdm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGEmLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCB1bnJlZ2lz
dHJhdGlvblJlc3VsdCk7Ci0gICAgdm9pZCBzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUpOworICAgIHZvaWQgc3RhcnRT
Y3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJik7CiAKICAgICB2b2lkIHVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdv
cmtlclR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0PiYmKTsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCmluZGV4IDgwMmE0ODAxMTUxYTcyOGZiYzVhMmE2OTEyNGRiOTYz
Yzc3MmNiMGEuLjdiMGY1N2Y5NzcwMWU3MWYwZTA0Njc5MzllM2VjN2E3MmJlOTU3ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcApAQCAtMzUyLDEzICszNTIsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVl
dWU6OnJ1blVwZGF0ZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogICAgIGlm
IChqb2IudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlICYmIG5ld2VzdFdvcmtl
ciAmJiAhZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdl
c3RXb3JrZXItPnNjcmlwdFVSTCgpKSkKICAgICAgICAgcmV0dXJuIHJlamVjdEN1cnJlbnRKb2Io
RXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIkNhbm5vdCB1cGRhdGUgYSBzZXJ2aWNlIHdvcmtl
ciB3aXRoIGEgcmVxdWVzdGVkIHNjcmlwdCBVUkwgd2hvc2UgbmV3ZXN0IHdvcmtlciBoYXMgYSBk
aWZmZXJlbnQgc2NyaXB0IFVSTCJfcyB9KTsKIAotICAgIC8vIFNldCByZXF1ZXN0J3MgY2FjaGUg
bW9kZSB0byAibm8tY2FjaGUiIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIGFyZSB0cnVlOgotICAg
IC8vIC0gcmVnaXN0cmF0aW9uJ3MgdXBkYXRlIHZpYSBjYWNoZSBtb2RlIGlzIG5vdCAiYWxsIi4K
LSAgICAvLyAtIGpvYidzIGZvcmNlIGJ5cGFzcyBjYWNoZSBmbGFnIGlzIHNldC4KLSAgICAvLyAt
IG5ld2VzdFdvcmtlciBpcyBub3QgbnVsbCwgYW5kIHJlZ2lzdHJhdGlvbidzIGxhc3QgdXBkYXRl
IGNoZWNrIHRpbWUgaXMgbm90IG51bGwgYW5kIHRoZSB0aW1lIGRpZmZlcmVuY2UgaW4gc2Vjb25k
cyBjYWxjdWxhdGVkIGJ5IHRoZQotICAgIC8vICAgY3VycmVudCB0aW1lIG1pbnVzIHJlZ2lzdHJh
dGlvbidzIGxhc3QgdXBkYXRlIGNoZWNrIHRpbWUgaXMgZ3JlYXRlciB0aGFuIDg2NDAwLgotICAg
IGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlID0gcmVnaXN0cmF0aW9uLT51cGRhdGVWaWFDYWNoZSgp
ICE9IFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6QWxsIHx8IChuZXdlc3RXb3JrZXIgJiYg
cmVnaXN0cmF0aW9uLT5pc1N0YWxlKCkpOwotICAgIG1fc2VydmVyLnN0YXJ0U2NyaXB0RmV0Y2go
am9iLCBzaG91bGRSZWZyZXNoQ2FjaGUpOworICAgIG1fc2VydmVyLnN0YXJ0U2NyaXB0RmV0Y2go
am9iLCAqcmVnaXN0cmF0aW9uKTsKIH0KIAogdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpyZWplY3RD
dXJyZW50Sm9iKGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbkRhdGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24uY3BwCmluZGV4IGE1OGJiMDMzNWQyYTdhYzNmZDg0MTdmNWYxMDljMmM4YTM0
YTgzZjEuLjNmMjg1N2M1MDU0ODNkMmE3MzBlMmEwOTczMzZhYmE2ZWM4NTBkYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zNzAsMTMgKzM3MCwxNSBAQCB2b2lkIFNXU2VydmVy
UmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlKCkKICAgICBtX3NlcnZlci5zb2Z0VXBkYXRlKCp0aGlz
KTsKIH0KIAotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0VXBkYXRlKCkK
K3ZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNjaGVkdWxlU29mdFVwZGF0ZShJc0FwcEJvdW5k
IGlzQXBwQm91bmQpCiB7CiAgICAgLy8gVG8gYXZvaWQgc2NoZWR1bGluZyBtYW55IHVwZGF0ZXMg
ZHVyaW5nIGEgc2luZ2xlIHBhZ2UgbG9hZCwgd2UgZG8gc29mdCB1cGRhdGVzIG9uIGEgMSBzZWNv
bmQgZGVsYXkgYW5kIGtlZXAgZGVsYXlpbmcKICAgICAvLyBhcyBsb25nIGFzIHNvZnQgdXBkYXRl
IHJlcXVlc3RzIGtlZXAgY29taW5nLiBUaGlzIHNlZW1zIHRvIG1hdGNoIENocm9tZSdzIGJlaGF2
aW9yLgogICAgIGlmIChtX3NvZnRVcGRhdGVUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1
cm47CiAKKyAgICBtX2lzQXBwQm91bmQgPSBpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6OlllczsK
KwogICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTV1NlcnZlclJlZ2lzdHJhdGlvbjo6
c29mdFVwZGF0ZUlmTmVlZGVkIik7CiAgICAgbV9zb2Z0VXBkYXRlVGltZXIuc3RhcnRPbmVTaG90
KHNvZnRVcGRhdGVEZWxheSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKaW5kZXggNzA1ZTZh
NzA2YTIzYTQyM2E3ZjNmZDczYjdmN2MzOWNjNmJmY2Q2Ni4uOWY3ZjA2MGY3Y2MwNGEyYzg3NWJi
MDQ2YzdiODE1ODhiMTIyOGI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtNDcsNiAr
NDcsOCBAQCBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0OwogCitlbnVtIGNsYXNzIElz
QXBwQm91bmQgOiBib29sIHsgTm8sIFllcyB9OworCiBjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlv
biA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTksMTIgKzEwMSwxNCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBmb3JFYWNoQ29ubmVjdGlvbihjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U1dTZXJ2ZXI6OkNvbm5lY3Rpb24mKT4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hv
dWxkU29mdFVwZGF0ZShjb25zdCBGZXRjaE9wdGlvbnMmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNjaGVkdWxlU29mdFVwZGF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2NoZWR1bGVTb2Z0VXBkYXRlKElzQXBwQm91bmQpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vj
b25kcyBzb2Z0VXBkYXRlRGVsYXkgeyAxX3MgfTsKIAogICAgIFVSTCBzY29wZVVSTFdpdGhvdXRG
cmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVVUkw7IH0KICAgICBVUkwgc2NyaXB0VVJM
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRVUkw7IH0KIAorICAgIGJvb2wgaXNBcHBCb3VuZCgp
IHsgcmV0dXJuIG1faXNBcHBCb3VuZDsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgYWN0aXZhdGUo
KTsKICAgICB2b2lkIGhhbmRsZUNsaWVudFVubG9hZCgpOwpAQCAtMTMwLDYgKzEzNCw4IEBAIHBy
aXZhdGU6CiAgICAgSGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBIYXNoU2V0
PERvY3VtZW50SWRlbnRpZmllcj4+IG1fY2xpZW50c1VzaW5nUmVnaXN0cmF0aW9uOwogCiAgICAg
V2ViQ29yZTo6VGltZXIgbV9zb2Z0VXBkYXRlVGltZXI7CisgICAgCisgICAgYm9vbCBtX2lzQXBw
Qm91bmQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDA5ZmQ5MWNlODVlMzNhY2IzMzVhYzI3OTQxMGNkOGRkZjM1Nzk5ZGMuLjYzM2JlMzMx
ZGIwOGZmODMwOTM4M2NkYTVkOGU2YTAwYWYxMTI2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE1MTMs
NiArMTUxMywxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRp
ZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKiBmZQogfQogI2VuZGlmCiAKK2Jvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0FwcEJvdW5kKCkKK3sKKyAgICByZXR1cm4gbV9wYXJh
bWV0ZXJzLnJlcXVlc3QuaXNBcHBCb3VuZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IDQ2MzNhMTYyNmRk
MTQzNjI5MzBiYzEwMTM3ZTE0MTdkZGM1OWY3NjEuLmZhMGFiODdhMDc1NmRkZWYxOGZhODA0Yjhh
ODE2ODMyMzZlMGMzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTQzLDYgKzE0Myw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoU2VydmljZVdvcmtlckZldGNoVGFzayop
OwogI2VuZGlmCiAKKyAgICBib29sIGlzQXBwQm91bmQoKTsKKwogcHJpdmF0ZToKICAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxheWVkUmVwbHkmJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCBhZTE5NWYwNjJkOWU5ZWY1
ZTI3NzhkYzZjNzBlNzM0Y2YxOWFiZWQwLi44OTVjZGM3MTA2YzZjZjI5YTk2NTJlMzEwMzFmMmUx
YTM0NWVhOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBA
IC0yNTUsNyArMjU1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzb2Z0VXBkYXRl
SWZOZWVkZWQoKQogICAgIGlmICghbV9zaG91bGRTb2Z0VXBkYXRlKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKS5zd0Nvbm5lY3Rpb24oKS5zZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24obV9zZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIHJlZ2lzdHJhdGlvbi0+c2No
ZWR1bGVTb2Z0VXBkYXRlKCk7CisgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBk
YXRlKG1fbG9hZGVyLmlzQXBwQm91bmQoKSA/IFdlYkNvcmU6OklzQXBwQm91bmQ6OlllcyA6IFdl
YkNvcmU6OklzQXBwQm91bmQ6Ok5vKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCBh
ODJkNzM3MTc4MWM0OGM2NjMzMzRlM2M1NTRlZDg1MjQ2M2QxZGEyLi40ZmYxYjFmZDIzZjY2YWYz
MTI5OWNjOGJiNWNiMmNlYzVjZWYwYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTEyOSw2ICsxMjksMTAgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6bG9hZEZyb21OZXR3b3JrKE5ldHdvcmtTZXNzaW9u
JiBzZXNzaW9uLCBSZXMKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
OwogICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVs
bHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgc2Vzc2lvbik7CiAgICAgbV9uZXR3b3JrTG9hZC0+
c3RhcnQoKTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHNlc3Npb24uYXBwQm91bmROYXZp
Z2F0aW9uVGVzdGluZ0RhdGEoKS5zZXREaWRQZXJmb3JtU29mdFVwZGF0ZSgpOworI2VuZGlmCiB9
CiAKIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJl
c3BvbnNlJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDFm
MDI2MGI3ZWNlMGFiNjYyZjIwN2Y0NjQ4OWQwOTRlNzUyYjhkMWUuLmJkNDI1NjA0M2UxNDM3ZDhk
NmMyOTM3ZmI3MDhmMmFiYWI5NDc3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwCkBAIC0xODcsNyArMTg3LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE4KICAg
ICBib29sIHNob3VsZFNvZnRVcGRhdGUgPSByZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5z
aG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucyk7CiAgICAgaWYgKHdv
cmtlci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewogICAgICAgICBpZiAoc2hvdWxkU29mdFVw
ZGF0ZSkKLSAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBkYXRlKCk7Cisg
ICAgICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0ZShsb2FkZXIuaXNBcHBC
b3VuZCgpID8gV2ViQ29yZTo6SXNBcHBCb3VuZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBCb3VuZDo6
Tm8pOworCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKaW5kZXggNDdlODRmZDI2
ZDQxMzRlODZhOTdjMzk1OTgyYWQ2NDlmZmQ3NTdiZS4uY2E3MGE1YTBlY2E3ZGNjMzQ2YWMwNThm
MzBkOGNlN2IyZjcyYWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbi5oCkBAIC00MywxMCArNDMsMTYgQEAgdXNpbmcgUmVxdWVzdERv
bWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
c3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIHsKIAorICAgIHZvaWQgc2V0RGlk
UGVyZm9ybVNvZnRVcGRhdGUoKQorICAgIHsKKyAgICAgICAgZGlkUGVyZm9ybVNvZnRVcGRhdGUg
PSB0cnVlOworICAgIH0KKyAgICAKICAgICB2b2lkIGNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0
YVRlc3RpbmcoKQogICAgIHsKICAgICAgICAgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZyA9IGZhbHNlOwogICAgICAgICBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nID0g
ZmFsc2U7CisgICAgICAgIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlID0gZmFsc2U7CiAgICAgICAgIGNv
bnRleHREYXRhLmNsZWFyKCk7CiAgICAgfQogCkBAIC02MCw2ICs2Niw3IEBAIHN0cnVjdCBBcHBC
b3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGhh
c0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7CiAgICAgICAgIGVuY29kZXIgPDwgaGFzTG9h
ZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKKyAgICAgICAgZW5jb2RlciA8PCBkaWRQZXJm
b3JtU29mdFVwZGF0ZTsKICAgICAgICAgZW5jb2RlciA8PCBjb250ZXh0RGF0YTsKICAgICB9CiAK
QEAgLTc0LDE3ICs4MSwyMyBAQCBzdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEg
ewogICAgICAgICBkZWNvZGVyID4+IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7
CiAgICAgICAgIGlmICghaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZykKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIAorICAgICAgICBPcHRpb25hbDxi
b29sPiBkaWRQZXJmb3JtU29mdFVwZGF0ZTsKKyAgICAgICAgZGVjb2RlciA+PiBkaWRQZXJmb3Jt
U29mdFVwZGF0ZTsKKyAgICAgICAgaWYgKCFkaWRQZXJmb3JtU29mdFVwZGF0ZSkKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8SGFzaE1hcDxSZXF1
ZXN0RG9tYWluLCBDb250ZXh0RG9tYWluPj4gY29udGV4dERhdGE7CiAgICAgICAgIGRlY29kZXIg
Pj4gY29udGV4dERhdGE7CiAgICAgICAgIGlmICghY29udGV4dERhdGEpCiAgICAgICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAgIHJldHVybiB7eyAqaGFzTG9hZGVkQXBwQm91
bmRSZXF1ZXN0VGVzdGluZywgKmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIFdU
Rk1vdmUoKmNvbnRleHREYXRhKSB9fTsKKyAgICAgICAgcmV0dXJuIHt7ICpoYXNMb2FkZWRBcHBC
b3VuZFJlcXVlc3RUZXN0aW5nLCAqaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywg
KmRpZFBlcmZvcm1Tb2Z0VXBkYXRlLCBXVEZNb3ZlKCpjb250ZXh0RGF0YSkgfX07CiAgICAgfQog
CiAgICAgYm9vbCBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nIHsgZmFsc2UgfTsKICAg
ICBib29sIGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAg
IGJvb2wgZGlkUGVyZm9ybVNvZnRVcGRhdGUgeyBmYWxzZSB9OwogICAgIEhhc2hNYXA8UmVxdWVz
dERvbWFpbiwgQ29udGV4dERvbWFpbj4gY29udGV4dERhdGE7CiB9OwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZv
clRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oCmluZGV4IDFmOGU5MDY0MTJiNThiZWZmYmVmN2NkODZkOTE3OGE0
NWFkMGYyMzMuLjcxNjViYzRmZDdjYmU0MTIyNjc2NjgwNTA1MzRlZjhjOTIxYmYzZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCkBAIC0zNyw2ICszNyw3IEBAIHR5cGVkZWYgZW51bSB7
CiBzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAgICAgQk9PTCBoYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwogICAgIEJPT0wgaGFzTG9hZGVkTm9uQXBwQm91
bmRSZXF1ZXN0VGVzdGluZzsKKyAgICBCT09MIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwogfTsKIAog
QHByb3RvY29sIF9XS01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQppbmRleCAwN2Nh
MWRiZTkwZDc1NjQ2Y2Q3ZmExNGEyYTY3ODI1NDdhZGVkY2UzLi45Y2I0YTkxYmNlY2E2Yjg3MjE4
MmQzZWU1MDM2ZTk1ZTYyYjE4NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQpAQCAtMzc0LDcgKzM3NCw3IEBACiAt
ICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOih2b2lkKF4pKHN0cnVjdCBXS0FwcEJvdW5k
TmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgX3Bh
Z2UtPmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBCb3VuZERhdGEpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyBhcHBCb3VuZERhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0
VGVzdGluZywgYXBwQm91bmREYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmcg
fSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgYXBwQm91bmREYXRhLmhhc0xvYWRlZEFw
cEJvdW5kUmVxdWVzdFRlc3RpbmcsIGFwcEJvdW5kRGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJl
cXVlc3RUZXN0aW5nLCBhcHBCb3VuZERhdGEuZGlkUGVyZm9ybVNvZnRVcGRhdGUgfSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBjMDQwMTAxMjJiNjZiYTRiNjMxNTQwZDExMmI1YjQ4NGY4MTdkYzJiLi4zZDAxOGVjN2Ux
YzlkMGZjNjU2MWI2OWM5NzE2NTNkMDg1ODUwZTdjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDQtMTMgIEth
dGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgU2Vydmlj
ZSB3b3JrZXIgc29mdC11cGRhdGUgbG9hZHMgbm90IGJlaW5nIG1hcmtlZCBhcHAtYm91bmQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzIwMAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNzU0Mzg1NTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91
ZW5uIEZhYmxldC4KKworICAgICAgICBBUEkgdGVzdCBjb3ZlcmFnZS4gUmVmYWN0b3IgdG8gYXZv
aWQgY29kZSBkdXBsaWNhdGlvbiBpbiBvdGhlciB0ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAg
QSBzb2Z0IHVwZGF0ZSBtaWdodCBiZSBkZWxheWVkIGFmdGVyIHRoZSBzeW50aGV0aWMgcmVzcG9u
c2UgY29tZXMKKyAgICAgICAgYmFjay4gV2Ugc2hvdWxkIHdhaXQgdW50aWwgd2UgcmVjZWl2ZSB0
aGUgdGVzdCBkYXRhIGluZGljYXRpbmcgdGhhdAorICAgICAgICBhIHNvZnQgdXBkYXRlIGhhcyBv
Y2N1cnJlZCBiZWZvcmUgY2hlY2tpbmcgdGhlIGFwcC1ib3VuZCB2YWx1ZXMuCisKIDIwMjEtMDQt
MTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJldmVydGluZyByMjc1ODAxLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4
IDZmNzBhYTE4NzU1YTQ3YWEzODE4ZGNmZGExZDE2NWMwNmZmYzY0NzYuLjEwNTE4MWEyYzgwNjU2
YWY5NmRhYzg1NjQ4ZjQwMzE3MDgwMDU4MWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAg
LTE0MTgsNyArMTQxOCw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1
YkZyYW1lTWF0Y2hlc1RvcEZyYW1lTm9uQXBwQm91bmQpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogfQogCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNl
bmRpZiAvLyBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAKICNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3QpCkBAIC0x
NTU4LDYgKzE1NTgsMjggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFJl
cXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogfTsKIAorc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAor
PHNjcmlwdD4KK3RyeSB7CisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9z
dy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CisgICAgICAgIGlmIChyZWcuYWN0aXZlKSB7Cisg
ICAgICAgICAgICBhbGVydCgnd29ya2VyIGFscmVhZHkgYWN0aXZlJyk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7CisgICAg
ICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykKKyAgICAgICAgICAg
ICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsKKyAgICAgICAgfSk7CisgICAg
fSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgYWxlcnQoJ1JlZ2lzdHJhdGlvbiBm
YWlsZWQgd2l0aDogJyArIGVycm9yKTsKKyAgICB9KTsKK30gY2F0Y2goZSkgeworICAgIGFsZXJ0
KCdFeGNlcHRpb246ICcgKyBlKTsKK30KKzwvc2NyaXB0PgorKVNXUkVTT1VSQ0UiOworCiBlbnVt
IGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwogZW51bSBjbGFzcyBJ
c0FwcEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsKIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9u
c2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3VuZCkKQEAgLTE1NjgsMjcgKzE1
OTAsNiBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElz
QXBwQm91bmQgYXBwQm91bmQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIG1haW4gPQotICAgICI8c2NyaXB0
PiIKLSAgICAidHJ5IHsiCi0gICAgIiAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsiCi0gICAgIiAgICAgICAgaWYgKHJlZy5h
Y3RpdmUpIHsiCi0gICAgIiAgICAgICAgICAgIGFsZXJ0KCd3b3JrZXIgdW5leHBlY3RlZGx5IGFs
cmVhZHkgYWN0aXZlJyk7IgotICAgICIgICAgICAgICAgICByZXR1cm47IgotICAgICIgICAgICAg
IH0iCi0gICAgIiAgICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7IgotICAgICIgICAgICAg
IHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgeyIKLSAg
ICAiICAgICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykiCi0gICAgIiAg
ICAgICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsiCi0gICAgIiAg
ICAgICAgfSk7IgotICAgICIgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsiCi0gICAgIiAg
ICAgICAgYWxlcnQoJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyArIGVycm9yKTsiCi0gICAg
IiAgICB9KTsiCi0gICAgIn0gY2F0Y2goZSkgeyIKLSAgICAiICAgIGFsZXJ0KCdFeGNlcHRpb246
ICcgKyBlKTsiCi0gICAgIn0iCi0gICAgIjwvc2NyaXB0PiI7Ci0KICAgICBjb25zdCBjaGFyKiBq
cyA9IG51bGxwdHI7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAK
QEAgLTE2MDQsNyArMTYwNSw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJl
c3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3VuZCkKICAgICB9CiAKICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW4gfSB9LAorICAg
ICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCiAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sg
IkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAogICAg
ICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNl
cnZlcicpPC9zY3JpcHQ+IiB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzKTsKQEAgLTE2NzYsMzIgKzE2NzcsOSBAQCBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyKQogICAgIHJ1blRlc3Qo
UmVzcG9uc2VUeXBlOjpGZXRjaGVkLCBJc0FwcEJvdW5kOjpZZXMpOwogfQogCi1zdGF0aWMgY29u
c3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCi08c2NyaXB0PgotdHJ5IHsKLSAg
ICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsKLSAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsKLSAgICAgICAgICAgIGFsZXJ0KCd3
b3JrZXIgYWxyZWFkeSBhY3RpdmUnKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsKLSAgICAgICAgd29ya2VyLmFkZEV2ZW50
TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAod29y
a2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKQotICAgICAgICAgICAgICAgIGFsZXJ0KCdzdWNjZXNz
ZnVsbHkgcmVnaXN0ZXJlZCcpOwotICAgICAgICB9KTsKLSAgICB9KS5jYXRjaChmdW5jdGlvbihl
cnJvcikgewotICAgICAgICBhbGVydCgnUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAnICsgZXJy
b3IpOwotICAgIH0pOwotfSBjYXRjaChlKSB7Ci0gICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUp
OwotfQotPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7Ci0KIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQogewogICAgIHN0YXRp
YyBib29sIGlzRG9uZSA9IGZhbHNlOwotICAgIGlzRG9uZSA9IGZhbHNlOwogCiAgICAgW1tXS1dl
YnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vi
c2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUg
ZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIGlzRG9uZSA9IHRy
dWU7CkBAIC0xNzY3LDQgKzE3NDUsOTcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBNdWx0
aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9uZSA9IGZhbHNlOwogfQorCitzdGF0aWMgdm9p
ZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEJvdW5kIGlzQXBwQm91bmQpCit7CisgICAgX19ibG9jayBi
b29sIGlzRG9uZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRh
U3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURh
dGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFu
ZGxlcjpeKCkgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0
aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjYWxs
YmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVu
dGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJU
cnVzdF0pOworICAgIH1dOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcxID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRv
IHdlYlZpZXcyID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKworICAgIHdlYlZpZXcxLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdl
dCgpOworICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdl
dCgpOworCisgICAgdWludDE2X3Qgc2VydmVyUG9ydDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
anMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5y
ZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhl
dGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsK
KworICAgIHsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKKyAg
ICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5q
cyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMg
fSB9LAorICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKKyAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZl
cjEucG9ydCgpOworCisgICAgICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IHNlcnZlcjEucmVx
dWVzdCgpOworICAgICAgICBpZiAoaXNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpObykgeworICAg
ICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0
YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIxLnBv
cnQoKV1dXTsKKyAgICAgICAgICAgIEFQUF9CT1VORF9SRVFVRVNUX0FERElUSU9OUworICAgICAg
ICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKKyAgICAgICAgfQorCisgICAgICAg
IFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQi
KTsKKworICAgICAgICBzZXJ2ZXIxLmNhbmNlbCgpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKKyAgICAgICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgIH0sIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElk
ZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKKworICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qy
ID0gc2VydmVyMi5yZXF1ZXN0KCk7CisgICAgICAgIGlmIChpc0FwcEJvdW5kID09IElzQXBwQm91
bmQ6Ok5vKSB7CisgICAgICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJl
cXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVk
LyIsIHNlcnZlcjIucG9ydCgpXV1dOworICAgICAgICAgICAgQVBQX0JPVU5EX1JFUVVFU1RfQURE
SVRJT05TCisgICAgICAgICAgICByZXF1ZXN0MiA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKKyAgICAg
ICAgfQorCisgICAgICAgIGlzRG9uZSA9IGZhbHNlOworICAgICAgICBbd2ViVmlldzEgX2NsZWFy
QXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeeworICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAg
ICAgICAgfV07CisKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwor
CisgICAgICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpyZXF1ZXN0Ml07CisgICAgICAgIEVYUEVD
VF9XS19TVFJFUShbd2ViVmlldzIgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN5bnRoZXRpYyByZXNw
b25zZSIpOworICAgIH0KKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIGJvb2wgZXhwZWN0aW5n
QXBwQm91bmRSZXF1ZXN0cyA9IGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6WWVzID8gdHJ1ZSA6
IGZhbHNlOworICAgIHdoaWxlICghaXNEb25lKSB7CisgICAgICAgIFt3ZWJWaWV3MiBfYXBwQm91
bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0
YSBkYXRhKSB7CisgICAgICAgICAgICBpZiAoIWRhdGEuZGlkUGVyZm9ybVNvZnRVcGRhdGUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsK
KyAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRl
c3RpbmcsICFleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKKyAgICAgICAgICAgIGlzRG9uZSA9
IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVu
TG9vcCgxKTsKKyAgICB9Cit9CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRS
ZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlKQoreworICAgIHNvZnRVcGRhdGVUZXN0
KElzQXBwQm91bmQ6Olllcyk7Cit9CisKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBw
Qm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlKQoreworICAgIHNvZnRVcGRh
dGVUZXN0KElzQXBwQm91bmQ6Ok5vKTsKK30KICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>