<?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>238503</bug_id>
          
          <creation_ts>2022-03-29 06:38:51 -0700</creation_ts>
          <short_desc>ServiceWorkerClients.openWindow should not need to get all clients asynchronously to resolve its promise</short_desc>
          <delta_ts>2022-04-06 03:06:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          
          <blocked>238664</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1856002</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-29 06:38:51 -0700</bug_when>
    <thetext>ServiceWorkerClients.openWindow promise should reject if no WebPageProxy is created</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856004</commentid>
    <comment_count>1</comment_count>
      <attachid>456020</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-29 06:48:10 -0700</bug_when>
    <thetext>Created attachment 456020
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856006</commentid>
    <comment_count>2</comment_count>
      <attachid>456021</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-29 06:53:32 -0700</bug_when>
    <thetext>Created attachment 456021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856090</commentid>
    <comment_count>3</comment_count>
      <attachid>456021</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-29 10:51:56 -0700</bug_when>
    <thetext>Comment on attachment 456021
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856092</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-29 10:57:11 -0700</bug_when>
    <thetext>This patch is incorrect.

We had multiple back and forths in the openWindow patch. There&apos;s no bug here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856170</commentid>
    <comment_count>5</comment_count>
      <attachid>456021</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-29 13:35:53 -0700</bug_when>
    <thetext>Comment on attachment 456021
Patch

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

In general, I strongly, strongly dislike patches that replace callback signatures with either &quot;auto&quot; or a using/typedef.

It make this review much harder than it should&apos;ve been, and will force future maintainers of the code into a similarly hard &quot;just read the code&quot; problem.

I think it makes the code worse.

Please consider not making those changes.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:191
&gt; +    auto innerCallback = [callback = WTFMove(callback), server = WeakPtr { *server }, origin = worker-&gt;origin()](std::optional&lt;WebCore::PageIdentifier&gt;&amp;&amp; pageIdentifier) mutable {
&gt; +        if (!pageIdentifier) {
&gt; +            callback(makeUnexpected(ExceptionData { TypeError, &quot;openWindow failed opening a tab&quot;_s }));
&gt; +            return;
&gt; +        }

All the other changes in this patch are fine.

But this one is wrong (and why I r-&apos;ed the patch based on description alone)

It is *OKAY AND EXPECTED* for the UI process client to return a nil WKWebView, which translates to a missing PageIdentiier, which *should* translate to a null WindowClient in the promise.

If an API client purposefully denies a popup, the situation is not &quot;an exception occurred&quot;, but rather &quot;your attempt to openWindow resulted in a null WindowClient&quot;

We should not be directly and explicitly communicating API client policies to web pages like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856186</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-29 14:25:11 -0700</bug_when>
    <thetext>&gt; We should not be directly and explicitly communicating API client policies
&gt; to web pages like this.

Are you saying that our goal is to hide what happened from the webpage? If so, I don&apos;t understand that goal, and also I don&apos;t think the proposed alternative to resolve with null achieves the goal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856204</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-29 14:54:24 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #6)
&gt; &gt; We should not be directly and explicitly communicating API client policies
&gt; &gt; to web pages like this.
&gt; 
&gt; Are you saying that our goal is to hide what happened from the webpage? If
&gt; so, I don&apos;t understand that goal, and also I don&apos;t think the proposed
&gt; alternative to resolve with null achieves the goal.

Resolving with null is the specified way to tell the service worker &quot;your request to open a window went fine, but it did not result in a WindowClient you can access&quot;

The spec also makes it clear that rejecting these promises is for errors/exceptions.

My argument is that the client refusing to open the window is expected, not an error/exception.

It&apos;s not something actionable from the web content&apos;s standpoint. Nothing they can explore or fix.

I&apos;m not sure what the use case is for differentiating. And without a use case, I don&apos;t see why we&apos;d do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856208</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-29 14:57:41 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #7)
&gt; (In reply to Geoffrey Garen from comment #6)
&gt; &gt; &gt; We should not be directly and explicitly communicating API client policies
&gt; &gt; &gt; to web pages like this.
&gt; &gt; 
&gt; &gt; Are you saying that our goal is to hide what happened from the webpage? If
&gt; &gt; so, I don&apos;t understand that goal, and also I don&apos;t think the proposed
&gt; &gt; alternative to resolve with null achieves the goal.
&gt; 
&gt; Resolving with null is the specified way to tell the service worker &quot;your
&gt; request to open a window went fine, but it did not result in a WindowClient
&gt; you can access&quot;
&gt; 
&gt; The spec also makes it clear that rejecting these promises is for
&gt; errors/exceptions.
&gt; 
&gt; My argument is that the client refusing to open the window is expected, not
&gt; an error/exception.
&gt; 
&gt; It&apos;s not something actionable from the web content&apos;s standpoint. Nothing
&gt; they can explore or fix.
&gt; 
&gt; I&apos;m not sure what the use case is for differentiating. And without a use
&gt; case, I don&apos;t see why we&apos;d do it.

I thought I added this example in my reply, but apparently forgot:

According to the spec, only exceptions thrown from the Navigation algorithm should reject the promise.
*Failed navigations* don&apos;t even throw an exception.
Eg. a 404 or 500+ response don&apos;t even reject the promise.

A failed navigation returns null, and I also don&apos;t see how the client refusing to open the window is specially different from a failed navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856217</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-29 15:31:06 -0700</bug_when>
    <thetext>&gt; Resolving with null is the specified way to tell the service worker &quot;your
&gt; request to open a window went fine, but it did not result in a WindowClient
&gt; you can access&quot;

It sounds like the concern is the best way to match the spec, then?

FWIW, the spec just doesn&apos;t address this topic, since it assumes that the window will open.

You could argue that 7.2 means the promise should neither resolve nor reject, since the queued task will never dequeue if it is queued to null.

You could argue that 7.2.1 means throw an exception, since we will fail the &quot;allowed to navigate&quot; check, since null is not same-origin with us.

Or you could argue that 7.7.1 means resolve with null, since null is not same-origin with us (though why not trigger the same logic earlier at 7.2.1?)

Or you could argue that the general spirit of the spec means resolve with null, since the spec only requires an exception if the URL is invalid, or there&apos;s a same-origin violation, or there&apos;s no user gesture, and if we assume that null is not obviously not-same-origin with us then this condition is not obviously one of those conditions, and we should be parsimonious with exceptions.

I see how this ambiguity could give rise to debate, but should it really rise to the level of an r-? I would tend to think that any of these behaviors might be reasonable, and the best next step would be to land a patch with a reasonable guess and file a github issue to specify this behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856313</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-30 00:38:25 -0700</bug_when>
    <thetext>FWIW, the main goal of this patch is to make sure that if delegate is not implemented (which will happen for lots of apps), we do as if openWindow is not implemented and reject the promise.
I think this is desireable behavior.

Whether we should reject or resolve with null in case of a blocked navigation is a different but interesting debate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856558</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-30 13:53:41 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #9)
&gt; &gt; Resolving with null is the specified way to tell the service worker &quot;your
&gt; &gt; request to open a window went fine, but it did not result in a WindowClient
&gt; &gt; you can access&quot;
&gt; 
&gt; It sounds like the concern is the best way to match the spec, then?
&gt; 
&gt; FWIW, the spec just doesn&apos;t address this topic, since it assumes that the
&gt; window will open.
&gt; 
&gt; You could argue that 7.2 means the promise should neither resolve nor
&gt; reject, since the queued task will never dequeue if it is queued to null.

This could be argued (but I am not arguing it).

&gt; You could argue that 7.2.1 means throw an exception, since we will fail the
&gt; &quot;allowed to navigate&quot; check, since null is not same-origin with us.

Let&apos;s set aside the issue that the &quot;Navigate&quot; steps are nonsensical in this context because a service worker instance is by definite not a &quot;source browsing context&quot;...

This scenario does *not* fail &quot;allowed to navigate&quot;.

It doesn&apos;t fail #1 because B is a top level browsing context
It doesn&apos;t fail #2 because A is not an ancestor of B
It doesn&apos;t fail #3 because we don&apos;t have the sandbox flags in play
It falls into #4 - true


&gt; 
&gt; Or you could argue that 7.7.1 means resolve with null, since null is not
&gt; same-origin with us (though why not trigger the same logic earlier at 7.2.1?)

I AM arguing 7.7.1 means resolve with null.
See above on why 7.2.1 doesn&apos;t apply.

&gt; Or you could argue that the general spirit of the spec means resolve with
&gt; null, 

I am arguing the general spirit of the spec means resolve with null unless something exceptional happened or the calling script did something disallowed or malformed.

&gt; I see how this ambiguity could give rise to debate, but should it really
&gt; rise to the level of an r-? 

Yes, and here&apos;s why:

&gt; I would tend to think that any of these
&gt; behaviors might be reasonable, and the best next step would be to land a
&gt; patch with a reasonable guess and file a github issue to specify this
&gt; behavior.

The current behavior in the tree was r+&apos;ed and landed.
The proposed patch is therefore the one that&apos;s given rise to debate.

The default should not be &quot;let&apos;s land the patch that is causing debate then sort it out later&quot;, it should be &quot;let&apos;s leave things where they are and sort it out later.&quot;

This patch does great things that should be landed - except for this one change, which I believe makes us go against both the letter and spirit of the spec.

I&apos;d happily r+ this patch without the &quot;null WKWebView means rejecting with an error&quot; change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856570</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-30 14:29:40 -0700</bug_when>
    <thetext>&gt; &gt; You could argue that 7.2 means the promise should neither resolve nor
&gt; &gt; reject, since the queued task will never dequeue if it is queued to null.
&gt; 
&gt; This could be argued (but I am not arguing it).

OK -- but what is your response to this argument, given your strident belief that the spec mandates resolving with null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857046</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-31 17:03:05 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #12)
&gt; &gt; &gt; You could argue that 7.2 means the promise should neither resolve nor
&gt; &gt; &gt; reject, since the queued task will never dequeue if it is queued to null.
&gt; &gt; 
&gt; &gt; This could be argued (but I am not arguing it).
&gt; 
&gt; OK -- but what is your response to this argument, given your strident belief
&gt; that the spec mandates resolving with null?

My response would be that never resolving the promise would be nonsensical, and is probably not the intention of the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857227</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-01 04:26:01 -0700</bug_when>
    <thetext>&gt; The current behavior in the tree was r+&apos;ed and landed.

I r+ed it and agreed to land it in the interest of time, not because I agreed with that behavior.
At the time of my r+, I provided feedback about these edge cases, in particular about what Chrome and Firefox are doing there.

I had a look at Chrome code.
Chrome is rejecting the promise in some cases that the spec does not define, like openWindow(&apos;file://&apos;).
I filed https://bugs.webkit.org/show_bug.cgi?id=238658 to keep track of that.

Chrome has the infrastructure to reject the promise based on the openWindow result gathered from the main process: https://source.chromium.org/chromium/chromium/src/+/main:content/browser/service_worker/service_worker_client_utils.cc;l=429;drc=7fb345a0da63049b102e1c0bcdc8d7831110e324.
A few things worth noting (from code inspection so this needs actual validation):
- It seems the default implementation of the callback (no tab is created) will trigger rejection of the promise. This is inline with this patch.
- If openWindow triggers creation of a tab that quickly got closed, promise is resolved with null. This is inline with what we are doing with and without the patch.


&gt; The proposed patch is therefore the one that&apos;s given rise to debate.

Not really, the debate was already there at the initial patch time.

&gt; I&apos;d happily r+ this patch without the &quot;null WKWebView means rejecting with
&gt; an error&quot; change.

Let&apos;s do that for now and let&apos;s continue the discussion on what we want/what others are doing.
I filed https://github.com/w3c/ServiceWorker/issues/1639 to follow-up on the spec side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857235</commentid>
    <comment_count>15</comment_count>
      <attachid>456349</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-01 04:54:36 -0700</bug_when>
    <thetext>Created attachment 456349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857239</commentid>
    <comment_count>16</comment_count>
      <attachid>456351</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-01 05:22:15 -0700</bug_when>
    <thetext>Created attachment 456351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857242</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-01 05:32:55 -0700</bug_when>
    <thetext>Uploaded a new patch that does not reject in case of no page identifier here, this should hopefully get consensus.

I uploaded a follow-up patch at https://bugs.webkit.org/show_bug.cgi?id=238664, which:
- rejects in case of no page identifier
- always return a page identifier if the delegate to create one returns a page (Meaning that a blocked load would end up resolving with null).
Let&apos;s continue the discussion there on the exact behavior we want for those edge cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857287</commentid>
    <comment_count>18</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-01 09:47:57 -0700</bug_when>
    <thetext>&gt; &gt; OK -- but what is your response to this argument, given your strident belief
&gt; &gt; that the spec mandates resolving with null?
&gt; 
&gt; My response would be that never resolving the promise would be nonsensical,
&gt; and is probably not the intention of the spec.

Why is a promise that does not resolve nonsensical? There are plenty of spec-compliant ways to make a promise that does not resolve. For example, &quot;new Promise&quot;. Or simply closing the window (&quot;Remove any tasks associated with document in any task source, without running those tasks....&quot;).

Why should we stretch a probably guess at the intention behind a spec to the point where it contradicts the spec&apos;s plain written meaning? Wouldn&apos;t that approach invalidate the written texts of all specs, in favor of our own preferences?

At this point, my best understanding of your feedback is, &quot;I have an opinion about the best behavior here&quot;. It&apos;s OK to have an opinion!

But I don&apos;t think it&apos;s fair to marshal the current spec in favor of your opinion when the spec&apos;s plain written meaning (&quot;Queue a task to run the following steps on newContext’s Window object....&quot;) contradicts.

It&apos;s also not obvious to me that spec discussion will ultimately change the spec in favor of your opinion, given that at least one other spec participant (Youenn) has a different opinion. So an assertion about spec &quot;intention&quot; would seem to lack grounding, or to be a projection of your own intention (which is OK, since you are a spec participant, but not definitive).

On the meta level, we should be thoughtful and parsimonious about the use of r-, and especially r- overriding an r+, when a patch includes tests, passes existing tests, and otherwise conforms to project guidelines. The purpose of patch review is primarily mentoring and learning rather than gatekeeping, and &quot;I have a conflicting opinion&quot; feels more toward the gatekeeping side of the spectrum, especially when the opinion is about a a substantially rare edge case (like, do we even know how to make this case happen in real life, outside an API test?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858365</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-05 06:39:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/91290460&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858391</commentid>
    <comment_count>20</comment_count>
      <attachid>456351</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-05 08:57:44 -0700</bug_when>
    <thetext>Comment on attachment 456351
Patch

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

r=me

&gt; Source/WebCore/workers/service/server/SWServer.cpp:123
&gt; +        if (clientIterator-&gt;value-&gt;frameType == ServiceWorkerClientFrameType::TopLevel &amp;&amp; clientIterator-&gt;value-&gt;pageIdentifier &amp;&amp; *clientIterator-&gt;value-&gt;pageIdentifier == pageIdentifier)

`&amp;&amp; clientIterator-&gt;value-&gt;pageIdentifier &amp;&amp; *clientIterator-&gt;value-&gt;pageIdentifier == pageIdentifier`
can be replaced with:
`&amp;&amp; clientIterator-&gt;value-&gt;pageIdentifier == pageIdentifier`

std::optional&apos;s operator== will do the right thing for you.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:202
&gt; +    m_connection.networkProcess().parentProcessConnection()-&gt;sendWithAsyncReply(Messages::NetworkProcessProxy::OpenWindowFromServiceWorker { m_connection.sessionID(), url.string(), worker-&gt;origin().clientOrigin }, WTFMove(innerCallback));

Seems we should just IPC the URL, not the URL as a String. Looks like we end up needing a URL in the UIProcess eventually anyway.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:2970
&gt; +static const char* ServiceWorkerWindowClientOpenWindowMain =

static constexpr auto

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:3011
&gt; +&quot;});&quot;;

Needs a &quot;&quot;_s suffix (note that I am about to make the String(const char*) constructor explicit to force people to use ASCIILiteral.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:3029
&gt; +            [preferences _setEnabled:NO forInternalDebugFeature:feature];

Seems you can break; after finding the setting you care about.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:3038
&gt; +        { &quot;/&quot;, { ServiceWorkerWindowClientOpenWindowMain } },

&quot;/&quot;_s

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:3039
&gt; +        { &quot;/sw.js&quot;, { {{ &quot;Content-Type&quot;, &quot;application/javascript&quot; }}, ServiceWorkerWindowClientOpenWindowJS } }

Missing 3 _s suffixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858660</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-04-05 17:23:03 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #18)
&gt; &gt; &gt; OK -- but what is your response to this argument, given your strident belief
&gt; &gt; &gt; that the spec mandates resolving with null?
&gt; &gt; 
&gt; &gt; My response would be that never resolving the promise would be nonsensical,
&gt; &gt; and is probably not the intention of the spec.
&gt; 
&gt; Why is a promise that does not resolve nonsensical? There are plenty of
&gt; spec-compliant ways to make a promise that does not resolve. For example,
&gt; &quot;new Promise&quot;. Or simply closing the window (&quot;Remove any tasks associated
&gt; with document in any task source, without running those tasks....&quot;).

Not nonsensical, then.

But also probably not the intention of the spec.

&gt; Why should we stretch a probably guess at the intention behind a spec to the
&gt; point where it contradicts the spec&apos;s plain written meaning? Wouldn&apos;t that
&gt; approach invalidate the written texts of all specs, in favor of our own
&gt; preferences?

I don&apos;t follow this point: Are the written tests that show my reading of the spec is wrong?

&gt; At this point, my best understanding of your feedback is, &quot;I have an opinion
&gt; about the best behavior here&quot;. It&apos;s OK to have an opinion!
&gt; 
&gt; But I don&apos;t think it&apos;s fair to marshal the current spec in favor of your
&gt; opinion when the spec&apos;s plain written meaning (&quot;Queue a task to run the
&gt; following steps on newContext’s Window object....&quot;) contradicts.

It sounds like you have a 3rd opinion of the specced behavior, which IMHO further supports not changing things!

&gt; It&apos;s also not obvious to me that spec discussion will ultimately change the
&gt; spec in favor of your opinion, given that at least one other spec
&gt; participant (Youenn) has a different opinion. So an assertion about spec
&gt; &quot;intention&quot; would seem to lack grounding, or to be a projection of your own
&gt; intention (which is OK, since you are a spec participant, but not
&gt; definitive).

I don&apos;t see the point in committing to one behavior (like, literally committing it to the tree), then changing the behavior we commit to, when there&apos;s no agreement.

&gt; On the meta level, we should be thoughtful and parsimonious about the use of
&gt; r-, and especially r- overriding an r+, when a patch includes tests, passes
&gt; existing tests, and otherwise conforms to project guidelines. 

By this logic, any patch that includes tests, passes existing tests, and otherwise conforms to project guidelines is immune to a second review, even if a second reviewer has a concretely objective reason to r- (e.g. an unambiguous reading of the spec that the author and first reviewer missed)

I don&apos;t think this logic is fleshed out enough to be a hard-and-fast rule.

My r- here was not meant to be a judgement on anyones character, competency, code quality, review quality, etc etc.

&quot;Not meant to be taken personally&quot;

It was meant to be more of an emergency stop to a patch that I saw ready to land - and perhaps moments away from landing - that I spotted a problem with that the author and reviewer didn&apos;t spot.

I&apos;ve been the one in the position of having written a patch, gotten an r+, and then had an r- come along after because something was spotted that should stop it.
I didn&apos;t take it personally or think it was counterproductive.

I&apos;ve also been the one in the position of having r+&apos;ed a patch, then had an r- come shortly therefore having spotted something not original spotted.
I didn&apos;t take it personally or think it was counterproductive.

I don&apos;t think it would be healthy for the project to have a policy where if a second reviewer spots a problem with a patch that hasn&apos;t quite landed yet, they delay it a bit.

&gt; The purpose of patch review is primarily mentoring and learning rather than gatekeeping,
&gt; and &quot;I have a conflicting opinion&quot; feels more toward the gatekeeping side of
&gt; the spectrum, especially when the opinion is about a a substantially rare
&gt; edge case (like, do we even know how to make this case happen in real life,
&gt; outside an API test?).

This patch and review (bizarrely to me!) has been uncommonly contentious.

My intention was not gatekeeping the entire patch.

As implicitly and explicitly expressed at various stages, my issue was one *one very small piece of the patch*, and I wasn&apos;t trying to &quot;flex&quot; or contend that my opinion was more valuable then the author&apos;s or reviewer&apos;s.

My take was:
&quot;This patch does good things, but this one small part of it seems very wrong to me. Let&apos;s not land it with this one small part that seems very wrong to me until we can come to a consensus&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858702</commentid>
    <comment_count>22</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-06 00:07:38 -0700</bug_when>
    <thetext>Thanks for the review.

&gt; &gt; Source/WebCore/workers/service/server/SWServer.cpp:123
&gt; &gt; +        if (clientIterator-&gt;value-&gt;frameType == ServiceWorkerClientFrameType::TopLevel &amp;&amp; clientIterator-&gt;value-&gt;pageIdentifier &amp;&amp; *clientIterator-&gt;value-&gt;pageIdentifier == pageIdentifier)
&gt; 
&gt; `&amp;&amp; clientIterator-&gt;value-&gt;pageIdentifier &amp;&amp;
&gt; *clientIterator-&gt;value-&gt;pageIdentifier == pageIdentifier`
&gt; can be replaced with:
&gt; `&amp;&amp; clientIterator-&gt;value-&gt;pageIdentifier == pageIdentifier`
&gt; 
&gt; std::optional&apos;s operator== will do the right thing for you.

Done

&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:202
&gt; &gt; +    m_connection.networkProcess().parentProcessConnection()-&gt;sendWithAsyncReply(Messages::NetworkProcessProxy::OpenWindowFromServiceWorker { m_connection.sessionID(), url.string(), worker-&gt;origin().clientOrigin }, WTFMove(innerCallback));
&gt; 
&gt; Seems we should just IPC the URL, not the URL as a String. Looks like we end
&gt; up needing a URL in the UIProcess eventually anyway.

Agreed, but this is preexisting, let&apos;s do that as a follow-up.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:2970
&gt; &gt; +static const char* ServiceWorkerWindowClientOpenWindowMain =
&gt; 
&gt; static constexpr auto
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:3011
&gt; &gt; +&quot;});&quot;;
&gt; 
&gt; Needs a &quot;&quot;_s suffix (note that I am about to make the String(const char*)
&gt; constructor explicit to force people to use ASCIILiteral.
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:3029
&gt; &gt; +            [preferences _setEnabled:NO forInternalDebugFeature:feature];
&gt; 
&gt; Seems you can break; after finding the setting you care about.
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:3038
&gt; &gt; +        { &quot;/&quot;, { ServiceWorkerWindowClientOpenWindowMain } },
&gt; 
&gt; &quot;/&quot;_s
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ServiceWorkerBasic.mm:3039
&gt; &gt; +        { &quot;/sw.js&quot;, { {{ &quot;Content-Type&quot;, &quot;application/javascript&quot; }}, ServiceWorkerWindowClientOpenWindowJS } }
&gt; 
&gt; Missing 3 _s suffixes.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858712</commentid>
    <comment_count>23</comment_count>
      <attachid>456787</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-06 00:46:27 -0700</bug_when>
    <thetext>Created attachment 456787
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858723</commentid>
    <comment_count>24</comment_count>
      <attachid>456791</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-06 01:35:37 -0700</bug_when>
    <thetext>Created attachment 456791
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858745</commentid>
    <comment_count>25</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-06 03:06:14 -0700</bug_when>
    <thetext>Committed r292456 (249307@main): &lt;https://commits.webkit.org/249307@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456791.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456020</attachid>
            <date>2022-03-29 06:48:10 -0700</date>
            <delta_ts>2022-03-29 06:53:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238503-20220329154808.patch</filename>
            <type>text/plain</type>
            <size>26405</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I1MTQzYTBhMjA0MTcw
MDcwMmEyMDc5ZmMzZGNmZTIwNzJhYzY3YS4uYmEyZDFhMDUzNDMxNTRiYjlkZGFhMTE1MzdjZTQ3
ZjEzYWJjMjdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAzLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50cy5vcGVuV2luZG93IHByb21pc2Ugc2hvdWxkIHJlamVjdCBpZiBubyBXZWJQYWdlUHJveHkg
aXMgY3JlYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW92ZSBtYXRjaGluZyBjbGllbnQgaW4gb3BlbldpbmRvdyBpbiBuZXR3b3JrIHByb2Nlc3Mg
YXMgYW4gb3B0aW1pemF0aW9uLgorICAgICAgICBUaGlzIGFsc28gcHJldmVudHMgc29tZSByYWNl
IGNvbmRpdGlvbnMgd2hlcmUgdGhlIG9wZW5lZCBwYWdlIGNvdWxkIHF1aWNrbHkgbmF2aWdhdGUg
dG8gYW5vdGhlciBwYWdlLgorICAgICAgICBBbHNvIGhhdmUgYSBjb2RlIHBhdGggdGhhdCByZWpl
Y3RzIHRoZSBvcGVuV2luZG93IHByb21pc2UsIGFuZCB0cmlnZ2VyIHRoYXQgY29kZSBwYXRoIGlu
IGNhc2Ugb3BlbmluZG93IGZhaWxlZCBvcGVuaW5nIGEgbmV3IHRhYi4KKworICAgICAgICBDb3Zl
cmVkIGJ5IGV4aXN0aW5nIGFuZCBBUEkgdGVzdC4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKwog
MjAyMi0wMy0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IHBlcnNpc3RlbnQgbm90aWZpY2F0aW9uIGhhbmRsaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM1
ODNhYTZiMDg0ZTUzNjFjYjhlZTgzODJkMjE0OTc3ZWNmM2ZhNjAuLmU1MmM3YmZmODUyOWJjOGU5
YjE4OWZlNjM1MzNmY2ZmODUzNzA0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjIt
MDMtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZp
Y2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGlmIG5vIFdl
YlBhZ2VQcm94eSBpcyBjcmVhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgbG9naWMgdG8gZ2V0IHRoZSBjbGllbnQgZnJvbSBpdHMgcGFnZSBJ
RC4KKyAgICAgICAgSWYgdGhlcmUgaXMgbm8gcGFnZSBJRCwgb3IgaW4gb3RoZXIgaW50ZXJuYWwg
ZXJyb3IgY2FzZSwgdHJpZ2dlciBwcm9taXNlIHJlamVjdGlvbiBpbnN0ZWFkIG9mIHByb21pc2Ug
cmVzb2x1dGlvbiB3aXRoIG51bGwuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorCiAyMDIyLTAzLTI5
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQg
cGVyc2lzdGVudCBub3RpZmljYXRpb24gaGFuZGxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAzY2NlN2Y1ODdjYTk1MmQ5MmQ3MWVhMTljOGE3MGFi
NTA1OGNhZGE2Li5lYWE1ODIwNzRmYWZjNDY0YzMyOGY4M2U2NTI4YmRhMDdkY2MyZDUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiSW1h
Z2VCaXRtYXAuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU3VwcGxlbWVudGFibGUuaCIKQEAgLTE1Niw2ICsxNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRNYWluU2NyaXB0U291cmNlUHJvdmlkZXIoU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIm
KTsKICAgICB2b2lkIGFkZEltcG9ydGVkU2NyaXB0U291cmNlUHJvdmlkZXIoY29uc3QgVVJMJiwg
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXImKTsKIAorICAgIENsaWVudE9yaWdpbiBjbGllbnRP
cmlnaW4oKSBjb25zdCB7IHJldHVybiB7IHRvcE9yaWdpbigpLmRhdGEoKSwgc2VjdXJpdHlPcmln
aW4oKS0+ZGF0YSgpIH07IH0KKwogcHJvdGVjdGVkOgogICAgIFdvcmtlckdsb2JhbFNjb3BlKFdv
cmtlclRocmVhZFR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYsIFdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
cy5jcHAKaW5kZXggODRhZTY3ZTM5N2VkYmYxODQyMWQwMGVmYzUzMjRjOWEwOTQ1YjZjMS4uY2Fk
NWUyN2FkMWU2MjhkOTJhNzc3N2NkOTI1ZmIxMjQxNGRiOTMyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCkBA
IC05MCwzOCArOTAsMTYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6bWF0Y2hBbGwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgQ2xpZW4KICAgICB9KTsKIH0KIAot
c3RhdGljIHZvaWQgbWF0Y2hXaW5kb3dXaXRoUGFnZUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYs
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+KT4mJiBjYWxsYmFjaykKLXsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcGFnZUlkZW50
aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewotICAgICAg
ICBhdXRvIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0
aW9uKCk7Ci0gICAgICAgIGF1dG8gb3B0aW9ucyA9IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9w
dGlvbnMgeyB0cnVlLCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93IH07Ci0gICAgICAg
IGNvbm5lY3Rpb24tPm1hdGNoQWxsKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBvcHRpb25zLCBb
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIHBhZ2VJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmIGNsaWVudHNE
YXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcGFnZUlk
ZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNsaWVudHNEYXRhID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUoY2xpZW50c0RhdGEpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGRhdGEgOiBjbGllbnRzRGF0YSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoZGF0YS5wYWdlSWRlbnRpZmllciA9PSBwYWdlSWRlbnRpZmll
cikgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc2NvcGUsIGRhdGEpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soc2NvcGUsIHN0ZDo6bnVs
bG9wdCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQg
U2VydmljZVdvcmtlckNsaWVudHM6Om9wZW5XaW5kb3coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKIHsKICAgICBMT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3MgJWkgc2Vydmlj
ZSB3b3JrZXIgY2FsbGluZyBvcGVuV2luZG93IHRvIFVSTCAlcyIsIGdldHBpZCgpLCB1cmxTdHJp
bmcudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0g
ZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5pZGVu
dGlmaWVyKCk7Ci0gICAgYXV0byB1cmwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKHVybFN0cmluZyk7
Ci0KICAgICBpZiAoY29udGV4dC5zZXR0aW5nc1ZhbHVlcygpLnNlcnZpY2VXb3JrZXJzVXNlckdl
c3R1cmVFbmFibGVkICYmICFkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRl
eHQpLmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwgIlNlcnZpY2VXb3JrZXJDbGllbnRzLm9w
ZW5XaW5kb3coKSByZXF1aXJlcyBhIHVzZXIgZ2VzdHVyZSJfcyB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcp
OwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJVUkwgc3RyaW5nICIsIHVybFN0cmluZywg
IiBjYW5ub3Qgc3VjY2Vzc2Z1bGx5IGJlIHBhcnNlZCJfcykgfSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTEzMiwzMSArMTEwLDM0IEBAIHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6Om9wZW5XaW5k
b3coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZG93bmNh
c3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5pZGVudGlmaWVy
KCk7CiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlzZUlkZW50aWZpZXIgPSBhZGRQZW5kaW5n
UHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCA9
IHVybC5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gY29ubmVjdGlv
biA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKLSAgICAgICAg
Y29ubmVjdGlvbi0+b3BlbldpbmRvdyhzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLnN0cmlu
ZygpLCBbcHJvbWlzZUlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXSAoc3RkOjpv
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJiBwYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdv
cmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VJZGVudGlmaWVyLCBwYWdlSWRl
bnRpZmllciA9IFdURk1vdmUocGFnZUlkZW50aWZpZXIpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cl0gKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2VzcyAlaSBmaW5pc2hlZCBTZXJ2aWNl
V29ya2VyQ2xpZW50czo6b3BlbldpbmRvdyBjYWxsLiBSZXN1bHRpbmcgcGFnZSBpZGVudGlmaWVy
IGlzICVzIiwgZ2V0cGlkKCksIHBhZ2VJZGVudGlmaWVyID8gcGFnZUlkZW50aWZpZXItPmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpIDogIjxOT05FPiIpOworICAgICAgICBjb25uZWN0aW9u
LT5vcGVuV2luZG93KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwsIFtwcm9taXNlSWRlbnRp
Zmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2
aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZUlkZW50aWZpZXIsIHJl
c3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSAoU2VydmljZVdvcmtlckds
b2JhbFNjb3BlJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgTE9HKFNlcnZpY2VX
b3JrZXIsICJXZWJQcm9jZXNzICVpIGZpbmlzaGVkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpvcGVu
V2luZG93IGNhbGwgcmVzdWx0IGlzICVkLiIsIGdldHBpZCgpLCAhcmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKTsKIAotICAgICAgICAgICAgICAgIGlmICghcGFnZUlkZW50aWZpZXIpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gcHJvbWlzZSA9IHNjb3BlLmNsaWVudHMoKS50YWtlUGVuZGlu
Z1Byb21pc2UocHJvbWlzZUlkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJv
bWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVlKEpTQzo6anNOdWxsKCkpOworICAgICAgICAgICAgICAg
IGF1dG8gcHJvbWlzZSA9IHNjb3BlLmNsaWVudHMoKS50YWtlUGVuZGluZ1Byb21pc2UocHJvbWlz
ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIGlmICghcHJvbWlzZSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG1h
dGNoV2luZG93V2l0aFBhZ2VJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCAqcGFn
ZUlkZW50aWZpZXIsIFtwcm9taXNlSWRlbnRpZmllcl0gKGF1dG8mIHNjb3BlLCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnREYXRhKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgICAgICAgICAgYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50cygpLnRha2VQZW5kaW5n
UHJvbWlzZShwcm9taXNlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcHJv
bWlzZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAoIWNs
aWVudERhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmVXaXRo
SlNWYWx1ZShKU0M6OmpzTnVsbCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGF1dG8gY2xpZW50RGF0YSA9
IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNsaWVu
dERhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVl
KEpTQzo6anNOdWxsKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGF1dG8gY2xpZW50ID0gU2VydmljZVdvcmtl
ckNsaWVudDo6Y3JlYXRlKHNjb3BlLCBXVEZNb3ZlKCpjbGllbnREYXRhKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHByb21pc2UtPnRlbXBsYXRlIHJlc29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VX
b3JrZXJDbGllbnQ+PihXVEZNb3ZlKGNsaWVudCkpOwotICAgICAgICAgICAgICAgIH0pOworI2lm
IEFTU0VSVF9FTkFCTEVECisgICAgICAgICAgICAgICAgYXV0byBvcmlnaW5EYXRhID0gU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tVVJMKGNsaWVudERhdGEtPnVybCk7CisgICAgICAgICAgICAgICAg
Q2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IG9yaWdpbkRhdGEsIG9yaWdpbkRhdGEgfTsKKyNl
bmRpZgorICAgICAgICAgICAgICAgIEFTU0VSVChzY29wZS5jbGllbnRPcmlnaW4oKSA9PSBjbGll
bnRPcmlnaW4pOworICAgICAgICAgICAgICAgIHByb21pc2UtPnRlbXBsYXRlIHJlc29sdmU8SURM
SW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJDbGllbnQ+PihTZXJ2aWNlV29ya2VyQ2xpZW50OjpjcmVh
dGUoc2NvcGUsIFdURk1vdmUoKmNsaWVudERhdGEpKSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggOWEyM2M1YWQwMzY2ODBlOWQ4
ZWE4ODNiNmEwOTZjNWI0YTg1OTgxZS4uMGNiMTkyNzQ1ODdjMzk0MWNlMjA5MTc3ZGZjZTM1NTdm
ZGExOWM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtNjcsOCArNjcsMTAgQEAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJD
YWxsYmFjayYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXRjaEFsbChTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNl
cnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBjbGFpbShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
Zm9jdXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+
JiYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYpPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJikgPSAw
OworCisgICAgICAgIHVzaW5nIE9wZW5XaW5kb3dDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+
JiYpPjsKKyAgICAgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFVSTCYsIE9wZW5XaW5kb3dDYWxsYmFjayYmKSA9IDA7CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0QXNJbnNwZWN0ZWQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZDYzYWQwYzRlMjdiMTRiMDRmZTA0NmZj
OWMzMjY2OWYzMmI2YmNhNy4uMmQzNTYwM2Y4MTkzNGJkMWE1ZTQ3NzY2MTgzY2MxODU2Njg4NWZi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKQEAgLTExMiw2ICsxMTIsMjAgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4gU1dTZXJ2ZXI6OnNlcnZpY2VXb3JrZXJDbGllbnRXaXRoT3JpZ2luQnkKICAg
ICByZXR1cm4gY2xpZW50SXRlcmF0b3ItPnZhbHVlOwogfQogCitzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcjo6c2VydmljZVdvcmtlckNsaWVudEZyb21QYWdl
SWRlbnRpZmllcihjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fY2xpZW50
SWRlbnRpZmllcnNQZXJPcmlnaW4uZmluZChjbGllbnRPcmlnaW4pOworICAgIGlmIChpdGVyYXRv
ciA9PSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmVuZCgpKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgZm9yIChhdXRvIGNsaWVudElkZW50aWZpZXIgOiBpdGVyYXRvci0+dmFsdWUu
aWRlbnRpZmllcnMpIHsKKyAgICAgICAgYXV0byBjbGllbnRJdGVyYXRvciA9IG1fY2xpZW50c0J5
SWQuZmluZChjbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGNsaWVudEl0ZXJhdG9yLT52
YWx1ZS5wYWdlSWRlbnRpZmllciAmJiAqY2xpZW50SXRlcmF0b3ItPnZhbHVlLnBhZ2VJZGVudGlm
aWVyID09IHBhZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIGNsaWVudEl0ZXJhdG9y
LT52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KKwogU3RyaW5nIFNXU2VydmVyOjpz
ZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3Jp
Z2luKSBjb25zdAogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJzUGVy
T3JpZ2luLmZpbmQoY2xpZW50T3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCAxZjg5Mjc5ZDgwMTFlYTYxZDRhNmEyNjYy
NTc1YTFkNGVlYzVlY2E5Li44YzdiNzlhM2JkMWI5ZDU5NWJhNWU2OGYzZDhiNWU2ZjRlMzZmYTQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25FdmVudFR5cGUuaCIKKyNp
bmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNXU2VydmVyV29ya2VyLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbkRhdGEuaCIKQEAgLTE2MSw2ICsxNjIsNyBAQCBwdWJsaWM6CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBTV1NlcnZlcldvcmtlciogd29ya2VyQnlJRChTZXJ2aWNlV29ya2VySWRl
bnRpZmllcikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YT4gc2VydmljZVdvcmtlckNsaWVudFdpdGhPcmlnaW5CeUlEKGNvbnN0
IENsaWVudE9yaWdpbiYsIGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyJikg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4gc2VydmljZVdvcmtlckNsaWVudEZyb21QYWdlSWRlbnRpZmllcihjb25zdCBDbGll
bnRPcmlnaW4mLCBQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgU3RyaW5nIHNlcnZpY2VXb3Jr
ZXJDbGllbnRVc2VyQWdlbnQoY29uc3QgQ2xpZW50T3JpZ2luJikgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgU1dTZXJ2ZXJXb3JrZXIqIGFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDdjYTE2YzdhYThkN2I4NGRlZDk4OTRlZWRlYjcwOGI0
M2M2NTYzYWMuLjU2OWIxYWMzMGUyZDQyOTQzYWNjOTU1Yzg5ZWVlYjk0MTg3YTRkMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtODYsNyArODYsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlW
aXNpYmxlSWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBj
bGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBvcGVuV2luZG93KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiYmKT4mJikgPSAwOworICAgIHVzaW5nIE9wZW5XaW5kb3dDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4sIEV4Y2VwdGlvbkRhdGE+JiYpPjsKKyAgICB2aXJ0dWFsIHZvaWQgb3Blbldp
bmRvdyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxi
YWNrJiYpID0gMDsKIAogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURv
bWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KICAgICBzdGQ6Om9w
dGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
cjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAppbmRleCA3ZGZhMGUxODY0OWEwZmUxM2Q0ZjcyNjE1Y2EyODM2MDBjOWY3MGUxLi42ZGIw
NzZiZjk2ZDJlNmQxMzgzNjkyZTIwYjUzMmJjOTk4ODA5YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTcwLDI1ICsxNzAs
MzUgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZUR1ZVRv
VW5yZXNwb25zaXZlbmVzcygpCiAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6VGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyB7IHdlYlByb2Nl
c3NJZGVudGlmaWVyKCkgfSwgMCk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQordm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om9wZW5XaW5kb3coV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIE9wZW5XaW5k
b3dDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGF1dG8qIHNlcnZlciA9IHRoaXMtPnNlcnZl
cigpOwogICAgIGlmICghc2VydmVyKSB7Ci0gICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7
CisgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJy
b3IsICJObyBTV1NlcnZlciJfcyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBh
dXRvKiB3b3JrZXIgPSBzZXJ2ZXItPndvcmtlckJ5SUQoaWRlbnRpZmllcik7CiAgICAgaWYgKCF3
b3JrZXIpIHsKLSAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJh
Y2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIk5vIHJlbWFpbmlu
ZyBzZXJ2aWNlIHdvcmtlciJfcyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBh
dXRvIGlubmVyQ2FsbGJhY2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJiBwYWdlSWRlbnRpZmllcikgbXV0YWJs
ZSB7Ci0gICAgICAgIGNhbGxiYWNrKFdURk1vdmUocGFnZUlkZW50aWZpZXIpKTsKKyAgICBhdXRv
IGlubmVyQ2FsbGJhY2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2VydmVyID0g
V2Vha1B0ciB7ICpzZXJ2ZXIgfSwgb3JpZ2luID0gd29ya2VyLT5vcmlnaW4oKV0oc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJiBwYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7
CisgICAgICAgIGlmICghcGFnZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1h
a2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsICJvcGVuV2luZG93IGZhaWxl
ZCBvcGVuaW5nIGEgdGFiIl9zIH0pKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICghc2VydmVyKSB7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBl
Y3RlZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAiTm8gU1dTZXJ2ZXIiX3MgfSkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2FsbGJhY2soc2VydmVyLT5z
ZXJ2aWNlV29ya2VyQ2xpZW50RnJvbVBhZ2VJZGVudGlmaWVyKG9yaWdpbiwgKnBhZ2VJZGVudGlm
aWVyKSk7CiAgICAgfTsKIAotICAgIG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6T3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyIHsgc2VydmVyLT5zZXNz
aW9uSUQoKSwgdXJsU3RyaW5nLCB3b3JrZXItPm9yaWdpbigpLmNsaWVudE9yaWdpbiB9LCBXVEZN
b3ZlKGlubmVyQ2FsbGJhY2spKTsKKyAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6Ok9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlciB7IG1fY29ubmVj
dGlvbi5zZXNzaW9uSUQoKSwgdXJsLnN0cmluZygpLCB3b3JrZXItPm9yaWdpbigpLmNsaWVudE9y
aWdpbiB9LCBXVEZNb3ZlKGlubmVyQ2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBjbGllbnRzRGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApp
bmRleCAwMTZhODI3NTM1MGFjMWVjMzQ3OTAyYjJmYTM0ZjgyODYzMDlkNWMwLi45ZTgzYjNkYmFi
ODMzMjRjZDZlZDFmMGY4MzAxNTNhNzg2ZDJlMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKSBmaW5hbDsKICAgICB2
b2lkIHRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25zaXZlbmVzcygpIGZpbmFsOwotICAgIHZvaWQgb3Bl
bldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1
cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNr
JiYpIGZpbmFsOwogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCmluZGV4IDIxZDIzNjU1N2M0MzQzOTlkZTk4MThkNjc5M2FjYjY1Y2JjMWU2YmYuLjliMGM3
MGY3N2RhYjcxYzAyODQxNzgwNTJkZDQ3MjJiODI3Y2FkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpA
QCAtNDEsNyArNDEsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24gTm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0QXNJbnNwZWN0ZWQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc0luc3BlY3Rl
ZCkKIAotICAgIE9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgU3RyaW5nIHVybFN0cmluZykgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IG5ld0NsaWVudERhdGEpCisgICAgT3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgdXJsKSAtPiAoRXhwZWN0ZWQ8c3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4sIFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGE+IG5ld0NsaWVudERhdGEpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzNlY2Rl
MjZkOGUwOWM5YmE2MGJkNDUxOGY5YWQwNTVhMDJiNzYyYS4uNjRmYmJhNGZhY2Y3MmYxOWMyOWI3
MzM4MjAyMjRmODM3MGZmMTEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cApAQCAtMzM3LDkgKzMzNywxNSBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcgogICAgICAgICBj
YWxsYmFjayhXVEZNb3ZlKGNsaWVudHNEYXRhKSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246Om9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYm
IGNhbGxiYWNrKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6b3BlbldpbmRv
dyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgVVJMJiB1cmwsIE9wZW5XaW5kb3dDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAg
IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpPcGVuV2luZG93IHsgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIHVybCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9jb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246Ok9wZW5XaW5kb3cgeyBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgdXJsIH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYXV0byYmIHJlc3Vs
dCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CisgICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQuZXJyb3IoKS50b0V4Y2VwdGlvbigpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdC52YWx1
ZSgpKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OmNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggNTg0MjgyYzEwODNlMTQ4NmY5ZTFm
ZTJmODBjMTYwNjZmMGQ1MWFjMi4uM2I1MDVjNzIwMGMzY2YwMDNjYThlMmUzYWI0NWEwMjJiYWM3
ZTg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC04Nyw3ICs4Nyw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSBmaW5hbDsKICAgICB2b2lkIHNldEFzSW5zcGVjdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sKSBmaW5hbDsKLSAgICB2b2lkIG9wZW5XaW5kb3coV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKSBmaW5h
bDsKKyAgICB2b2lkIG9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFVSTCYsIE9wZW5XaW5kb3dDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBt
ZXNzYWdlcy4KICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1ZmM3ZTJkNGRjZDUyMGEx
NzM0ZDk1OGZmNjRhMzQ1OGQwMTY0Y2Q2Li5lNDMzOWQ0MWYwMmVmNjg3OWNmMDg2NTE5NGEyMmY5
MTAxNDdiNmRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDMtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cgcHJv
bWlzZSBzaG91bGQgcmVqZWN0IGlmIG5vIFdlYlBhZ2VQcm94eSBpcyBjcmVhdGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorCiAyMDIyLTAzLTI4ICBM
YXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtBVC1TUEldIGFjY2Vz
c2liaWxpdHkvbmF0aXZlLXRleHQtY29udHJvbC1hdHRyaWJ1dGVkLXN0cmluZy5odG1sIGlzIGZh
aWxpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
U2VydmljZVdvcmtlckJhc2ljLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KaW5kZXggNjBjYzIzNDI4YjZmOTg5NzgyNzYxYjFl
OTg3NTVjMzQ0YjZjMmUxMy4uMjZlZmIzN2NjOGNjODllNGQ5OGEzOTQ4ZDdkMzI1ZDI3N2YxZGVk
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2
aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KQEAgLTI5NjYsMyArMjk2Niw4NCBAQCBURVNUKFNl
cnZpY2VXb3JrZXIsIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnRGb2N1c1JlcXVpcmVzVXNlckdl
c3R1cmUpCiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZm9jdXNDbGllbnQoKSIg
Y29tcGxldGlvbkhhbmRsZXI6IG5pbF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKIH0KKworc3RhdGljIGNvbnN0IGNoYXIqIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnRP
cGVuV2luZG93TWFpbiA9CisiPGRpdiBpZD0nbG9nJz50ZXN0IHBhZ2U8L2Rpdj4iCisiPHNjcmlw
dD4iCisibGV0IHdvcmtlcjsiCisiYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsiCisiICAgIGxvZy5p
bm5lckhUTUwgPSAndGVzdCc7IgorIiAgICB0cnkgeyIKKyIgICAgICAgIGNvbnN0IHJlZ2lzdHJh
dGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKTsi
CisiICAgICAgICBsb2cuaW5uZXJIVE1MID0gJ3JlZ2lzdGVyZWQnOyIKKyIgICAgICAgIGlmIChy
ZWdpc3RyYXRpb24uYWN0aXZlKSB7IgorIiAgICAgICAgICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlv
bi5hY3RpdmU7IgorIiAgICAgICAgICAgIGFsZXJ0KCdhbHJlYWR5IGFjdGl2ZScpOyIKKyIgICAg
ICAgICAgICByZXR1cm47IgorIiAgICAgICAgfSIKKyIgICAgICAgIHdvcmtlciA9IHJlZ2lzdHJh
dGlvbi5pbnN0YWxsaW5nOyIKKyIgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0
ZWNoYW5nZScsICgpID0+IHsiCisiICAgICAgICAgICBsb2cuaW5uZXJIVE1MID0gJ3dvcmtlci5z
dGF0ZT0nICsgd29ya2VyLnN0YXRlOyIKKyIgICAgICAgICAgICBpZiAod29ya2VyLnN0YXRlID09
ICdhY3RpdmF0ZWQnKSIKKyIgICAgICAgICAgICAgICAgYWxlcnQoJ3N1Y2Nlc3NmdWxseSByZWdp
c3RlcmVkJyk7IgorIiAgICAgICAgfSk7IgorIiAgICB9IGNhdGNoKGUpIHsiCisiICAgICAgICBh
bGVydCgnRXhjZXB0aW9uOiAnICsgZSk7IgorIiAgICB9IgorIn0iCisid2luZG93Lm9ubG9hZCA9
IHRlc3Q7IgorIiIKKyJmdW5jdGlvbiBvcGVuV2luZG93Q2xpZW50KCkgeyIKKyIgICAgbG9nLmlu
bmVySFRNTCA9ICdvcGVuV2luZG93Q2xpZW50JzsiCisiICAgIHdvcmtlci5wb3N0TWVzc2FnZSgn
c3RhcnQnKTsiCisiICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLm9ubWVzc2FnZSA9IChldmVu
dCkgPT4geyIKKyIgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnN3LnBvc3RN
ZXNzYWdlKGV2ZW50LmRhdGEpOyIKKyIgICAgfSIKKyJ9IgorIjwvc2NyaXB0PiI7CitzdGF0aWMg
Y29uc3QgY2hhciogU2VydmljZVdvcmtlcldpbmRvd0NsaWVudE9wZW5XaW5kb3dKUyA9Cisic2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKGV2ZW50KSA9PiB7IgorIiAgIHNlbGYuY2xp
ZW50cy5vcGVuV2luZG93KCcvc3cuanMnKS50aGVuKChjbGllbnQpID0+IHsiCisiICAgICAgIGV2
ZW50LnNvdXJjZS5wb3N0TWVzc2FnZShjbGllbnQgPyAnb3BlbmVkIHdpdGggY2xpZW50JyA6ICdv
cGVuZWQgd2l0aG91dCBjbGllbnQnKTsiCisiICAgfSwgKGVycm9yKSA9PiB7IgorIiAgICAgICBl
dmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ25vdCBvcGVuZWQnKTsiCisiICAgfSk7IgorIn0pOyI7
CisKK1RFU1QoU2VydmljZVdvcmtlciwgb3BlbldpbmRvd1dpdGhvdXREZWxlZ2F0ZSkKK3sKKyAg
ICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdp
bnNdOworCisgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3RvcmUKKyAgICBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05T
RGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAg
ICBkb25lID0gZmFsc2U7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gcHJlZmVyZW5jZXMg
PSBbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc107CisKKyAgICBmb3IgKF9XS0ludGVybmFsRGVi
dWdGZWF0dXJlICpmZWF0dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9pbnRlcm5hbERlYnVnRmVhdHVy
ZXNdKSB7CisgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiU2Vydmlj
ZVdvcmtlcnNVc2VyR2VzdHVyZUVuYWJsZWQiXSkKKyAgICAgICAgICAgIFtwcmVmZXJlbmNlcyBf
c2V0RW5hYmxlZDpOTyBmb3JJbnRlcm5hbERlYnVnRmVhdHVyZTpmZWF0dXJlXTsKKyAgICB9CisK
KyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXJXaXRo
RXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJD
b250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIu
Z2V0KCkgbmFtZTpAInN3Il07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAg
ICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IFNl
cnZpY2VXb3JrZXJXaW5kb3dDbGllbnRPcGVuV2luZG93TWFpbiB9IH0sCisgICAgICAgIHsgIi9z
dy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwg
U2VydmljZVdvcmtlcldpbmRvd0NsaWVudE9wZW5XaW5kb3dKUyB9IH0KKyAgICB9KTsKKworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIEVYUEVDVF9XS19T
VFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVy
ZWQiKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAibm90IG9w
ZW5lZCI7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAib3BlbldpbmRvd0NsaWVu
dCgpIiBjb21wbGV0aW9uSGFuZGxlcjogbmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456021</attachid>
            <date>2022-03-29 06:53:32 -0700</date>
            <delta_ts>2022-04-01 04:54:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238503-20220329155330.patch</filename>
            <type>text/plain</type>
            <size>26371</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2I1MTQzYTBhMjA0MTcw
MDcwMmEyMDc5ZmMzZGNmZTIwNzJhYzY3YS4uYmEyZDFhMDUzNDMxNTRiYjlkZGFhMTE1MzdjZTQ3
ZjEzYWJjMjdhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAzLTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50cy5vcGVuV2luZG93IHByb21pc2Ugc2hvdWxkIHJlamVjdCBpZiBubyBXZWJQYWdlUHJveHkg
aXMgY3JlYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW92ZSBtYXRjaGluZyBjbGllbnQgaW4gb3BlbldpbmRvdyBpbiBuZXR3b3JrIHByb2Nlc3Mg
YXMgYW4gb3B0aW1pemF0aW9uLgorICAgICAgICBUaGlzIGFsc28gcHJldmVudHMgc29tZSByYWNl
IGNvbmRpdGlvbnMgd2hlcmUgdGhlIG9wZW5lZCBwYWdlIGNvdWxkIHF1aWNrbHkgbmF2aWdhdGUg
dG8gYW5vdGhlciBwYWdlLgorICAgICAgICBBbHNvIGhhdmUgYSBjb2RlIHBhdGggdGhhdCByZWpl
Y3RzIHRoZSBvcGVuV2luZG93IHByb21pc2UsIGFuZCB0cmlnZ2VyIHRoYXQgY29kZSBwYXRoIGlu
IGNhc2Ugb3BlbmluZG93IGZhaWxlZCBvcGVuaW5nIGEgbmV3IHRhYi4KKworICAgICAgICBDb3Zl
cmVkIGJ5IGV4aXN0aW5nIGFuZCBBUEkgdGVzdC4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKwog
MjAyMi0wMy0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IHBlcnNpc3RlbnQgbm90aWZpY2F0aW9uIGhhbmRsaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM1
ODNhYTZiMDg0ZTUzNjFjYjhlZTgzODJkMjE0OTc3ZWNmM2ZhNjAuLmU1MmM3YmZmODUyOWJjOGU5
YjE4OWZlNjM1MzNmY2ZmODUzNzA0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjIt
MDMtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZp
Y2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cgcHJvbWlzZSBzaG91bGQgcmVqZWN0IGlmIG5vIFdl
YlBhZ2VQcm94eSBpcyBjcmVhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg1MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgbG9naWMgdG8gZ2V0IHRoZSBjbGllbnQgZnJvbSBpdHMgcGFnZSBJ
RC4KKyAgICAgICAgSWYgdGhlcmUgaXMgbm8gcGFnZSBJRCwgb3IgaW4gb3RoZXIgaW50ZXJuYWwg
ZXJyb3IgY2FzZSwgdHJpZ2dlciBwcm9taXNlIHJlamVjdGlvbiBpbnN0ZWFkIG9mIHByb21pc2Ug
cmVzb2x1dGlvbiB3aXRoIG51bGwuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorCiAyMDIyLTAzLTI5
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQg
cGVyc2lzdGVudCBub3RpZmljYXRpb24gaGFuZGxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAzY2NlN2Y1ODdjYTk1MmQ5MmQ3MWVhMTljOGE3MGFi
NTA1OGNhZGE2Li5lYWE1ODIwNzRmYWZjNDY0YzMyOGY4M2U2NTI4YmRhMDdkY2MyZDUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlICJCYXNlNjRVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiSW1h
Z2VCaXRtYXAuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiU3VwcGxlbWVudGFibGUuaCIKQEAgLTE1Niw2ICsxNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRNYWluU2NyaXB0U291cmNlUHJvdmlkZXIoU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIm
KTsKICAgICB2b2lkIGFkZEltcG9ydGVkU2NyaXB0U291cmNlUHJvdmlkZXIoY29uc3QgVVJMJiwg
U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXImKTsKIAorICAgIENsaWVudE9yaWdpbiBjbGllbnRP
cmlnaW4oKSBjb25zdCB7IHJldHVybiB7IHRvcE9yaWdpbigpLmRhdGEoKSwgc2VjdXJpdHlPcmln
aW4oKS0+ZGF0YSgpIH07IH0KKwogcHJvdGVjdGVkOgogICAgIFdvcmtlckdsb2JhbFNjb3BlKFdv
cmtlclRocmVhZFR5cGUsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmln
aW4+JiYsIFdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
cy5jcHAKaW5kZXggODRhZTY3ZTM5N2VkYmYxODQyMWQwMGVmYzUzMjRjOWEwOTQ1YjZjMS4uY2Fk
NWUyN2FkMWU2MjhkOTJhNzc3N2NkOTI1ZmIxMjQxNGRiOTMyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCkBA
IC05MCwzOCArOTAsMTYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6bWF0Y2hBbGwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgQ2xpZW4KICAgICB9KTsKIH0KIAot
c3RhdGljIHZvaWQgbWF0Y2hXaW5kb3dXaXRoUGFnZUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYs
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+KT4mJiBjYWxsYmFjaykKLXsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcGFnZUlkZW50
aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewotICAgICAg
ICBhdXRvIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0
aW9uKCk7Ci0gICAgICAgIGF1dG8gb3B0aW9ucyA9IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9w
dGlvbnMgeyB0cnVlLCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93IH07Ci0gICAgICAg
IGNvbm5lY3Rpb24tPm1hdGNoQWxsKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBvcHRpb25zLCBb
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIHBhZ2VJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmIGNsaWVudHNE
YXRhKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcGFnZUlk
ZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNsaWVudHNEYXRhID0gY3Jv
c3NUaHJlYWRDb3B5KFdURk1vdmUoY2xpZW50c0RhdGEpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGRhdGEgOiBjbGllbnRzRGF0YSkgewotICAg
ICAgICAgICAgICAgICAgICBpZiAoZGF0YS5wYWdlSWRlbnRpZmllciA9PSBwYWdlSWRlbnRpZmll
cikgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc2NvcGUsIGRhdGEpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soc2NvcGUsIHN0ZDo6bnVs
bG9wdCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQg
U2VydmljZVdvcmtlckNsaWVudHM6Om9wZW5XaW5kb3coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKIHsKICAgICBMT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3MgJWkgc2Vydmlj
ZSB3b3JrZXIgY2FsbGluZyBvcGVuV2luZG93IHRvIFVSTCAlcyIsIGdldHBpZCgpLCB1cmxTdHJp
bmcudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0g
ZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5pZGVu
dGlmaWVyKCk7Ci0gICAgYXV0byB1cmwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKHVybFN0cmluZyk7
Ci0KICAgICBpZiAoY29udGV4dC5zZXR0aW5nc1ZhbHVlcygpLnNlcnZpY2VXb3JrZXJzVXNlckdl
c3R1cmVFbmFibGVkICYmICFkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRl
eHQpLmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwgIlNlcnZpY2VXb3JrZXJDbGllbnRzLm9w
ZW5XaW5kb3coKSByZXF1aXJlcyBhIHVzZXIgZ2VzdHVyZSJfcyB9KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcp
OwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhj
ZXB0aW9uIHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJVUkwgc3RyaW5nICIsIHVybFN0cmluZywg
IiBjYW5ub3Qgc3VjY2Vzc2Z1bGx5IGJlIHBhcnNlZCJfcykgfSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTEzMiwzMSArMTEwLDM0IEBAIHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6Om9wZW5XaW5k
b3coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZG93bmNh
c3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5pZGVudGlmaWVy
KCk7CiAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlzZUlkZW50aWZpZXIgPSBhZGRQZW5kaW5n
UHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCA9
IHVybC5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gY29ubmVjdGlv
biA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKLSAgICAgICAg
Y29ubmVjdGlvbi0+b3BlbldpbmRvdyhzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLnN0cmlu
ZygpLCBbcHJvbWlzZUlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXSAoc3RkOjpv
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJiBwYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdv
cmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VJZGVudGlmaWVyLCBwYWdlSWRl
bnRpZmllciA9IFdURk1vdmUocGFnZUlkZW50aWZpZXIpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cl0gKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2VzcyAlaSBmaW5pc2hlZCBTZXJ2aWNl
V29ya2VyQ2xpZW50czo6b3BlbldpbmRvdyBjYWxsLiBSZXN1bHRpbmcgcGFnZSBpZGVudGlmaWVy
IGlzICVzIiwgZ2V0cGlkKCksIHBhZ2VJZGVudGlmaWVyID8gcGFnZUlkZW50aWZpZXItPmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpIDogIjxOT05FPiIpOworICAgICAgICBjb25uZWN0aW9u
LT5vcGVuV2luZG93KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwsIFtwcm9taXNlSWRlbnRp
Zmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2
aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZUlkZW50aWZpZXIsIHJl
c3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3VsdCkpXSAoU2VydmljZVdvcmtlckds
b2JhbFNjb3BlJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgTE9HKFNlcnZpY2VX
b3JrZXIsICJXZWJQcm9jZXNzICVpIGZpbmlzaGVkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpvcGVu
V2luZG93IGNhbGwgcmVzdWx0IGlzICVkLiIsIGdldHBpZCgpLCAhcmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKTsKIAotICAgICAgICAgICAgICAgIGlmICghcGFnZUlkZW50aWZpZXIpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gcHJvbWlzZSA9IHNjb3BlLmNsaWVudHMoKS50YWtlUGVuZGlu
Z1Byb21pc2UocHJvbWlzZUlkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJv
bWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVlKEpTQzo6anNOdWxsKCkpOworICAgICAgICAgICAgICAg
IGF1dG8gcHJvbWlzZSA9IHNjb3BlLmNsaWVudHMoKS50YWtlUGVuZGluZ1Byb21pc2UocHJvbWlz
ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIGlmICghcHJvbWlzZSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG1h
dGNoV2luZG93V2l0aFBhZ2VJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCAqcGFn
ZUlkZW50aWZpZXIsIFtwcm9taXNlSWRlbnRpZmllcl0gKGF1dG8mIHNjb3BlLCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnREYXRhKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgICAgICAgICAgYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50cygpLnRha2VQZW5kaW5n
UHJvbWlzZShwcm9taXNlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcHJv
bWlzZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBpZiAoIWNs
aWVudERhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmVXaXRo
SlNWYWx1ZShKU0M6OmpzTnVsbCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGF1dG8gY2xpZW50RGF0YSA9
IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIWNsaWVu
dERhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVl
KEpTQzo6anNOdWxsKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGF1dG8gY2xpZW50ID0gU2VydmljZVdvcmtl
ckNsaWVudDo6Y3JlYXRlKHNjb3BlLCBXVEZNb3ZlKCpjbGllbnREYXRhKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHByb21pc2UtPnRlbXBsYXRlIHJlc29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VX
b3JrZXJDbGllbnQ+PihXVEZNb3ZlKGNsaWVudCkpOwotICAgICAgICAgICAgICAgIH0pOworI2lm
IEFTU0VSVF9FTkFCTEVECisgICAgICAgICAgICAgICAgYXV0byBvcmlnaW5EYXRhID0gU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tVVJMKGNsaWVudERhdGEtPnVybCk7CisgICAgICAgICAgICAgICAg
Q2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbiB7IG9yaWdpbkRhdGEsIG9yaWdpbkRhdGEgfTsKKyNl
bmRpZgorICAgICAgICAgICAgICAgIEFTU0VSVChzY29wZS5jbGllbnRPcmlnaW4oKSA9PSBjbGll
bnRPcmlnaW4pOworICAgICAgICAgICAgICAgIHByb21pc2UtPnRlbXBsYXRlIHJlc29sdmU8SURM
SW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJDbGllbnQ+PihTZXJ2aWNlV29ya2VyQ2xpZW50OjpjcmVh
dGUoc2NvcGUsIFdURk1vdmUoKmNsaWVudERhdGEpKSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggOWEyM2M1YWQwMzY2ODBlOWQ4
ZWE4ODNiNmEwOTZjNWI0YTg1OTgxZS4uMGNiMTkyNzQ1ODdjMzk0MWNlMjA5MTc3ZGZjZTM1NTdm
ZGExOWM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtNjcsOCArNjcsMTAgQEAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJD
YWxsYmFjayYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXRjaEFsbChTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNl
cnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBjbGFpbShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
Zm9jdXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+
JiYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYpPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJikgPSAw
OworCisgICAgICAgIHVzaW5nIE9wZW5XaW5kb3dDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+
JiYpPjsKKyAgICAgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFVSTCYsIE9wZW5XaW5kb3dDYWxsYmFjayYmKSA9IDA7CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0QXNJbnNwZWN0ZWQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZDYzYWQwYzRlMjdiMTRiMDRmZTA0NmZj
OWMzMjY2OWYzMmI2YmNhNy4uMmQzNTYwM2Y4MTkzNGJkMWE1ZTQ3NzY2MTgzY2MxODU2Njg4NWZi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKQEAgLTExMiw2ICsxMTIsMjAgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4gU1dTZXJ2ZXI6OnNlcnZpY2VXb3JrZXJDbGllbnRXaXRoT3JpZ2luQnkKICAg
ICByZXR1cm4gY2xpZW50SXRlcmF0b3ItPnZhbHVlOwogfQogCitzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcjo6c2VydmljZVdvcmtlckNsaWVudEZyb21QYWdl
SWRlbnRpZmllcihjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fY2xpZW50
SWRlbnRpZmllcnNQZXJPcmlnaW4uZmluZChjbGllbnRPcmlnaW4pOworICAgIGlmIChpdGVyYXRv
ciA9PSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmVuZCgpKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgZm9yIChhdXRvIGNsaWVudElkZW50aWZpZXIgOiBpdGVyYXRvci0+dmFsdWUu
aWRlbnRpZmllcnMpIHsKKyAgICAgICAgYXV0byBjbGllbnRJdGVyYXRvciA9IG1fY2xpZW50c0J5
SWQuZmluZChjbGllbnRJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGNsaWVudEl0ZXJhdG9yLT52
YWx1ZS5wYWdlSWRlbnRpZmllciAmJiAqY2xpZW50SXRlcmF0b3ItPnZhbHVlLnBhZ2VJZGVudGlm
aWVyID09IHBhZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIGNsaWVudEl0ZXJhdG9y
LT52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KKwogU3RyaW5nIFNXU2VydmVyOjpz
ZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3Jp
Z2luKSBjb25zdAogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJzUGVy
T3JpZ2luLmZpbmQoY2xpZW50T3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCA5ZDVhZDJhNTJlY2U2Y2VjMzg3MjJiYWVk
ODRkMTE5MzAxNDgzYTQ0Li42NGI5MDk5Y2ViMDYxYjcwZjcyYmUwYmZlMDhiZDQyYzhlM2MwMWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgpAQCAtMTYxLDYgKzE2
Miw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29ya2VyKiB3b3Jr
ZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2VyQ2xp
ZW50V2l0aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2VyQ2xpZW50RnJvbVBh
Z2VJZGVudGlmaWVyKGNvbnN0IENsaWVudE9yaWdpbiYsIFBhZ2VJZGVudGlmaWVyKSBjb25zdDsK
ICAgICBTdHJpbmcgc2VydmljZVdvcmtlckNsaWVudFVzZXJBZ2VudChjb25zdCBDbGllbnRPcmln
aW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcldvcmtlciogYWN0aXZlV29y
a2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggN2NhMTZjN2Fh
OGQ3Yjg0ZGVkOTg5NGVlZGViNzA4YjQzYzY1NjNhYy4uNTY5YjFhYzMwZTJkNDI5NDNhY2M5NTVj
ODllZWViOTQxODdhNGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CkBAIC04Niw3ICs4Niw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFz
SW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+
JiYpOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKSA9IDA7CisgICAgdXNpbmcg
T3BlbldpbmRvd0NhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiwgRXhjZXB0aW9uRGF0YT4mJik+Owor
ICAgIHZpcnR1YWwgdm9pZCBvcGVuV2luZG93KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBVUkwmLCBPcGVuV2luZG93Q2FsbGJhY2smJikgPSAwOwogCiAgICAgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJs
ZURvbWFpbjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDdkZmEwZTE4NjQ5YTBmZTEzZDRmNzI2
MTVjYTI4MzYwMGM5ZjcwZTEuLjZkYjA3NmJmOTZkMmU2ZDEzODM2OTJlMjBiNTMyYmM5OTg4MDlj
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwCkBAIC0xNzAsMjUgKzE3MCwzNSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6dGVybWluYXRlRHVlVG9VbnJlc3BvbnNpdmVuZXNzKCkKICAgICBtX2Nvbm5lY3Rp
b24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzIHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAotdm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om9wZW5XaW5kb3coV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4mJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
b3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBVUkwmIHVybCwgT3BlbldpbmRvd0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgYXV0
byogc2VydmVyID0gdGhpcy0+c2VydmVyKCk7CiAgICAgaWYgKCFzZXJ2ZXIpIHsKLSAgICAgICAg
Y2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQo
RXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIk5vIFNXU2VydmVyIl9zIH0pKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlci0+d29ya2VyQnlJRChp
ZGVudGlmaWVyKTsKICAgICBpZiAoIXdvcmtlcikgewotICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOworICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EYXRhIHsg
VHlwZUVycm9yLCAiTm8gcmVtYWluaW5nIHNlcnZpY2Ugd29ya2VyIl9zIH0pKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gaW5uZXJDYWxsYmFjayA9IFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYm
IHBhZ2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2soV1RGTW92ZShwYWdl
SWRlbnRpZmllcikpOworICAgIGF1dG8gaW5uZXJDYWxsYmFjayA9IFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBzZXJ2ZXIgPSBXZWFrUHRyIHsgKnNlcnZlciB9LCBvcmlnaW4gPSB3b3Jr
ZXItPm9yaWdpbigpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmIHBh
Z2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFwYWdlSWRlbnRpZmllcikgewor
ICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVF
cnJvciwgIm9wZW5XaW5kb3cgZmFpbGVkIG9wZW5pbmcgYSB0YWIiX3MgfSkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzZXJ2ZXIpIHsKKyAgICAgICAg
ICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsICJO
byBTV1NlcnZlciJfcyB9KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBjYWxsYmFjayhzZXJ2ZXItPnNlcnZpY2VXb3JrZXJDbGllbnRGcm9tUGFnZUlkZW50aWZp
ZXIob3JpZ2luLCAqcGFnZUlkZW50aWZpZXIpKTsKICAgICB9OwogCi0gICAgbV9jb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpPcGVuV2luZG93RnJvbVNlcnZp
Y2VXb3JrZXIgeyBzZXJ2ZXItPnNlc3Npb25JRCgpLCB1cmxTdHJpbmcsIHdvcmtlci0+b3JpZ2lu
KCkuY2xpZW50T3JpZ2luIH0sIFdURk1vdmUoaW5uZXJDYWxsYmFjaykpOworICAgIG1fY29ubmVj
dGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6T3BlbldpbmRvd0Zyb21T
ZXJ2aWNlV29ya2VyIHsgbV9jb25uZWN0aW9uLnNlc3Npb25JRCgpLCB1cmwuc3RyaW5nKCksIHdv
cmtlci0+b3JpZ2luKCkuY2xpZW50T3JpZ2luIH0sIFdURk1vdmUoaW5uZXJDYWxsYmFjaykpOwog
fQogCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWF0Y2hBbGxDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4mIGNsaWVudHNEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDAxNmE4Mjc1MzUwYWMxZWMzNDc5MDJiMmZhMzRm
ODI4NjMwOWQ1YzAuLjllODNiM2RiYWI4MzMyNGNkNmVkMWYwZjgzMDE1M2E3ODZkMmUyZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdl
ck5lZWRlZCgpIGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRlRHVlVG9VbnJlc3BvbnNpdmVuZXNz
KCkgZmluYWw7Ci0gICAgdm9pZCBvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJikgZmluYWw7CisgICAg
dm9pZCBvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBV
UkwmLCBPcGVuV2luZG93Q2FsbGJhY2smJikgZmluYWw7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25D
bG9zZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggMjFkMjM2NTU3YzQzNDM5OWRlOTgxOGQ2
NzkzYWNiNjVjYmMxZTZiZi4uOWIwYzcwZjc3ZGFiNzFjMDI4NDE3ODA1MmRkNDcyMmI4MjdjYWQx
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC00MSw3ICs0MSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWlsSGVh
cnRCZWF0Q2hlY2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICBTZXRBc0luc3BlY3RlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBib29sIGlzSW5zcGVjdGVkKQogCi0gICAgT3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgdXJsU3RyaW5nKSAtPiAoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3Q2xpZW50RGF0YSkKKyAgICBP
cGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVS
TCB1cmwpIC0+IChFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4gbmV3Q2xpZW50RGF0YSkKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcAppbmRleCA3M2VjZGUyNmQ4ZTA5YzliYTYwYmQ0NTE4ZjlhZDA1NWEwMmI3NjJh
Li42NGZiYmE0ZmFjZjcyZjE5YzI5YjczMzgyMDIyNGY4MzcwZmYxMTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zMzcsOSArMzM3LDE1IEBAIHZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyCiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2xpZW50c0RhdGEpKTsKIH0K
IAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6b3BlbldpbmRvdyhXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2spCit2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmIHVybCwgT3BlbldpbmRvd0NhbGxi
YWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
Ok9wZW5XaW5kb3cgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsIH0sIFdURk1vdmUoY2Fs
bGJhY2spKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6T3BlbldpbmRv
dyB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwgfSwgW2NhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldIChhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXN1bHQu
aGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5lcnJvcigpLnRvRXhj
ZXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxi
YWNrKFdURk1vdmUocmVzdWx0LnZhbHVlKCkpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
dm9pZD4mJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRl
eCA1ODQyODJjMTA4M2UxNDg2ZjllMWZlMmY4MGMxNjA2NmYwZDUxYWMyLi4zYjUwNWM3MjAwYzNj
ZjAwM2NhOGUyZTNhYjQ1YTAyMmJhYzdlODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVGhyb3R0bGVhYmxl
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc2V0QXNJbnNwZWN0ZWQo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpIGZpbmFsOwotICAgIHZvaWQg
b3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNrJiYp
IGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0
YXJ0ZWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0
Y2gpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDVmYzdlMmQ0ZGNkNTIwYTE3MzRkOTU4ZmY2NGEzNDU4ZDAxNjRjZDYuLmU0MzM5ZDQx
ZjAyZWY2ODc5Y2YwODY1MTk0YTIyZjkxMDE0N2I2ZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wMy0yOSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZVdvcmtl
ckNsaWVudHMub3BlbldpbmRvdyBwcm9taXNlIHNob3VsZCByZWplY3QgaWYgbm8gV2ViUGFnZVBy
b3h5IGlzIGNyZWF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODUwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFz
aWMubW06CisKIDIwMjItMDMtMjggIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0FULVNQSV0gYWNjZXNzaWJpbGl0eS9uYXRpdmUtdGV4dC1jb250cm9sLWF0dHJp
YnV0ZWQtc3RyaW5nLmh0bWwgaXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCA2
MGNjMjM0MjhiNmY5ODk3ODI3NjFiMWU5ODc1NWMzNDRiNmMyZTEzLi4yNmVmYjM3Y2M4Y2M4OWU0
ZDk4YTM5NDhkN2QzMjVkMjc3ZjFkZWQwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtMjk2
NiwzICsyOTY2LDg0IEBAIFRFU1QoU2VydmljZVdvcmtlciwgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudEZvY3VzUmVxdWlyZXNVc2VyR2VzdHVyZSkKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFT
Y3JpcHQ6QCJmb2N1c0NsaWVudCgpIiBjb21wbGV0aW9uSGFuZGxlcjogbmlsXTsKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQorCitzdGF0aWMgY29uc3QgY2hhciogU2Vy
dmljZVdvcmtlcldpbmRvd0NsaWVudE9wZW5XaW5kb3dNYWluID0KKyI8ZGl2IGlkPSdsb2cnPnRl
c3QgcGFnZTwvZGl2PiIKKyI8c2NyaXB0PiIKKyJsZXQgd29ya2VyOyIKKyJhc3luYyBmdW5jdGlv
biB0ZXN0KCkgeyIKKyIgICAgbG9nLmlubmVySFRNTCA9ICd0ZXN0JzsiCisiICAgIHRyeSB7Igor
IiAgICAgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIucmVnaXN0ZXIoJy9zdy5qcycpOyIKKyIgICAgICAgIGxvZy5pbm5lckhUTUwgPSAncmVnaXN0
ZXJlZCc7IgorIiAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbi5hY3RpdmUpIHsiCisiICAgICAgICAg
ICAgd29ya2VyID0gcmVnaXN0cmF0aW9uLmFjdGl2ZTsiCisiICAgICAgICAgICAgYWxlcnQoJ2Fs
cmVhZHkgYWN0aXZlJyk7IgorIiAgICAgICAgICAgIHJldHVybjsiCisiICAgICAgICB9IgorIiAg
ICAgICAgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7IgorIiAgICAgICAgd29ya2Vy
LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgKCkgPT4geyIKKyIgICAgICAgICAgIGxv
Zy5pbm5lckhUTUwgPSAnd29ya2VyLnN0YXRlPScgKyB3b3JrZXIuc3RhdGU7IgorIiAgICAgICAg
ICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpIgorIiAgICAgICAgICAgICAgICBh
bGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsiCisiICAgICAgICB9KTsiCisiICAgIH0g
Y2F0Y2goZSkgeyIKKyIgICAgICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsiCisiICAgIH0i
CisifSIKKyJ3aW5kb3cub25sb2FkID0gdGVzdDsiCisiIgorImZ1bmN0aW9uIG9wZW5XaW5kb3dD
bGllbnQoKSB7IgorIiAgICBsb2cuaW5uZXJIVE1MID0gJ29wZW5XaW5kb3dDbGllbnQnOyIKKyIg
ICAgd29ya2VyLnBvc3RNZXNzYWdlKCdzdGFydCcpOyIKKyIgICAgbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7IgorIiAgICAgICAgd2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMuc3cucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSk7IgorIiAgICB9IgorIn0i
CisiPC9zY3JpcHQ+IjsKK3N0YXRpYyBjb25zdCBjaGFyKiBTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50T3BlbldpbmRvd0pTID0KKyJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoZXZl
bnQpID0+IHsiCisiICAgc2VsZi5jbGllbnRzLm9wZW5XaW5kb3coJy9zdy5qcycpLnRoZW4oKGNs
aWVudCkgPT4geyIKKyIgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKGNsaWVudCA/ICdv
cGVuZWQgd2l0aCBjbGllbnQnIDogJ29wZW5lZCB3aXRob3V0IGNsaWVudCcpOyIKKyIgICB9LCAo
ZXJyb3IpID0+IHsiCisiICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm90IG9wZW5l
ZCcpOyIKKyIgICB9KTsiCisifSk7IjsKKworVEVTVChTZXJ2aWNlV29ya2VyLCBvcGVuV2luZG93
V2l0aG91dERlbGVnYXRlKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0
ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4g
c2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3Rv
cmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFU
eXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxl
cjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXTsKKwor
ICAgIGZvciAoX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJlZmVyZW5j
ZXMgX2ludGVybmFsRGVidWdGZWF0dXJlc10pIHsKKyAgICAgICAgaWYgKFtmZWF0dXJlLmtleSBp
c0VxdWFsVG9TdHJpbmc6QCJTZXJ2aWNlV29ya2Vyc1VzZXJHZXN0dXJlRW5hYmxlZCJdKQorICAg
ICAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOk5PIGZvckludGVybmFsRGVidWdGZWF0
dXJlOmZlYXR1cmVdOworICAgIH0KKworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5T
KFtbU1dNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGluaXRdKTsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBh
ZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVy
KHsKKyAgICAgICAgeyAiLyIsIHsgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudE9wZW5XaW5kb3dN
YWluIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiIH19LCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50T3BlbldpbmRv
d0pTIH0gfQorICAgIH0pOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3QoKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0s
ICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJub3Qgb3BlbmVkIjsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFT
Y3JpcHQ6QCJvcGVuV2luZG93Q2xpZW50KCkiIGNvbXBsZXRpb25IYW5kbGVyOiBuaWxdOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456349</attachid>
            <date>2022-04-01 04:54:36 -0700</date>
            <delta_ts>2022-04-01 05:22:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238503-20220401135434.patch</filename>
            <type>text/plain</type>
            <size>26457</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFmZTA5OTdlZGEzNzkz
MzliZmRiZWU4ZGVmZTNhM2QyZjk5MWRhZS4uOGViNDgxOTYzZTE3YjEzODkxNzljMmZjNjM2YWM3
MWE2ZThjOWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTA0LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50cy5vcGVuV2luZG93IHNob3VsZCBub3QgbmVlZCB0byBnZXQgYWxsIGNsaWVudHMgYXN5bmNo
cm9ub3VzbHkgdG8gcmVzb2x2ZSBpdHMgcHJvbWlzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBtYXRjaGluZyBjbGllbnQgaW4gb3BlbldpbmRv
dyBpbiBuZXR3b3JrIHByb2Nlc3MgYXMgYW4gb3B0aW1pemF0aW9uLgorICAgICAgICBUaGlzIGFs
c28gcHJldmVudHMgc29tZSByYWNlIGNvbmRpdGlvbnMgd2hlcmUgdGhlIG9wZW5lZCBwYWdlIGNv
dWxkIHF1aWNrbHkgbmF2aWdhdGUgdG8gYW5vdGhlciBwYWdlLgorICAgICAgICBBbHNvIGhhdmUg
YSBjb2RlIHBhdGggdGhhdCByZWplY3RzIHRoZSBvcGVuV2luZG93IHByb21pc2UsIGFuZCB0cmln
Z2VyIHRoYXQgY29kZSBwYXRoIGluIGNhc2Ugb2YgaW50ZXJuYWwgZXJyb3IuCisKKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyBhbmQgQVBJIHRlc3QuCisKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnRzLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6
CisKIDIwMjItMDQtMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBOb3RpZmljYXRpb246Om1fcmVsYXRlZE5vdGlmaWNhdGlvbklkZW50aWZpZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZjc4MDc2ODk4NzUwMDVmOTg2NjA3NDRkYjMwYjA3YTBlMTFhNDQ5Mi4uOTc2
NDc5ZmVlNzA2NzBkNDk1NjFlNGNkYzA4OTkzODAzYzcxZmRhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMi0wNC0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgU2VydmljZVdvcmtlckNsaWVudHMub3BlbldpbmRvdyBzaG91bGQgbm90IG5lZWQg
dG8gZ2V0IGFsbCBjbGllbnRzIGFzeW5jaHJvbm91c2x5IHRvIHJlc29sdmUgaXRzIHByb21pc2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUwMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsb2dp
YyB0byBnZXQgdGhlIGNsaWVudCBmcm9tIGl0cyBwYWdlIElELgorICAgICAgICBJbiBjYXNlIG9m
IGludGVybmFsIGVycm9yIGNhc2UsIHRyaWdnZXIgcHJvbWlzZSByZWplY3Rpb24gaW5zdGVhZCBv
ZiBwcm9taXNlIHJlc29sdXRpb24gd2l0aCBudWxsLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKwog
MjAyMi0wNC0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIE5vdGlmaWNhdGlvbjo6bV9yZWxhdGVkTm90aWZpY2F0aW9uSWRlbnRpZmllcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDNjY2U3ZjU4N2Nh
OTUyZDkyZDcxZWExOWM4YTcwYWI1MDU4Y2FkYTYuLmVhYTU4MjA3NGZhZmM0NjRjMzI4ZjgzZTY1
MjhiZGEwN2RjYzJkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJhc2U2NFV0aWxpdGllcy5oIgog
I2luY2x1ZGUgIkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJDbGllbnRPcmln
aW4uaCIKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgpAQCAtMTU2LDYgKzE1Nyw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcihTY3JpcHRC
dWZmZXJTb3VyY2VQcm92aWRlciYpOwogICAgIHZvaWQgYWRkSW1wb3J0ZWRTY3JpcHRTb3VyY2VQ
cm92aWRlcihjb25zdCBVUkwmLCBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciYpOwogCisgICAg
Q2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHsgdG9wT3JpZ2luKCku
ZGF0YSgpLCBzZWN1cml0eU9yaWdpbigpLT5kYXRhKCkgfTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSwgY29uc3QgV29ya2VyUGFyYW1ldGVy
cyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQ
cm92aWRlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCA4NGFlNjdlMzk3ZWRiZjE4NDIxZDAwZWZj
NTMyNGM5YTA5NDViNmMxLi5jYWQ1ZTI3YWQxZTYyOGQ5MmE3Nzc3Y2Q5MjVmYjEyNDE0ZGI5MzIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50cy5jcHAKQEAgLTkwLDM4ICs5MCwxNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJD
bGllbnRzOjptYXRjaEFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBD
bGllbgogICAgIH0pOwogfQogCi1zdGF0aWMgdm9pZCBtYXRjaFdpbmRvd1dpdGhQYWdlSWRlbnRp
ZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4pPiYmIGNhbGxiYWNrKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKLSAgICAgICAgYXV0byBvcHRpb25zID0gU2Vydmlj
ZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyB7IHRydWUsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBl
OjpXaW5kb3cgfTsKLSAgICAgICAgY29ubmVjdGlvbi0+bWF0Y2hBbGwoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIG9wdGlvbnMsIFtzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcGFnZUlkZW50aWZp
ZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChWZWN0b3I8U2VydmljZVdvcmtlckNs
aWVudERhdGE+JiYgY2xpZW50c0RhdGEpIG11dGFibGUgewotICAgICAgICAgICAgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFtwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgY2xpZW50c0RhdGEgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShjbGllbnRzRGF0YSkpXSAo
YXV0byYgc2NvcGUpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZGF0YSA6
IGNsaWVudHNEYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnBhZ2VJZGVudGlm
aWVyID09IHBhZ2VJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhzY29wZSwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjYWxs
YmFjayhzY29wZSwgc3RkOjpudWxsb3B0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsK
LSAgICB9KTsKLX0KLQogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6b3BlbldpbmRvdyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
V2ViUHJvY2VzcyAlaSBzZXJ2aWNlIHdvcmtlciBjYWxsaW5nIG9wZW5XaW5kb3cgdG8gVVJMICVz
IiwgZ2V0cGlkKCksIHVybFN0cmluZy51dGY4KCkuZGF0YSgpKTsKIAotICAgIGF1dG8gc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLnRocmVhZCgpLmlkZW50aWZpZXIoKTsKLSAgICBhdXRvIHVybCA9IGNvbnRleHQuY29t
cGxldGVVUkwodXJsU3RyaW5nKTsKLQogICAgIGlmIChjb250ZXh0LnNldHRpbmdzVmFsdWVzKCku
c2VydmljZVdvcmtlcnNVc2VyR2VzdHVyZUVuYWJsZWQgJiYgIWRvd25jYXN0PFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgewogICAg
ICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiU2Vy
dmljZVdvcmtlckNsaWVudHMub3BlbldpbmRvdygpIHJlcXVpcmVzIGEgdXNlciBnZXN0dXJlIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byB1cmwgPSBjb250ZXh0LmNv
bXBsZXRlVVJMKHVybFN0cmluZyk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CiAgICAgICAg
IHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlVSTCBz
dHJpbmcgIiwgdXJsU3RyaW5nLCAiIGNhbm5vdCBzdWNjZXNzZnVsbHkgYmUgcGFyc2VkIl9zKSB9
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDMxICsxMTAsMzQgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyQ2xpZW50czo6b3BlbldpbmRvdyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBTdHIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGF1dG8gc2VydmljZVdvcmtl
cklkZW50aWZpZXIgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LnRocmVhZCgpLmlkZW50aWZpZXIoKTsKICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm9taXNlSWRl
bnRpZmllciA9IGFkZFBlbmRpbmdQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpOwotICAgICAgICBjb25uZWN0aW9uLT5vcGVuV2luZG93KHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCB1cmwuc3RyaW5nKCksIFtwcm9taXNlSWRlbnRpZmllciwgc2VydmljZVdvcmtl
cklkZW50aWZpZXJdIChzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJZGVudGlm
aWVyKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlz
ZUlkZW50aWZpZXIsIHBhZ2VJZGVudGlmaWVyID0gV1RGTW92ZShwYWdlSWRlbnRpZmllciksIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyXSAoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNz
ICVpIGZpbmlzaGVkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpvcGVuV2luZG93IGNhbGwuIFJlc3Vs
dGluZyBwYWdlIGlkZW50aWZpZXIgaXMgJXMiLCBnZXRwaWQoKSwgcGFnZUlkZW50aWZpZXIgPyBw
YWdlSWRlbnRpZmllci0+bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiPE5PTkU+Iik7
CisgICAgICAgIGNvbm5lY3Rpb24tPm9wZW5XaW5kb3coc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IHVybCwgW3Byb21pc2VJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtw
cm9taXNlSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0
KSldIChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBMT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3MgJWkgZmluaXNoZWQgU2Vydmlj
ZVdvcmtlckNsaWVudHM6Om9wZW5XaW5kb3cgY2FsbCByZXN1bHQgaXMgJWQuIiwgZ2V0cGlkKCks
ICFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpOwogCi0gICAgICAgICAgICAgICAgaWYgKCFwYWdlSWRl
bnRpZmllcikgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gc2NvcGUu
Y2xpZW50cygpLnRha2VQZW5kaW5nUHJvbWlzZShwcm9taXNlSWRlbnRpZmllcikpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aEpTVmFsdWUoSlNDOjpqc051bGwo
KSk7CisgICAgICAgICAgICAgICAgYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50cygpLnRha2VQ
ZW5kaW5nUHJvbWlzZShwcm9taXNlSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgaWYgKCFw
cm9taXNlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgbWF0Y2hXaW5kb3dXaXRoUGFnZUlkZW50aWZpZXIoc2VydmljZVdv
cmtlcklkZW50aWZpZXIsICpwYWdlSWRlbnRpZmllciwgW3Byb21pc2VJZGVudGlmaWVyXSAoYXV0
byYgc2NvcGUsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGNsaWVudERh
dGEpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBhdXRvIHByb21pc2UgPSBzY29wZS5j
bGllbnRzKCkudGFrZVBlbmRpbmdQcm9taXNlKHByb21pc2VJZGVudGlmaWVyKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwcm9taXNlKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgICAgIGlmICghY2xpZW50RGF0YSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVlKEpTQzo6anNOdWxsKCkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYXV0byBjbGllbnREYXRhID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgICAg
ICAgICAgICAgIGlmICghY2xpZW50RGF0YSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNl
LT5yZXNvbHZlV2l0aEpTVmFsdWUoSlNDOjpqc051bGwoKSk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgYXV0byBj
bGllbnQgPSBTZXJ2aWNlV29ya2VyQ2xpZW50OjpjcmVhdGUoc2NvcGUsIFdURk1vdmUoKmNsaWVu
dERhdGEpKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+dGVtcGxhdGUgcmVzb2x2ZTxJ
RExJbnRlcmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFdURk1vdmUoY2xpZW50KSk7Ci0gICAg
ICAgICAgICAgICAgfSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgICAgICAgICBhdXRv
IG9yaWdpbkRhdGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoY2xpZW50RGF0YS0+dXJs
KTsKKyAgICAgICAgICAgICAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luIHsgb3JpZ2luRGF0
YSwgb3JpZ2luRGF0YSB9OworI2VuZGlmCisgICAgICAgICAgICAgICAgQVNTRVJUKHNjb3BlLmNs
aWVudE9yaWdpbigpID09IGNsaWVudE9yaWdpbik7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+
dGVtcGxhdGUgcmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFNlcnZp
Y2VXb3JrZXJDbGllbnQ6OmNyZWF0ZShzY29wZSwgV1RGTW92ZSgqY2xpZW50RGF0YSkpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRl
eCA5YTIzYzVhZDAzNjY4MGU5ZDhlYTg4M2I2YTA5NmM1YjRhODU5ODFlLi4wY2IxOTI3NDU4N2Mz
OTQxY2UyMDkxNzdkZmNlMzU1N2ZkYTE5YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC02Nyw4
ICs2NywxMCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlWaXNp
YmxlSWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgRmlu
ZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IG1hdGNoQWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xp
ZW50UXVlcnlPcHRpb25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKSA9IDA7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnREYXRhPiYmKT4mJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgb3Blbldp
bmRvdyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJik+JiYpID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudERhdGE+JiYpPiYmKSA9IDA7CisKKyAgICAgICAgdXNpbmcgT3BlbldpbmRvd0NhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPj4mJik+OworICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRv
dyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNr
JiYpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRBc0lu
c3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBhMzFm
NDdiZDU3N2Y2ZTYyZjYzZDU5NDAxYzgzOGM1ZDUxYzY1Y2MxLi5iYmY1MTIzMjc3NWFhMzg2NzVk
ZTU4MTU3ZDhmN2YyYzBiYmE4YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTEyLDYgKzExMiwyMCBAQCBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcjo6c2VydmljZVdvcmtlckNs
aWVudFdpdGhPcmlnaW5CeQogICAgIHJldHVybiBjbGllbnRJdGVyYXRvci0+dmFsdWU7CiB9CiAK
K3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyOjpzZXJ2aWNl
V29ya2VyQ2xpZW50RnJvbVBhZ2VJZGVudGlmaWVyKGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50
T3JpZ2luLCBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBhdXRv
IGl0ZXJhdG9yID0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5maW5kKGNsaWVudE9yaWdp
bik7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZW5k
KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBmb3IgKGF1dG8gY2xpZW50SWRlbnRpZmll
ciA6IGl0ZXJhdG9yLT52YWx1ZS5pZGVudGlmaWVycykgeworICAgICAgICBhdXRvIGNsaWVudEl0
ZXJhdG9yID0gbV9jbGllbnRzQnlJZC5maW5kKGNsaWVudElkZW50aWZpZXIpOworICAgICAgICBp
ZiAoY2xpZW50SXRlcmF0b3ItPnZhbHVlLT5wYWdlSWRlbnRpZmllciAmJiAqY2xpZW50SXRlcmF0
b3ItPnZhbHVlLT5wYWdlSWRlbnRpZmllciA9PSBwYWdlSWRlbnRpZmllcikKKyAgICAgICAgICAg
IHJldHVybiBjbGllbnRJdGVyYXRvci0+dmFsdWU7CisgICAgfQorICAgIHJldHVybiB7IH07Cit9
CisKIFN0cmluZyBTV1NlcnZlcjo6c2VydmljZVdvcmtlckNsaWVudFVzZXJBZ2VudChjb25zdCBD
bGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbikgY29uc3QKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0g
bV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5maW5kKGNsaWVudE9yaWdpbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggYTRi
Yjc1M2ZlYzQwMjMwMDM4OTU1NTNmZjI4MmJkYzljZTliNTBiMy4uOTM4ZjYyZjQzMGIyYWI4Mjgw
MDI0MTRjODkzM2E2MGUyZDFmOGFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAi
Q2xpZW50T3JpZ2luLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJQYWdl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNXU2VydmVyV29ya2VyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bkRhdGEuaCIKQEAgLTE2MSw2ICsxNjIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBTV1NlcnZlcldvcmtlciogd29ya2VyQnlJRChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4gc2VydmljZVdvcmtlckNsaWVudFdpdGhPcmlnaW5CeUlEKGNvbnN0IENsaWVudE9yaWdp
biYsIGNvbnN0IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyJikgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gc2Vy
dmljZVdvcmtlckNsaWVudEZyb21QYWdlSWRlbnRpZmllcihjb25zdCBDbGllbnRPcmlnaW4mLCBQ
YWdlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRVc2Vy
QWdlbnQoY29uc3QgQ2xpZW50T3JpZ2luJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dT
ZXJ2ZXJXb3JrZXIqIGFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCmluZGV4IDdjYTE2YzdhYThkN2I4NGRlZDk4OTRlZWRlYjcwOGI0M2M2NTYzYWMuLjU2
OWIxYWMzMGUyZDQyOTQzYWNjOTU1Yzg5ZWVlYjk0MTg3YTRkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtODYsNyArODYsOCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Ym9vbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRp
ZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjbGllbnRJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuV2luZG93
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYm
KT4mJikgPSAwOworICAgIHVzaW5nIE9wZW5XaW5kb3dDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4s
IEV4Y2VwdGlvbkRhdGE+JiYpPjsKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNrJiYpID0gMDsK
IAogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KICAgICBzdGQ6Om9wdGlvbmFsPFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA3
ZGZhMGUxODY0OWEwZmUxM2Q0ZjcyNjE1Y2EyODM2MDBjOWY3MGUxLi5mNWY4MjllNjk4ZmYxZjhl
YzljOWU1OTA1NTU3NDMxYjk4NjgyNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTcwLDI1ICsxNzAsMzYgQEAgdm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25zaXZl
bmVzcygpCiAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRl
VW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyB7IHdlYlByb2Nlc3NJZGVudGlmaWVy
KCkgfSwgMCk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpvcGVu
V2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246Om9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIE9wZW5XaW5kb3dDYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIGF1dG8qIHNlcnZlciA9IHRoaXMtPnNlcnZlcigpOwogICAgIGlm
ICghc2VydmVyKSB7Ci0gICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGNh
bGxiYWNrKG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsICJObyBTV1Nl
cnZlciJfcyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvKiB3b3JrZXIg
PSBzZXJ2ZXItPndvcmtlckJ5SUQoaWRlbnRpZmllcik7CiAgICAgaWYgKCF3b3JrZXIpIHsKLSAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhw
ZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIk5vIHJlbWFpbmluZyBzZXJ2aWNlIHdv
cmtlciJfcyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGlubmVyQ2Fs
bGJhY2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4mJiBwYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7Ci0gICAgICAg
IGNhbGxiYWNrKFdURk1vdmUocGFnZUlkZW50aWZpZXIpKTsKKyAgICBhdXRvIGlubmVyQ2FsbGJh
Y2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2VydmVyID0gV2Vha1B0ciB7ICpz
ZXJ2ZXIgfSwgb3JpZ2luID0gd29ya2VyLT5vcmlnaW4oKV0oc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4mJiBwYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgIGlm
ICghcGFnZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiB2YWxpZGF0ZSB3aGV0
aGVyIHdlIHNob3VsZCByZWplY3Qgb3IgcmVzb2x2ZSB3aXRoIG51bGwsIGh0dHBzOi8vZ2l0aHVi
LmNvbS93M2MvU2VydmljZVdvcmtlci9pc3N1ZXMvMTYzOQorICAgICAgICAgICAgY2FsbGJhY2so
eyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc2Vy
dmVyKSB7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EYXRh
IHsgVHlwZUVycm9yLCAiTm8gU1dTZXJ2ZXIiX3MgfSkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FsbGJhY2soc2VydmVyLT5zZXJ2aWNlV29ya2VyQ2xpZW50
RnJvbVBhZ2VJZGVudGlmaWVyKG9yaWdpbiwgKnBhZ2VJZGVudGlmaWVyKSk7CiAgICAgfTsKIAot
ICAgIG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6T3Bl
bldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyIHsgc2VydmVyLT5zZXNzaW9uSUQoKSwgdXJsU3RyaW5n
LCB3b3JrZXItPm9yaWdpbigpLmNsaWVudE9yaWdpbiB9LCBXVEZNb3ZlKGlubmVyQ2FsbGJhY2sp
KTsKKyAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
Ok9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlciB7IG1fY29ubmVjdGlvbi5zZXNzaW9uSUQoKSwg
dXJsLnN0cmluZygpLCB3b3JrZXItPm9yaWdpbigpLmNsaWVudE9yaWdpbiB9LCBXVEZNb3ZlKGlu
bmVyQ2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0
b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBjbGllbnRzRGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCAwMTZhODI3NTM1MGFj
MWVjMzQ3OTAyYjJmYTM0ZjgyODYzMDlkNWMwLi45ZTgzYjNkYmFiODMzMjRjZDZlZDFmMGY4MzAx
NTNhNzg2ZDJlMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29u
bmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZUR1ZVRv
VW5yZXNwb25zaXZlbmVzcygpIGZpbmFsOwotICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+
JiYpIGZpbmFsOworICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAg
dm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDIxZDIzNjU1
N2M0MzQzOTlkZTk4MThkNjc5M2FjYjY1Y2JjMWU2YmYuLjliMGM3MGY3N2RhYjcxYzAyODQxNzgw
NTJkZDQ3MjJiODI3Y2FkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtNDEsNyArNDEsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7
CiAgICAgRGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgU2V0QXNJbnNwZWN0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc0luc3BlY3RlZCkKIAotICAgIE9wZW5XaW5k
b3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIHVy
bFN0cmluZykgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5ld0Ns
aWVudERhdGEpCisgICAgT3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBVUkwgdXJsKSAtPiAoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IG5ld0Ns
aWVudERhdGEpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzNlY2RlMjZkOGUwOWM5YmE2MGJkNDUx
OGY5YWQwNTVhMDJiNzYyYS4uNjRmYmJhNGZhY2Y3MmYxOWMyOWI3MzM4MjAyMjRmODM3MGZmMTEz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMzM3LDkgKzMzNywx
NSBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRl
ZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcgogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNs
aWVudHNEYXRhKSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om9w
ZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6b3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmws
IE9wZW5XaW5kb3dDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIG1fY29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpPcGVuV2luZG93IHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVy
bCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246Ok9wZW5XaW5kb3cgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsIH0sIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQuZXJyb3IoKS50b0V4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSk7CisgICAgfSk7CiB9
CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsYWltKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmgKaW5kZXggNTg0MjgyYzEwODNlMTQ4NmY5ZTFmZTJmODBjMTYwNjZmMGQ1MWFj
Mi4uM2I1MDVjNzIwMGMzY2YwMDNjYThlMmUzYWI0NWEwMjJiYWM3ZTg4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVh
dENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lk
IHNldEFzSW5zcGVjdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBm
aW5hbDsKLSAgICB2b2lkIG9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIG9wZW5X
aW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIE9wZW5X
aW5kb3dDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lk
IHNlcnZpY2VXb3JrZXJTdGFydGVkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJv
b2wgZG9lc0hhbmRsZUZldGNoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NDA5N2RkMTlmZjIzOTkyNzFhMzlkMDNiZDBiY2MwYWE4
ZWZmNGQ1Li43MDQxM2EzNTVmZjA1MWE4MzVhY2E3ODA2NTgzZjdmNWUxZTEzM2RiIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMjItMDQtMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAg
ICAgIFNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cgc2hvdWxkIG5vdCBuZWVkIHRvIGdl
dCBhbGwgY2xpZW50cyBhc3luY2hyb25vdXNseSB0byByZXNvbHZlIGl0cyBwcm9taXNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorCiAyMDIyLTAzLTMw
ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVyZ2Ut
UXVldWVdIFVwZGF0ZSBwdWxsLXJlcXVlc3Qgd2l0aCBsYW5kZWQgY29udGVudApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFz
aWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3Jr
ZXJCYXNpYy5tbQppbmRleCA2MGNjMjM0MjhiNmY5ODk3ODI3NjFiMWU5ODc1NWMzNDRiNmMyZTEz
Li5lMTMxZDRjODZjNzZhM2JjZmMwZDQyY2VmZGZhYjAzZTA4NjhjZGRlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3Jr
ZXJCYXNpYy5tbQpAQCAtMjk2NiwzICsyOTY2LDg0IEBAIFRFU1QoU2VydmljZVdvcmtlciwgU2Vy
dmljZVdvcmtlcldpbmRvd0NsaWVudEZvY3VzUmVxdWlyZXNVc2VyR2VzdHVyZSkKICAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJmb2N1c0NsaWVudCgpIiBjb21wbGV0aW9uSGFuZGxl
cjogbmlsXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQorCitzdGF0
aWMgY29uc3QgY2hhciogU2VydmljZVdvcmtlcldpbmRvd0NsaWVudE9wZW5XaW5kb3dNYWluID0K
KyI8ZGl2IGlkPSdsb2cnPnRlc3QgcGFnZTwvZGl2PiIKKyI8c2NyaXB0PiIKKyJsZXQgd29ya2Vy
OyIKKyJhc3luYyBmdW5jdGlvbiB0ZXN0KCkgeyIKKyIgICAgbG9nLmlubmVySFRNTCA9ICd0ZXN0
JzsiCisiICAgIHRyeSB7IgorIiAgICAgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2
aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpOyIKKyIgICAgICAgIGxvZy5p
bm5lckhUTUwgPSAncmVnaXN0ZXJlZCc7IgorIiAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbi5hY3Rp
dmUpIHsiCisiICAgICAgICAgICAgd29ya2VyID0gcmVnaXN0cmF0aW9uLmFjdGl2ZTsiCisiICAg
ICAgICAgICAgYWxlcnQoJ2FscmVhZHkgYWN0aXZlJyk7IgorIiAgICAgICAgICAgIHJldHVybjsi
CisiICAgICAgICB9IgorIiAgICAgICAgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7
IgorIiAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgKCkgPT4g
eyIKKyIgICAgICAgICAgIGxvZy5pbm5lckhUTUwgPSAnd29ya2VyLnN0YXRlPScgKyB3b3JrZXIu
c3RhdGU7IgorIiAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpIgor
IiAgICAgICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsiCisiICAg
ICAgICB9KTsiCisiICAgIH0gY2F0Y2goZSkgeyIKKyIgICAgICAgIGFsZXJ0KCdFeGNlcHRpb246
ICcgKyBlKTsiCisiICAgIH0iCisifSIKKyJ3aW5kb3cub25sb2FkID0gdGVzdDsiCisiIgorImZ1
bmN0aW9uIG9wZW5XaW5kb3dDbGllbnQoKSB7IgorIiAgICBsb2cuaW5uZXJIVE1MID0gJ29wZW5X
aW5kb3dDbGllbnQnOyIKKyIgICAgd29ya2VyLnBvc3RNZXNzYWdlKCdzdGFydCcpOyIKKyIgICAg
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7IgorIiAgICAg
ICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuc3cucG9zdE1lc3NhZ2UoZXZlbnQuZGF0
YSk7IgorIiAgICB9IgorIn0iCisiPC9zY3JpcHQ+IjsKK3N0YXRpYyBjb25zdCBjaGFyKiBTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50T3BlbldpbmRvd0pTID0KKyJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ21lc3NhZ2UnLCAoZXZlbnQpID0+IHsiCisiICAgc2VsZi5jbGllbnRzLm9wZW5XaW5kb3co
Jy9zdy5qcycpLnRoZW4oKGNsaWVudCkgPT4geyIKKyIgICAgICAgZXZlbnQuc291cmNlLnBvc3RN
ZXNzYWdlKGNsaWVudCA/ICdvcGVuZWQgd2l0aCBjbGllbnQnIDogJ29wZW5lZCB3aXRob3V0IGNs
aWVudCcpOyIKKyIgICB9LCAoZXJyb3IpID0+IHsiCisiICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0
TWVzc2FnZSgnbm90IG9wZW5lZCcpOyIKKyIgICB9KTsiCisifSk7IjsKKworVEVTVChTZXJ2aWNl
V29ya2VyLCBvcGVuV2luZG93V2l0aG91dERlbGVnYXRlKQoreworICAgIFtXS1dlYnNpdGVEYXRh
U3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBT
dGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3Rv
cmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0
XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsK
KworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9u
IHByZWZlcmVuY2VzXTsKKworICAgIGZvciAoX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgKmZlYXR1
cmUgaW4gW1dLUHJlZmVyZW5jZXMgX2ludGVybmFsRGVidWdGZWF0dXJlc10pIHsKKyAgICAgICAg
aWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJTZXJ2aWNlV29ya2Vyc1VzZXJHZXN0
dXJlRW5hYmxlZCJdKQorICAgICAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOk5PIGZv
ckludGVybmFsRGVidWdGZWF0dXJlOmZlYXR1cmVdOworICAgIH0KKworICAgIGF1dG8gbWVzc2Fn
ZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2Ug
YWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ci
XTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgU2VydmljZVdvcmtlcldpbmRv
d0NsaWVudE9wZW5XaW5kb3dNYWluIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50T3BlbldpbmRvd0pTIH0gfQorICAgIH0pOworCisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90
ZXN0X3dhaXRGb3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOworCisgICAgZG9u
ZSA9IGZhbHNlOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJvcGVuZWQgd2l0aG91dCBjbGllbnQi
OworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIm9wZW5XaW5kb3dDbGllbnQoKSIg
Y29tcGxldGlvbkhhbmRsZXI6IG5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456351</attachid>
            <date>2022-04-01 05:22:15 -0700</date>
            <delta_ts>2022-04-06 00:46:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238503-20220401142213.patch</filename>
            <type>text/plain</type>
            <size>26559</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFmZTA5OTdlZGEzNzkz
MzliZmRiZWU4ZGVmZTNhM2QyZjk5MWRhZS4uOGViNDgxOTYzZTE3YjEzODkxNzljMmZjNjM2YWM3
MWE2ZThjOWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTA0LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50cy5vcGVuV2luZG93IHNob3VsZCBub3QgbmVlZCB0byBnZXQgYWxsIGNsaWVudHMgYXN5bmNo
cm9ub3VzbHkgdG8gcmVzb2x2ZSBpdHMgcHJvbWlzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBtYXRjaGluZyBjbGllbnQgaW4gb3BlbldpbmRv
dyBpbiBuZXR3b3JrIHByb2Nlc3MgYXMgYW4gb3B0aW1pemF0aW9uLgorICAgICAgICBUaGlzIGFs
c28gcHJldmVudHMgc29tZSByYWNlIGNvbmRpdGlvbnMgd2hlcmUgdGhlIG9wZW5lZCBwYWdlIGNv
dWxkIHF1aWNrbHkgbmF2aWdhdGUgdG8gYW5vdGhlciBwYWdlLgorICAgICAgICBBbHNvIGhhdmUg
YSBjb2RlIHBhdGggdGhhdCByZWplY3RzIHRoZSBvcGVuV2luZG93IHByb21pc2UsIGFuZCB0cmln
Z2VyIHRoYXQgY29kZSBwYXRoIGluIGNhc2Ugb2YgaW50ZXJuYWwgZXJyb3IuCisKKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyBhbmQgQVBJIHRlc3QuCisKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnRzLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6
CisKIDIwMjItMDQtMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBOb3RpZmljYXRpb246Om1fcmVsYXRlZE5vdGlmaWNhdGlvbklkZW50aWZpZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZjc4MDc2ODk4NzUwMDVmOTg2NjA3NDRkYjMwYjA3YTBlMTFhNDQ5Mi4uOTc2
NDc5ZmVlNzA2NzBkNDk1NjFlNGNkYzA4OTkzODAzYzcxZmRhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAyMi0wNC0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgU2VydmljZVdvcmtlckNsaWVudHMub3BlbldpbmRvdyBzaG91bGQgbm90IG5lZWQg
dG8gZ2V0IGFsbCBjbGllbnRzIGFzeW5jaHJvbm91c2x5IHRvIHJlc29sdmUgaXRzIHByb21pc2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUwMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsb2dp
YyB0byBnZXQgdGhlIGNsaWVudCBmcm9tIGl0cyBwYWdlIElELgorICAgICAgICBJbiBjYXNlIG9m
IGludGVybmFsIGVycm9yIGNhc2UsIHRyaWdnZXIgcHJvbWlzZSByZWplY3Rpb24gaW5zdGVhZCBv
ZiBwcm9taXNlIHJlc29sdXRpb24gd2l0aCBudWxsLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKwog
MjAyMi0wNC0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIE5vdGlmaWNhdGlvbjo6bV9yZWxhdGVkTm90aWZpY2F0aW9uSWRlbnRpZmllcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDNjY2U3ZjU4N2Nh
OTUyZDkyZDcxZWExOWM4YTcwYWI1MDU4Y2FkYTYuLmVhYTU4MjA3NGZhZmM0NjRjMzI4ZjgzZTY1
MjhiZGEwN2RjYzJkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJhc2U2NFV0aWxpdGllcy5oIgog
I2luY2x1ZGUgIkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJDbGllbnRPcmln
aW4uaCIKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgpAQCAtMTU2LDYgKzE1Nyw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcihTY3JpcHRC
dWZmZXJTb3VyY2VQcm92aWRlciYpOwogICAgIHZvaWQgYWRkSW1wb3J0ZWRTY3JpcHRTb3VyY2VQ
cm92aWRlcihjb25zdCBVUkwmLCBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciYpOwogCisgICAg
Q2xpZW50T3JpZ2luIGNsaWVudE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHsgdG9wT3JpZ2luKCku
ZGF0YSgpLCBzZWN1cml0eU9yaWdpbigpLT5kYXRhKCkgfTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
V29ya2VyR2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSwgY29uc3QgV29ya2VyUGFyYW1ldGVy
cyYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiwgV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQ
cm92aWRlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCA4NGFlNjdlMzk3ZWRiZjE4NDIxZDAwZWZj
NTMyNGM5YTA5NDViNmMxLi5jYWQ1ZTI3YWQxZTYyOGQ5MmE3Nzc3Y2Q5MjVmYjEyNDE0ZGI5MzIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50cy5jcHAKQEAgLTkwLDM4ICs5MCwxNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJD
bGllbnRzOjptYXRjaEFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBD
bGllbgogICAgIH0pOwogfQogCi1zdGF0aWMgdm9pZCBtYXRjaFdpbmRvd1dpdGhQYWdlSWRlbnRp
ZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4pPiYmIGNhbGxiYWNrKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0g
KCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKLSAgICAgICAgYXV0byBvcHRpb25zID0gU2Vydmlj
ZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyB7IHRydWUsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBl
OjpXaW5kb3cgfTsKLSAgICAgICAgY29ubmVjdGlvbi0+bWF0Y2hBbGwoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIG9wdGlvbnMsIFtzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcGFnZUlkZW50aWZp
ZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChWZWN0b3I8U2VydmljZVdvcmtlckNs
aWVudERhdGE+JiYgY2xpZW50c0RhdGEpIG11dGFibGUgewotICAgICAgICAgICAgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFtwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgY2xpZW50c0RhdGEgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShjbGllbnRzRGF0YSkpXSAo
YXV0byYgc2NvcGUpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZGF0YSA6
IGNsaWVudHNEYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnBhZ2VJZGVudGlm
aWVyID09IHBhZ2VJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhzY29wZSwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjYWxs
YmFjayhzY29wZSwgc3RkOjpudWxsb3B0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsK
LSAgICB9KTsKLX0KLQogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6b3BlbldpbmRvdyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
V2ViUHJvY2VzcyAlaSBzZXJ2aWNlIHdvcmtlciBjYWxsaW5nIG9wZW5XaW5kb3cgdG8gVVJMICVz
IiwgZ2V0cGlkKCksIHVybFN0cmluZy51dGY4KCkuZGF0YSgpKTsKIAotICAgIGF1dG8gc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLnRocmVhZCgpLmlkZW50aWZpZXIoKTsKLSAgICBhdXRvIHVybCA9IGNvbnRleHQuY29t
cGxldGVVUkwodXJsU3RyaW5nKTsKLQogICAgIGlmIChjb250ZXh0LnNldHRpbmdzVmFsdWVzKCku
c2VydmljZVdvcmtlcnNVc2VyR2VzdHVyZUVuYWJsZWQgJiYgIWRvd25jYXN0PFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgewogICAg
ICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiU2Vy
dmljZVdvcmtlckNsaWVudHMub3BlbldpbmRvdygpIHJlcXVpcmVzIGEgdXNlciBnZXN0dXJlIl9z
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byB1cmwgPSBjb250ZXh0LmNv
bXBsZXRlVVJMKHVybFN0cmluZyk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CiAgICAgICAg
IHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlVSTCBz
dHJpbmcgIiwgdXJsU3RyaW5nLCAiIGNhbm5vdCBzdWNjZXNzZnVsbHkgYmUgcGFyc2VkIl9zKSB9
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyLDMxICsxMTAsMzQgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyQ2xpZW50czo6b3BlbldpbmRvdyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBj
b25zdCBTdHIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGF1dG8gc2VydmljZVdvcmtl
cklkZW50aWZpZXIgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LnRocmVhZCgpLmlkZW50aWZpZXIoKTsKICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm9taXNlSWRl
bnRpZmllciA9IGFkZFBlbmRpbmdQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpOwotICAgICAgICBjb25uZWN0aW9uLT5vcGVuV2luZG93KHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCB1cmwuc3RyaW5nKCksIFtwcm9taXNlSWRlbnRpZmllciwgc2VydmljZVdvcmtl
cklkZW50aWZpZXJdIChzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJZGVudGlm
aWVyKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlz
ZUlkZW50aWZpZXIsIHBhZ2VJZGVudGlmaWVyID0gV1RGTW92ZShwYWdlSWRlbnRpZmllciksIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyXSAoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNz
ICVpIGZpbmlzaGVkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpvcGVuV2luZG93IGNhbGwuIFJlc3Vs
dGluZyBwYWdlIGlkZW50aWZpZXIgaXMgJXMiLCBnZXRwaWQoKSwgcGFnZUlkZW50aWZpZXIgPyBw
YWdlSWRlbnRpZmllci0+bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiPE5PTkU+Iik7
CisgICAgICAgIGNvbm5lY3Rpb24tPm9wZW5XaW5kb3coc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IHVybCwgW3Byb21pc2VJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtw
cm9taXNlSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0
KSldIChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBMT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3MgJWkgZmluaXNoZWQgU2Vydmlj
ZVdvcmtlckNsaWVudHM6Om9wZW5XaW5kb3cgY2FsbCByZXN1bHQgaXMgJWQuIiwgZ2V0cGlkKCks
ICFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpOwogCi0gICAgICAgICAgICAgICAgaWYgKCFwYWdlSWRl
bnRpZmllcikgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gc2NvcGUu
Y2xpZW50cygpLnRha2VQZW5kaW5nUHJvbWlzZShwcm9taXNlSWRlbnRpZmllcikpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aEpTVmFsdWUoSlNDOjpqc051bGwo
KSk7CisgICAgICAgICAgICAgICAgYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50cygpLnRha2VQ
ZW5kaW5nUHJvbWlzZShwcm9taXNlSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgaWYgKCFw
cm9taXNlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgbWF0Y2hXaW5kb3dXaXRoUGFnZUlkZW50aWZpZXIoc2VydmljZVdv
cmtlcklkZW50aWZpZXIsICpwYWdlSWRlbnRpZmllciwgW3Byb21pc2VJZGVudGlmaWVyXSAoYXV0
byYgc2NvcGUsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGNsaWVudERh
dGEpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBhdXRvIHByb21pc2UgPSBzY29wZS5j
bGllbnRzKCkudGFrZVBlbmRpbmdQcm9taXNlKHByb21pc2VJZGVudGlmaWVyKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwcm9taXNlKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgICAgIGlmICghY2xpZW50RGF0YSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVlKEpTQzo6anNOdWxsKCkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYXV0byBjbGllbnREYXRhID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgICAg
ICAgICAgICAgIGlmICghY2xpZW50RGF0YSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNl
LT5yZXNvbHZlV2l0aEpTVmFsdWUoSlNDOjpqc051bGwoKSk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgYXV0byBj
bGllbnQgPSBTZXJ2aWNlV29ya2VyQ2xpZW50OjpjcmVhdGUoc2NvcGUsIFdURk1vdmUoKmNsaWVu
dERhdGEpKTsKLSAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+dGVtcGxhdGUgcmVzb2x2ZTxJ
RExJbnRlcmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFdURk1vdmUoY2xpZW50KSk7Ci0gICAg
ICAgICAgICAgICAgfSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgICAgICAgICBhdXRv
IG9yaWdpbkRhdGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoY2xpZW50RGF0YS0+dXJs
KTsKKyAgICAgICAgICAgICAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luIHsgb3JpZ2luRGF0
YSwgb3JpZ2luRGF0YSB9OworI2VuZGlmCisgICAgICAgICAgICAgICAgQVNTRVJUKHNjb3BlLmNs
aWVudE9yaWdpbigpID09IGNsaWVudE9yaWdpbik7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+
dGVtcGxhdGUgcmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFNlcnZp
Y2VXb3JrZXJDbGllbnQ6OmNyZWF0ZShzY29wZSwgV1RGTW92ZSgqY2xpZW50RGF0YSkpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRl
eCA5YTIzYzVhZDAzNjY4MGU5ZDhlYTg4M2I2YTA5NmM1YjRhODU5ODFlLi4wY2IxOTI3NDU4N2Mz
OTQxY2UyMDkxNzdkZmNlMzU1N2ZkYTE5YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC02Nyw4
ICs2NywxMCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlWaXNp
YmxlSWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgRmlu
ZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IG1hdGNoQWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xp
ZW50UXVlcnlPcHRpb25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKSA9IDA7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnREYXRhPiYmKT4mJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgb3Blbldp
bmRvdyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJik+JiYpID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudERhdGE+JiYpPiYmKSA9IDA7CisKKyAgICAgICAgdXNpbmcgT3BlbldpbmRvd0NhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPj4mJik+OworICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRv
dyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNr
JiYpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRBc0lu
c3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBhMzFm
NDdiZDU3N2Y2ZTYyZjYzZDU5NDAxYzgzOGM1ZDUxYzY1Y2MxLi5iMjhlNmMwZTkxY2NjMzA3ODA0
ZDE2MTRiYWUyOGRjZDU3NDU0NzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTEyLDYgKzExMiwyMCBAQCBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcjo6c2VydmljZVdvcmtlckNs
aWVudFdpdGhPcmlnaW5CeQogICAgIHJldHVybiBjbGllbnRJdGVyYXRvci0+dmFsdWU7CiB9CiAK
K3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyOjp0b3BMZXZl
bFNlcnZpY2VXb3JrZXJDbGllbnRGcm9tUGFnZUlkZW50aWZpZXIoY29uc3QgQ2xpZW50T3JpZ2lu
JiBjbGllbnRPcmlnaW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKSBjb25zdAorewor
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmZpbmQoY2xp
ZW50T3JpZ2luKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9y
aWdpbi5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGZvciAoYXV0byBjbGllbnRJ
ZGVudGlmaWVyIDogaXRlcmF0b3ItPnZhbHVlLmlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8g
Y2xpZW50SXRlcmF0b3IgPSBtX2NsaWVudHNCeUlkLmZpbmQoY2xpZW50SWRlbnRpZmllcik7Cisg
ICAgICAgIGlmIChjbGllbnRJdGVyYXRvci0+dmFsdWUtPmZyYW1lVHlwZSA9PSBTZXJ2aWNlV29y
a2VyQ2xpZW50RnJhbWVUeXBlOjpUb3BMZXZlbCAmJiBjbGllbnRJdGVyYXRvci0+dmFsdWUtPnBh
Z2VJZGVudGlmaWVyICYmICpjbGllbnRJdGVyYXRvci0+dmFsdWUtPnBhZ2VJZGVudGlmaWVyID09
IHBhZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIGNsaWVudEl0ZXJhdG9yLT52YWx1
ZTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KKwogU3RyaW5nIFNXU2VydmVyOjpzZXJ2aWNl
V29ya2VyQ2xpZW50VXNlckFnZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luKSBj
b25zdAogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2lu
LmZpbmQoY2xpZW50T3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBhNGJiNzUzZmVjNDAyMzAwMzg5NTU1M2ZmMjgyYmRj
OWNlOWI1MGIzLi5iMzI3ZTM4YWZmMWVkZjI2YmU4MjAzZmJjZWFkOTZhOGQ2YzM3ZjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBA
IC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU1dT
ZXJ2ZXJXb3JrZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgpAQCAtMTYxLDYgKzE2Miw3IEBA
IHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29ya2VyKiB3b3JrZXJCeUlE
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2VyQ2xpZW50V2l0
aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiB0b3BMZXZlbFNlcnZpY2VXb3JrZXJDbGllbnRGcm9t
UGFnZUlkZW50aWZpZXIoY29uc3QgQ2xpZW50T3JpZ2luJiwgUGFnZUlkZW50aWZpZXIpIGNvbnN0
OwogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KGNvbnN0IENsaWVudE9y
aWdpbiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29ya2VyKiBhY3RpdmVX
b3JrZXJGcm9tUmVnaXN0cmF0aW9uSUQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA3Y2ExNmM3
YWE4ZDdiODRkZWQ5ODk0ZWVkZWI3MDhiNDNjNjU2M2FjLi41NjliMWFjMzBlMmQ0Mjk0M2FjYzk1
NWM4OWVlZWI5NDE4N2E0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKQEAgLTg2LDcgKzg2LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
QXNJbnNwZWN0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYm
KT4mJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpID0gMDsKKyAgICB1c2lu
ZyBPcGVuV2luZG93Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+LCBFeGNlcHRpb25EYXRhPiYmKT47
CisgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFVSTCYsIE9wZW5XaW5kb3dDYWxsYmFjayYmKSA9IDA7CiAKICAgICBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJh
YmxlRG9tYWluOyB9CiAgICAgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggN2RmYTBlMTg2NDlhMGZlMTNkNGY3
MjYxNWNhMjgzNjAwYzlmNzBlMS4uY2NkNTVjZWFhMWZlODIyN2RhYTI5NjVmN2VlZjJjNjNkY2E1
YzcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKQEAgLTE3MCwyNSArMTcwLDM2IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjp0ZXJtaW5hdGVEdWVUb1VucmVzcG9uc2l2ZW5lc3MoKQogICAgIG1fY29ubmVj
dGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VX
b3JrZXJQcm9jZXNzZXMgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwogfQogCi12b2lk
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6b3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFVSTCYgdXJsLCBPcGVuV2luZG93Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBh
dXRvKiBzZXJ2ZXIgPSB0aGlzLT5zZXJ2ZXIoKTsKICAgICBpZiAoIXNlcnZlcikgewotICAgICAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3Rl
ZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAiTm8gU1dTZXJ2ZXIiX3MgfSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byogd29ya2VyID0gc2VydmVyLT53b3JrZXJCeUlE
KGlkZW50aWZpZXIpOwogICAgIGlmICghd29ya2VyKSB7Ci0gICAgICAgIGNhbGxiYWNrKHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRhdGEg
eyBUeXBlRXJyb3IsICJObyByZW1haW5pbmcgc2VydmljZSB3b3JrZXIiX3MgfSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpbm5lckNhbGxiYWNrID0gW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
JiYgcGFnZUlkZW50aWZpZXIpIG11dGFibGUgewotICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHBh
Z2VJZGVudGlmaWVyKSk7CisgICAgYXV0byBpbm5lckNhbGxiYWNrID0gW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIHNlcnZlciA9IFdlYWtQdHIgeyAqc2VydmVyIH0sIG9yaWdpbiA9IHdv
cmtlci0+b3JpZ2luKCldKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYg
cGFnZUlkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBpZiAoIXBhZ2VJZGVudGlmaWVyKSB7
CisgICAgICAgICAgICAvLyBGSVhNRTogdmFsaWRhdGUgd2hldGhlciB3ZSBzaG91bGQgcmVqZWN0
IG9yIHJlc29sdmUgd2l0aCBudWxsLCBodHRwczovL2dpdGh1Yi5jb20vdzNjL1NlcnZpY2VXb3Jr
ZXIvaXNzdWVzLzE2MzkKKyAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXNlcnZlcikgeworICAgICAgICAgICAg
Y2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIk5vIFNX
U2VydmVyIl9zIH0pKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGNhbGxiYWNrKHNlcnZlci0+dG9wTGV2ZWxTZXJ2aWNlV29ya2VyQ2xpZW50RnJvbVBhZ2VJZGVu
dGlmaWVyKG9yaWdpbiwgKnBhZ2VJZGVudGlmaWVyKSk7CiAgICAgfTsKIAotICAgIG1fY29ubmVj
dGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6T3BlbldpbmRvd0Zyb21T
ZXJ2aWNlV29ya2VyIHsgc2VydmVyLT5zZXNzaW9uSUQoKSwgdXJsU3RyaW5nLCB3b3JrZXItPm9y
aWdpbigpLmNsaWVudE9yaWdpbiB9LCBXVEZNb3ZlKGlubmVyQ2FsbGJhY2spKTsKKyAgICBtX2Nv
bm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok9wZW5XaW5kb3dG
cm9tU2VydmljZVdvcmtlciB7IG1fY29ubmVjdGlvbi5zZXNzaW9uSUQoKSwgdXJsLnN0cmluZygp
LCB3b3JrZXItPm9yaWdpbigpLmNsaWVudE9yaWdpbiB9LCBXVEZNb3ZlKGlubmVyQ2FsbGJhY2sp
KTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29t
cGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U2VydmljZVdv
cmtlckNsaWVudERhdGE+JiBjbGllbnRzRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCAwMTZhODI3NTM1MGFjMWVjMzQ3OTAyYjJm
YTM0ZjgyODYzMDlkNWMwLi45ZTgzYjNkYmFiODMzMjRjZDZlZDFmMGY4MzAxNTNhNzg2ZDJlMmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVjdGlvbklzTm9M
b25nZXJOZWVkZWQoKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25zaXZl
bmVzcygpIGZpbmFsOwotICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpIGZpbmFsOwor
ICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9pZCBjb25uZWN0
aW9uQ2xvc2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDIxZDIzNjU1N2M0MzQzOTlkZTk4
MThkNjc5M2FjYjY1Y2JjMWU2YmYuLjliMGM3MGY3N2RhYjcxYzAyODQxNzgwNTJkZDQ3MjJiODI3
Y2FkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtNDEsNyArNDEsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmFp
bEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgU2V0QXNJbnNwZWN0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgYm9vbCBpc0luc3BlY3RlZCkKIAotICAgIE9wZW5XaW5kb3coV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIHVybFN0cmluZykgLT4g
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5ld0NsaWVudERhdGEpCisg
ICAgT3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
LCBVUkwgdXJsKSAtPiAoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IG5ld0NsaWVudERhdGEpCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAKaW5kZXggNzNlY2RlMjZkOGUwOWM5YmE2MGJkNDUxOGY5YWQwNTVhMDJi
NzYyYS4uNjRmYmJhNGZhY2Y3MmYxOWMyOWI3MzM4MjAyMjRmODM3MGZmMTEzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMzM3LDkgKzMzNywxNSBAQCB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllcgogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNsaWVudHNEYXRhKSk7
CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om9wZW5XaW5kb3coV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6b3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIE9wZW5XaW5kb3dD
YWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpPcGVuV2luZG93IHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCB9LCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Ok9wZW5X
aW5kb3cgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsIH0sIFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghcmVz
dWx0Lmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQuZXJyb3IoKS50
b0V4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBj
YWxsYmFjayhXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlv
bk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
aW5kZXggNTg0MjgyYzEwODNlMTQ4NmY5ZTFmZTJmODBjMTYwNjZmMGQ1MWFjMi4uM2I1MDVjNzIw
MGMzY2YwMDNjYThlMmUzYWI0NWEwMjJiYWM3ZTg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1Rocm90dGxl
YWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNldEFzSW5zcGVj
dGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBmaW5hbDsKLSAgICB2
b2lkIG9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIG9wZW5XaW5kb3coV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIE9wZW5XaW5kb3dDYWxsYmFj
ayYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNlcnZpY2VXb3Jr
ZXJTdGFydGVkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRs
ZUZldGNoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA5NDA5N2RkMTlmZjIzOTkyNzFhMzlkMDNiZDBiY2MwYWE4ZWZmNGQ1Li43MDQx
M2EzNTVmZjA1MWE4MzVhY2E3ODA2NTgzZjdmNWUxZTEzM2RiIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDQt
MDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2VX
b3JrZXJDbGllbnRzLm9wZW5XaW5kb3cgc2hvdWxkIG5vdCBuZWVkIHRvIGdldCBhbGwgY2xpZW50
cyBhc3luY2hyb25vdXNseSB0byByZXNvbHZlIGl0cyBwcm9taXNlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MDMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorCiAyMDIyLTAzLTMwICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVyZ2UtUXVldWVdIFVwZGF0
ZSBwdWxsLXJlcXVlc3Qgd2l0aCBsYW5kZWQgY29udGVudApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpp
bmRleCA2MGNjMjM0MjhiNmY5ODk3ODI3NjFiMWU5ODc1NWMzNDRiNmMyZTEzLi5lMTMxZDRjODZj
NzZhM2JjZmMwZDQyY2VmZGZhYjAzZTA4NjhjZGRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpA
QCAtMjk2NiwzICsyOTY2LDg0IEBAIFRFU1QoU2VydmljZVdvcmtlciwgU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudEZvY3VzUmVxdWlyZXNVc2VyR2VzdHVyZSkKICAgICBbd2ViVmlldyBldmFsdWF0
ZUphdmFTY3JpcHQ6QCJmb2N1c0NsaWVudCgpIiBjb21wbGV0aW9uSGFuZGxlcjogbmlsXTsKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQorCitzdGF0aWMgY29uc3QgY2hh
ciogU2VydmljZVdvcmtlcldpbmRvd0NsaWVudE9wZW5XaW5kb3dNYWluID0KKyI8ZGl2IGlkPSds
b2cnPnRlc3QgcGFnZTwvZGl2PiIKKyI8c2NyaXB0PiIKKyJsZXQgd29ya2VyOyIKKyJhc3luYyBm
dW5jdGlvbiB0ZXN0KCkgeyIKKyIgICAgbG9nLmlubmVySFRNTCA9ICd0ZXN0JzsiCisiICAgIHRy
eSB7IgorIiAgICAgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpOyIKKyIgICAgICAgIGxvZy5pbm5lckhUTUwgPSAn
cmVnaXN0ZXJlZCc7IgorIiAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbi5hY3RpdmUpIHsiCisiICAg
ICAgICAgICAgd29ya2VyID0gcmVnaXN0cmF0aW9uLmFjdGl2ZTsiCisiICAgICAgICAgICAgYWxl
cnQoJ2FscmVhZHkgYWN0aXZlJyk7IgorIiAgICAgICAgICAgIHJldHVybjsiCisiICAgICAgICB9
IgorIiAgICAgICAgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7IgorIiAgICAgICAg
d29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgKCkgPT4geyIKKyIgICAgICAg
ICAgIGxvZy5pbm5lckhUTUwgPSAnd29ya2VyLnN0YXRlPScgKyB3b3JrZXIuc3RhdGU7IgorIiAg
ICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpIgorIiAgICAgICAgICAg
ICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsiCisiICAgICAgICB9KTsiCisi
ICAgIH0gY2F0Y2goZSkgeyIKKyIgICAgICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsiCisi
ICAgIH0iCisifSIKKyJ3aW5kb3cub25sb2FkID0gdGVzdDsiCisiIgorImZ1bmN0aW9uIG9wZW5X
aW5kb3dDbGllbnQoKSB7IgorIiAgICBsb2cuaW5uZXJIVE1MID0gJ29wZW5XaW5kb3dDbGllbnQn
OyIKKyIgICAgd29ya2VyLnBvc3RNZXNzYWdlKCdzdGFydCcpOyIKKyIgICAgbmF2aWdhdG9yLnNl
cnZpY2VXb3JrZXIub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7IgorIiAgICAgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMuc3cucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSk7IgorIiAgICB9
IgorIn0iCisiPC9zY3JpcHQ+IjsKK3N0YXRpYyBjb25zdCBjaGFyKiBTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50T3BlbldpbmRvd0pTID0KKyJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2Un
LCAoZXZlbnQpID0+IHsiCisiICAgc2VsZi5jbGllbnRzLm9wZW5XaW5kb3coJy9zdy5qcycpLnRo
ZW4oKGNsaWVudCkgPT4geyIKKyIgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKGNsaWVu
dCA/ICdvcGVuZWQgd2l0aCBjbGllbnQnIDogJ29wZW5lZCB3aXRob3V0IGNsaWVudCcpOyIKKyIg
ICB9LCAoZXJyb3IpID0+IHsiCisiICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm90
IG9wZW5lZCcpOyIKKyIgICB9KTsiCisifSk7IjsKKworVEVTVChTZXJ2aWNlV29ya2VyLCBvcGVu
V2luZG93V2l0aG91dERlbGVnYXRlKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93
V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3aXRoIGEg
Y2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZlcmVuY2Vz
XTsKKworICAgIGZvciAoX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJl
ZmVyZW5jZXMgX2ludGVybmFsRGVidWdGZWF0dXJlc10pIHsKKyAgICAgICAgaWYgKFtmZWF0dXJl
LmtleSBpc0VxdWFsVG9TdHJpbmc6QCJTZXJ2aWNlV29ya2Vyc1VzZXJHZXN0dXJlRW5hYmxlZCJd
KQorICAgICAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOk5PIGZvckludGVybmFsRGVi
dWdGZWF0dXJlOmZlYXR1cmVdOworICAgIH0KKworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBh
ZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGluaXRd
KTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRN
ZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudE9wZW5X
aW5kb3dNYWluIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50T3Bl
bldpbmRvd0pTIH0gfQorICAgIH0pOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVy
LnJlcXVlc3QoKV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JB
bGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOworCisgICAgZG9uZSA9IGZhbHNlOwor
ICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJvcGVuZWQgd2l0aG91dCBjbGllbnQiOworICAgIFt3ZWJW
aWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIm9wZW5XaW5kb3dDbGllbnQoKSIgY29tcGxldGlvbkhh
bmRsZXI6IG5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456787</attachid>
            <date>2022-04-06 00:46:27 -0700</date>
            <delta_ts>2022-04-06 01:49:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238503-20220406094625.patch</filename>
            <type>text/plain</type>
            <size>26516</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTViZjZhNTRiOTdmZTlm
Yzc3Y2ZlY2NjOTVjZDkyYjU4M2YyZmJmNi4uMDkyOGI3YzU2MGU2MzM1MDM1YThkMWFlMjViNWIz
Y2MzYzMyNGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTA0LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50cy5vcGVuV2luZG93IHNob3VsZCBub3QgbmVlZCB0byBnZXQgYWxsIGNsaWVudHMgYXN5bmNo
cm9ub3VzbHkgdG8gcmVzb2x2ZSBpdHMgcHJvbWlzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hy
aXMgRHVtZXouCisKKyAgICAgICAgTW92ZSBtYXRjaGluZyBjbGllbnQgaW4gb3BlbldpbmRvdyBp
biBuZXR3b3JrIHByb2Nlc3MgYXMgYW4gb3B0aW1pemF0aW9uLgorICAgICAgICBUaGlzIGFsc28g
cHJldmVudHMgc29tZSByYWNlIGNvbmRpdGlvbnMgd2hlcmUgdGhlIG9wZW5lZCBwYWdlIGNvdWxk
IHF1aWNrbHkgbmF2aWdhdGUgdG8gYW5vdGhlciBwYWdlLgorICAgICAgICBBbHNvIGhhdmUgYSBj
b2RlIHBhdGggdGhhdCByZWplY3RzIHRoZSBvcGVuV2luZG93IHByb21pc2UsIGFuZCB0cmlnZ2Vy
IHRoYXQgY29kZSBwYXRoIGluIGNhc2Ugb2YgaW50ZXJuYWwgZXJyb3IuCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyBhbmQgQVBJIHRlc3QuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnRzLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisK
IDIwMjItMDQtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBOb3RpZmljYXRpb246Om1fcmVsYXRlZE5vdGlmaWNhdGlvbklkZW50aWZpZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggYzU5ODdmMjhlNDg1NWZlYzM1YzAxMGU4YzVlMmY0MzU1NjhiNjNiZS4uZDExYThj
ODBmNWFmNWY4MGI1ZWI1YzdkMjg3ZjQxODFkYmEzMmYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAyMi0wNC0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgU2VydmljZVdvcmtlckNsaWVudHMub3BlbldpbmRvdyBzaG91bGQgbm90IG5lZWQgdG8g
Z2V0IGFsbCBjbGllbnRzIGFzeW5jaHJvbm91c2x5IHRvIHJlc29sdmUgaXRzIHByb21pc2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUwMworCisg
ICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIEFkZCBsb2dpYyB0byBn
ZXQgdGhlIGNsaWVudCBmcm9tIGl0cyBwYWdlIElELgorICAgICAgICBJbiBjYXNlIG9mIGludGVy
bmFsIGVycm9yIGNhc2UsIHRyaWdnZXIgcHJvbWlzZSByZWplY3Rpb24gaW5zdGVhZCBvZiBwcm9t
aXNlIHJlc29sdXRpb24gd2l0aCBudWxsLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKwogMjAyMi0w
NC0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IE5vdGlmaWNhdGlvbjo6bV9yZWxhdGVkTm90aWZpY2F0aW9uSWRlbnRpZmllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDNjY2U3ZjU4N2NhOTUyZDky
ZDcxZWExOWM4YTcwYWI1MDU4Y2FkYTYuLmVhYTU4MjA3NGZhZmM0NjRjMzI4ZjgzZTY1MjhiZGEw
N2RjYzJkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJhc2U2NFV0aWxpdGllcy5oIgogI2luY2x1
ZGUgIkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIK
ICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgpAQCAtMTU2LDYgKzE1Nyw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcihTY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlciYpOwogICAgIHZvaWQgYWRkSW1wb3J0ZWRTY3JpcHRTb3VyY2VQcm92aWRl
cihjb25zdCBVUkwmLCBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciYpOwogCisgICAgQ2xpZW50
T3JpZ2luIGNsaWVudE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHsgdG9wT3JpZ2luKCkuZGF0YSgp
LCBzZWN1cml0eU9yaWdpbigpLT5kYXRhKCkgfTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiwgV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYm
IHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRl
ciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCA4NGFlNjdlMzk3ZWRiZjE4NDIxZDAwZWZjNTMyNGM5
YTA5NDViNmMxLi5jYWQ1ZTI3YWQxZTYyOGQ5MmE3Nzc3Y2Q5MjVmYjEyNDE0ZGI5MzIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50cy5jcHAKQEAgLTkwLDM4ICs5MCwxNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRz
OjptYXRjaEFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBDbGllbgog
ICAgIH0pOwogfQogCi1zdGF0aWMgdm9pZCBtYXRjaFdpbmRvd1dpdGhQYWdlSWRlbnRpZmllcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUGFnZUlkZW50
aWZpZXIgcGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlJiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4pPiYm
IGNhbGxiYWNrKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmNvbm5lY3Rpb24oKTsKLSAgICAgICAgYXV0byBvcHRpb25zID0gU2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9ucyB7IHRydWUsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5k
b3cgfTsKLSAgICAgICAgY29ubmVjdGlvbi0+bWF0Y2hBbGwoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIG9wdGlvbnMsIFtzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcGFnZUlkZW50aWZpZXIsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERh
dGE+JiYgY2xpZW50c0RhdGEpIG11dGFibGUgewotICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFtwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY2xp
ZW50c0RhdGEgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShjbGllbnRzRGF0YSkpXSAoYXV0byYg
c2NvcGUpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZGF0YSA6IGNsaWVu
dHNEYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnBhZ2VJZGVudGlmaWVyID09
IHBhZ2VJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzY29w
ZSwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjYWxsYmFjayhz
Y29wZSwgc3RkOjpudWxsb3B0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9
KTsKLX0KLQogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6b3BlbldpbmRvdyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJv
Y2VzcyAlaSBzZXJ2aWNlIHdvcmtlciBjYWxsaW5nIG9wZW5XaW5kb3cgdG8gVVJMICVzIiwgZ2V0
cGlkKCksIHVybFN0cmluZy51dGY4KCkuZGF0YSgpKTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtl
cklkZW50aWZpZXIgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LnRocmVhZCgpLmlkZW50aWZpZXIoKTsKLSAgICBhdXRvIHVybCA9IGNvbnRleHQuY29tcGxldGVV
UkwodXJsU3RyaW5nKTsKLQogICAgIGlmIChjb250ZXh0LnNldHRpbmdzVmFsdWVzKCkuc2Vydmlj
ZVdvcmtlcnNVc2VyR2VzdHVyZUVuYWJsZWQgJiYgIWRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkuaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgewogICAgICAgICBw
cm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiU2VydmljZVdv
cmtlckNsaWVudHMub3BlbldpbmRvdygpIHJlcXVpcmVzIGEgdXNlciBnZXN0dXJlIl9zIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byB1cmwgPSBjb250ZXh0LmNvbXBsZXRl
VVJMKHVybFN0cmluZyk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIHByb21p
c2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlVSTCBzdHJpbmcg
IiwgdXJsU3RyaW5nLCAiIGNhbm5vdCBzdWNjZXNzZnVsbHkgYmUgcGFyc2VkIl9zKSB9KTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMyLDMxICsxMTAsMzQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xp
ZW50czo6b3BlbldpbmRvdyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBT
dHIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50
aWZpZXIgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRocmVh
ZCgpLmlkZW50aWZpZXIoKTsKICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm9taXNlSWRlbnRpZmll
ciA9IGFkZFBlbmRpbmdQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpLCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpOwotICAgICAgICBjb25uZWN0aW9uLT5vcGVuV2luZG93KHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCB1cmwuc3RyaW5nKCksIFtwcm9taXNlSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50
aWZpZXJdIChzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJZGVudGlmaWVyKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RU
YXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZUlkZW50
aWZpZXIsIHBhZ2VJZGVudGlmaWVyID0gV1RGTW92ZShwYWdlSWRlbnRpZmllciksIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyXSAoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzICVpIGZp
bmlzaGVkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpvcGVuV2luZG93IGNhbGwuIFJlc3VsdGluZyBw
YWdlIGlkZW50aWZpZXIgaXMgJXMiLCBnZXRwaWQoKSwgcGFnZUlkZW50aWZpZXIgPyBwYWdlSWRl
bnRpZmllci0+bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiPE5PTkU+Iik7CisgICAg
ICAgIGNvbm5lY3Rpb24tPm9wZW5XaW5kb3coc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCwg
W3Byb21pc2VJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKGF1dG8mJiByZXN1
bHQpIG11dGFibGUgeworICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
cG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNl
SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0KSldIChT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBMT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3MgJWkgZmluaXNoZWQgU2VydmljZVdvcmtl
ckNsaWVudHM6Om9wZW5XaW5kb3cgY2FsbCByZXN1bHQgaXMgJWQuIiwgZ2V0cGlkKCksICFyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpOwogCi0gICAgICAgICAgICAgICAgaWYgKCFwYWdlSWRlbnRpZmll
cikgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50
cygpLnRha2VQZW5kaW5nUHJvbWlzZShwcm9taXNlSWRlbnRpZmllcikpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aEpTVmFsdWUoSlNDOjpqc051bGwoKSk7Cisg
ICAgICAgICAgICAgICAgYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50cygpLnRha2VQZW5kaW5n
UHJvbWlzZShwcm9taXNlSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgaWYgKCFwcm9taXNl
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgbWF0Y2hXaW5kb3dXaXRoUGFnZUlkZW50aWZpZXIoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsICpwYWdlSWRlbnRpZmllciwgW3Byb21pc2VJZGVudGlmaWVyXSAoYXV0byYgc2Nv
cGUsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGNsaWVudERhdGEpIG11
dGFibGUgewotICAgICAgICAgICAgICAgICAgICBhdXRvIHByb21pc2UgPSBzY29wZS5jbGllbnRz
KCkudGFrZVBlbmRpbmdQcm9taXNlKHByb21pc2VJZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFwcm9taXNlKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghY2xpZW50RGF0YSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZS0+cmVzb2x2ZVdpdGhKU1ZhbHVlKEpTQzo6anNOdWxsKCkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXV0
byBjbGllbnREYXRhID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgICAgICAgICAg
ICAgIGlmICghY2xpZW50RGF0YSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNv
bHZlV2l0aEpTVmFsdWUoSlNDOjpqc051bGwoKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgYXV0byBjbGllbnQg
PSBTZXJ2aWNlV29ya2VyQ2xpZW50OjpjcmVhdGUoc2NvcGUsIFdURk1vdmUoKmNsaWVudERhdGEp
KTsKLSAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+dGVtcGxhdGUgcmVzb2x2ZTxJRExJbnRl
cmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFdURk1vdmUoY2xpZW50KSk7Ci0gICAgICAgICAg
ICAgICAgfSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgICAgICAgICBhdXRvIG9yaWdp
bkRhdGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoY2xpZW50RGF0YS0+dXJsKTsKKyAg
ICAgICAgICAgICAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luIHsgb3JpZ2luRGF0YSwgb3Jp
Z2luRGF0YSB9OworI2VuZGlmCisgICAgICAgICAgICAgICAgQVNTRVJUKHNjb3BlLmNsaWVudE9y
aWdpbigpID09IGNsaWVudE9yaWdpbik7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+dGVtcGxh
dGUgcmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFNlcnZpY2VXb3Jr
ZXJDbGllbnQ6OmNyZWF0ZShzY29wZSwgV1RGTW92ZSgqY2xpZW50RGF0YSkpKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCA5YTIz
YzVhZDAzNjY4MGU5ZDhlYTg4M2I2YTA5NmM1YjRhODU5ODFlLi4wY2IxOTI3NDU4N2MzOTQxY2Uy
MDkxNzdkZmNlMzU1N2ZkYTE5YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC02Nyw4ICs2Nywx
MCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlWaXNpYmxlSWRl
bnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgRmluZENsaWVu
dEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hdGNo
QWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVl
cnlPcHRpb25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKSA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPiYmKT4mJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJik+JiYpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERh
dGE+JiYpPiYmKSA9IDA7CisKKyAgICAgICAgdXNpbmcgT3BlbldpbmRvd0NhbGxiYWNrID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPj4mJik+OworICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNrJiYpID0g
MDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRBc0luc3BlY3Rl
ZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBjODA3MmI5MWQ0
ODRmOWJmNDBjMmIwYjU5ODljNzJiZWFjMDE4ZTFkLi4yMWRiZDI2NDhjMWFkMjkwYWFkZmZjYzBm
OGFiYjRiMGVkNDc1Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTEyLDYgKzExMiwyMCBAQCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcjo6c2VydmljZVdvcmtlckNsaWVudFdp
dGhPcmlnaW5CeQogICAgIHJldHVybiBjbGllbnRJdGVyYXRvci0+dmFsdWU7CiB9CiAKK3N0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyOjp0b3BMZXZlbFNlcnZp
Y2VXb3JrZXJDbGllbnRGcm9tUGFnZUlkZW50aWZpZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGll
bnRPcmlnaW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKSBjb25zdAoreworICAgIGF1
dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmZpbmQoY2xpZW50T3Jp
Z2luKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGZvciAoYXV0byBjbGllbnRJZGVudGlm
aWVyIDogaXRlcmF0b3ItPnZhbHVlLmlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8gY2xpZW50
SXRlcmF0b3IgPSBtX2NsaWVudHNCeUlkLmZpbmQoY2xpZW50SWRlbnRpZmllcik7CisgICAgICAg
IGlmIChjbGllbnRJdGVyYXRvci0+dmFsdWUtPmZyYW1lVHlwZSA9PSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RnJhbWVUeXBlOjpUb3BMZXZlbCAmJiBjbGllbnRJdGVyYXRvci0+dmFsdWUtPnBhZ2VJZGVu
dGlmaWVyID09IHBhZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIGNsaWVudEl0ZXJh
dG9yLT52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KKwogU3RyaW5nIFNXU2VydmVy
OjpzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50
T3JpZ2luKSBjb25zdAogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJz
UGVyT3JpZ2luLmZpbmQoY2xpZW50T3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBhNGJiNzUzZmVjNDAyMzAwMzg5NTU1
M2ZmMjgyYmRjOWNlOWI1MGIzLi5iMzI3ZTM4YWZmMWVkZjI2YmU4MjAzZmJjZWFkOTZhOGQ2YzM3
ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgpAQCAtMTYxLDYg
KzE2Miw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29ya2VyKiB3
b3JrZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2Vy
Q2xpZW50V2l0aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiB0b3BMZXZlbFNlcnZpY2VXb3JrZXJD
bGllbnRGcm9tUGFnZUlkZW50aWZpZXIoY29uc3QgQ2xpZW50T3JpZ2luJiwgUGFnZUlkZW50aWZp
ZXIpIGNvbnN0OwogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KGNvbnN0
IENsaWVudE9yaWdpbiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29ya2Vy
KiBhY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9uSUQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRl
eCA3Y2ExNmM3YWE4ZDdiODRkZWQ5ODk0ZWVkZWI3MDhiNDNjNjU2M2FjLi41NjliMWFjMzBlMmQ0
Mjk0M2FjYzk1NWM4OWVlZWI5NDE4N2E0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKQEAgLTg2LDcgKzg2LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0QXNJbnNwZWN0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiYmKT4mJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpID0gMDsK
KyAgICB1c2luZyBPcGVuV2luZG93Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+LCBFeGNlcHRpb25E
YXRhPiYmKT47CisgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFVSTCYsIE9wZW5XaW5kb3dDYWxsYmFjayYmKSA9IDA7CiAKICAgICBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBt
X3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAgICAgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggN2RmYTBlMTg2NDlh
MGZlMTNkNGY3MjYxNWNhMjgzNjAwYzlmNzBlMS4uY2NkNTVjZWFhMWZlODIyN2RhYTI5NjVmN2Vl
ZjJjNjNkY2E1YzcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTE3MCwyNSArMTcwLDM2IEBAIHZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVEdWVUb1VucmVzcG9uc2l2ZW5lc3MoKQogICAg
IG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0ZVVucmVzcG9uc2l2
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwog
fQogCi12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6b3BlbldpbmRvdyhXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBPcGVuV2luZG93Q2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBhdXRvKiBzZXJ2ZXIgPSB0aGlzLT5zZXJ2ZXIoKTsKICAgICBpZiAoIXNlcnZlcikg
ewotICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhtYWtl
VW5leHBlY3RlZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAiTm8gU1dTZXJ2ZXIiX3MgfSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byogd29ya2VyID0gc2VydmVyLT53
b3JrZXJCeUlEKGlkZW50aWZpZXIpOwogICAgIGlmICghd29ya2VyKSB7Ci0gICAgICAgIGNhbGxi
YWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEV4Y2Vw
dGlvbkRhdGEgeyBUeXBlRXJyb3IsICJObyByZW1haW5pbmcgc2VydmljZSB3b3JrZXIiX3MgfSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpbm5lckNhbGxiYWNrID0gW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+JiYgcGFnZUlkZW50aWZpZXIpIG11dGFibGUgewotICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKHBhZ2VJZGVudGlmaWVyKSk7CisgICAgYXV0byBpbm5lckNhbGxiYWNrID0gW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNlcnZlciA9IFdlYWtQdHIgeyAqc2VydmVyIH0sIG9y
aWdpbiA9IHdvcmtlci0+b3JpZ2luKCldKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+JiYgcGFnZUlkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBpZiAoIXBhZ2VJZGVu
dGlmaWVyKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogdmFsaWRhdGUgd2hldGhlciB3ZSBzaG91
bGQgcmVqZWN0IG9yIHJlc29sdmUgd2l0aCBudWxsLCBodHRwczovL2dpdGh1Yi5jb20vdzNjL1Nl
cnZpY2VXb3JrZXIvaXNzdWVzLzE2MzkKKyAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXNlcnZlcikgeworICAg
ICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJv
ciwgIk5vIFNXU2VydmVyIl9zIH0pKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGNhbGxiYWNrKHNlcnZlci0+dG9wTGV2ZWxTZXJ2aWNlV29ya2VyQ2xpZW50RnJv
bVBhZ2VJZGVudGlmaWVyKG9yaWdpbiwgKnBhZ2VJZGVudGlmaWVyKSk7CiAgICAgfTsKIAotICAg
IG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6T3Blbldp
bmRvd0Zyb21TZXJ2aWNlV29ya2VyIHsgc2VydmVyLT5zZXNzaW9uSUQoKSwgdXJsU3RyaW5nLCB3
b3JrZXItPm9yaWdpbigpLmNsaWVudE9yaWdpbiB9LCBXVEZNb3ZlKGlubmVyQ2FsbGJhY2spKTsK
KyAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok9w
ZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlciB7IG1fY29ubmVjdGlvbi5zZXNzaW9uSUQoKSwgdXJs
LnN0cmluZygpLCB3b3JrZXItPm9yaWdpbigpLmNsaWVudE9yaWdpbiB9LCBXVEZNb3ZlKGlubmVy
Q2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1h
dGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8
U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBjbGllbnRzRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCAwMTZhODI3NTM1MGFjMWVj
MzQ3OTAyYjJmYTM0ZjgyODYzMDlkNWMwLi45ZTgzYjNkYmFiODMzMjRjZDZlZDFmMGY4MzAxNTNh
Nzg2ZDJlMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVj
dGlvbklzTm9Mb25nZXJOZWVkZWQoKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZUR1ZVRvVW5y
ZXNwb25zaXZlbmVzcygpIGZpbmFsOwotICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYp
IGZpbmFsOworICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9p
ZCBjb25uZWN0aW9uQ2xvc2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDIxZDIzNjU1N2M0
MzQzOTlkZTk4MThkNjc5M2FjYjY1Y2JjMWU2YmYuLjliMGM3MGY3N2RhYjcxYzAyODQxNzgwNTJk
ZDQ3MjJiODI3Y2FkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtNDEsNyArNDEsNyBAQCBtZXNz
YWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAg
ICAgRGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAgICAgU2V0QXNJbnNwZWN0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc0luc3BlY3RlZCkKIAotICAgIE9wZW5XaW5kb3co
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIHVybFN0
cmluZykgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5ld0NsaWVu
dERhdGEpCisgICAgT3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBVUkwgdXJsKSAtPiAoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IG5ld0NsaWVu
dERhdGEpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzNlY2RlMjZkOGUwOWM5YmE2MGJkNDUxOGY5
YWQwNTVhMDJiNzYyYS4uNjRmYmJhNGZhY2Y3MmYxOWMyOWI3MzM4MjAyMjRmODM3MGZmMTEzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMzM3LDkgKzMzNywxNSBA
QCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcgogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNsaWVu
dHNEYXRhKSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om9wZW5X
aW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6b3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIE9w
ZW5XaW5kb3dDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpPcGVuV2luZG93IHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCB9
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246Ok9wZW5XaW5kb3cgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsIH0sIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAg
IGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQu
ZXJyb3IoKS50b0V4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSk7CisgICAgfSk7CiB9CiAK
IHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsYWltKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmgKaW5kZXggNTg0MjgyYzEwODNlMTQ4NmY5ZTFmZTJmODBjMTYwNjZmMGQ1MWFjMi4u
M2I1MDVjNzIwMGMzY2YwMDNjYThlMmUzYWI0NWEwMjJiYWM3ZTg4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c1Rocm90dGxlYWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENo
ZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNl
dEFzSW5zcGVjdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBmaW5h
bDsKLSAgICB2b2lkIG9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIG9wZW5XaW5k
b3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIE9wZW5XaW5k
b3dDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNl
cnZpY2VXb3JrZXJTdGFydGVkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wg
ZG9lc0hhbmRsZUZldGNoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBkMjYyNTQ4OTM3YTIwYzA4MjA1MGI3NzEwOTBiNzBlM2IzNzlm
NDMwLi44ZjVhYzIzZTI5N2JkNmJjNzNlNzI3ODA4YTJjNjFjNWJhYjNmNGQxIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMjItMDQtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAg
IFNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cgc2hvdWxkIG5vdCBuZWVkIHRvIGdldCBh
bGwgY2xpZW50cyBhc3luY2hyb25vdXNseSB0byByZXNvbHZlIGl0cyBwcm9taXNlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorCiAyMDIyLTA0LTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWFyayBTdHJpbmcoY29uc3Qg
Y2hhciopIGNvbnN0cnVjdG9yIGFzIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCmluZGV4
IDE1ZWQ2ZWQ0ODI4ODIwY2RhMzU2MTNjYWVkYTAwOWJmY2UxOWI3YWIuLmIwMmQ3ZDQ2NTFiM2Zj
MjNlNDNiNDcyOTFmNzZmNmRmNzlkMmY4OWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCkBAIC0y
OTY2LDMgKzI5NjYsODQgQEAgVEVTVChTZXJ2aWNlV29ya2VyLCBTZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50Rm9jdXNSZXF1aXJlc1VzZXJHZXN0dXJlKQogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2
YVNjcmlwdDpAImZvY3VzQ2xpZW50KCkiIGNvbXBsZXRpb25IYW5kbGVyOiBuaWxdOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CisKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50T3BlbldpbmRvd01haW4gPQorIjxkaXYgaWQ9J2xv
Zyc+dGVzdCBwYWdlPC9kaXY+IgorIjxzY3JpcHQ+IgorImxldCB3b3JrZXI7IgorImFzeW5jIGZ1
bmN0aW9uIHRlc3QoKSB7IgorIiAgICBsb2cuaW5uZXJIVE1MID0gJ3Rlc3QnOyIKKyIgICAgdHJ5
IHsiCisiICAgICAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJyk7IgorIiAgICAgICAgbG9nLmlubmVySFRNTCA9ICdy
ZWdpc3RlcmVkJzsiCisiICAgICAgICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2ZSkgeyIKKyIgICAg
ICAgICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uYWN0aXZlOyIKKyIgICAgICAgICAgICBhbGVy
dCgnYWxyZWFkeSBhY3RpdmUnKTsiCisiICAgICAgICAgICAgcmV0dXJuOyIKKyIgICAgICAgIH0i
CisiICAgICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsiCisiICAgICAgICB3
b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCAoKSA9PiB7IgorIiAgICAgICAg
ICAgbG9nLmlubmVySFRNTCA9ICd3b3JrZXIuc3RhdGU9JyArIHdvcmtlci5zdGF0ZTsiCisiICAg
ICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykiCisiICAgICAgICAgICAg
ICAgIGFsZXJ0KCdzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCcpOyIKKyIgICAgICAgIH0pOyIKKyIg
ICAgfSBjYXRjaChlKSB7IgorIiAgICAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOyIKKyIg
ICAgfSIKKyJ9IgorIndpbmRvdy5vbmxvYWQgPSB0ZXN0OyIKKyIiCisiZnVuY3Rpb24gb3Blbldp
bmRvd0NsaWVudCgpIHsiCisiICAgIGxvZy5pbm5lckhUTUwgPSAnb3BlbldpbmRvd0NsaWVudCc7
IgorIiAgICB3b3JrZXIucG9zdE1lc3NhZ2UoJ3N0YXJ0Jyk7IgorIiAgICBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsiCisiICAgICAgICB3aW5kb3cud2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy5zdy5wb3N0TWVzc2FnZShldmVudC5kYXRhKTsiCisiICAgIH0i
CisifSIKKyI8L3NjcmlwdD4iX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gU2VydmljZVdvcmtl
cldpbmRvd0NsaWVudE9wZW5XaW5kb3dKUyA9Cisic2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNz
YWdlJywgKGV2ZW50KSA9PiB7IgorIiAgIHNlbGYuY2xpZW50cy5vcGVuV2luZG93KCcvc3cuanMn
KS50aGVuKChjbGllbnQpID0+IHsiCisiICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZShj
bGllbnQgPyAnb3BlbmVkIHdpdGggY2xpZW50JyA6ICdvcGVuZWQgd2l0aG91dCBjbGllbnQnKTsi
CisiICAgfSwgKGVycm9yKSA9PiB7IgorIiAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2Uo
J25vdCBvcGVuZWQnKTsiCisiICAgfSk7IgorIn0pOyJfczsKKworVEVTVChTZXJ2aWNlV29ya2Vy
LCBvcGVuV2luZG93V2l0aG91dERlbGVnYXRlKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUg
X2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3
aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRl
ZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
V2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21w
bGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXTsKKworICAgIGZvciAoX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgKmZlYXR1cmUgaW4g
W1dLUHJlZmVyZW5jZXMgX2ludGVybmFsRGVidWdGZWF0dXJlc10pIHsKKyAgICAgICAgaWYgKFtm
ZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJTZXJ2aWNlV29ya2Vyc1VzZXJHZXN0dXJlRW5h
YmxlZCJdKQorICAgICAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOk5PIGZvckludGVy
bmFsRGVidWdGZWF0dXJlOmZlYXR1cmVdOworICAgIH0KKworICAgIGF1dG8gbWVzc2FnZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2Nd
IGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKKwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyJfcywgeyBTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50T3BlbldpbmRvd01haW4gfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRl
bnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIFNlcnZpY2VXb3JrZXJX
aW5kb3dDbGllbnRPcGVuV2luZG93SlMgfSB9CisgICAgfSk7CisKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcg
X3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7CisKKyAgICBk
b25lID0gZmFsc2U7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIm9wZW5lZCB3aXRob3V0IGNsaWVu
dCI7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAib3BlbldpbmRvd0NsaWVudCgp
IiBjb21wbGV0aW9uSGFuZGxlcjogbmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworfQo=
</data>
<flag name="commit-queue"
          id="485199"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456791</attachid>
            <date>2022-04-06 01:35:37 -0700</date>
            <delta_ts>2022-04-06 03:06:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238503-20220406103535.patch</filename>
            <type>text/plain</type>
            <size>26518</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTViZjZhNTRiOTdmZTlm
Yzc3Y2ZlY2NjOTVjZDkyYjU4M2YyZmJmNi4uMDkyOGI3YzU2MGU2MzM1MDM1YThkMWFlMjViNWIz
Y2MzYzMyNGQ5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTA0LTA1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50cy5vcGVuV2luZG93IHNob3VsZCBub3QgbmVlZCB0byBnZXQgYWxsIGNsaWVudHMgYXN5bmNo
cm9ub3VzbHkgdG8gcmVzb2x2ZSBpdHMgcHJvbWlzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hy
aXMgRHVtZXouCisKKyAgICAgICAgTW92ZSBtYXRjaGluZyBjbGllbnQgaW4gb3BlbldpbmRvdyBp
biBuZXR3b3JrIHByb2Nlc3MgYXMgYW4gb3B0aW1pemF0aW9uLgorICAgICAgICBUaGlzIGFsc28g
cHJldmVudHMgc29tZSByYWNlIGNvbmRpdGlvbnMgd2hlcmUgdGhlIG9wZW5lZCBwYWdlIGNvdWxk
IHF1aWNrbHkgbmF2aWdhdGUgdG8gYW5vdGhlciBwYWdlLgorICAgICAgICBBbHNvIGhhdmUgYSBj
b2RlIHBhdGggdGhhdCByZWplY3RzIHRoZSBvcGVuV2luZG93IHByb21pc2UsIGFuZCB0cmlnZ2Vy
IHRoYXQgY29kZSBwYXRoIGluIGNhc2Ugb2YgaW50ZXJuYWwgZXJyb3IuCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyBhbmQgQVBJIHRlc3QuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnRzLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisK
IDIwMjItMDQtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSBOb3RpZmljYXRpb246Om1fcmVsYXRlZE5vdGlmaWNhdGlvbklkZW50aWZpZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggYzU5ODdmMjhlNDg1NWZlYzM1YzAxMGU4YzVlMmY0MzU1NjhiNjNiZS4uZDExYThj
ODBmNWFmNWY4MGI1ZWI1YzdkMjg3ZjQxODFkYmEzMmYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAyMi0wNC0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgU2VydmljZVdvcmtlckNsaWVudHMub3BlbldpbmRvdyBzaG91bGQgbm90IG5lZWQgdG8g
Z2V0IGFsbCBjbGllbnRzIGFzeW5jaHJvbm91c2x5IHRvIHJlc29sdmUgaXRzIHByb21pc2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODUwMworCisg
ICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIEFkZCBsb2dpYyB0byBn
ZXQgdGhlIGNsaWVudCBmcm9tIGl0cyBwYWdlIElELgorICAgICAgICBJbiBjYXNlIG9mIGludGVy
bmFsIGVycm9yIGNhc2UsIHRyaWdnZXIgcHJvbWlzZSByZWplY3Rpb24gaW5zdGVhZCBvZiBwcm9t
aXNlIHJlc29sdXRpb24gd2l0aCBudWxsLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKwogMjAyMi0w
NC0wNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IE5vdGlmaWNhdGlvbjo6bV9yZWxhdGVkTm90aWZpY2F0aW9uSWRlbnRpZmllcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDNjY2U3ZjU4N2NhOTUyZDky
ZDcxZWExOWM4YTcwYWI1MDU4Y2FkYTYuLmVhYTU4MjA3NGZhZmM0NjRjMzI4ZjgzZTY1MjhiZGEw
N2RjYzJkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJhc2U2NFV0aWxpdGllcy5oIgogI2luY2x1
ZGUgIkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIK
ICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgpAQCAtMTU2LDYgKzE1Nyw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE1haW5TY3JpcHRTb3VyY2VQcm92aWRlcihTY3JpcHRCdWZmZXJT
b3VyY2VQcm92aWRlciYpOwogICAgIHZvaWQgYWRkSW1wb3J0ZWRTY3JpcHRTb3VyY2VQcm92aWRl
cihjb25zdCBVUkwmLCBTY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlciYpOwogCisgICAgQ2xpZW50
T3JpZ2luIGNsaWVudE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHsgdG9wT3JpZ2luKCkuZGF0YSgp
LCBzZWN1cml0eU9yaWdpbigpLT5kYXRhKCkgfTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgV29ya2Vy
R2xvYmFsU2NvcGUoV29ya2VyVGhyZWFkVHlwZSwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiwgV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYm
IHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRl
ciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCA4NGFlNjdlMzk3ZWRiZjE4NDIxZDAwZWZjNTMyNGM5
YTA5NDViNmMxLi5jYWQ1ZTI3YWQxZTYyOGQ5MmE3Nzc3Y2Q5MjVmYjEyNDE0ZGI5MzIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50cy5jcHAKQEAgLTkwLDM4ICs5MCwxNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRz
OjptYXRjaEFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBDbGllbgog
ICAgIH0pOwogfQogCi1zdGF0aWMgdm9pZCBtYXRjaFdpbmRvd1dpdGhQYWdlSWRlbnRpZmllcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUGFnZUlkZW50
aWZpZXIgcGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlJiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4pPiYm
IGNhbGxiYWNrKQotewotICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmNvbm5lY3Rpb24oKTsKLSAgICAgICAgYXV0byBvcHRpb25zID0gU2VydmljZVdvcmtl
ckNsaWVudFF1ZXJ5T3B0aW9ucyB7IHRydWUsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5k
b3cgfTsKLSAgICAgICAgY29ubmVjdGlvbi0+bWF0Y2hBbGwoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIG9wdGlvbnMsIFtzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcGFnZUlkZW50aWZpZXIsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERh
dGE+JiYgY2xpZW50c0RhdGEpIG11dGFibGUgewotICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFtwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY2xp
ZW50c0RhdGEgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShjbGllbnRzRGF0YSkpXSAoYXV0byYg
c2NvcGUpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZGF0YSA6IGNsaWVu
dHNEYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnBhZ2VJZGVudGlmaWVyID09
IHBhZ2VJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhzY29w
ZSwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjYWxsYmFjayhz
Y29wZSwgc3RkOjpudWxsb3B0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9
KTsKLX0KLQogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6b3BlbldpbmRvdyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJv
Y2VzcyAlaSBzZXJ2aWNlIHdvcmtlciBjYWxsaW5nIG9wZW5XaW5kb3cgdG8gVVJMICVzIiwgZ2V0
cGlkKCksIHVybFN0cmluZy51dGY4KCkuZGF0YSgpKTsKIAotICAgIGF1dG8gc2VydmljZVdvcmtl
cklkZW50aWZpZXIgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LnRocmVhZCgpLmlkZW50aWZpZXIoKTsKLSAgICBhdXRvIHVybCA9IGNvbnRleHQuY29tcGxldGVV
UkwodXJsU3RyaW5nKTsKLQogICAgIGlmIChjb250ZXh0LnNldHRpbmdzVmFsdWVzKCkuc2Vydmlj
ZVdvcmtlcnNVc2VyR2VzdHVyZUVuYWJsZWQgJiYgIWRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkuaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgewogICAgICAgICBw
cm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yLCAiU2VydmljZVdv
cmtlckNsaWVudHMub3BlbldpbmRvdygpIHJlcXVpcmVzIGEgdXNlciBnZXN0dXJlIl9zIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byB1cmwgPSBjb250ZXh0LmNvbXBsZXRl
VVJMKHVybFN0cmluZyk7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIHByb21p
c2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlVSTCBzdHJpbmcg
IiwgdXJsU3RyaW5nLCAiIGNhbm5vdCBzdWNjZXNzZnVsbHkgYmUgcGFyc2VkIl9zKSB9KTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMyLDMxICsxMTAsMzQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xp
ZW50czo6b3BlbldpbmRvdyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBT
dHIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50
aWZpZXIgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRocmVh
ZCgpLmlkZW50aWZpZXIoKTsKICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm9taXNlSWRlbnRpZmll
ciA9IGFkZFBlbmRpbmdQcm9taXNlKFdURk1vdmUocHJvbWlzZSkpLCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpOwotICAgICAgICBjb25uZWN0aW9uLT5vcGVuV2luZG93KHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCB1cmwuc3RyaW5nKCksIFtwcm9taXNlSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50
aWZpZXJdIChzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJZGVudGlmaWVyKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RU
YXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZUlkZW50
aWZpZXIsIHBhZ2VJZGVudGlmaWVyID0gV1RGTW92ZShwYWdlSWRlbnRpZmllciksIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyXSAoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzICVpIGZp
bmlzaGVkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpvcGVuV2luZG93IGNhbGwuIFJlc3VsdGluZyBw
YWdlIGlkZW50aWZpZXIgaXMgJXMiLCBnZXRwaWQoKSwgcGFnZUlkZW50aWZpZXIgPyBwYWdlSWRl
bnRpZmllci0+bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiPE5PTkU+Iik7CisgICAg
ICAgIGNvbm5lY3Rpb24tPm9wZW5XaW5kb3coc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCwg
W3Byb21pc2VJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKGF1dG8mJiByZXN1
bHQpIG11dGFibGUgeworICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
cG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNl
SWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0KSldIChT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBMT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3MgJWkgZmluaXNoZWQgU2VydmljZVdvcmtl
ckNsaWVudHM6Om9wZW5XaW5kb3cgY2FsbCByZXN1bHQgaXMgJWQuIiwgZ2V0cGlkKCksICFyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpOwogCi0gICAgICAgICAgICAgICAgaWYgKCFwYWdlSWRlbnRpZmll
cikgewotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50
cygpLnRha2VQZW5kaW5nUHJvbWlzZShwcm9taXNlSWRlbnRpZmllcikpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aEpTVmFsdWUoSlNDOjpqc051bGwoKSk7Cisg
ICAgICAgICAgICAgICAgYXV0byBwcm9taXNlID0gc2NvcGUuY2xpZW50cygpLnRha2VQZW5kaW5n
UHJvbWlzZShwcm9taXNlSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgaWYgKCFwcm9taXNl
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgbWF0Y2hXaW5kb3dXaXRoUGFnZUlkZW50aWZpZXIoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsICpwYWdlSWRlbnRpZmllciwgW3Byb21pc2VJZGVudGlmaWVyXSAoYXV0byYgc2Nv
cGUsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGNsaWVudERhdGEpIG11
dGFibGUgewotICAgICAgICAgICAgICAgICAgICBhdXRvIHByb21pc2UgPSBzY29wZS5jbGllbnRz
KCkudGFrZVBlbmRpbmdQcm9taXNlKHByb21pc2VJZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFwcm9taXNlKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghY2xpZW50RGF0YSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZS0+cmVzb2x2ZVdpdGhKU1ZhbHVlKEpTQzo6anNOdWxsKCkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXV0
byBjbGllbnREYXRhID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgICAgICAgICAg
ICAgIGlmICghY2xpZW50RGF0YSkgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNv
bHZlV2l0aEpTVmFsdWUoSlNDOjpqc051bGwoKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgYXV0byBjbGllbnQg
PSBTZXJ2aWNlV29ya2VyQ2xpZW50OjpjcmVhdGUoc2NvcGUsIFdURk1vdmUoKmNsaWVudERhdGEp
KTsKLSAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+dGVtcGxhdGUgcmVzb2x2ZTxJRExJbnRl
cmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFdURk1vdmUoY2xpZW50KSk7Ci0gICAgICAgICAg
ICAgICAgfSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgICAgICAgICBhdXRvIG9yaWdp
bkRhdGEgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoY2xpZW50RGF0YS0+dXJsKTsKKyAg
ICAgICAgICAgICAgICBDbGllbnRPcmlnaW4gY2xpZW50T3JpZ2luIHsgb3JpZ2luRGF0YSwgb3Jp
Z2luRGF0YSB9OworI2VuZGlmCisgICAgICAgICAgICAgICAgQVNTRVJUKHNjb3BlLmNsaWVudE9y
aWdpbigpID09IGNsaWVudE9yaWdpbik7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+dGVtcGxh
dGUgcmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFNlcnZpY2VXb3Jr
ZXJDbGllbnQ6OmNyZWF0ZShzY29wZSwgV1RGTW92ZSgqY2xpZW50RGF0YSkpKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCA5YTIz
YzVhZDAzNjY4MGU5ZDhlYTg4M2I2YTA5NmM1YjRhODU5ODFlLi4wY2IxOTI3NDU4N2MzOTQxY2Uy
MDkxNzdkZmNlMzU1N2ZkYTE5YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC02Nyw4ICs2Nywx
MCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlWaXNpYmxlSWRl
bnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgRmluZENsaWVu
dEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hdGNo
QWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVl
cnlPcHRpb25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKSA9IDA7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPiYmKT4mJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJik+JiYpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERh
dGE+JiYpPiYmKSA9IDA7CisKKyAgICAgICAgdXNpbmcgT3BlbldpbmRvd0NhbGxiYWNrID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPj4mJik+OworICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNrJiYpID0g
MDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRBc0luc3BlY3Rl
ZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBjODA3MmI5MWQ0
ODRmOWJmNDBjMmIwYjU5ODljNzJiZWFjMDE4ZTFkLi4yMWRiZDI2NDhjMWFkMjkwYWFkZmZjYzBm
OGFiYjRiMGVkNDc1Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTEyLDYgKzExMiwyMCBAQCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcjo6c2VydmljZVdvcmtlckNsaWVudFdp
dGhPcmlnaW5CeQogICAgIHJldHVybiBjbGllbnRJdGVyYXRvci0+dmFsdWU7CiB9CiAKK3N0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNXU2VydmVyOjp0b3BMZXZlbFNlcnZp
Y2VXb3JrZXJDbGllbnRGcm9tUGFnZUlkZW50aWZpZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGll
bnRPcmlnaW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyKSBjb25zdAoreworICAgIGF1
dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmZpbmQoY2xpZW50T3Jp
Z2luKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGZvciAoYXV0byBjbGllbnRJZGVudGlm
aWVyIDogaXRlcmF0b3ItPnZhbHVlLmlkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8gY2xpZW50
SXRlcmF0b3IgPSBtX2NsaWVudHNCeUlkLmZpbmQoY2xpZW50SWRlbnRpZmllcik7CisgICAgICAg
IGlmIChjbGllbnRJdGVyYXRvci0+dmFsdWUtPmZyYW1lVHlwZSA9PSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RnJhbWVUeXBlOjpUb3BMZXZlbCAmJiBjbGllbnRJdGVyYXRvci0+dmFsdWUtPnBhZ2VJZGVu
dGlmaWVyID09IHBhZ2VJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIGNsaWVudEl0ZXJh
dG9yLT52YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KKwogU3RyaW5nIFNXU2VydmVy
OjpzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50
T3JpZ2luKSBjb25zdAogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NsaWVudElkZW50aWZpZXJz
UGVyT3JpZ2luLmZpbmQoY2xpZW50T3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBhNGJiNzUzZmVjNDAyMzAwMzg5NTU1
M2ZmMjgyYmRjOWNlOWI1MGIzLi5iMzI3ZTM4YWZmMWVkZjI2YmU4MjAzZmJjZWFkOTZhOGQ2YzM3
ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDbGllbnRPcmlnaW4uaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgpAQCAtMTYxLDYg
KzE2Miw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29ya2VyKiB3
b3JrZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBzZXJ2aWNlV29ya2Vy
Q2xpZW50V2l0aE9yaWdpbkJ5SUQoY29uc3QgQ2xpZW50T3JpZ2luJiwgY29uc3QgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXImKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiB0b3BMZXZlbFNlcnZpY2VXb3JrZXJD
bGllbnRGcm9tUGFnZUlkZW50aWZpZXIoY29uc3QgQ2xpZW50T3JpZ2luJiwgUGFnZUlkZW50aWZp
ZXIpIGNvbnN0OwogICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KGNvbnN0
IENsaWVudE9yaWdpbiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29ya2Vy
KiBhY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0aW9uSUQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRl
eCA3Y2ExNmM3YWE4ZDdiODRkZWQ5ODk0ZWVkZWI3MDhiNDNjNjU2M2FjLi41NjliMWFjMzBlMmQ0
Mjk0M2FjYzk1NWM4OWVlZWI5NDE4N2E0ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKQEAgLTg2LDcgKzg2LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0QXNJbnNwZWN0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiYmKT4mJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpID0gMDsK
KyAgICB1c2luZyBPcGVuV2luZG93Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+LCBFeGNlcHRpb25E
YXRhPiYmKT47CisgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFVSTCYsIE9wZW5XaW5kb3dDYWxsYmFjayYmKSA9IDA7CiAKICAgICBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiBt
X3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAgICAgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggN2RmYTBlMTg2NDlh
MGZlMTNkNGY3MjYxNWNhMjgzNjAwYzlmNzBlMS4uY2NkNTVjZWFhMWZlODIyN2RhYTI5NjVmN2Vl
ZjJjNjNkY2E1YzcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTE3MCwyNSArMTcwLDM2IEBAIHZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVEdWVUb1VucmVzcG9uc2l2ZW5lc3MoKQogICAg
IG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0ZVVucmVzcG9uc2l2
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwog
fQogCi12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6b3BlbldpbmRvdyhXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGNvbnN0IFVSTCYgdXJsLCBPcGVuV2luZG93Q2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBhdXRvKiBzZXJ2ZXIgPSB0aGlzLT5zZXJ2ZXIoKTsKICAgICBpZiAoIXNlcnZlcikg
ewotICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICBjYWxsYmFjayhtYWtl
VW5leHBlY3RlZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAiTm8gU1dTZXJ2ZXIiX3MgfSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byogd29ya2VyID0gc2VydmVyLT53
b3JrZXJCeUlEKGlkZW50aWZpZXIpOwogICAgIGlmICghd29ya2VyKSB7Ci0gICAgICAgIGNhbGxi
YWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKEV4Y2Vw
dGlvbkRhdGEgeyBUeXBlRXJyb3IsICJObyByZW1haW5pbmcgc2VydmljZSB3b3JrZXIiX3MgfSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBpbm5lckNhbGxiYWNrID0gW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+JiYgcGFnZUlkZW50aWZpZXIpIG11dGFibGUgewotICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKHBhZ2VJZGVudGlmaWVyKSk7CisgICAgYXV0byBpbm5lckNhbGxiYWNrID0gW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIHNlcnZlciA9IFdlYWtQdHIgeyAqc2VydmVyIH0sIG9y
aWdpbiA9IHdvcmtlci0+b3JpZ2luKCldKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+JiYgcGFnZUlkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBpZiAoIXBhZ2VJZGVu
dGlmaWVyKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogdmFsaWRhdGUgd2hldGhlciB3ZSBzaG91
bGQgcmVqZWN0IG9yIHJlc29sdmUgd2l0aCBudWxsLCBodHRwczovL2dpdGh1Yi5jb20vdzNjL1Nl
cnZpY2VXb3JrZXIvaXNzdWVzLzE2MzkKKyAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXNlcnZlcikgeworICAg
ICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJv
ciwgIk5vIFNXU2VydmVyIl9zIH0pKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGNhbGxiYWNrKHNlcnZlci0+dG9wTGV2ZWxTZXJ2aWNlV29ya2VyQ2xpZW50RnJv
bVBhZ2VJZGVudGlmaWVyKG9yaWdpbiwgKnBhZ2VJZGVudGlmaWVyKSk7CiAgICAgfTsKIAotICAg
IG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6T3Blbldp
bmRvd0Zyb21TZXJ2aWNlV29ya2VyIHsgc2VydmVyLT5zZXNzaW9uSUQoKSwgdXJsU3RyaW5nLCB3
b3JrZXItPm9yaWdpbigpLmNsaWVudE9yaWdpbiB9LCBXVEZNb3ZlKGlubmVyQ2FsbGJhY2spKTsK
KyAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok9w
ZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlciB7IG1fY29ubmVjdGlvbi5zZXNzaW9uSUQoKSwgdXJs
LnN0cmluZygpLCB3b3JrZXItPm9yaWdpbigpLmNsaWVudE9yaWdpbiB9LCBXVEZNb3ZlKGlubmVy
Q2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1h
dGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8
U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBjbGllbnRzRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCAwMTZhODI3NTM1MGFjMWVj
MzQ3OTAyYjJmYTM0ZjgyODYzMDlkNWMwLi45ZTgzYjNkYmFiODMzMjRjZDZlZDFmMGY4MzAxNTNh
Nzg2ZDJlMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVj
dGlvbklzTm9Mb25nZXJOZWVkZWQoKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZUR1ZVRvVW5y
ZXNwb25zaXZlbmVzcygpIGZpbmFsOwotICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYp
IGZpbmFsOworICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgVVJMJiwgT3BlbldpbmRvd0NhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9p
ZCBjb25uZWN0aW9uQ2xvc2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDIxZDIzNjU1N2M0
MzQzOTlkZTk4MThkNjc5M2FjYjY1Y2JjMWU2YmYuLjliMGM3MGY3N2RhYjcxYzAyODQxNzgwNTJk
ZDQ3MjJiODI3Y2FkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtNDEsNyArNDEsNyBAQCBtZXNz
YWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAg
ICAgRGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAgICAgU2V0QXNJbnNwZWN0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc0luc3BlY3RlZCkKIAotICAgIE9wZW5XaW5kb3co
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU3RyaW5nIHVybFN0
cmluZykgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5ld0NsaWVu
dERhdGEpCisgICAgT3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBVUkwgdXJsKSAtPiAoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+IG5ld0NsaWVu
dERhdGEpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzNlY2RlMjZkOGUwOWM5YmE2MGJkNDUxOGY5
YWQwNTVhMDJiNzYyYS4uNjRmYmJhNGZhY2Y3MmYxOWMyOWI3MzM4MjAyMjRmODM3MGZmMTEzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMzM3LDkgKzMzNywxNSBA
QCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcgogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNsaWVu
dHNEYXRhKSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om9wZW5X
aW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6b3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiB1cmwsIE9w
ZW5XaW5kb3dDYWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpPcGVuV2luZG93IHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCB9
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246Ok9wZW5XaW5kb3cgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsIH0sIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAg
IGlmICghcmVzdWx0Lmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQu
ZXJyb3IoKS50b0V4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSk7CisgICAgfSk7CiB9CiAK
IHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsYWltKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmgKaW5kZXggNTg0MjgyYzEwODNlMTQ4NmY5ZTFmZTJmODBjMTYwNjZmMGQ1MWFjMi4u
M2I1MDVjNzIwMGMzY2YwMDNjYThlMmUzYWI0NWEwMjJiYWM3ZTg4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c1Rocm90dGxlYWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENo
ZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNl
dEFzSW5zcGVjdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBmaW5h
bDsKLSAgICB2b2lkIG9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIG9wZW5XaW5k
b3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIE9wZW5XaW5k
b3dDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNl
cnZpY2VXb3JrZXJTdGFydGVkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wg
ZG9lc0hhbmRsZUZldGNoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBkMjYyNTQ4OTM3YTIwYzA4MjA1MGI3NzEwOTBiNzBlM2IzNzlm
NDMwLi44ZjVhYzIzZTI5N2JkNmJjNzNlNzI3ODA4YTJjNjFjNWJhYjNmNGQxIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMjItMDQtMDUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAg
IFNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cgc2hvdWxkIG5vdCBuZWVkIHRvIGdldCBh
bGwgY2xpZW50cyBhc3luY2hyb25vdXNseSB0byByZXNvbHZlIGl0cyBwcm9taXNlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1MDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorCiAyMDIyLTA0LTA1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTWFyayBTdHJpbmcoY29uc3Qg
Y2hhciopIGNvbnN0cnVjdG9yIGFzIGV4cGxpY2l0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCmluZGV4
IDE1ZWQ2ZWQ0ODI4ODIwY2RhMzU2MTNjYWVkYTAwOWJmY2UxOWI3YWIuLjU5Y2JlMGQ1ZDFkMGM0
NzNiZjlmMDUyOGZlZGExY2JiNzU2OTg2MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tCkBAIC0y
OTY2LDMgKzI5NjYsODQgQEAgVEVTVChTZXJ2aWNlV29ya2VyLCBTZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50Rm9jdXNSZXF1aXJlc1VzZXJHZXN0dXJlKQogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2
YVNjcmlwdDpAImZvY3VzQ2xpZW50KCkiIGNvbXBsZXRpb25IYW5kbGVyOiBuaWxdOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CisKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50T3BlbldpbmRvd01haW4gPQorIjxkaXYgaWQ9J2xv
Zyc+dGVzdCBwYWdlPC9kaXY+IgorIjxzY3JpcHQ+IgorImxldCB3b3JrZXI7IgorImFzeW5jIGZ1
bmN0aW9uIHRlc3QoKSB7IgorIiAgICBsb2cuaW5uZXJIVE1MID0gJ3Rlc3QnOyIKKyIgICAgdHJ5
IHsiCisiICAgICAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJyk7IgorIiAgICAgICAgbG9nLmlubmVySFRNTCA9ICdy
ZWdpc3RlcmVkJzsiCisiICAgICAgICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2ZSkgeyIKKyIgICAg
ICAgICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uYWN0aXZlOyIKKyIgICAgICAgICAgICBhbGVy
dCgnYWxyZWFkeSBhY3RpdmUnKTsiCisiICAgICAgICAgICAgcmV0dXJuOyIKKyIgICAgICAgIH0i
CisiICAgICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsiCisiICAgICAgICB3
b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCAoKSA9PiB7IgorIiAgICAgICAg
ICAgbG9nLmlubmVySFRNTCA9ICd3b3JrZXIuc3RhdGU9JyArIHdvcmtlci5zdGF0ZTsiCisiICAg
ICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykiCisiICAgICAgICAgICAg
ICAgIGFsZXJ0KCdzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCcpOyIKKyIgICAgICAgIH0pOyIKKyIg
ICAgfSBjYXRjaChlKSB7IgorIiAgICAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOyIKKyIg
ICAgfSIKKyJ9IgorIndpbmRvdy5vbmxvYWQgPSB0ZXN0OyIKKyIiCisiZnVuY3Rpb24gb3Blbldp
bmRvd0NsaWVudCgpIHsiCisiICAgIGxvZy5pbm5lckhUTUwgPSAnb3BlbldpbmRvd0NsaWVudCc7
IgorIiAgICB3b3JrZXIucG9zdE1lc3NhZ2UoJ3N0YXJ0Jyk7IgorIiAgICBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsiCisiICAgICAgICB3aW5kb3cud2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy5zdy5wb3N0TWVzc2FnZShldmVudC5kYXRhKTsiCisiICAgIH0i
CisifSIKKyI8L3NjcmlwdD4iX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gU2VydmljZVdvcmtl
cldpbmRvd0NsaWVudE9wZW5XaW5kb3dKUyA9Cisic2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNz
YWdlJywgKGV2ZW50KSA9PiB7IgorIiAgIHNlbGYuY2xpZW50cy5vcGVuV2luZG93KCcvc3cuanMn
KS50aGVuKChjbGllbnQpID0+IHsiCisiICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZShj
bGllbnQgPyAnb3BlbmVkIHdpdGggY2xpZW50JyA6ICdvcGVuZWQgd2l0aG91dCBjbGllbnQnKTsi
CisiICAgfSwgKGVycm9yKSA9PiB7IgorIiAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2Uo
J25vdCBvcGVuZWQnKTsiCisiICAgfSk7IgorIn0pOyJfczsKKworVEVTVChTZXJ2aWNlV29ya2Vy
LCBvcGVuV2luZG93V2l0aG91dERlbGVnYXRlKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUg
X2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICAvLyBTdGFydCB3
aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRl
ZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
V2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21w
bGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFtjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXTsKKworICAgIGZvciAoX1dLSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUgKmZlYXR1cmUgaW4g
W1dLUHJlZmVyZW5jZXMgX2ludGVybmFsRGVidWdGZWF0dXJlc10pIHsKKyAgICAgICAgaWYgKFtm
ZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJTZXJ2aWNlV29ya2Vyc1VzZXJHZXN0dXJlRW5h
YmxlZCJdKQorICAgICAgICAgICAgW3ByZWZlcmVuY2VzIF9zZXRFbmFibGVkOk5PIGZvckludGVy
bmFsRGVidWdGZWF0dXJlOmZlYXR1cmVdOworICAgIH0KKworICAgIGF1dG8gbWVzc2FnZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2Nd
IGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKKwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyJfcywgeyBTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50T3BlbldpbmRvd01haW4gfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRl
bnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIFNlcnZpY2VXb3JrZXJX
aW5kb3dDbGllbnRPcGVuV2luZG93SlMgfSB9CisgICAgfSk7CisKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcg
X3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7CisKKyAgICBk
b25lID0gZmFsc2U7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIm9wZW5lZCB3aXRob3V0IGNsaWVu
dCJfczsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJvcGVuV2luZG93Q2xpZW50
KCkiIGNvbXBsZXRpb25IYW5kbGVyOiBuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>