<?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>214444</bug_id>
          
          <creation_ts>2020-07-16 21:45:56 -0700</creation_ts>
          <short_desc>Propagating user gesture through Fetch API</short_desc>
          <delta_ts>2020-11-08 20:44:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=213595</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=214722</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>agektmr</cc>
    
    <cc>bojan</cc>
    
    <cc>cdumez</cc>
    
    <cc>dwaite</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>michaelleon485</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ynojima</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1672396</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-07-16 21:45:56 -0700</bug_when>
    <thetext>Propagating user gesture through Fetch API. Initially, we should only consider this for media only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674142</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-23 01:57:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/65980953&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674149</commentid>
    <comment_count>2</comment_count>
      <attachid>405027</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-07-23 02:47:33 -0700</bug_when>
    <thetext>Created attachment 405027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674150</commentid>
    <comment_count>3</comment_count>
      <attachid>405028</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-07-23 02:49:44 -0700</bug_when>
    <thetext>Created attachment 405028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674183</commentid>
    <comment_count>4</comment_count>
      <attachid>405028</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-07-23 05:45:37 -0700</bug_when>
    <thetext>Comment on attachment 405028
Patch

LGTM overall.
This patch addresses most cases except in case the script is getting the body through ReadableStream.
That might be best done as a follow-up.
It should not be too difficult to add in case of ReadableStreamDefaultController::close and ReadableStreamDefaultController::error which are probably the most important cases.
It would require more work to add support for the chunk read promises, not sure whether this is really needed though.

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

&gt; Source/WebCore/ChangeLog:49
&gt; +        (WebCore::UserGestureToken::setIsPropogatedFromFetch):

s/IsPropogatedFromFetch/IsPropagatedFromFetch

&gt; Source/WebCore/Modules/fetch/DOMWindowFetch.cpp:61
&gt; +    FetchResponse::fetch(*document, fetchRequest, [promise = WTFMove(promise), userGestureToken = UserGestureIndicator::currentUserGesture(), maximumIntervalForUserGestureForwarding = fetchRequest.maximumIntervalForUserGestureForwarding(), currentTime = MonotonicTime::now()] (ExceptionOr&lt;FetchResponse&amp;&gt;&amp;&amp; result) mutable {

s/ExceptionOr&lt;FetchResponse&amp;&gt;/auto/
Let&apos;s also keep []() style instead of [] ().

&gt; Source/WebCore/Modules/fetch/DOMWindowFetch.cpp:67
&gt; +        UserGestureIndicator gestureIndicator(userGestureToken, UserGestureToken::GestureScope::MediaOnly, UserGestureToken::IsPropogatedFromFetch::Yes);

To improve readability, we could rewrite it as:
Optional&lt;UserGestureIndicator&gt; gestureIndicator;
if (...)
   gestureIndicator = UserGestureIndicator(...);
promise.settle()

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.h:47
&gt; +    FetchBodyConsumer(Type);

explicit would be good

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.h:77
&gt; +    void setMaximumIntervalForUserGestureForwarding(double interval) { m_maximumIntervalForUserGestureForwarding = Seconds(interval); }

Let&apos;s make interval a Seconds.

&gt; Source/WebCore/Modules/fetch/FetchRequest.h:86
&gt; +    WEBCORE_EXPORT void setMaximumIntervalForUserGestureForwarding(double);

Ditto.

&gt; Source/WebCore/Modules/fetch/FetchRequest.h:105
&gt; +    Seconds m_maximumIntervalForUserGestureForwarding;

Do we need a per instance variable? It seems this could be a static member/per process setting.

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:221
&gt; +    auto isProcessingUserGestureFromFetch = userGestureToken &amp;&amp; userGestureToken-&gt;processingUserGestureForMedia() &amp;&amp; userGestureToken-&gt;isPropogatedFromFetch();

s/auto/bool.
It does not seem we need the processingUserGestureForMedia check.
I would rename isPropogatedFromFetch to something like isPropagatedToNextMicrotask.
That will make it easier to reuse in case we want to propagate user gesture in getUserMedia resolution handler.

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:223
&gt; +        if (!isProcessingUserGestureFromFetch || userGestureToken-&gt;hasExpired(UserGestureToken::maximumIntervalForUserGestureForwardingForFetch)) {

I am wondering whether the hasExpired check is needed.
A micro task is executed right after so if it is not expired at the time we initialise isProcessingUserGestureFromFetch, it seems ok to consider it is not expired when executing the micro task.
Given we are checking for hasExpired in fetch handler to create the user token that can persist next micro task, we might be able to simply remove the hasExpired check in this method.

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:228
&gt; +        UserGestureIndicator gestureIndicator(userGestureToken, UserGestureToken::GestureScope::MediaOnly, UserGestureToken::IsPropogatedFromFetch::Yes);

We could rewrite it as: Optional&lt;...&gt; gestureIndicator to have just one callback-&gt;call().

Can we also try to rewrite it so that it is not specific to UserGestureToken::GestureScope::MediaOnly, but reuses whatever scope was used above?
We probably do not need to have IsPropogatedFromFetch::Yes set to Yes here.

&gt; Source/WebCore/testing/Internals.cpp:5683
&gt; +    request.setMaximumIntervalForUserGestureForwarding(interval);

Usually we do something like fetch(url, ...) so we will not be able to write tests this way with this API.
It might be simpler to just use a global member here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674449</commentid>
    <comment_count>5</comment_count>
      <attachid>405028</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-07-23 16:14:16 -0700</bug_when>
    <thetext>Comment on attachment 405028
Patch

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

Thanks Youenn for reviewing the patch.

&gt;&gt; Source/WebCore/ChangeLog:49
&gt;&gt; +        (WebCore::UserGestureToken::setIsPropogatedFromFetch):
&gt; 
&gt; s/IsPropogatedFromFetch/IsPropagatedFromFetch

Fixed.

&gt;&gt; Source/WebCore/Modules/fetch/DOMWindowFetch.cpp:61
&gt;&gt; +    FetchResponse::fetch(*document, fetchRequest, [promise = WTFMove(promise), userGestureToken = UserGestureIndicator::currentUserGesture(), maximumIntervalForUserGestureForwarding = fetchRequest.maximumIntervalForUserGestureForwarding(), currentTime = MonotonicTime::now()] (ExceptionOr&lt;FetchResponse&amp;&gt;&amp;&amp; result) mutable {
&gt; 
&gt; s/ExceptionOr&lt;FetchResponse&amp;&gt;/auto/
&gt; Let&apos;s also keep []() style instead of [] ().

Fixed.

&gt;&gt; Source/WebCore/Modules/fetch/DOMWindowFetch.cpp:67
&gt;&gt; +        UserGestureIndicator gestureIndicator(userGestureToken, UserGestureToken::GestureScope::MediaOnly, UserGestureToken::IsPropogatedFromFetch::Yes);
&gt; 
&gt; To improve readability, we could rewrite it as:
&gt; Optional&lt;UserGestureIndicator&gt; gestureIndicator;
&gt; if (...)
&gt;    gestureIndicator = UserGestureIndicator(...);
&gt; promise.settle()

Fixed.

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:228
&gt; +    if (m_consumePromise) {

Used Optional as well.

&gt;&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.h:47
&gt;&gt; +    FetchBodyConsumer(Type);
&gt; 
&gt; explicit would be good

Fixed.

&gt;&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.h:77
&gt;&gt; +    void setMaximumIntervalForUserGestureForwarding(double interval) { m_maximumIntervalForUserGestureForwarding = Seconds(interval); }
&gt; 
&gt; Let&apos;s make interval a Seconds.

Fixed.

&gt;&gt; Source/WebCore/Modules/fetch/FetchRequest.h:86
&gt;&gt; +    WEBCORE_EXPORT void setMaximumIntervalForUserGestureForwarding(double);
&gt; 
&gt; Ditto.

Fixed.

&gt;&gt; Source/WebCore/Modules/fetch/FetchRequest.h:105
&gt;&gt; +    Seconds m_maximumIntervalForUserGestureForwarding;
&gt; 
&gt; Do we need a per instance variable? It seems this could be a static member/per process setting.

A good idea! Let me think about it.

&gt;&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:221
&gt;&gt; +    auto isProcessingUserGestureFromFetch = userGestureToken &amp;&amp; userGestureToken-&gt;processingUserGestureForMedia() &amp;&amp; userGestureToken-&gt;isPropogatedFromFetch();
&gt; 
&gt; s/auto/bool.
&gt; It does not seem we need the processingUserGestureForMedia check.
&gt; I would rename isPropogatedFromFetch to something like isPropagatedToNextMicrotask.
&gt; That will make it easier to reuse in case we want to propagate user gesture in getUserMedia resolution handler.

Fixed.

&gt;&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:223
&gt;&gt; +        if (!isProcessingUserGestureFromFetch || userGestureToken-&gt;hasExpired(UserGestureToken::maximumIntervalForUserGestureForwardingForFetch)) {
&gt; 
&gt; I am wondering whether the hasExpired check is needed.
&gt; A micro task is executed right after so if it is not expired at the time we initialise isProcessingUserGestureFromFetch, it seems ok to consider it is not expired when executing the micro task.
&gt; Given we are checking for hasExpired in fetch handler to create the user token that can persist next micro task, we might be able to simply remove the hasExpired check in this method.

Probably not. I doubt that as well. Removed.

&gt;&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:228
&gt;&gt; +        UserGestureIndicator gestureIndicator(userGestureToken, UserGestureToken::GestureScope::MediaOnly, UserGestureToken::IsPropogatedFromFetch::Yes);
&gt; 
&gt; We could rewrite it as: Optional&lt;...&gt; gestureIndicator to have just one callback-&gt;call().
&gt; 
&gt; Can we also try to rewrite it so that it is not specific to UserGestureToken::GestureScope::MediaOnly, but reuses whatever scope was used above?
&gt; We probably do not need to have IsPropogatedFromFetch::Yes set to Yes here.

Fixed.

&gt;&gt; Source/WebCore/testing/Internals.cpp:5683
&gt;&gt; +    request.setMaximumIntervalForUserGestureForwarding(interval);
&gt; 
&gt; Usually we do something like fetch(url, ...) so we will not be able to write tests this way with this API.
&gt; It might be simpler to just use a global member here.

Let me think one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674450</commentid>
    <comment_count>6</comment_count>
      <attachid>405028</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-07-23 16:17:08 -0700</bug_when>
    <thetext>Comment on attachment 405028
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/fetch/DOMWindowFetch.cpp:67
&gt;&gt;&gt; +        UserGestureIndicator gestureIndicator(userGestureToken, UserGestureToken::GestureScope::MediaOnly, UserGestureToken::IsPropogatedFromFetch::Yes);
&gt;&gt; 
&gt;&gt; To improve readability, we could rewrite it as:
&gt;&gt; Optional&lt;UserGestureIndicator&gt; gestureIndicator;
&gt;&gt; if (...)
&gt;&gt;    gestureIndicator = UserGestureIndicator(...);
&gt;&gt; promise.settle()
&gt; 
&gt; Fixed.

Looks like UserGestureIndicator is non copyable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674555</commentid>
    <comment_count>7</comment_count>
      <attachid>405130</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-07-23 23:51:48 -0700</bug_when>
    <thetext>Created attachment 405130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674556</commentid>
    <comment_count>8</comment_count>
      <attachid>405131</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-07-24 00:03:34 -0700</bug_when>
    <thetext>Created attachment 405131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674577</commentid>
    <comment_count>9</comment_count>
      <attachid>405131</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-07-24 03:21:55 -0700</bug_when>
    <thetext>Comment on attachment 405131
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:218
&gt; +    // Propogating media only user gesture for Fetch API&apos;s promise chain.

s/Propogating/Propagating

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:221
&gt; +    bool isPropagatedToNextMicrotask = userGestureToken &amp;&amp; userGestureToken-&gt;isPropagatedFromFetch();

We could do the following:
if (userGestureToken &amp;&amp; !userGestureToken-&gt;isPropagatedFromFetch())
   userGestureToken = nullptr;
That way, no need to capture isPropagatedToNextMicrotask in the lambda.

&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:228
&gt; +        UserGestureIndicator gestureIndicator(userGestureToken, UserGestureToken::GestureScope::MediaOnly, UserGestureToken::IsPropagatedFromFetch::Yes);

We could potentially WTFMove(userGestureToken).
Can we add a scope getter to UserGestureToken and replace UserGestureToken::GestureScope::MediaOnly by userGesture-&gt;scope()?

&gt; Source/WebCore/dom/UserGestureIndicator.cpp:58
&gt; +void UserGestureToken::setMaximumIntervalForUserGestureForwardingForFetchForTesting(Seconds&amp;&amp; value)

s/Seconds&amp;&amp;/Seconds

&gt; Source/WebCore/dom/UserGestureIndicator.cpp:60
&gt; +    maxIntervalForUserGestureForwardingForFetch = WTFMove(value);

No need to move.

&gt; Source/WebCore/dom/UserGestureIndicator.h:91
&gt; +    // Expand the following methods if more progogation sources are added later.

s/progogation/propagation/

&gt; Source/WebCore/dom/UserGestureIndicator.h:95
&gt; +    bool isPropagatedFromFetch() const { return m_isPropagatedFromFetch == IsPropagatedFromFetch::Yes; }

I would rename IsPropagatedFromFetch to ShouldPersistInNextMicrotask, ditto for setter/getter/member.

&gt; Source/WebCore/testing/Internals.cpp:5677
&gt; +    UserGestureToken::setMaximumIntervalForUserGestureForwardingForFetchForTesting(Seconds(interval));

We probably need to set the value back to the regular value in Internals::Internals so that the next test reusing the process will have the default expected value.

&gt; LayoutTests/http/tests/media/user-gesture-preserved-across-xmlhttprequest.html:50
&gt; +            fetch(request, { method: &apos;GET&apos;, cache: &quot;no-cache&quot; }).then(response =&gt; {

Can we just do fetch((`/xmlhttprequest/resources/download-header-with-delay.php?delay=${delay}`, ( method...})?
This should be equivalent but it seems good to exercise this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674799</commentid>
    <comment_count>10</comment_count>
      <attachid>405131</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-07-24 13:12:36 -0700</bug_when>
    <thetext>Comment on attachment 405131
Patch

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

Thanks Youenn for r+ this patch.

&gt;&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:218
&gt;&gt; +    // Propogating media only user gesture for Fetch API&apos;s promise chain.
&gt; 
&gt; s/Propogating/Propagating

Fixed.

&gt;&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:221
&gt;&gt; +    bool isPropagatedToNextMicrotask = userGestureToken &amp;&amp; userGestureToken-&gt;isPropagatedFromFetch();
&gt; 
&gt; We could do the following:
&gt; if (userGestureToken &amp;&amp; !userGestureToken-&gt;isPropagatedFromFetch())
&gt;    userGestureToken = nullptr;
&gt; That way, no need to capture isPropagatedToNextMicrotask in the lambda.

Good idea. Let me do that!

&gt;&gt; Source/WebCore/bindings/js/JSDOMWindowBase.cpp:228
&gt;&gt; +        UserGestureIndicator gestureIndicator(userGestureToken, UserGestureToken::GestureScope::MediaOnly, UserGestureToken::IsPropagatedFromFetch::Yes);
&gt; 
&gt; We could potentially WTFMove(userGestureToken).
&gt; Can we add a scope getter to UserGestureToken and replace UserGestureToken::GestureScope::MediaOnly by userGesture-&gt;scope()?

Let&apos;s add a rvalue constructor as a fellow up.
No, we can&apos;t the scope will be reset at the end of last runloop when the UserGestureIndicator is destroyed.

&gt;&gt; Source/WebCore/dom/UserGestureIndicator.cpp:58
&gt;&gt; +void UserGestureToken::setMaximumIntervalForUserGestureForwardingForFetchForTesting(Seconds&amp;&amp; value)
&gt; 
&gt; s/Seconds&amp;&amp;/Seconds

Fixed.

&gt;&gt; Source/WebCore/dom/UserGestureIndicator.cpp:60
&gt;&gt; +    maxIntervalForUserGestureForwardingForFetch = WTFMove(value);
&gt; 
&gt; No need to move.

Fixed.

&gt;&gt; Source/WebCore/dom/UserGestureIndicator.h:91
&gt;&gt; +    // Expand the following methods if more progogation sources are added later.
&gt; 
&gt; s/progogation/propagation/

Fixed.

&gt;&gt; Source/WebCore/dom/UserGestureIndicator.h:95
&gt;&gt; +    bool isPropagatedFromFetch() const { return m_isPropagatedFromFetch == IsPropagatedFromFetch::Yes; }
&gt; 
&gt; I would rename IsPropagatedFromFetch to ShouldPersistInNextMicrotask, ditto for setter/getter/member.

Since now this is the only api to would set this flag, it may be more appropriate to name it more specific. Also, the current patch is a quick fix to expand user gesture propagation to some important APIs. Ultimately, the way how user gesture is propagated here cannot be scaled. We can&apos;t set UserGestureIndicator for every async API. A better way of doing this for all could be User Activation API in the html spec. Doing that now for iOS 14 and macOS Big Sur is too risky though.

&gt;&gt; Source/WebCore/testing/Internals.cpp:5677
&gt;&gt; +    UserGestureToken::setMaximumIntervalForUserGestureForwardingForFetchForTesting(Seconds(interval));
&gt; 
&gt; We probably need to set the value back to the regular value in Internals::Internals so that the next test reusing the process will have the default expected value.

The static variable is per web process. I guess the value will not be carried to the next test given it will load a different page. For different test vectors within the same test file, I think that test file should ultimately control the values.

&gt;&gt; LayoutTests/http/tests/media/user-gesture-preserved-across-xmlhttprequest.html:50
&gt;&gt; +            fetch(request, { method: &apos;GET&apos;, cache: &quot;no-cache&quot; }).then(response =&gt; {
&gt; 
&gt; Can we just do fetch((`/xmlhttprequest/resources/download-header-with-delay.php?delay=${delay}`, ( method...})?
&gt; This should be equivalent but it seems good to exercise this.

Yup, I was too lazy to change it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674800</commentid>
    <comment_count>11</comment_count>
      <attachid>405169</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-07-24 13:15:41 -0700</bug_when>
    <thetext>Created attachment 405169
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674806</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-24 13:48:46 -0700</bug_when>
    <thetext>Committed r264853: &lt;https://trac.webkit.org/changeset/264853&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405169.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674842</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-07-24 14:47:09 -0700</bug_when>
    <thetext>&gt; No, we can&apos;t the scope will be reset at the end of last runloop when the
&gt; UserGestureIndicator is destroyed.

Right, we should capture the scope in the lambda.

&gt; &gt;&gt; Source/WebCore/dom/UserGestureIndicator.h:95
&gt; &gt;&gt; +    bool isPropagatedFromFetch() const { return m_isPropagatedFromFetch == IsPropagatedFromFetch::Yes; }
&gt; &gt; 
&gt; &gt; I would rename IsPropagatedFromFetch to ShouldPersistInNextMicrotask, ditto for setter/getter/member.
&gt; 
&gt; Since now this is the only api to would set this flag, it may be more
&gt; appropriate to name it more specific. Also, the current patch is a quick fix
&gt; to expand user gesture propagation to some important APIs. Ultimately, the
&gt; way how user gesture is propagated here cannot be scaled. We can&apos;t set
&gt; UserGestureIndicator for every async API. A better way of doing this for all
&gt; could be User Activation API in the html spec. Doing that now for iOS 14 and
&gt; macOS Big Sur is too risky though.

But the point of IsPropagatedFromFetch flag is solely to know whether this should be used in the next microtask.
If we add another API that needs to be propagated to the next microtask, we can just reuse IsPropagatedFromFetch::Yes.

&gt; &gt;&gt; Source/WebCore/testing/Internals.cpp:5677
&gt; &gt;&gt; +    UserGestureToken::setMaximumIntervalForUserGestureForwardingForFetchForTesting(Seconds(interval));
&gt; &gt; 
&gt; &gt; We probably need to set the value back to the regular value in Internals::Internals so that the next test reusing the process will have the default expected value.
&gt; 
&gt; The static variable is per web process. I guess the value will not be
&gt; carried to the next test given it will load a different page. For different
&gt; test vectors within the same test file, I think that test file should
&gt; ultimately control the values.

I do not think there is a guarantee that a new process will be used for the next test, WK1 for instance.
I think we should reset it in Internals::resetToConsistentState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674867</commentid>
    <comment_count>14</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-07-24 15:28:34 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #13)
&gt; &gt; No, we can&apos;t the scope will be reset at the end of last runloop when the
&gt; &gt; UserGestureIndicator is destroyed.
&gt; 
&gt; Right, we should capture the scope in the lambda.

Not sure what benefit we get by capturing the scope in the lambda, and use it for the new user gesture indicator since we want the new one to be media only for sure.

&gt; 
&gt; &gt; &gt;&gt; Source/WebCore/dom/UserGestureIndicator.h:95
&gt; &gt; &gt;&gt; +    bool isPropagatedFromFetch() const { return m_isPropagatedFromFetch == IsPropagatedFromFetch::Yes; }
&gt; &gt; &gt; 
&gt; &gt; &gt; I would rename IsPropagatedFromFetch to ShouldPersistInNextMicrotask, ditto for setter/getter/member.
&gt; &gt; 
&gt; &gt; Since now this is the only api to would set this flag, it may be more
&gt; &gt; appropriate to name it more specific. Also, the current patch is a quick fix
&gt; &gt; to expand user gesture propagation to some important APIs. Ultimately, the
&gt; &gt; way how user gesture is propagated here cannot be scaled. We can&apos;t set
&gt; &gt; UserGestureIndicator for every async API. A better way of doing this for all
&gt; &gt; could be User Activation API in the html spec. Doing that now for iOS 14 and
&gt; &gt; macOS Big Sur is too risky though.
&gt; 
&gt; But the point of IsPropagatedFromFetch flag is solely to know whether this
&gt; should be used in the next microtask.
&gt; If we add another API that needs to be propagated to the next microtask, we
&gt; can just reuse IsPropagatedFromFetch::Yes.

Got you. Will do a fellow up on Bug 214722.

&gt; 
&gt; &gt; &gt;&gt; Source/WebCore/testing/Internals.cpp:5677
&gt; &gt; &gt;&gt; +    UserGestureToken::setMaximumIntervalForUserGestureForwardingForFetchForTesting(Seconds(interval));
&gt; &gt; &gt; 
&gt; &gt; &gt; We probably need to set the value back to the regular value in Internals::Internals so that the next test reusing the process will have the default expected value.
&gt; &gt; 
&gt; &gt; The static variable is per web process. I guess the value will not be
&gt; &gt; carried to the next test given it will load a different page. For different
&gt; &gt; test vectors within the same test file, I think that test file should
&gt; &gt; ultimately control the values.
&gt; 
&gt; I do not think there is a guarantee that a new process will be used for the
&gt; next test, WK1 for instance.
&gt; I think we should reset it in Internals::resetToConsistentState.

Got you. Will do a fellow up on Bug 214722.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676357</commentid>
    <comment_count>15</comment_count>
      <attachid>405131</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-07-30 06:08:08 -0700</bug_when>
    <thetext>Comment on attachment 405131
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:192
&gt; +    m_userGestureToken = UserGestureIndicator::currentUserGesture();

I am wondering whether this is fine/sufficient?
This token may or may not be the same as the token captured for the fetch promise.
If writing the above, this will be fine since the token will be the same:
const response = await fetch(&apos;a&apos;);
const buffer = await response.arrayBuffer();

But if doing something like:
const response = await fetch(&apos;a&apos;);
setTimeout(async () =&gt; {
    const buffer = await response.arrayBuffer();
   // user gesture not propagated here, but would have been if we were getting the token of the fetch response since it would probably not be yet expired.
}, 0);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676459</commentid>
    <comment_count>16</comment_count>
      <attachid>405131</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-07-30 11:15:26 -0700</bug_when>
    <thetext>Comment on attachment 405131
Patch

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

&gt;&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:192
&gt;&gt; +    m_userGestureToken = UserGestureIndicator::currentUserGesture();
&gt; 
&gt; I am wondering whether this is fine/sufficient?
&gt; This token may or may not be the same as the token captured for the fetch promise.
&gt; If writing the above, this will be fine since the token will be the same:
&gt; const response = await fetch(&apos;a&apos;);
&gt; const buffer = await response.arrayBuffer();
&gt; 
&gt; But if doing something like:
&gt; const response = await fetch(&apos;a&apos;);
&gt; setTimeout(async () =&gt; {
&gt;     const buffer = await response.arrayBuffer();
&gt;    // user gesture not propagated here, but would have been if we were getting the token of the fetch response since it would probably not be yet expired.
&gt; }, 0);

I think setTimeout should have propagated the media only user gesture?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405027</attachid>
            <date>2020-07-23 02:47:33 -0700</date>
            <delta_ts>2020-07-23 02:49:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214444-20200723024733.patch</filename>
            <type>text/plain</type>
            <size>42217</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDgwZWM5MWVjNmRjZWQx
ZWRjZTY4NGU4YzVkZTZiMTY0ZGYyM2YyNS4uMmQ1OTkwMWJiOTU0YTMxMjlmMGI4ZjczMTlkZWRh
ODZlN2ZlMGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIwLTA3LTIzICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvcGFnYXRpbmcgdXNl
ciBnZXN0dXJlIHRocm91Z2ggRmV0Y2ggQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0NDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1OTgw
OTUzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcHJvcGFnYXRlcyBtZWRpYSBvbmx5IHVzZXIgZ2VzdHVyZXMgdGhyb3VnaCBGZXRj
aCBBUEksIGluY2x1ZGluZyBGZXRjaCBhbmQgRmV0Y2hSZXNwb25zZS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyB0ZXN0IGNvbnRlbnRzLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9ET01X
aW5kb3dGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dGZXRjaDo6ZmV0Y2gp
OgorICAgICAgICBQcm9wYWdhdGVzIG1lZGlhIG9ubHkgdXNlciBnZXN0dXJlcyB0aHJvdWdoIEZl
dGNoLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldENvbnN1bWVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6c2V0TWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpGZXRjaEJvZHlDb25zdW1lcik6CisgICAg
ICAgIFByb3BhZ2F0ZXMgbWVkaWEgb25seSB1c2VyIGdlc3R1cmVzIHRocm91Z2ggRmV0Y2hSZXNw
b25zZS4gVXNlckdlc3R1cmVJbmRpY2F0b3IgaXMgb25seSBzZXQgaW4gdGhlIGFzeW5jIHByb21p
c2UgcmVzb2x2aW5nIHBhdGguCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVXaXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6c2V0TWF4aW11bUludGVydmFsRm9yVXNl
ckdlc3R1cmVGb3J3YXJkaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpGZXRjaFJlcXVlc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25z
ZTo6c2V0TWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgQ3JhZnRzIGEgd2F5IHRv
IHBhc3MgdGhlIG1heGltdW0gaW50ZXJ2YWwgZnJvbSBsYXlvdXQgdGVzdHMgc3VjaCB0aGF0IGl0
IGNhbiBiZSBzaG9ydGVuZWQgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cXVldWVNaWNyb3Rh
c2tUb0V2ZW50TG9vcCk6CisgICAgICAgIFByb3BhZ2F0ZXMgbWVkaWEgb25seSB1c2VyIGdlc3R1
cmVzIHRoYXQgd2FzIHByb3BhZ2F0ZWQgdGhyb3VnaCBGZXRjaCB0byB0aGUgcmVsYXRlZCBwcm9t
aXNlIGV4ZWN1dG9ycy4KKworICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRp
Y2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3I6On5Vc2VyR2Vz
dHVyZUluZGljYXRvcik6CisgICAgICAgICogZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpzZXRJc1Byb3BvZ2F0ZWRGcm9tRmV0
Y2gpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6cmVzZXRJc1Byb3BvZ2F0
ZWRGcm9tRmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6aXNQcm9w
b2dhdGVkRnJvbUZldGNoIGNvbnN0KToKKyAgICAgICAgQWRkcyBhIGZsYWcgdG8gaW5kaWNhdGUg
dGhlIHByb3BhZ2F0aW9uIHNvdXJjZSBvZiBhIHVzZXIgZ2VzdHVyZSB0b2tlbi4KKworICAgICAg
ICAqIHBhZ2UvRE9NVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVk
KToKKyAgICAgICAgR2F0aGVycyBzb21lIGNvbnN0YW50cy4KKworICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0RmV0Y2hNYXhp
bXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICBD
cmFmdHMgYSB3YXkgdG8gcGFzcyB0aGUgbWF4aW11bSBpbnRlcnZhbCBmcm9tIGxheW91dCB0ZXN0
cy4KKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICBHYXRoZXJzIHNvbWUg
Y29uc3RhbnRzLgorCiAyMDIwLTA3LTE3ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtXZWJHTDJdIFJlYWRQaXhlbHMgdXBkYXRlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0RPTVdpbmRvd0ZldGNoLmNwcAppbmRleCBkZWMzMWQ5NDBh
NTc0NGU0OWQ2NWI2ZTE1ZTc2NDJjOTNjMzBiMzI2Li40ODc3ZWM1NjhiOTg4YzliNjQ0MDFhZWY2
ZmEzNDE1NjE2NGJjZjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0RPTVdpbmRvd0ZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0RP
TVdpbmRvd0ZldGNoLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkZldGNoUmVzcG9u
c2UuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkpTRmV0
Y2hSZXNwb25zZS5oIgorI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsNyArNTcsMTQgQEAgdm9pZCBET01XaW5kb3dGZXRjaDo6
ZmV0Y2goRE9NV2luZG93JiB3aW5kb3csIEZldGNoUmVxdWVzdDo6SW5mbyYmIGlucHV0LCBGZXRj
aFIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZldGNoUmVzcG9uc2U6OmZldGNoKCpk
b2N1bWVudCwgcmVxdWVzdC5yZWxlYXNlUmV0dXJuVmFsdWUoKS5nZXQoKSwgW3Byb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25PcjxGZXRjaFJlc3BvbnNlJj4mJiByZXN1bHQpIG11
dGFibGUgeworICAgIGF1dG8mIGZldGNoUmVxdWVzdCA9IHJlcXVlc3QucmVsZWFzZVJldHVyblZh
bHVlKCkuZ2V0KCk7CisgICAgRmV0Y2hSZXNwb25zZTo6ZmV0Y2goKmRvY3VtZW50LCBmZXRjaFJl
cXVlc3QsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgdXNlckdlc3R1cmVUb2tlbiA9IFVz
ZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNlckdlc3R1cmUoKSwgbWF4aW11bUludGVydmFs
Rm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nID0gZmV0Y2hSZXF1ZXN0Lm1heGltdW1JbnRlcnZhbEZv
clVzZXJHZXN0dXJlRm9yd2FyZGluZygpLCBjdXJyZW50VGltZSA9IE1vbm90b25pY1RpbWU6Om5v
dygpXSAoRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSY+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKCF1c2VyR2VzdHVyZVRva2VuIHx8IHVzZXJHZXN0dXJlVG9rZW4tPmhhc0V4cGly
ZWQobWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKSB8fCAhdXNlckdlc3R1
cmVUb2tlbi0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgICAgIHByb21pc2Uu
c2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHVzZXJHZXN0
dXJlVG9rZW4sIFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1cmVTY29wZTo6TWVkaWFPbmx5LCBVc2Vy
R2VzdHVyZVRva2VuOjpJc1Byb3BvZ2F0ZWRGcm9tRmV0Y2g6Olllcyk7CiAgICAgICAgIHByb21p
c2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGZhNTZhMjI3
YTNiNDk4MDcyNTdiY2E0NjMzMGQ3NThhOTI5YTQ0ZWIuLjJmZmE5ZDFkNzc4YTIxNTgxNTk5NTlm
NzFmZTU2ZDBiZGY5NjIxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJl
c29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBGZXRj
aEJvZHlDb25zCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpjbGVhbigpCiB7CiAgICAgbV9idWZm
ZXIgPSBudWxscHRyOwotICAgIG1fY29uc3VtZVByb21pc2UgPSBudWxscHRyOworICAgIHJlc2V0
Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5rKSB7CiAgICAgICAgIG1fc2luay0+Y2xl
YXJDYWxsYmFjaygpOwogICAgICAgICByZXR1cm47CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBG
ZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Us
IFJlYWRhYmxlU3RyZWFtKgogICAgIH0KIAogICAgIGlmIChtX2lzTG9hZGluZykgewotICAgICAg
ICBtX2NvbnN1bWVQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKKyAgICAgICAgc2V0Q29uc3Vt
ZVByb21pc2UoV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTE4OSw5ICsxODksMTYgQEAgU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkK
IHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldENvbnN1bWVQcm9taXNlKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQoIW1fY29uc3VtZVByb21pc2UpOworICAg
IG1fdXNlckdlc3R1cmVUb2tlbiA9IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNlckdl
c3R1cmUoKTsKICAgICBtX2NvbnN1bWVQcm9taXNlID0gV1RGTW92ZShwcm9taXNlKTsKIH0KIAor
dm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25zdW1lUHJvbWlzZSgpCit7CisgICAgbV9j
b25zdW1lUHJvbWlzZSA9IG51bGxwdHI7CisgICAgbV91c2VyR2VzdHVyZVRva2VuID0gbnVsbHB0
cjsKK30KKwogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0U291cmNlKFJlZjxGZXRjaEJvZHlT
b3VyY2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNlID0gV1RGTW92ZShzb3VyY2UpOwpAQCAt
MjA2LDcgKzIxMyw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQoY29u
c3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCiAgICAgbV9pc0xvYWRpbmcgPSBmYWxzZTsKICAgICBp
ZiAobV9jb25zdW1lUHJvbWlzZSkgewogICAgICAgICBtX2NvbnN1bWVQcm9taXNlLT5yZWplY3Qo
ZXhjZXB0aW9uKTsKLSAgICAgICAgbV9jb25zdW1lUHJvbWlzZSA9IG51bGxwdHI7CisgICAgICAg
IHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICB9CiAgICAgaWYgKG1fc291cmNlKSB7CiAgICAg
ICAgIG1fc291cmNlLT5lcnJvcihleGNlcHRpb24pOwpAQCAtMjE4LDggKzIyNSwxNCBAQCB2b2lk
IEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nU3VjY2VlZGVkKCkKIHsKICAgICBtX2lzTG9hZGlu
ZyA9IGZhbHNlOwogCi0gICAgaWYgKG1fY29uc3VtZVByb21pc2UpCi0gICAgICAgIHJlc29sdmUo
bV9jb25zdW1lUHJvbWlzZS5yZWxlYXNlTm9uTnVsbCgpLCBudWxscHRyKTsKKyAgICBpZiAobV9j
b25zdW1lUHJvbWlzZSkgeworICAgICAgICBpZiAoIW1fdXNlckdlc3R1cmVUb2tlbiB8fCBtX3Vz
ZXJHZXN0dXJlVG9rZW4tPmhhc0V4cGlyZWQobV9tYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVy
ZUZvcndhcmRpbmcpIHx8ICFtX3VzZXJHZXN0dXJlVG9rZW4tPnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKQorICAgICAgICAgICAgcmVzb2x2ZShtX2NvbnN1bWVQcm9taXNlLnJlbGVhc2VOb25OdWxs
KCksIG51bGxwdHIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFVzZXJHZXN0dXJlSW5k
aWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IobV91c2VyR2VzdHVyZVRva2VuLCBVc2VyR2VzdHVyZVRv
a2VuOjpHZXN0dXJlU2NvcGU6Ok1lZGlhT25seSwgVXNlckdlc3R1cmVUb2tlbjo6SXNQcm9wb2dh
dGVkRnJvbUZldGNoOjpZZXMpOworICAgICAgICAgICAgcmVzb2x2ZShtX2NvbnN1bWVQcm9taXNl
LnJlbGVhc2VOb25OdWxsKCksIG51bGxwdHIpOworICAgICAgICB9CisgICAgfQogICAgIGlmICht
X3NvdXJjZSkgewogICAgICAgICBtX3NvdXJjZS0+Y2xvc2UoKTsKICAgICAgICAgbV9zb3VyY2Ug
PSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oCmluZGV4IDNjYzI0NjQ2MDk5NDhhZDNmZTRkMjNkMDA2NWM2ODc5Zjc0MjY3ODIu
LmRiZGRkM2E2YjBkMDYwMmM1NGY3NmZjMDIyZmYzNTYwMmZkZWUxYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIlJlYWRh
YmxlU3RyZWFtU2luay5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlVz
ZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsNyAr
NDQsNyBAQCBjbGFzcyBGZXRjaEJvZHlDb25zdW1lciB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFz
cyBUeXBlIHsgTm9uZSwgQXJyYXlCdWZmZXIsIEJsb2IsIEpTT04sIFRleHQgfTsKIAotICAgIEZl
dGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9CisgICAgRmV0Y2hC
b2R5Q29uc3VtZXIoVHlwZSk7CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCk7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5z
aWduZWQpOwpAQCAtNzMsOCArNzQsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRBc0xvYWRp
bmcoKSB7IG1faXNMb2FkaW5nID0gdHJ1ZTsgfQogCisgICAgdm9pZCBzZXRNYXhpbXVtSW50ZXJ2
YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoZG91YmxlIGludGVydmFsKSB7IG1fbWF4aW11bUlu
dGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nID0gU2Vjb25kcyhpbnRlcnZhbCk7IH0KKwog
cHJpdmF0ZToKICAgICBSZWY8QmxvYj4gdGFrZUFzQmxvYigpOworICAgIHZvaWQgcmVzZXRDb25z
dW1lUHJvbWlzZSgpOwogCiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fY29udGVudFR5
cGU7CkBAIC04Myw2ICs4NywxNCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVh
bVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3VyY2U+
IG1fc291cmNlOwogICAgIGJvb2wgbV9pc0xvYWRpbmcgeyBmYWxzZSB9OworICAgIFJlZlB0cjxV
c2VyR2VzdHVyZVRva2VuPiBtX3VzZXJHZXN0dXJlVG9rZW47CisgICAgU2Vjb25kcyBtX21heGlt
dW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZzsKIH07CiAKK2lubGluZSBGZXRjaEJv
ZHlDb25zdW1lcjo6RmV0Y2hCb2R5Q29uc3VtZXIoVHlwZSB0eXBlKQorICAgIDogbV90eXBlKHR5
cGUpCisgICAgLCBtX21heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhVc2Vy
R2VzdHVyZVRva2VuOjptYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JG
ZXRjaCkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCmluZGV4IGVmYzE2MzVlYTU1ZWU3NDUwNjBk
OTEyMDhmZDEwMTJkNjlhZWQ5YzQuLjU1YjVmZGIzNzFkMzkyYTZiNDAzZTEyYjA0NWUzZTU1N2Vi
NDdmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5j
cHAKQEAgLTIwNyw2ICsyMDcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaFJlcXVlc3Q6Omlu
aXRpYWxpemVXaXRoKEZldGNoUmVxdWVzdCYgaW5wdXQsIEluaXQmJiBpbml0KQogICAgIG1fcmVx
dWVzdCA9IGlucHV0Lm1fcmVxdWVzdDsKICAgICBtX29wdGlvbnMgPSBpbnB1dC5tX29wdGlvbnM7
CiAgICAgbV9yZWZlcnJlciA9IGlucHV0Lm1fcmVmZXJyZXI7CisgICAgbV9tYXhpbXVtSW50ZXJ2
YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcgPSBpbnB1dC5tX21heGltdW1JbnRlcnZhbEZvclVz
ZXJHZXN0dXJlRm9yd2FyZGluZzsKIAogICAgIGF1dG8gb3B0aW9uc1Jlc3VsdCA9IGluaXRpYWxp
emVPcHRpb25zKGluaXQpOwogICAgIGlmIChvcHRpb25zUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQpA
QCAtMzMzLDUgKzMzNCw5IEBAIGNvbnN0IGNoYXIqIEZldGNoUmVxdWVzdDo6YWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJSZXF1ZXN0IjsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQordm9pZCBGZXRjaFJlcXVlc3Q6OnNldE1heGltdW1JbnRlcnZhbEZvclVzZXJH
ZXN0dXJlRm9yd2FyZGluZyhkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgbV9tYXhpbXVtSW50ZXJ2
YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcgPSBTZWNvbmRzKGludGVydmFsKTsKK30KIAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXF1ZXN0LmgKaW5kZXggMDc5MGRjYjE0ZjNmM2FjZTdkNTFjMTZlMjI2NTY0NmM2ZjlmZWFjZS4u
YTg4NTRiNGQ1ZjI1MzM1MTQ1NTBjZDg0MmY0MzJiNGMyNzg3YWUxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiRmV0Y2hPcHRpb25zLmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXF1ZXN0SW5pdC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9y
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTgyLDYgKzgzLDkgQEAgcHVibGljOgogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVx
dWVzdCgpIGNvbnN0OwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXhpbXVtSW50ZXJ2
YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoZG91YmxlKTsKKyAgICBTZWNvbmRzIG1heGltdW1J
bnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11
bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nOyB9CisKIHByaXZhdGU6CiAgICAgRmV0
Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBPcHRpb25hbDxGZXRjaEJvZHk+JiYs
IFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBGZXRjaE9wdGlvbnMmJiwg
U3RyaW5nJiYgcmVmZXJyZXIpOwogCkBAIC05OCw2ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIFN0
cmluZyBtX3JlZmVycmVyOwogICAgIG11dGFibGUgU3RyaW5nIG1fcmVxdWVzdFVSTDsKICAgICBS
ZWY8QWJvcnRTaWduYWw+IG1fc2lnbmFsOworICAgIFNlY29uZHMgbV9tYXhpbXVtSW50ZXJ2YWxG
b3JVc2VyR2VzdHVyZUZvcndhcmRpbmc7CiB9OwogCiBpbmxpbmUgRmV0Y2hSZXF1ZXN0OjpGZXRj
aFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgT3B0aW9uYWw8RmV0Y2hC
b2R5PiYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgU3RyaW5nJiYgcmVmZXJyZXIpCkBA
IC0xMDYsNiArMTExLDcgQEAgaW5saW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbmFsPEZldGMKICAgICAsIG1fb3B0aW9u
cyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV9yZWZlcnJlcihXVEZNb3ZlKHJlZmVycmVyKSkK
ICAgICAsIG1fc2lnbmFsKEFib3J0U2lnbmFsOjpjcmVhdGUoY29udGV4dCkpCisgICAgLCBtX21h
eGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhVc2VyR2VzdHVyZVRva2VuOjpt
YXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JGZXRjaCkKIHsKICAgICB1
cGRhdGVDb250ZW50VHlwZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuaWRsCmluZGV4IGJkNGIzNzE1YmU1N2I2NDE2MjlkZGYyMWRkODMzNmUyMWU2
ODFjYTkuLjZhM2IwMWFmOWU0NjRhMmMxOTVlNDM3MWFkNmY2YWUzYjczNmZjNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGwKQEAgLTM1LDYgKzM1
LDcgQEAgdHlwZWRlZiAoQmxvYiBvciBCdWZmZXJTb3VyY2Ugb3IgRE9NRm9ybURhdGEgb3IgVVJM
U2VhcmNoUGFyYW1zIG9yIFJlYWRhYmxlU3RyZWEKIFsKICAgICBBY3RpdmVET01PYmplY3QsCiAg
ICAgRW5hYmxlZEF0UnVudGltZT1GZXRjaEFQSSwKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JFX0VY
UE9SVCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKICAgICBHZW5lcmF0ZUlzUmVhY2hh
YmxlPUltcGwsCiAgICAgSW50ZXJmYWNlTmFtZT1SZXF1ZXN0LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggNDI2MzkxZGNlODRjZWYzMzRk
ZjI1ZDJjZDA0YzY3MGRjOTYzNDFiYi4uMDU5YjMyZDY0ZTc3YzM4MjM3Y2NmM2QxZTdiZmRmMTMz
NzQzM2JiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuY3BwCkBAIC01NDEsNCArNTQxLDkgQEAgUmVzb3VyY2VSZXNwb25zZSBGZXRjaFJlc3BvbnNl
OjpyZXNvdXJjZVJlc3BvbnNlKCkgY29uc3QKICAgICByZXR1cm4gcmVzcG9uc2U7CiB9CiAKK3Zv
aWQgRmV0Y2hSZXNwb25zZTo6c2V0TWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJk
aW5nKGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICBib2R5KCkuY29uc3VtZXIoKS5zZXRNYXhpbXVt
SW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoaW50ZXJ2YWwpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5oCmluZGV4IGMxMDE1NTRlNzZkMDFlMzVmN2RhNDMwYzdjM2RhYWRkYmYxNjU5MWYuLjlk
M2IwMmM5MTY0ZWM0ZDY4MzkwMjRiMzJhZjQ4NGIzNGZhNTkwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xMDgsNiArMTA4LDggQEAgcHVi
bGljOgogCiAgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaW50ZXJuYWxSZXNwb25zZUhlYWRlcnMo
KSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsUmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpOyB9
CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0
dXJlRm9yd2FyZGluZyhkb3VibGUpOworCiBwcml2YXRlOgogICAgIEZldGNoUmVzcG9uc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIE9wdGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNoSGVh
ZGVycz4mJiwgUmVzb3VyY2VSZXNwb25zZSYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc2YTA0NjlkZWFmY2MxYWEwMmE3
NmIyYjZkYTY4MDlkYTk2MDg2ZmQuLmNkNjNiZWQ1MGQyOWVhMDlhODllZDgyYjA0N2NjNjQ0MWY1
MzU1NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE3NTgsNiArMTc1OCw3IEBACiAJCTU3MDQ0MDVBMUU1MzkzNjIwMDM1NjYw
MSAvKiBKU0Flc0NiY0NmYlBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTcwNDQwNTkxRTUzOTM2MjAwMzU2NjAxIC8qIEpTQWVzQ2JjQ2ZiUGFy
YW1zLmggKi87IH07CiAJCTU3MDZBNjk2MURERTVDOTUwMEEwM0IxNCAvKiBDcnlwdG9BbGdvcml0
aG1Sc2FPYWVwUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzA2QTY5NTFEREU1Qzk1MDBBMDNCMTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2Fl
cFBhcmFtcy5oICovOyB9OwogCQk1NzA2QTY5ODFEREU1RTQ2MDBBMDNCMTQgLyogSlNSc2FPYWVw
UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzA2QTY5NzFEREU1RTQ2MDBBMDNCMTQgLyogSlNSc2FPYWVwUGFyYW1zLmggKi87IH07CisJCTU3
MDkzRDEzMjRDOTdDOEYwMDg2QzUyRCAvKiBGZXRjaFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwMTVENjFDN0I1NzA0MDAwOTFDNkUg
LyogRmV0Y2hSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTU3MTI1MjY5MUU1MjRFQjEwMDhGRjM2OSAvKiBDcnlwdG9BbGdvcml0aG1B
RVNfQ0ZCLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
NzEyNTI2ODFFNTI0RUIxMDA4RkYzNjkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQi5oICovOyB9
OwogCQk1NzE1MkI1QTIxQ0IzRTg4MDAwQzM3Q0EgLyogQXBkdUNvbW1hbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjU4MjFDQjJFM0IwMDBD
MzdDQSAvKiBBcGR1Q29tbWFuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTU3MTUyQjVDMjFDQzE5MDIwMDBDMzdDQSAvKiBBcGR1UmVzcG9uc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjU2
MjFDQjJFM0EwMDBDMzdDQSAvKiBBcGR1UmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTgwOCw2ICsxODA5LDcgQEAKIAkJNTc1MEE5
N0UxRTZBMTNFRjAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzUwQTk3RDFFNkExM0VG
MDA3MDVDNEEgLyogQ3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXMuaCAqLzsgfTsKIAkJNTc1MEE5
ODIxRTZBMTUwODAwNzA1QzRBIC8qIEpTRWNLZXlQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTgwMUU2QTE1MDgwMDcwNUM0QSAvKiBK
U0VjS2V5UGFyYW1zLmggKi87IH07CiAJCTU3NTBBOTg3MUU2QTIxNjgwMDcwNUM0QSAvKiBDcnlw
dG9BbGdvcml0aG1FQ0RILmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzUwQTk4NTFFNkEyMTY4MDA3MDVDNEEgLyogQ3J5cHRvQWxnb3JpdGhtRUNESC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3NTMz
RTA4MjRDNkM1OTgwMDNFRjJEMyAvKiBGZXRjaFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0Rjg4MUM1MEM0RjYwMDMzODQ4OCAvKiBG
ZXRjaFJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1NzU0NzE5RjFFQ0U2MjgzMDBERDYzQjIgLyogSlNSc2FQc3NQYXJhbXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTQ3MTk5MUVDRTVE
MkEwMERENjNCMiAvKiBKU1JzYVBzc1BhcmFtcy5oICovOyB9OwogCQk1NzU4NTk2MTIzOUYxMjRE
MDBDNzQ1NzIgLyogSlNBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU4NTk1RTIzOUYx
MTczMDBDNzQ1NzIgLyogSlNBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmgg
Ki87IH07CiAJCTU3NTg1OTZDMjM5RjMyMUMwMEM3NDU3MiAvKiBBdXRoZW50aWNhdGlvbkV4dGVu
c2lvbnNDbGllbnRPdXRwdXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NzU4NTk2NTIzOUYxNENDMDBDNzQ1NzIgLyogQXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50T3V0cHV0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zMDc0MywxMSArMzA3NDUsMTMgQEAKIAkJCQk1MTdBNTM1ODFGNTg4
OUU4MDBEQ0RDMEEgLyogRmV0Y2hMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQx
QUQ3NTNBMUNFRjZCRDEwMEEzMTQ4NiAvKiBGZXRjaE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDRTE5MTREMUYyQTlBRkIwMDI3MkY3OCAvKiBGZXRjaFJlZmVycmVyUG9saWN5LmggaW4g
SGVhZGVycyAqLywKKwkJCQk1NzUzM0UwODI0QzZDNTk4MDAzRUYyRDMgLyogRmV0Y2hSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE1QTFGMkE5QjM0MDAyNzJGNzggLyogRmV0Y2hS
ZXF1ZXN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5MTU1MUYyQTlCMUQwMDI3MkY3
OCAvKiBGZXRjaFJlcXVlc3RDcmVkZW50aWFscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkx
NEExRjJBOThCOTAwMjcyRjc4IC8qIEZldGNoUmVxdWVzdEluaXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDRTE5MTUxMUYyQTlCMEEwMDI3MkY3OCAvKiBGZXRjaFJlcXVlc3RNb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0UxOTE2MDFGMkE5QjRGMDAyNzJGNzggLyogRmV0Y2hSZXF1ZXN0UmVk
aXJlY3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3MDkzRDEzMjRDOTdDOEYwMDg2QzUyRCAvKiBG
ZXRjaFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDczMEQ4QjEyNDhGMEIzMDBEM0E5
QzkgLyogRkVUaWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDczMEQ4RDEyNDhGMEIzMDBEM0E5
QzkgLyogRkVUdXJidWxlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA5NTEyQjAyNkY3
MDBDMUEzNTkgLyogRkZUQ29udm9sdmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMyNjU5LDcgKzMy
NjYzLDYgQEAKIAkJCQlBMTQ5Nzg3MTFBQkFGM0E1MDBDRUY3RTQgLyogUGxhdGZvcm1Db250ZW50
RmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVDNzYyQjE0OTdGRTE0MDBCQzQ3NzUgLyog
UGxhdGZvcm1FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY2MDFFQkYxNEIzQjlBRDAwMTJD
MEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4gSGVhZGVycyAqLywKLQkJCQlDREM3
NDcwNDI0QkUyRkM3MDBDMTg2OEIgLyogUG93ZXJTb3VyY2VOb3RpZmllci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNBQTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5
TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxh
dGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIw
MEREN0M2OCAvKiBQbGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLApAQCAtMzI3MjAsNiAr
MzI3MjMsNyBAQAogCQkJCTk3NDZBRjMyMTRGNERERTYwMDNFN0E3MCAvKiBQb3NpdGlvbk9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjE3MkVDMjNBMkFDMUYwMDNBQjMwOSAvKiBQb3N0
TWVzc2FnZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2REJCNjUwMUFCOEM5NkYwMEQ5
QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREM3NDcwNDI0
QkUyRkM3MDBDMTg2OEIgLyogUG93ZXJTb3VyY2VOb3RpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzBGMkE0NDExMzg2OUFBQjAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSBpbiBIZWFkZXJz
ICovLAogCQkJCUExQzE1MDdBMUUzRjJCM0UwMDMyQzk4QyAvKiBQcmV2aWV3Q29udmVydGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMUFEQUY3RDIzNjBGRDNFMDA5Q0I3NzYgLyogUHJldmlld0Nv
bnZlcnRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCA4ODMyMTNlOTA2MWYzOGI4YmI0MzM1Nzli
Mjk4NjA5ODc3ODRlNzgyLi4wMmU0ODBhOTY3OGQ2Y2EwNTg1MDJiODc0OWFiY2M5MWZlM2JjNWUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
QEAgLTIxNCw3ICsyMTQsMTcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnF1ZXVlTWljcm90YXNr
VG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwgUmVmPEpTQzoKIAogICAgIGF1dG8g
Y2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVhdGUodGhpc09iamVjdCwgV1RGTW92
ZSh0YXNrKSk7CiAgICAgYXV0byYgZXZlbnRMb29wID0gdGhpc09iamVjdC5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmV2ZW50TG9vcCgpOwotICAgIGV2ZW50TG9vcC5xdWV1ZU1pY3JvdGFzayhb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAvLyBQcm9wb2dh
dGluZyBtZWRpYSBvbmx5IHVzZXIgZ2VzdHVyZSBmb3IgRmV0Y2ggQVBJJ3MgcHJvbWlzZSBjaGFp
bi4KKyAgICBhdXRvIHVzZXJHZXN0dXJlVG9rZW4gPSBVc2VyR2VzdHVyZUluZGljYXRvcjo6Y3Vy
cmVudFVzZXJHZXN0dXJlKCk7CisgICAgLy8gTWV0YWRhdGEgc3VjaCBhcyB0aGUgc2NvcGUgYW5k
IGlzUHJvcG9nYXRlZEZyb21GZXRjaCB3aWxsIGJlIHJlc2V0IG9uY2UgdGhlIFVzZXJHZXN0dXJl
SW5kaWNhdG9yIGlzIGRlc3Ryb3llZC4KKyAgICBhdXRvIGlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJl
RnJvbUZldGNoID0gdXNlckdlc3R1cmVUb2tlbiAmJiB1c2VyR2VzdHVyZVRva2VuLT5wcm9jZXNz
aW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpICYmIHVzZXJHZXN0dXJlVG9rZW4tPmlzUHJvcG9nYXRl
ZEZyb21GZXRjaCgpOworICAgIGV2ZW50TG9vcC5xdWV1ZU1pY3JvdGFzayhbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmVGcm9tRmV0Y2gsIHVzZXJH
ZXN0dXJlVG9rZW4gPSBXVEZNb3ZlKHVzZXJHZXN0dXJlVG9rZW4pXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKCFpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZUZyb21GZXRjaCB8fCB1c2VyR2VzdHVy
ZVRva2VuLT5oYXNFeHBpcmVkKFVzZXJHZXN0dXJlVG9rZW46Om1heGltdW1JbnRlcnZhbEZvclVz
ZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoKSkgeworICAgICAgICAgICAgY2FsbGJhY2stPmNh
bGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFVzZXJHZXN0
dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IodXNlckdlc3R1cmVUb2tlbiwgVXNlckdlc3R1
cmVUb2tlbjo6R2VzdHVyZVNjb3BlOjpNZWRpYU9ubHksIFVzZXJHZXN0dXJlVG9rZW46OklzUHJv
cG9nYXRlZEZyb21GZXRjaDo6WWVzKTsKICAgICAgICAgY2FsbGJhY2stPmNhbGwoKTsKICAgICB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwCmluZGV4
IGRmZWM5M2I2NDRmNzJhNTFiYWQwYmViZjM5NmRhNjFjNTdmNmU0MjguLjY2MzE3MDc2NDk4NTFh
OWExODIwZmE2NDgwNjNiNDM1Y2ZmMDdlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJH
ZXN0dXJlSW5kaWNhdG9yLmNwcApAQCAtNzQsNyArNzQsNyBAQCBVc2VyR2VzdHVyZUluZGljYXRv
cjo6VXNlckdlc3R1cmVJbmRpY2F0b3IoT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3Rh
dGU+CiAgICAgfQogfQogCi1Vc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0
b3IoUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IHRva2VuLCBVc2VyR2VzdHVyZVRva2VuOjpHZXN0
dXJlU2NvcGUgc2NvcGUpCitVc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0
b3IoUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IHRva2VuLCBVc2VyR2VzdHVyZVRva2VuOjpHZXN0
dXJlU2NvcGUgc2NvcGUsIFVzZXJHZXN0dXJlVG9rZW46OklzUHJvcG9nYXRlZEZyb21GZXRjaCBp
c1Byb3BvZ2F0ZWRGcm9tRmV0Y2gpCiB7CiAgICAgLy8gU2lsZW50bHkgaWdub3JlIFVzZXJHZXN0
dXJlSW5kaWNhdG9ycyBvbiBub24gbWFpbiB0aHJlYWRzLgogICAgIGlmICghaXNNYWluVGhyZWFk
KCkpCkBAIC04NSw2ICs4NSw3IEBAIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpVc2VyR2VzdHVyZUlu
ZGljYXRvcihSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4gdG9rZW4sIFVzZXJHCiAKICAgICBpZiAo
dG9rZW4pIHsKICAgICAgICAgdG9rZW4tPnNldFNjb3BlKHNjb3BlKTsKKyAgICAgICAgdG9rZW4t
PnNldElzUHJvcG9nYXRlZEZyb21GZXRjaChpc1Byb3BvZ2F0ZWRGcm9tRmV0Y2gpOwogICAgICAg
ICBjdXJyZW50VG9rZW4oKSA9IHRva2VuOwogICAgIH0KIH0KQEAgLTk3LDYgKzk4LDcgQEAgVXNl
ckdlc3R1cmVJbmRpY2F0b3I6On5Vc2VyR2VzdHVyZUluZGljYXRvcigpCiAgICAgaWYgKGF1dG8g
dG9rZW4gPSBjdXJyZW50VG9rZW4oKSkgewogICAgICAgICB0b2tlbi0+cmVzZXRET01QYXN0ZUFj
Y2VzcygpOwogICAgICAgICB0b2tlbi0+cmVzZXRTY29wZSgpOworICAgICAgICB0b2tlbi0+cmVz
ZXRJc1Byb3BvZ2F0ZWRGcm9tRmV0Y2goKTsKICAgICB9CiAKICAgICBjdXJyZW50VG9rZW4oKSA9
IG1fcHJldmlvdXNUb2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2Vz
dHVyZUluZGljYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9y
LmgKaW5kZXggM2NmMzI3NzZjMDJhYjcwODg4ZDNmM2EwYmU3Yzk3MmZlNDFiZTJkYy4uOGE1YmYx
Nzc4MDMyNTRlZDFlNjc0NGQyNGQ2ZGIxMjE4ZGIwNDUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1VzZXJHZXN0dXJlSW5kaWNhdG9yLmgKQEAgLTQ3LDYgKzQ3LDkgQEAgZW51bSBjbGFzcyBVc2Vy
R2VzdHVyZVR5cGUgeyBFc2NhcGVLZXksIE90aGVyIH07CiAKIGNsYXNzIFVzZXJHZXN0dXJlVG9r
ZW4gOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyR2VzdHVyZVRva2VuPiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFVzZXJHZXN0dXJlVG9rZW4+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHBy
IFNlY29uZHMgbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nIHsgMV9zIH07
IC8vIE9uZSBzZWNvbmQgbWF0Y2hlcyBHZWNrby4KKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29u
ZHMgbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0Y2ggeyAxMF9z
IH07CisKICAgICBzdGF0aWMgUmVmPFVzZXJHZXN0dXJlVG9rZW4+IGNyZWF0ZShQcm9jZXNzaW5n
VXNlckdlc3R1cmVTdGF0ZSBzdGF0ZSwgVXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwg
Z2VzdHVyZVR5cGUpKTsKQEAgLTg0LDYgKzg3LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNj
b3BlKEdlc3R1cmVTY29wZSBzY29wZSkgeyBtX3Njb3BlID0gc2NvcGU7IH0KICAgICB2b2lkIHJl
c2V0U2NvcGUoKSB7IG1fc2NvcGUgPSBHZXN0dXJlU2NvcGU6OkFsbDsgfQogCisgICAgLy8gRXhw
YW5kIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpZiBtb3JlIHByb2dvZ2F0aW9uIHNvdXJjZXMgYXJl
IGFkZGVkIGxhdGVyLgorICAgIGVudW0gY2xhc3MgSXNQcm9wb2dhdGVkRnJvbUZldGNoIHsgWWVz
LCBObyB9OworICAgIHZvaWQgc2V0SXNQcm9wb2dhdGVkRnJvbUZldGNoKElzUHJvcG9nYXRlZEZy
b21GZXRjaCBpcykgeyBtX2lzUHJvcG9nYXRlZEZyb21GZXRjaCA9IGlzOyB9CisgICAgdm9pZCBy
ZXNldElzUHJvcG9nYXRlZEZyb21GZXRjaCgpIHsgbV9pc1Byb3BvZ2F0ZWRGcm9tRmV0Y2ggPSBJ
c1Byb3BvZ2F0ZWRGcm9tRmV0Y2g6Ok5vOyB9CisgICAgYm9vbCBpc1Byb3BvZ2F0ZWRGcm9tRmV0
Y2goKSBjb25zdCB7IHJldHVybiBtX2lzUHJvcG9nYXRlZEZyb21GZXRjaCA9PSBJc1Byb3BvZ2F0
ZWRGcm9tRmV0Y2g6OlllczsgfQorCiAgICAgYm9vbCBoYXNFeHBpcmVkKFNlY29uZHMgZXhwaXJh
dGlvbkludGVydmFsKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc3RhcnRUaW1lICsg
ZXhwaXJhdGlvbkludGVydmFsIDwgTW9ub3RvbmljVGltZTo6bm93KCk7CkBAIC0xMDQsNiArMTEz
LDcgQEAgcHJpdmF0ZToKICAgICBET01QYXN0ZUFjY2Vzc1BvbGljeSBtX2RvbVBhc3RlQWNjZXNz
UG9saWN5IHsgRE9NUGFzdGVBY2Nlc3NQb2xpY3k6Ok5vdFJlcXVlc3RlZFlldCB9OwogICAgIEdl
c3R1cmVTY29wZSBtX3Njb3BlIHsgR2VzdHVyZVNjb3BlOjpBbGwgfTsKICAgICBNb25vdG9uaWNU
aW1lIG1fc3RhcnRUaW1lIHsgTW9ub3RvbmljVGltZTo6bm93KCkgfTsKKyAgICBJc1Byb3BvZ2F0
ZWRGcm9tRmV0Y2ggbV9pc1Byb3BvZ2F0ZWRGcm9tRmV0Y2ggeyBJc1Byb3BvZ2F0ZWRGcm9tRmV0
Y2g6Ok5vIH07CiB9OwogCiBjbGFzcyBVc2VyR2VzdHVyZUluZGljYXRvciB7CkBAIC0xMTgsNyAr
MTI4LDcgQEAgcHVibGljOgogICAgIC8vIElmIGEgZG9jdW1lbnQgaXMgcHJvdmlkZWQsIGl0cyBs
YXN0IGtub3duIHVzZXIgZ2VzdHVyZSB0aW1lc3RhbXAgaXMgdXBkYXRlZC4KICAgICBlbnVtIGNs
YXNzIFByb2Nlc3NJbnRlcmFjdGlvblN0eWxlIHsgSW1tZWRpYXRlLCBEZWxheWVkIH07CiAgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgVXNlckdlc3R1cmVJbmRpY2F0b3IoT3B0aW9uYWw8UHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+LCBEb2N1bWVudCogPSBudWxscHRyLCBVc2VyR2VzdHVy
ZVR5cGUgPSBVc2VyR2VzdHVyZVR5cGU6Ok90aGVyLCBQcm9jZXNzSW50ZXJhY3Rpb25TdHlsZSA9
IFByb2Nlc3NJbnRlcmFjdGlvblN0eWxlOjpJbW1lZGlhdGUpOwotICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IFVzZXJHZXN0dXJlSW5kaWNhdG9yKFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiwg
VXNlckdlc3R1cmVUb2tlbjo6R2VzdHVyZVNjb3BlID0gVXNlckdlc3R1cmVUb2tlbjo6R2VzdHVy
ZVNjb3BlOjpBbGwpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFVzZXJHZXN0dXJlSW5k
aWNhdG9yKFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiwgVXNlckdlc3R1cmVUb2tlbjo6R2VzdHVy
ZVNjb3BlID0gVXNlckdlc3R1cmVUb2tlbjo6R2VzdHVyZVNjb3BlOjpBbGwsIFVzZXJHZXN0dXJl
VG9rZW46OklzUHJvcG9nYXRlZEZyb21GZXRjaCA9IFVzZXJHZXN0dXJlVG9rZW46OklzUHJvcG9n
YXRlZEZyb21GZXRjaDo6Tm8pOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Vc2VyR2VzdHVyZUluZGlj
YXRvcigpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAppbmRleCBiMjEzYTk5
YzhhZmYwMThkMTg4N2VjZjc0NDJhNDNhY2I2YmQxNDU4Li41YjkzMWVmYTFmMDNhYmE5ZjY3OWY3
OTUyZGQ5YWRmNzNjODE2MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRp
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcApAQCAtNDgsNyAr
NDgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBTZWNvbmRzIG1h
eEludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nIHsgMV9zIH07IC8vIE9uZSBzZWNvbmQg
bWF0Y2hlcyBHZWNrby4KIHN0YXRpYyBjb25zdCBTZWNvbmRzIG1pbkludGVydmFsRm9yTm9uVXNl
ck9ic2VydmFibGVDaGFuZ2VUaW1lcnMgeyAxX3MgfTsgLy8gRW1waXJpY2FsbHkgZGV0ZXJtaW5l
ZCB0byBtYXhpbWl6ZSBiYXR0ZXJ5IGxpZmUuCiBzdGF0aWMgY29uc3QgaW50IG1heFRpbWVyTmVz
dGluZ0xldmVsID0gNTsKIApAQCAtMzAxLDcgKzMwMCw3IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVk
KCkKIAogICAgIERPTVRpbWVyRmlyZVN0YXRlIGZpcmVTdGF0ZShjb250ZXh0LCBzdGQ6Om1pbiht
X25lc3RpbmdMZXZlbCArIDEsIG1heFRpbWVyTmVzdGluZ0xldmVsKSk7CiAKLSAgICBpZiAobV91
c2VyR2VzdHVyZVRva2VuVG9Gb3J3YXJkICYmIG1fdXNlckdlc3R1cmVUb2tlblRvRm9yd2FyZC0+
aGFzRXhwaXJlZChtYXhJbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZykpCisgICAgaWYg
KG1fdXNlckdlc3R1cmVUb2tlblRvRm9yd2FyZCAmJiBtX3VzZXJHZXN0dXJlVG9rZW5Ub0Zvcndh
cmQtPmhhc0V4cGlyZWQoVXNlckdlc3R1cmVUb2tlbjo6bWF4aW11bUludGVydmFsRm9yVXNlckdl
c3R1cmVGb3J3YXJkaW5nKSkKICAgICAgICAgbV91c2VyR2VzdHVyZVRva2VuVG9Gb3J3YXJkID0g
bnVsbHB0cjsKIAogICAgIEFTU0VSVCghaXNTdXNwZW5kZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKaW5kZXggYzJmYTZjODE0YzRiMGViNmNjYmJlY2YxMDk2OTBiNWE2MDI2
NGRhYy4uZTIzMWZmZWVkMzQwNjQ5N2M3NDZiYmI0OWFlMzFkMWYxN2U0NWRlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeHRlbmRhYmxlRXZlbnQuaCIKICNpbmNsdWRlICJFeHRl
bnNpb25TdHlsZVNoZWV0cy5oIgorI2luY2x1ZGUgIkZldGNoUmVxdWVzdC5oIgogI2luY2x1ZGUg
IkZldGNoUmVzcG9uc2UuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiRm9udENhY2hl
LmgiCkBAIC01Njc3LDYgKzU2NzgsMTYgQEAgdm9pZCBJbnRlcm5hbHM6OnNldFhIUk1heGltdW1J
bnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhYTUxIdHRwUmVxdWVzdCYgcmUKICAgICBy
ZXF1ZXN0LnNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhpbnRlcnZh
bCk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjpzZXRGZXRjaE1heGltdW1JbnRlcnZhbEZvclVzZXJH
ZXN0dXJlRm9yd2FyZGluZyhGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIGRvdWJsZSBpbnRlcnZhbCkK
K3sKKyAgICByZXF1ZXN0LnNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGlu
ZyhpbnRlcnZhbCk7Cit9CisKK3ZvaWQgSW50ZXJuYWxzOjpzZXRGZXRjaE1heGltdW1JbnRlcnZh
bEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhGZXRjaFJlc3BvbnNlJiByZXNwb25zZSwgZG91Ymxl
IGludGVydmFsKQoreworICAgIHJlc3BvbnNlLnNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0
dXJlRm9yd2FyZGluZyhpbnRlcnZhbCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpzZXRUcmFuc2ll
bnRBY3RpdmF0aW9uRHVyYXRpb24oZG91YmxlIHNlY29uZHMpCiB7CiAgICAgRE9NV2luZG93Ojpv
dmVycmlkZVRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbkZvclRlc3RpbmcoU2Vjb25kcyB7IHNl
Y29uZHMgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA4NDNlZGZhMDQ4MTQ0
M2E0MWIxYTEwN2YwMmM5NWYwMDMwOGRmMGVhLi40NDBiYmUzYmY1NjY2MzViMWFmNzM5ZWZjNDFh
ZWM5YjczYTYzMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTY0LDYgKzY0
LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRXZlbnRMaXN0ZW5l
cjsKIGNsYXNzIEV4dGVuZGFibGVFdmVudDsKK2NsYXNzIEZldGNoUmVxdWVzdDsKIGNsYXNzIEZl
dGNoUmVzcG9uc2U7CiBjbGFzcyBGaWxlOwogY2xhc3MgRnJhbWU7CkBAIC05NjIsNiArOTYzLDgg
QEAgcHVibGljOgogICAgIHZvaWQgdGVzdERpY3Rpb25hcnlMb2dnaW5nKCk7CiAKICAgICB2b2lk
IHNldFhIUk1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhYTUxIdHRwUmVx
dWVzdCYsIGRvdWJsZSk7CisgICAgdm9pZCBzZXRGZXRjaE1heGltdW1JbnRlcnZhbEZvclVzZXJH
ZXN0dXJlRm9yd2FyZGluZyhGZXRjaFJlcXVlc3QmLCBkb3VibGUpOworICAgIHZvaWQgc2V0RmV0
Y2hNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoRmV0Y2hSZXNwb25zZSYs
IGRvdWJsZSk7CiAgICAgdm9pZCBzZXRUcmFuc2llbnRBY3RpdmF0aW9uRHVyYXRpb24oZG91Ymxl
IHNlY29uZHMpOwogCiAgICAgdm9pZCBzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdChi
b29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBlN2Y2NjUzY2EwODRj
NDI1YTE5YzFhZGE3Yjc3MGVlMDViOGI2N2VhLi5jNTkxNDM1ZWVlZDQ5YTc1NmYxMDdlYzhiZThk
ZDhmMTY5ZWQ2YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC05MDgs
NiArOTA4LDggQEAgZW51bSBDb250ZW50U2l6ZUNhdGVnb3J5IHsKICAgICB2b2lkIHRlc3REaWN0
aW9uYXJ5TG9nZ2luZygpOwogCiAgICAgdm9pZCBzZXRYSFJNYXhpbXVtSW50ZXJ2YWxGb3JVc2Vy
R2VzdHVyZUZvcndhcmRpbmcoWE1MSHR0cFJlcXVlc3QgeGhyLCBkb3VibGUgaW50ZXJ2YWwpOwor
ICAgIHZvaWQgc2V0RmV0Y2hNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmco
RmV0Y2hSZXF1ZXN0IHJlcXVlc3QsIGRvdWJsZSBpbnRlcnZhbCk7CisgICAgdm9pZCBzZXRGZXRj
aE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhGZXRjaFJlc3BvbnNlIHJl
c3BvbnNlLCBkb3VibGUgaW50ZXJ2YWwpOwogICAgIHZvaWQgc2V0VHJhbnNpZW50QWN0aXZhdGlv
bkR1cmF0aW9uKGRvdWJsZSBzZWNvbmRzKTsKIAogICAgIHZvaWQgc2V0SXNQbGF5aW5nVG9BdXRv
bW90aXZlSGVhZFVuaXQoYm9vbGVhbiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCBjNmZhNDhiODhmYjVmYzYyNzcwMTY5NzU4ODY4ZTMyZjEzODk3NDA5Li5h
ZjIzZmZmMGI2ZWE4NWVhNTAwMTBlZWU3YzllODcwMzMwN2ExZDI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTY3LDggKzY3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgY29uc3QgU2Vjb25kcyBtYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVy
ZUZvcndhcmRpbmcgeyAxMF9zIH07Ci0KIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChYTUxI
dHRwUmVxdWVzdCk7CiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRM
ZWFrQ291bnRlciwgeG1sSHR0cFJlcXVlc3RDb3VudGVyLCAoIlhNTEh0dHBSZXF1ZXN0IikpOwpA
QCAtMTIxLDcgKzExOSw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZVR5cGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQogICAgICwgbV9wcm9ncmVz
c0V2ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlhNTEh0
dHBSZXF1ZXN0OjpkaWRSZWFjaFRpbWVvdXQpCi0gICAgLCBtX21heGltdW1JbnRlcnZhbEZvclVz
ZXJHZXN0dXJlRm9yd2FyZGluZyhtYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRp
bmcpCisgICAgLCBtX21heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhVc2Vy
R2VzdHVyZVRva2VuOjptYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JG
ZXRjaCkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgeG1sSHR0cFJlcXVlc3RDb3VudGVyLmluY3Jl
bWVudCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDM2ZTdiYzE3YTM3MDE5ODM1MTY1OTRjNThmNDQ3YWZhOTQ5Y2UyYzYu
LjcwN2U4NTljMjJhZDgyNGZkM2Y0MzI3MzI3MmY5NTNlODc0YzNmZDEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMC0wNy0yMyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgor
CisgICAgICAgIFByb3BhZ2F0aW5nIHVzZXIgZ2VzdHVyZSB0aHJvdWdoIEZldGNoIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NDQ0CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82NTk4MDk1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbWVkaWEvdXNlci1nZXN0dXJlLXBy
ZXNlcnZlZC1hY3Jvc3MteG1saHR0cHJlcXVlc3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0
dHAvdGVzdHMvbWVkaWEvdXNlci1nZXN0dXJlLXByZXNlcnZlZC1hY3Jvc3MteG1saHR0cHJlcXVl
c3QuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9k
b3dubG9hZC1oZWFkZXItd2l0aC1kZWxheS5waHA6IEFkZGVkLgorCiAyMDIwLTA3LTE3ICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtXZWJHTDJdIFJlYWRQ
aXhlbHMgdXBkYXRlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS91
c2VyLWdlc3R1cmUtcHJlc2VydmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1wcmVzZXJ2ZWQtYWNy
b3NzLXhtbGh0dHByZXF1ZXN0LWV4cGVjdGVkLnR4dAppbmRleCAzMWM4NTRjZmU4ZmRkMjE0NWU5
YmE1ZTU2YmI2ZGZhYzMzYzMyZGE3Li5jOTlhZDk3ZTYwYjMxZWMwN2E3YTJkM2M0NTc3YTVjZDMy
NjFmODEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2Vz
dHVyZS1wcmVzZXJ2ZWQtYWNyb3NzLXhtbGh0dHByZXF1ZXN0LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1wcmVzZXJ2ZWQtYWNyb3Nz
LXhtbGh0dHByZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtNTIsNSArNTIsOTEgQEAgRVZFTlQobG9h
ZCk6IHJlYWR5U3RhdGUgPSA0CiBSVU4oc2hvdWxkUmVqZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkp
LnRoZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxldGUpKQogUHJvbWlzZSByZWplY3RlZCBjb3Jy
ZWN0bHkgT0sKIAorKiogZ2VzdHVyZSAtPiBmZXRjaCAtPiB3aW5kb3cub3Blbjogc2hvdWxkIGZh
aWwgYmVjYXVzZSBGZXRjaCBvbmx5IHByb3BhZ2F0ZXMgdXNlciBnZXN0dXJlIGZvciBtZWRpYQor
ZmV0Y2hpbmcsIGRlbGF5ID0gMTAwCitGRVRDSChyZXNvbHZlZCk6IHN0YXR1cyA9IDIwMAorRVhQ
RUNURUQgKHdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIpID09ICdudWxsJykgT0sKKworKiogZ2Vz
dHVyZSAtPiBmZXRjaCAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIHN1Y2NlZWQKK0VWRU5UKGNh
bnBsYXl0aHJvdWdoKQorZmV0Y2hpbmcsIGRlbGF5ID0gMTAwCitGRVRDSChyZXNvbHZlZCk6IHN0
YXR1cyA9IDIwMAorUlVOKHNob3VsZFJlc29sdmUobWVkaWFFbGVtZW50LnBsYXkoKSkudGhlbih0
ZXN0Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCitQcm9taXNlIHJlc29sdmVkIE9LCisKKyoqIGdl
c3R1cmUgLT4gImxvbmciIEZldGNoIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbAorRVZF
TlQoY2FucGxheXRocm91Z2gpCitmZXRjaGluZywgZGVsYXkgPSAzMDAKK0ZFVENIKHJlc29sdmVk
KTogc3RhdHVzID0gMjAwCitSVU4oc2hvdWxkUmVqZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRo
ZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxldGUpKQorUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0
bHkgT0sKKworKiogbm8gZ2VzdHVyZSAtPiBmZXRjaCAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxk
IGZhaWwKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorZmV0Y2hpbmcsIGRlbGF5ID0gMTAwCitGRVRD
SChyZXNvbHZlZCk6IHN0YXR1cyA9IDIwMAorUlVOKHNob3VsZFJlamVjdChtZWRpYUVsZW1lbnQu
cGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1Byb21pc2UgcmVqZWN0
ZWQgY29ycmVjdGx5IE9LCisKKyoqIGdlc3R1cmUgLT4gZmV0Y2ggLT4gYmxvYiAtPiB3aW5kb3cu
b3Blbjogc2hvdWxkIGZhaWwgYmVjYXVzZSBGZXRjaCBvbmx5IHByb3BhZ2F0ZXMgdXNlciBnZXN0
dXJlIGZvciBtZWRpYQorZmV0Y2hpbmcgYmxvYiwgZGVsYXkgPSAxMDAKK0ZFVENIKHJlc29sdmVk
KTogc3RhdHVzID0gMjAwCitGRVRDSChyZXNwb25zZSByZXNvbHZlZCkKK0VYUEVDVEVEICh3aW5k
b3cub3BlbigiYWJvdXQ6YmxhbmsiKSA9PSAnbnVsbCcpIE9LCisKKyoqIGdlc3R1cmUgLT4gZmV0
Y2ggLT4gYmxvYiAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIHN1Y2NlZWQKK0VWRU5UKGNhbnBs
YXl0aHJvdWdoKQorZmV0Y2hpbmcgYmxvYiwgZGVsYXkgPSAxMDAKK0ZFVENIKHJlc29sdmVkKTog
c3RhdHVzID0gMjAwCitGRVRDSChyZXNwb25zZSByZXNvbHZlZCkKK1JVTihzaG91bGRSZXNvbHZl
KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxldGUpKQor
UHJvbWlzZSByZXNvbHZlZCBPSworCisqKiBnZXN0dXJlIC0+IGZldGNoIC0+ICJsb25nIiBibG9i
IC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbAorRVZFTlQoY2FucGxheXRocm91Z2gpCitm
ZXRjaGluZyBibG9iLCBkZWxheSA9IDMwMAorRkVUQ0gocmVzb2x2ZWQpOiBzdGF0dXMgPSAyMDAK
K0ZFVENIKHJlc3BvbnNlIHJlc29sdmVkKQorUlVOKHNob3VsZFJlamVjdChtZWRpYUVsZW1lbnQu
cGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1Byb21pc2UgcmVqZWN0
ZWQgY29ycmVjdGx5IE9LCisKKyoqIG5vIGdlc3R1cmUgLT4gZmV0Y2ggLT4gYmxvYiAtPiB2aWRl
byBwbGF5YmFjazogc2hvdWxkIGZhaWwKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorZmV0Y2hpbmcg
YmxvYiwgZGVsYXkgPSAxMDAKK0ZFVENIKHJlc29sdmVkKTogc3RhdHVzID0gMjAwCitGRVRDSChy
ZXNwb25zZSByZXNvbHZlZCkKK1JVTihzaG91bGRSZWplY3QobWVkaWFFbGVtZW50LnBsYXkoKSku
dGhlbih0ZXN0Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCitQcm9taXNlIHJlamVjdGVkIGNvcnJl
Y3RseSBPSworCisqKiBubyBnZXN0dXJlIC0+IHByb21pc2UgLT4gdmlkZW8gcGxheWJhY2s6IHNo
b3VsZCBmYWlsCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK3Byb21pc2UKK1BST01JU0UocmVzb2x2
ZWQpCitSVU4oc2hvdWxkUmVqZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4odGVzdENvbXBs
ZXRlLCB0ZXN0Q29tcGxldGUpKQorUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHkgT0sKKworKiog
Z2VzdHVyZSAtPiBwcm9taXNlIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCBiZWNhdXNl
IHByb21pc2Ugb25seSBwcm9wYWdhdGVzIHVzZXIgZ2VzdHVyZSBwcm9wYWdhdGVkIHRocm91Z2gg
RmV0Y2gKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorcHJvbWlzZQorUFJPTUlTRShyZXNvbHZlZCkK
K1JVTihzaG91bGRSZWplY3QobWVkaWFFbGVtZW50LnBsYXkoKSkudGhlbih0ZXN0Q29tcGxldGUs
IHRlc3RDb21wbGV0ZSkpCitQcm9taXNlIHJlamVjdGVkIGNvcnJlY3RseSBPSworCisqKiBnZXN0
dXJlIC0+IGZldGNoIC0+IHByb21pc2UgLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBzdWNjZWVk
CitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK2ZldGNoIHRoZW4gcHJvbWlzZQorRkVUQ0gocmVzb2x2
ZWQpOiBzdGF0dXMgPSAyMDAKK1BST01JU0UocmVzb2x2ZWQpCitSVU4oc2hvdWxkUmVzb2x2ZSht
ZWRpYUVsZW1lbnQucGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1By
b21pc2UgcmVzb2x2ZWQgT0sKKworKiogZ2VzdHVyZSAtPiBmZXRjaCAtPiBjcnlwdG8gLT4gdmlk
ZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsIHNpbmNlIHRoZSB1c2VyIGdlc3R1cmUgd2lsbCBub3Qg
YmUgcHJvcGFnYXRlZCB0aHJvdWdoIG90aGVyIEFQSSBldmVuIHRob3VnaCBpdCByZXR1cm5zIHBy
b21pc2VzCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK2ZldGNoIHRoZW4gY3J5cHRvCitGRVRDSChy
ZXNvbHZlZCk6IHN0YXR1cyA9IDIwMAorQ1JZUFRPKGtleSBnZW5lcmF0ZWQpCitSVU4oc2hvdWxk
UmVqZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxl
dGUpKQorUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHkgT0sKKwogRU5EIE9GIFRFU1QKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS91c2VyLWdlc3R1cmUtcHJlc2Vy
dmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
ZWRpYS91c2VyLWdlc3R1cmUtcHJlc2VydmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC5odG1sCmlu
ZGV4IDgyYTJlOWJhOWEyNmQzODM3MmRiZTM4Yjk3YzAxYjIzYTg2NmY3NWIuLjVhMTFmMDhjOGUx
NTc4ZGYwYTg5OTgyZTAyYTI5NzBkYzI5OWEyZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWVkaWEvdXNlci1nZXN0dXJlLXByZXNlcnZlZC1hY3Jvc3MteG1saHR0cHJlcXVl
c3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1w
cmVzZXJ2ZWQtYWNyb3NzLXhtbGh0dHByZXF1ZXN0Lmh0bWwKQEAgLTQxLDYgKzQxLDc3IEBACiAg
ICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgfQogCisgICAgICAgIGZ1bmN0aW9u
IGRvRmV0Y2goZGVsYXksIHRpbWVvdXQsIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICB7Cisg
ICAgICAgICAgICBsZXQgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGAveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL2Rvd25sb2FkLWhlYWRlci13aXRoLWRlbGF5LnBocD9kZWxheT0ke2RlbGF5fWApOwor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICAgICAgd2luZG93
LmludGVybmFscy5zZXRGZXRjaE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGlu
ZyhyZXF1ZXN0LCB0aW1lb3V0KTsKKworICAgICAgICAgICAgZmV0Y2gocmVxdWVzdCwgeyBtZXRo
b2Q6ICdHRVQnLCBjYWNoZTogIm5vLWNhY2hlIiB9KS50aGVuKHJlc3BvbnNlID0+IHsKKyAgICAg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoYEZFVENIKHJlc29sdmVkKTogc3RhdHVzID0gJHtyZXNw
b25zZS5zdGF0dXN9YCk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICAgICAgICAgIH0sIGVycm9yID0+IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYEZF
VENIKHJlamVjdGVkKTogZXhjZXB0aW9uIGNvZGUgPSAke2Vycm9yLmNvZGV9YCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRvRmV0Y2hCbG9iKGRlbGF5
LCB0aW1lb3V0LCBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgeworICAgICAgICAgICAgbGV0
IHJlcXVlc3QgPSBuZXcgUmVxdWVzdChgL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9kb3dubG9h
ZC13aXRoLWRlbGF5LnBocD9pdGVyYXRpb249MSZkZWxheT0ke2RlbGF5fWApOworCisgICAgICAg
ICAgICBmZXRjaChyZXF1ZXN0LCB7IG1ldGhvZDogJ0dFVCcsIGNhY2hlOiAibm8tY2FjaGUiIH0p
LnRoZW4ocmVzcG9uc2UgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRkVUQ0go
cmVzb2x2ZWQpOiBzdGF0dXMgPSAke3Jlc3BvbnNlLnN0YXR1c31gKTsKKyAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LmludGVy
bmFscy5zZXRGZXRjaE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhyZXNw
b25zZSwgdGltZW91dCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJsb2IoKTsK
KyAgICAgICAgICAgIH0sIGVycm9yID0+IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
YEZFVENIKHJlamVjdGVkKTogZXhjZXB0aW9uIGNvZGUgPSAke2Vycm9yLmNvZGV9YCk7CisgICAg
ICAgICAgICB9KS50aGVuKHJlc3BvbnNlID0+IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoYEZFVENIKHJlc3BvbnNlIHJlc29sdmVkKWApOworICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgICAgICB9LCBlcnJvciA9PiB7CisgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKGBGRVRDSChyZXNwb25zZSByZWplY3RlZCk6IGV4Y2VwdGlvbiBjb2RlID0g
JHtlcnJvci5jb2RlfWApOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBkb1Byb21pc2UoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSggKHJlc29sdXRpb25GdW5jKSA9PiB7Cisg
ICAgICAgICAgICAgICAgcmVzb2x1dGlvbkZ1bmMoKTsKKyAgICAgICAgICAgIH0pOworCisgICAg
ICAgICAgICBwcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZShgUFJPTUlTRShyZXNvbHZlZClgKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRvRmV0
Y2hUaGVuUHJvbWlzZShjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgeworICAgICAgICAgICAg
bGV0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdChgL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9kb3du
bG9hZC13aXRoLWRlbGF5LnBocD9pdGVyYXRpb249MWApOworCisgICAgICAgICAgICBmZXRjaChy
ZXF1ZXN0LCB7IG1ldGhvZDogJ0dFVCcsIGNhY2hlOiAibm8tY2FjaGUiIH0pLnRoZW4ocmVzcG9u
c2UgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRkVUQ0gocmVzb2x2ZWQpOiBz
dGF0dXMgPSAke3Jlc3BvbnNlLnN0YXR1c31gKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UoIChyZXNvbHV0aW9uRnVuYykgPT4gcmVzb2x1dGlvbkZ1bmMoKSApOworICAgICAg
ICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBQUk9N
SVNFKHJlc29sdmVkKWApOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCkKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG9GZXRjaFRoZW5D
cnlwdG8oY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCByZXF1
ZXN0ID0gbmV3IFJlcXVlc3QoYC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZG93bmxvYWQtd2l0
aC1kZWxheS5waHA/aXRlcmF0aW9uPTFgKTsKKworICAgICAgICAgICAgZmV0Y2gocmVxdWVzdCwg
eyBtZXRob2Q6ICdHRVQnLCBjYWNoZTogIm5vLWNhY2hlIiB9KS50aGVuKHJlc3BvbnNlID0+IHsK
KyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYEZFVENIKHJlc29sdmVkKTogc3RhdHVzID0g
JHtyZXNwb25zZS5zdGF0dXN9YCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNyeXB0by5zdWJ0
bGUuZ2VuZXJhdGVLZXkoe25hbWU6ICJSU0EtT0FFUCIsIG1vZHVsdXNMZW5ndGg6IDIwNDgsIHB1
YmxpY0V4cG9uZW50OiBuZXcgVWludDhBcnJheShbMHgwMSwgMHgwMCwgMHgwMV0pLCBoYXNoOiAi
c2hhLTEifSwgZmFsc2UsIFsiZGVjcnlwdCIsICJlbmNyeXB0IiwgIndyYXBLZXkiLCAidW53cmFw
S2V5Il0pOworICAgICAgICAgICAgfSkudGhlbihrZXkgPT4geworICAgICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZShgQ1JZUFRPKGtleSBnZW5lcmF0ZWQpYCk7CisgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKwogICAgICAgICBm
dW5jdGlvbiB0ZXN0Q29tcGxldGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoYXV0b1J1
bikKQEAgLTgxLDggKzE1MiwyNyBAQAogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgc2V0
dGluZyB0aW1lb3V0LCBkZWxheSA9ICR7ZGVsYXl9YCk7CiAgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dCgoKSA9PiB7IHJ1blRlc3QodGVzdCk7IH0sIGRlbGF5KTsKICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2ZldGNoJzoKKyAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoYGZldGNoaW5nLCBkZWxheSA9ICR7ZGVsYXl9YCk7CisgICAgICAgICAgICAgICAgZG9G
ZXRjaChkZWxheSwgdGVzdC50aW1lb3V0IHx8IDAuNiwgKCkgPT4gcnVuVGVzdCh0ZXN0KSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdmZXRjaGJsb2InOgorICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgZmV0Y2hpbmcgYmxvYiwgZGVsYXkgPSAke2RlbGF5
fWApOworICAgICAgICAgICAgICAgIGRvRmV0Y2hCbG9iKGRlbGF5LCB0ZXN0LnRpbWVvdXQgfHwg
MC42LCAoKSA9PiBydW5UZXN0KHRlc3QpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgJ3Byb21pc2UnOgorICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgcHJv
bWlzZWApOworICAgICAgICAgICAgICAgIGRvUHJvbWlzZSgoKSA9PiBydW5UZXN0KHRlc3QpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2ZldGNodGhlbnByb21p
c2UnOgorICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgZmV0Y2ggdGhlbiBwcm9taXNlYCk7
CisgICAgICAgICAgICAgICAgZG9GZXRjaFRoZW5Qcm9taXNlKCgpID0+IHJ1blRlc3QodGVzdCkp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZmV0Y2h0aGVuY3J5
cHRvJzoKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYGZldGNoIHRoZW4gY3J5cHRvYCk7
CisgICAgICAgICAgICAgICAgZG9GZXRjaFRoZW5DcnlwdG8oKCkgPT4gcnVuVGVzdCh0ZXN0KSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0KICAgICAgICAgfQogCiAg
ICAgICAgIGxldCB0ZXN0cyA9IFsKQEAgLTEwMiwxNCArMTkyLDUxIEBACiAgICAgICAgICAgICAg
ICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IGZhbHNlLCAgc3VjY2VzcyA6IGZhbHNlLCAg
c2VxdWVuY2UgOiBbJzEwMCBYSFInLCAnMTAwIHRpbWVvdXQnXSB9LAogCiAgICAgICAgICAgICB7
IHRpdGxlIDogJ2dlc3R1cmUgLT4gImxvbmciIFhIUiAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxk
IGZhaWwnLAotICAgICAgICAgICAgICAgIGFjdGlvbiA6ICdwbGF5JywgIHdpdGhrZXkgOiBmYWxz
ZSwgIHN1Y2Nlc3MgOiBmYWxzZSwgIHRpbWVvdXQgOiAwLjEsIHNlcXVlbmNlIDogWyczMDAgWEhS
J10gfSwKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3aXRoa2V5IDogdHJ1ZSwg
IHN1Y2Nlc3MgOiBmYWxzZSwgIHRpbWVvdXQgOiAwLjEsIHNlcXVlbmNlIDogWyczMDAgWEhSJ10g
fSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdnZXN0dXJlIC0+IGZldGNoIC0+IHdpbmRvdy5v
cGVuOiBzaG91bGQgZmFpbCBiZWNhdXNlIEZldGNoIG9ubHkgcHJvcGFnYXRlcyB1c2VyIGdlc3R1
cmUgZm9yIG1lZGlhJywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncG9wdXAnLCB3aXRoa2V5
IDogdHJ1ZSwgIHN1Y2Nlc3MgOiBmYWxzZSwgIHNlcXVlbmNlIDogWycxMDAgRmV0Y2gnXSB9LAor
CisgICAgICAgICAgICB7IHRpdGxlIDogJ2dlc3R1cmUgLT4gZmV0Y2ggLT4gdmlkZW8gcGxheWJh
Y2s6IHNob3VsZCBzdWNjZWVkJywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3
aXRoa2V5IDogdHJ1ZSwgIHN1Y2Nlc3MgOiB0cnVlLCAgc2VxdWVuY2UgOiBbJzEwMCBGZXRjaCdd
IH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiAibG9uZyIgRmV0Y2ggLT4g
dmlkZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsJywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAn
cGxheScsICB3aXRoa2V5IDogdHJ1ZSwgIHN1Y2Nlc3MgOiBmYWxzZSwgIHRpbWVvdXQgOiAwLjEs
IHNlcXVlbmNlIDogWyczMDAgRmV0Y2gnXSB9LAorCisgICAgICAgICAgICB7IHRpdGxlIDogJ25v
IGdlc3R1cmUgLT4gZmV0Y2ggLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsJywKKyAgICAg
ICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3aXRoa2V5IDogZmFsc2UsICBzdWNjZXNzIDog
ZmFsc2UsICBzZXF1ZW5jZSA6IFsnMTAwIEZldGNoJ10gfSwKKworICAgICAgICAgICAgeyB0aXRs
ZSA6ICdnZXN0dXJlIC0+IGZldGNoIC0+IGJsb2IgLT4gd2luZG93Lm9wZW46IHNob3VsZCBmYWls
IGJlY2F1c2UgRmV0Y2ggb25seSBwcm9wYWdhdGVzIHVzZXIgZ2VzdHVyZSBmb3IgbWVkaWEnLAor
ICAgICAgICAgICAgICAgIGFjdGlvbiA6ICdwb3B1cCcsIHdpdGhrZXkgOiB0cnVlLCAgc3VjY2Vz
cyA6IGZhbHNlLCAgc2VxdWVuY2UgOiBbJzEwMCBGZXRjaEJsb2InXSB9LAorCisgICAgICAgICAg
ICB7IHRpdGxlIDogJ2dlc3R1cmUgLT4gZmV0Y2ggLT4gYmxvYiAtPiB2aWRlbyBwbGF5YmFjazog
c2hvdWxkIHN1Y2NlZWQnLAorICAgICAgICAgICAgICAgIGFjdGlvbiA6ICdwbGF5JywgIHdpdGhr
ZXkgOiB0cnVlLCAgc3VjY2VzcyA6IHRydWUsICBzZXF1ZW5jZSA6IFsnMTAwIEZldGNoQmxvYidd
IH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiBmZXRjaCAtPiAibG9uZyIg
YmxvYiAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIGZhaWwnLAorICAgICAgICAgICAgICAgIGFj
dGlvbiA6ICdwbGF5JywgIHdpdGhrZXkgOiB0cnVlLCAgc3VjY2VzcyA6IGZhbHNlLCAgdGltZW91
dCA6IDAuMSwgc2VxdWVuY2UgOiBbJzMwMCBGZXRjaEJsb2InXSB9LAorCisgICAgICAgICAgICB7
IHRpdGxlIDogJ25vIGdlc3R1cmUgLT4gZmV0Y2ggLT4gYmxvYiAtPiB2aWRlbyBwbGF5YmFjazog
c2hvdWxkIGZhaWwnLAorICAgICAgICAgICAgICAgIGFjdGlvbiA6ICdwbGF5JywgIHdpdGhrZXkg
OiBmYWxzZSwgIHN1Y2Nlc3MgOiBmYWxzZSwgIHNlcXVlbmNlIDogWycxMDAgRmV0Y2hCbG9iJ10g
fSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdubyBnZXN0dXJlIC0+IHByb21pc2UgLT4gdmlk
ZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsJywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxh
eScsICB3aXRoa2V5IDogZmFsc2UsICBzdWNjZXNzIDogZmFsc2UsICBzZXF1ZW5jZSA6IFsnMCBw
cm9taXNlJ10gfSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdnZXN0dXJlIC0+IHByb21pc2Ug
LT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsIGJlY2F1c2UgcHJvbWlzZSBvbmx5IHByb3Bh
Z2F0ZXMgdXNlciBnZXN0dXJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBGZXRjaCcsCisgICAgICAgICAg
ICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDogZmFsc2Us
ICBzZXF1ZW5jZSA6IFsnMCBwcm9taXNlJ10gfSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdn
ZXN0dXJlIC0+IGZldGNoIC0+IHByb21pc2UgLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBzdWNj
ZWVkJywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3aXRoa2V5IDogdHJ1ZSwg
IHN1Y2Nlc3MgOiB0cnVlLCAgc2VxdWVuY2UgOiBbJzAgRmV0Y2hUaGVuUHJvbWlzZSddIH0sCisK
KyAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiBmZXRjaCAtPiBjcnlwdG8gLT4gdmlk
ZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsIHNpbmNlIHRoZSB1c2VyIGdlc3R1cmUgd2lsbCBub3Qg
YmUgcHJvcGFnYXRlZCB0aHJvdWdoIG90aGVyIEFQSSBldmVuIHRob3VnaCBpdCByZXR1cm5zIHBy
b21pc2VzJywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3aXRoa2V5IDogdHJ1
ZSwgIHN1Y2Nlc3MgOiBmYWxzZSwgIHNlcXVlbmNlIDogWycwIEZldGNoVGhlbkNyeXB0byddIH0s
CisKICAgICAgICAgXTsKIAogICAgICAgICBmdW5jdGlvbiBuZXh0VGVzdCgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghdGVzdHMubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCcnKTsKLSAgICAgICAgICAgICAgICBlbmRUZXN0KCkKKyAgICAgICAgICAgICAgICBl
bmRUZXN0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9k
b3dubG9hZC1oZWFkZXItd2l0aC1kZWxheS5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy9kb3dubG9hZC1oZWFkZXItd2l0aC1kZWxheS5waHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjYwYjU3OGU0OWZhNDZiZjYxMjQ1OTg1MDliZmE4ZTkyZmUwM2FiNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3Vy
Y2VzL2Rvd25sb2FkLWhlYWRlci13aXRoLWRlbGF5LnBocApAQCAtMCwwICsxLDE0IEBACis8P3Bo
cAorJGRlbGF5ID0gJF9HRVRbJ2RlbGF5J107Cit1c2xlZXAoJGRlbGF5ICogMTAwMCk7CisKK2hl
YWRlcigiRXhwaXJlczogVGh1LCAwMSBEZWMgMjAwMyAxNjowMDowMCBHTVQiKTsKK2hlYWRlcigi
Q2FjaGUtQ29udHJvbDogbm8tY2FjaGUsIG5vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUiKTsKK2hl
YWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOworaGVhZGVyKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0
aW9uL3gtbm8tYnVmZmVyaW5nLXBsZWFzZSIpOworCitlY2hvICIkZGVsYXlcbiI7CitlY2hvICJm
b29iYXJcbiI7CitvYl9mbHVzaCgpOworZmx1c2goKTsKKz8+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405028</attachid>
            <date>2020-07-23 02:49:44 -0700</date>
            <delta_ts>2020-07-23 23:51:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214444-20200723024943.patch</filename>
            <type>text/plain</type>
            <size>42807</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc5Y2E0ZWE2MjI1YzU2
ZWI5ZDYwZWM1NzhiZDc2YzRjNmVhMjgwYy4uNWRkZWI4NDg0ZmE5NjFiYzVjODhiNzlmNWYwZmFj
YmQ3ZmU3OTkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIwLTA3LTIzICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvcGFnYXRpbmcgdXNl
ciBnZXN0dXJlIHRocm91Z2ggRmV0Y2ggQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0NDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1OTgw
OTUzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcHJvcGFnYXRlcyBtZWRpYSBvbmx5IHVzZXIgZ2VzdHVyZXMgdGhyb3VnaCBGZXRj
aCBBUEksIGluY2x1ZGluZyBGZXRjaCBhbmQgRmV0Y2hSZXNwb25zZS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyB0ZXN0IGNvbnRlbnRzLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9ET01X
aW5kb3dGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dGZXRjaDo6ZmV0Y2gp
OgorICAgICAgICBQcm9wYWdhdGVzIG1lZGlhIG9ubHkgdXNlciBnZXN0dXJlcyB0aHJvdWdoIEZl
dGNoLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldENvbnN1bWVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6c2V0TWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpGZXRjaEJvZHlDb25zdW1lcik6CisgICAg
ICAgIFByb3BhZ2F0ZXMgbWVkaWEgb25seSB1c2VyIGdlc3R1cmVzIHRocm91Z2ggRmV0Y2hSZXNw
b25zZS4gVXNlckdlc3R1cmVJbmRpY2F0b3IgaXMgb25seSBzZXQgaW4gdGhlIGFzeW5jIHByb21p
c2UgcmVzb2x2aW5nIHBhdGguCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVXaXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVxdWVzdDo6c2V0TWF4aW11bUludGVydmFsRm9yVXNl
ckdlc3R1cmVGb3J3YXJkaW5nKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0OjpGZXRjaFJlcXVlc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25z
ZTo6c2V0TWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgQ3JhZnRzIGEgd2F5IHRv
IHBhc3MgdGhlIG1heGltdW0gaW50ZXJ2YWwgZnJvbSBsYXlvdXQgdGVzdHMgc3VjaCB0aGF0IGl0
IGNhbiBiZSBzaG9ydGVuZWQgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cXVldWVNaWNyb3Rh
c2tUb0V2ZW50TG9vcCk6CisgICAgICAgIFByb3BhZ2F0ZXMgbWVkaWEgb25seSB1c2VyIGdlc3R1
cmVzIHRoYXQgd2FzIHByb3BhZ2F0ZWQgdGhyb3VnaCBGZXRjaCB0byB0aGUgcmVsYXRlZCBwcm9t
aXNlIGV4ZWN1dG9ycy4KKworICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRp
Y2F0b3IpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3I6On5Vc2VyR2Vz
dHVyZUluZGljYXRvcik6CisgICAgICAgICogZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpzZXRJc1Byb3BvZ2F0ZWRGcm9tRmV0
Y2gpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6cmVzZXRJc1Byb3BvZ2F0
ZWRGcm9tRmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6aXNQcm9w
b2dhdGVkRnJvbUZldGNoIGNvbnN0KToKKyAgICAgICAgQWRkcyBhIGZsYWcgdG8gaW5kaWNhdGUg
dGhlIHByb3BhZ2F0aW9uIHNvdXJjZSBvZiBhIHVzZXIgZ2VzdHVyZSB0b2tlbi4KKworICAgICAg
ICAqIHBhZ2UvRE9NVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVk
KToKKyAgICAgICAgR2F0aGVycyBzb21lIGNvbnN0YW50cy4KKworICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0RmV0Y2hNYXhp
bXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcpOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorICAgICAgICBD
cmFmdHMgYSB3YXkgdG8gcGFzcyB0aGUgbWF4aW11bSBpbnRlcnZhbCBmcm9tIGxheW91dCB0ZXN0
cy4KKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICBHYXRoZXJzIHNvbWUg
Y29uc3RhbnRzLgorCiAyMDIwLTA3LTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBGaXggbWlzc2luZyBleGNlcHRpb24gY2hlY2tzIGJlbG93IFJUQ1BlZXJDb25u
ZWN0aW9uLmdlbmVyYXRlQ2VydGlmaWNhdGUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2guY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9ET01XaW5kb3dGZXRjaC5jcHAKaW5kZXggZGVjMzFkOTQwYTU3NDRlNDlkNjViNmUx
NWU3NjQyYzkzYzMwYjMyNi4uNDg3N2VjNTY4Yjk4OGM5YjY0NDAxYWVmNmZhMzQxNTYxNjRiY2Y5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRj
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJGZXRjaFJlc3BvbnNlLmgiCiAjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJKU0ZldGNoUmVzcG9uc2UuaCIK
KyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTU2LDcgKzU3LDE0IEBAIHZvaWQgRE9NV2luZG93RmV0Y2g6OmZldGNoKERPTVdpbmRv
dyYgd2luZG93LCBGZXRjaFJlcXVlc3Q6OkluZm8mJiBpbnB1dCwgRmV0Y2hSCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBGZXRjaFJlc3BvbnNlOjpmZXRjaCgqZG9jdW1lbnQsIHJlcXVl
c3QucmVsZWFzZVJldHVyblZhbHVlKCkuZ2V0KCksIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0oRXhjZXB0aW9uT3I8RmV0Y2hSZXNwb25zZSY+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBh
dXRvJiBmZXRjaFJlcXVlc3QgPSByZXF1ZXN0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLmdldCgpOwor
ICAgIEZldGNoUmVzcG9uc2U6OmZldGNoKCpkb2N1bWVudCwgZmV0Y2hSZXF1ZXN0LCBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIHVzZXJHZXN0dXJlVG9rZW4gPSBVc2VyR2VzdHVyZUluZGlj
YXRvcjo6Y3VycmVudFVzZXJHZXN0dXJlKCksIG1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJl
Rm9yd2FyZGluZyA9IGZldGNoUmVxdWVzdC5tYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZv
cndhcmRpbmcoKSwgY3VycmVudFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKV0gKEV4Y2VwdGlv
bk9yPEZldGNoUmVzcG9uc2UmPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghdXNl
ckdlc3R1cmVUb2tlbiB8fCB1c2VyR2VzdHVyZVRva2VuLT5oYXNFeHBpcmVkKG1heGltdW1JbnRl
cnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZykgfHwgIXVzZXJHZXN0dXJlVG9rZW4tPnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAgICAgICBwcm9taXNlLnNldHRsZShXVEZNb3Zl
KHJlc3VsdCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgVXNl
ckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih1c2VyR2VzdHVyZVRva2VuLCBVc2Vy
R2VzdHVyZVRva2VuOjpHZXN0dXJlU2NvcGU6Ok1lZGlhT25seSwgVXNlckdlc3R1cmVUb2tlbjo6
SXNQcm9wb2dhdGVkRnJvbUZldGNoOjpZZXMpOwogICAgICAgICBwcm9taXNlLnNldHRsZShXVEZN
b3ZlKHJlc3VsdCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCBmYTU2YTIyN2EzYjQ5ODA3MjU3YmNh
NDYzMzBkNzU4YTkyOWE0NGViLi4yZmZhOWQxZDc3OGEyMTU4MTU5OTU5ZjcxZmU1NmQwYmRmOTYy
MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVB
bmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogdm9p
ZCBGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4oKQogewogICAgIG1fYnVmZmVyID0gbnVsbHB0cjsK
LSAgICBtX2NvbnN1bWVQcm9taXNlID0gbnVsbHB0cjsKKyAgICByZXNldENvbnN1bWVQcm9taXNl
KCk7CiAgICAgaWYgKG1fc2luaykgewogICAgICAgICBtX3NpbmstPmNsZWFyQ2FsbGJhY2soKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBSZWFkYWJsZVN0cmVh
bSoKICAgICB9CiAKICAgICBpZiAobV9pc0xvYWRpbmcpIHsKLSAgICAgICAgbV9jb25zdW1lUHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisgICAgICAgIHNldENvbnN1bWVQcm9taXNlKFdURk1v
dmUocHJvbWlzZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xODksOSArMTg5LDE2
IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiB2b2lkIEZldGNoQm9k
eUNvbnN1bWVyOjpzZXRDb25zdW1lUHJvbWlzZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnN1bWVQcm9taXNlKTsKKyAgICBtX3VzZXJHZXN0dXJl
VG9rZW4gPSBVc2VyR2VzdHVyZUluZGljYXRvcjo6Y3VycmVudFVzZXJHZXN0dXJlKCk7CiAgICAg
bV9jb25zdW1lUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CiB9CiAKK3ZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21pc2UoKQoreworICAgIG1fY29uc3VtZVByb21pc2Ug
PSBudWxscHRyOworICAgIG1fdXNlckdlc3R1cmVUb2tlbiA9IG51bGxwdHI7Cit9CisKIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldFNvdXJjZShSZWY8RmV0Y2hCb2R5U291cmNlPiYmIHNvdXJj
ZSkKIHsKICAgICBtX3NvdXJjZSA9IFdURk1vdmUoc291cmNlKTsKQEAgLTIwNiw3ICsyMTMsNyBA
QCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKGNvbnN0IEV4Y2VwdGlvbiYg
ZXhjZXB0aW9uKQogICAgIG1faXNMb2FkaW5nID0gZmFsc2U7CiAgICAgaWYgKG1fY29uc3VtZVBy
b21pc2UpIHsKICAgICAgICAgbV9jb25zdW1lUHJvbWlzZS0+cmVqZWN0KGV4Y2VwdGlvbik7Ci0g
ICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBudWxscHRyOworICAgICAgICByZXNldENvbnN1bWVQ
cm9taXNlKCk7CiAgICAgfQogICAgIGlmIChtX3NvdXJjZSkgewogICAgICAgICBtX3NvdXJjZS0+
ZXJyb3IoZXhjZXB0aW9uKTsKQEAgLTIxOCw4ICsyMjUsMTQgQEAgdm9pZCBGZXRjaEJvZHlDb25z
dW1lcjo6bG9hZGluZ1N1Y2NlZWRlZCgpCiB7CiAgICAgbV9pc0xvYWRpbmcgPSBmYWxzZTsKIAot
ICAgIGlmIChtX2NvbnN1bWVQcm9taXNlKQotICAgICAgICByZXNvbHZlKG1fY29uc3VtZVByb21p
c2UucmVsZWFzZU5vbk51bGwoKSwgbnVsbHB0cik7CisgICAgaWYgKG1fY29uc3VtZVByb21pc2Up
IHsKKyAgICAgICAgaWYgKCFtX3VzZXJHZXN0dXJlVG9rZW4gfHwgbV91c2VyR2VzdHVyZVRva2Vu
LT5oYXNFeHBpcmVkKG1fbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKSB8
fCAhbV91c2VyR2VzdHVyZVRva2VuLT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICAgICAg
ICAgIHJlc29sdmUobV9jb25zdW1lUHJvbWlzZS5yZWxlYXNlTm9uTnVsbCgpLCBudWxscHRyKTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJl
SW5kaWNhdG9yKG1fdXNlckdlc3R1cmVUb2tlbiwgVXNlckdlc3R1cmVUb2tlbjo6R2VzdHVyZVNj
b3BlOjpNZWRpYU9ubHksIFVzZXJHZXN0dXJlVG9rZW46OklzUHJvcG9nYXRlZEZyb21GZXRjaDo6
WWVzKTsKKyAgICAgICAgICAgIHJlc29sdmUobV9jb25zdW1lUHJvbWlzZS5yZWxlYXNlTm9uTnVs
bCgpLCBudWxscHRyKTsKKyAgICAgICAgfQorICAgIH0KICAgICBpZiAobV9zb3VyY2UpIHsKICAg
ICAgICAgbV9zb3VyY2UtPmNsb3NlKCk7CiAgICAgICAgIG1fc291cmNlID0gbnVsbHB0cjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRl
eCAzY2MyNDY0NjA5OTQ4YWQzZmU0ZDIzZDAwNjVjNjg3OWY3NDI2NzgyLi5kYmRkZDNhNmIwZDA2
MDJjNTRmNzZmYzAyMmZmMzU2MDJmZGVlMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVNpbmsu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGlj
YXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDcgKzQ0LDcgQEAgY2xhc3Mg
RmV0Y2hCb2R5Q29uc3VtZXIgewogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IE5vbmUs
IEFycmF5QnVmZmVyLCBCbG9iLCBKU09OLCBUZXh0IH07CiAKLSAgICBGZXRjaEJvZHlDb25zdW1l
cihUeXBlIHR5cGUpIDogbV90eXBlKHR5cGUpIHsgfQorICAgIEZldGNoQm9keUNvbnN1bWVyKFR5
cGUpOwogCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQpOwogICAg
IHZvaWQgYXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkKTsKQEAgLTcz
LDggKzc0LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0QXNMb2FkaW5nKCkgeyBtX2lzTG9h
ZGluZyA9IHRydWU7IH0KIAorICAgIHZvaWQgc2V0TWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1
cmVGb3J3YXJkaW5nKGRvdWJsZSBpbnRlcnZhbCkgeyBtX21heGltdW1JbnRlcnZhbEZvclVzZXJH
ZXN0dXJlRm9yd2FyZGluZyA9IFNlY29uZHMoaW50ZXJ2YWwpOyB9CisKIHByaXZhdGU6CiAgICAg
UmVmPEJsb2I+IHRha2VBc0Jsb2IoKTsKKyAgICB2b2lkIHJlc2V0Q29uc3VtZVByb21pc2UoKTsK
IAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRlbnRUeXBlOwpAQCAtODMsNiAr
ODcsMTQgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW1Ub1NoYXJlZEJ1ZmZl
clNpbms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291cmNlPiBtX3NvdXJjZTsKICAg
ICBib29sIG1faXNMb2FkaW5nIHsgZmFsc2UgfTsKKyAgICBSZWZQdHI8VXNlckdlc3R1cmVUb2tl
bj4gbV91c2VyR2VzdHVyZVRva2VuOworICAgIFNlY29uZHMgbV9tYXhpbXVtSW50ZXJ2YWxGb3JV
c2VyR2VzdHVyZUZvcndhcmRpbmc7CiB9OwogCitpbmxpbmUgRmV0Y2hCb2R5Q29uc3VtZXI6OkZl
dGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkKKyAgICA6IG1fdHlwZSh0eXBlKQorICAgICwgbV9t
YXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoVXNlckdlc3R1cmVUb2tlbjo6
bWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0Y2gpCit7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmNwcAppbmRleCBlZmMxNjM1ZWE1NWVlNzQ1MDYwZDkxMjA4ZmQxMDEyZDY5
YWVkOWM0Li41NWI1ZmRiMzcxZDM5MmE2YjQwM2UxMmIwNDVlM2U1NTdlYjQ3ZjhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCkBAIC0yMDcsNiAr
MjA3LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aChG
ZXRjaFJlcXVlc3QmIGlucHV0LCBJbml0JiYgaW5pdCkKICAgICBtX3JlcXVlc3QgPSBpbnB1dC5t
X3JlcXVlc3Q7CiAgICAgbV9vcHRpb25zID0gaW5wdXQubV9vcHRpb25zOwogICAgIG1fcmVmZXJy
ZXIgPSBpbnB1dC5tX3JlZmVycmVyOworICAgIG1fbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1
cmVGb3J3YXJkaW5nID0gaW5wdXQubV9tYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndh
cmRpbmc7CiAKICAgICBhdXRvIG9wdGlvbnNSZXN1bHQgPSBpbml0aWFsaXplT3B0aW9ucyhpbml0
KTsKICAgICBpZiAob3B0aW9uc1Jlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTMzMyw1ICszMzQs
OSBAQCBjb25zdCBjaGFyKiBGZXRjaFJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dAogICAgIHJldHVybiAiUmVxdWVzdCI7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK3Zv
aWQgRmV0Y2hSZXF1ZXN0OjpzZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRp
bmcoZG91YmxlIGludGVydmFsKQoreworICAgIG1fbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1
cmVGb3J3YXJkaW5nID0gU2Vjb25kcyhpbnRlcnZhbCk7Cit9CiAKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCmluZGV4
IDA3OTBkY2IxNGYzZjNhY2U3ZDUxYzE2ZTIyNjU2NDZjNmY5ZmVhY2UuLmE4ODU0YjRkNWYyNTMz
NTE0NTUwY2Q4NDJmNDMyYjRjMjc4N2FlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlcXVlc3QuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkZldGNoT3B0
aW9ucy5oIgogI2luY2x1ZGUgIkZldGNoUmVxdWVzdEluaXQuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Miw2ICs4Myw5IEBA
IHB1YmxpYzoKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QoKSBjb25zdDsK
IAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1
cmVGb3J3YXJkaW5nKGRvdWJsZSk7CisgICAgU2Vjb25kcyBtYXhpbXVtSW50ZXJ2YWxGb3JVc2Vy
R2VzdHVyZUZvcndhcmRpbmcoKSBjb25zdCB7IHJldHVybiBtX21heGltdW1JbnRlcnZhbEZvclVz
ZXJHZXN0dXJlRm9yd2FyZGluZzsgfQorCiBwcml2YXRlOgogICAgIEZldGNoUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgT3B0aW9uYWw8RmV0Y2hCb2R5PiYmLCBSZWY8RmV0Y2hIZWFk
ZXJzPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgRmV0Y2hPcHRpb25zJiYsIFN0cmluZyYmIHJlZmVy
cmVyKTsKIApAQCAtOTgsNiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9yZWZlcnJl
cjsKICAgICBtdXRhYmxlIFN0cmluZyBtX3JlcXVlc3RVUkw7CiAgICAgUmVmPEFib3J0U2lnbmFs
PiBtX3NpZ25hbDsKKyAgICBTZWNvbmRzIG1fbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVG
b3J3YXJkaW5nOwogfTsKIAogaW5saW5lIEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE9wdGlvbmFsPEZldGNoQm9keT4mJiBib2R5LCBS
ZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZl
dGNoT3B0aW9ucyYmIG9wdGlvbnMsIFN0cmluZyYmIHJlZmVycmVyKQpAQCAtMTA2LDYgKzExMSw3
IEBAIGlubGluZSBGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBPcHRpb25hbDxGZXRjCiAgICAgLCBtX29wdGlvbnMoV1RGTW92ZShvcHRp
b25zKSkKICAgICAsIG1fcmVmZXJyZXIoV1RGTW92ZShyZWZlcnJlcikpCiAgICAgLCBtX3NpZ25h
bChBYm9ydFNpZ25hbDo6Y3JlYXRlKGNvbnRleHQpKQorICAgICwgbV9tYXhpbXVtSW50ZXJ2YWxG
b3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoVXNlckdlc3R1cmVUb2tlbjo6bWF4aW11bUludGVydmFs
Rm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0Y2gpCiB7CiAgICAgdXBkYXRlQ29udGVudFR5
cGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0Lmlk
bAppbmRleCBiZDRiMzcxNWJlNTdiNjQxNjI5ZGRmMjFkZDgzMzZlMjFlNjgxY2E5Li42YTNiMDFh
ZjllNDY0YTJjMTk1ZTQzNzFhZDZmNmFlM2I3MzZmYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYg
KEJsb2Igb3IgQnVmZmVyU291cmNlIG9yIERPTUZvcm1EYXRhIG9yIFVSTFNlYXJjaFBhcmFtcyBv
ciBSZWFkYWJsZVN0cmVhCiBbCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIEVuYWJsZWRBdFJ1
bnRpbWU9RmV0Y2hBUEksCisgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgRXhw
b3NlZD0oV2luZG93LFdvcmtlciksCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAogICAg
IEludGVyZmFjZU5hbWU9UmVxdWVzdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDQyNjM5MWRjZTg0Y2VmMzM0ZGYyNWQyY2QwNGM2NzBk
Yzk2MzQxYmIuLjA1OWIzMmQ2NGU3N2MzODIzN2NjZjNkMWU3YmZkZjEzMzc0MzNiYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNTQx
LDQgKzU0MSw5IEBAIFJlc291cmNlUmVzcG9uc2UgRmV0Y2hSZXNwb25zZTo6cmVzb3VyY2VSZXNw
b25zZSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3BvbnNlOwogfQogCit2b2lkIEZldGNoUmVzcG9u
c2U6OnNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhkb3VibGUgaW50
ZXJ2YWwpCit7CisgICAgYm9keSgpLmNvbnN1bWVyKCkuc2V0TWF4aW11bUludGVydmFsRm9yVXNl
ckdlc3R1cmVGb3J3YXJkaW5nKGludGVydmFsKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBj
MTAxNTU0ZTc2ZDAxZTM1ZjdkYTQzMGM3YzNkYWFkZGJmMTY1OTFmLi45ZDNiMDJjOTE2NGVjNGQ2
ODM5MDI0YjMyYWY0ODRiMzRmYTU5MDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMTA4LDYgKzEwOCw4IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IEhUVFBIZWFkZXJNYXAmIGludGVybmFsUmVzcG9uc2VIZWFkZXJzKCkgY29uc3QgeyByZXR1
cm4gbV9pbnRlcm5hbFJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKTsgfQogCisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmco
ZG91YmxlKTsKKwogcHJpdmF0ZToKICAgICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBPcHRpb25hbDxGZXRjaEJvZHk+JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291
cmNlUmVzcG9uc2UmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBlZjg4ZjgyMzJhNGRlMjgzNGY3NzQ2Y2JjM2Q3MTM4MDk1
YmE1ZTFhLi44ZDgyZmMzMTMyYmUwYmRkYjBkMDFkM2E2ZWJhNjE1MjIwNWNkMmZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NzYwLDYgKzE3NjAsNyBAQAogCQk1NzA0NDA1QTFFNTM5MzYyMDAzNTY2MDEgLyogSlNBZXNDYmND
ZmJQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3MDQ0MDU5MUU1MzkzNjIwMDM1NjYwMSAvKiBKU0Flc0NiY0NmYlBhcmFtcy5oICovOyB9Owog
CQk1NzA2QTY5NjFEREU1Qzk1MDBBMDNCMTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwNkE2
OTUxRERFNUM5NTAwQTAzQjE0IC8qIENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaCAqLzsg
fTsKIAkJNTcwNkE2OTgxRERFNUU0NjAwQTAzQjE0IC8qIEpTUnNhT2FlcFBhcmFtcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwNkE2OTcxRERFNUU0
NjAwQTAzQjE0IC8qIEpTUnNhT2FlcFBhcmFtcy5oICovOyB9OworCQk1NzA5M0QxMzI0Qzk3QzhG
MDA4NkM1MkQgLyogRmV0Y2hSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDEzMDE1RDYxQzdCNTcwNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9u
c2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
NzEyNTI2OTFFNTI0RUIxMDA4RkYzNjkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxMjUyNjgxRTUyNEVC
MTAwOEZGMzY5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DRkIuaCAqLzsgfTsKIAkJNTcxNTJCNUEy
MUNCM0U4ODAwMEMzN0NBIC8qIEFwZHVDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1MkI1ODIxQ0IyRTNCMDAwQzM3Q0EgLyogQXBkdUNv
bW1hbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1NzE1MkI1QzIxQ0MxOTAyMDAwQzM3Q0EgLyogQXBkdVJlc3BvbnNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1MkI1NjIxQ0IyRTNBMDAwQzM3
Q0EgLyogQXBkdVJlc3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTE4MTAsNiArMTgxMSw3IEBACiAJCTU3NTBBOTdFMUU2QTEzRUYwMDcw
NUM0QSAvKiBDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5N0QxRTZBMTNFRjAwNzA1QzRBIC8qIENy
eXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zLmggKi87IH07CiAJCTU3NTBBOTgyMUU2QTE1MDgwMDcw
NUM0QSAvKiBKU0VjS2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1NzUwQTk4MDFFNkExNTA4MDA3MDVDNEEgLyogSlNFY0tleVBhcmFtcy5o
ICovOyB9OwogCQk1NzUwQTk4NzFFNkEyMTY4MDA3MDVDNEEgLyogQ3J5cHRvQWxnb3JpdGhtRUNE
SC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5
ODUxRTZBMjE2ODAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVDREguaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NzUzM0UwODI0QzZDNTk4MDAz
RUYyRDMgLyogRmV0Y2hSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0MUY1NEY4ODFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTc1NDcx
OUYxRUNFNjI4MzAwREQ2M0IyIC8qIEpTUnNhUHNzUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU0NzE5OTFFQ0U1RDJBMDBERDYzQjIgLyog
SlNSc2FQc3NQYXJhbXMuaCAqLzsgfTsKIAkJNTc1ODU5NjEyMzlGMTI0RDAwQzc0NTcyIC8qIEpT
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1ODU5NUUyMzlGMTE3MzAwQzc0NTcyIC8q
IEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oICovOyB9OwogCQk1NzU4
NTk2QzIzOUYzMjFDMDBDNzQ1NzIgLyogQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0
cHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1
ODU5NjUyMzlGMTRDQzAwQzc0NTcyIC8qIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91
dHB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMzAwNzIsNyArMzAwNzQsNiBAQAogCQkJCTgzMDAzMEY4MUI3RDNCNzgwMEVEM0FBQyAvKiBD
YWNoZWRIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMUMwOTc5QzNC
RDAwNDY3NzQxIC8qIENhY2hlZEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTlGQkQ1RjE1
RDJGNDY0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUNEQUMwNjgzMjRDNkE5NUEwMDJGNzI3RiAvKiBWUDlVdGlsaXRpZXNDb2NvYS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTMwN0RFRDAxRDgxRTRDNzAwMTQxQ0FGIC8qIENhY2hlZE1vZHVsZVNjcmlw
dExvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMwN0RFRDExRDgxRTRDQjAwMTQxQ0FGIC8q
IENhY2hlZE1vZHVsZVNjcmlwdExvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEw
MTg0NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAt
MzA3NzksMTEgKzMwNzgwLDEzIEBACiAJCQkJNTE3QTUzNTgxRjU4ODlFODAwRENEQzBBIC8qIEZl
dGNoTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUFENzUzQTFDRUY2QkQxMDBB
MzE0ODYgLyogRmV0Y2hPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE0RDFGMkE5
QUZCMDAyNzJGNzggLyogRmV0Y2hSZWZlcnJlclBvbGljeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTc1MzNFMDgyNEM2QzU5ODAwM0VGMkQzIC8qIEZldGNoUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0NFMTkxNUExRjJBOUIzNDAwMjcyRjc4IC8qIEZldGNoUmVxdWVzdENhY2hlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3Q0UxOTE1NTFGMkE5QjFEMDAyNzJGNzggLyogRmV0Y2hSZXF1ZXN0
Q3JlZGVudGlhbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5MTRBMUYyQTk4QjkwMDI3MkY3
OCAvKiBGZXRjaFJlcXVlc3RJbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE1MTFGMkE5
QjBBMDAyNzJGNzggLyogRmV0Y2hSZXF1ZXN0TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NF
MTkxNjAxRjJBOUI0RjAwMjcyRjc4IC8qIEZldGNoUmVxdWVzdFJlZGlyZWN0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1NzA5M0QxMzI0Qzk3QzhGMDA4NkM1MkQgLyogRmV0Y2hSZXNwb25zZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBEOEIxMjQ4RjBCMzAwRDNBOUM5IC8qIEZFVGlsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBEOEQxMjQ4RjBCMzAwRDNBOUM5IC8qIEZFVHVyYnVsZW5j
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwOTUxMkIwMjZGNzAwQzFBMzU5IC8qIEZGVENv
bnZvbHZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTE0NSw3ICszMTE0OCw2IEBACiAJCQkJNTE5
REJDNkYxREMwMTFBNzAwMzI5QkY1IC8qIElEQkdldEFsbFJlY29yZHNEYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTlEQkM3MjFEQzEwRjUyMDAzMjlCRjUgLyogSURCR2V0QWxsUmVzdWx0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTA1RjA2OTFENEJBOUQ5MDBGQjgwQkMgLyogSURCR2V0UmVj
b3JkRGF0YS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0Q5Q0M1ODUyNEM2QkJFQjAwQ0QzQzY0IC8q
IFZQOVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4NUZDOEYxQkI0QzRFODAwMTI4
OThGIC8qIElEQkdldFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4NUZDOTExQkI0QzRF
ODAwMTI4OThGIC8qIElEQkluZGV4LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY3OThGMDFCRTg4
MEU3MDA4QUU0OTEgLyogSURCSW5kZXhJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMzODI2LDYg
KzMzODI4LDggQEAKIAkJCQk0MTlCQzJERjE2ODUzMjk5MDBENjRENkQgLyogVmlzaXRlZExpbmtT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCQTgwMDAxODk3MzQxMjAwRENFOUQ2IC8qIFZp
c2l0ZWRMaW5rU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDYxM0I2MENENjM0NEUwMEZB
REE3NSAvKiBWb2lkQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUNEOUNDNTg1MjRDNkJC
RUIwMENEM0M2NCAvKiBWUDlVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQUMwNjgz
MjRDNkE5NUEwMDJGNzI3RiAvKiBWUDlVdGlsaXRpZXNDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkUyMDUwN0ExOEE0NTg2QjAwODA2NDdFIC8qIFZUVEN1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0FGOUIyMDMxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0FGOUIyMDYxOENGQjJERjAwQzY0QkVGIC8qIFZUVFJlZ2lvbkxpc3QuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAKaW5kZXggYWNlYTc2NmFmMWM3ZDVmZWVhZTE3YTY5ZjllM2IzNWNkZWU5YTg4Yy4uMDA5ZTA0
ZmViNjVjMmUyNDJlMWE3ZmU1ZTE0NjNiZGE0YTc1YTcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMTUsNyArMjE1LDE3IEBAIHZv
aWQgSlNET01XaW5kb3dCYXNlOjpxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2Jq
ZWN0JiBvYmplY3QsIFJlZjxKU0M6CiAKICAgICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tD
YWxsYmFjazo6Y3JlYXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwogICAgIGF1dG8mIGV2
ZW50TG9vcCA9IHRoaXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVudExvb3Ao
KTsKLSAgICBldmVudExvb3AucXVldWVNaWNyb3Rhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKCkgbXV0YWJsZSB7CisgICAgLy8gUHJvcG9nYXRpbmcgbWVkaWEgb25seSB1c2VyIGdl
c3R1cmUgZm9yIEZldGNoIEFQSSdzIHByb21pc2UgY2hhaW4uCisgICAgYXV0byB1c2VyR2VzdHVy
ZVRva2VuID0gVXNlckdlc3R1cmVJbmRpY2F0b3I6OmN1cnJlbnRVc2VyR2VzdHVyZSgpOworICAg
IC8vIE1ldGFkYXRhIHN1Y2ggYXMgdGhlIHNjb3BlIGFuZCBpc1Byb3BvZ2F0ZWRGcm9tRmV0Y2gg
d2lsbCBiZSByZXNldCBvbmNlIHRoZSBVc2VyR2VzdHVyZUluZGljYXRvciBpcyBkZXN0cm95ZWQu
CisgICAgYXV0byBpc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZUZyb21GZXRjaCA9IHVzZXJHZXN0dXJl
VG9rZW4gJiYgdXNlckdlc3R1cmVUb2tlbi0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEo
KSAmJiB1c2VyR2VzdHVyZVRva2VuLT5pc1Byb3BvZ2F0ZWRGcm9tRmV0Y2goKTsKKyAgICBldmVu
dExvb3AucXVldWVNaWNyb3Rhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlRnJvbUZldGNoLCB1c2VyR2VzdHVyZVRva2VuID0gV1RGTW92ZSh1
c2VyR2VzdHVyZVRva2VuKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghaXNQcm9jZXNzaW5n
VXNlckdlc3R1cmVGcm9tRmV0Y2ggfHwgdXNlckdlc3R1cmVUb2tlbi0+aGFzRXhwaXJlZChVc2Vy
R2VzdHVyZVRva2VuOjptYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JG
ZXRjaCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5k
aWNhdG9yKHVzZXJHZXN0dXJlVG9rZW4sIFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1cmVTY29wZTo6
TWVkaWFPbmx5LCBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BvZ2F0ZWRGcm9tRmV0Y2g6Olllcyk7
CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcAppbmRleCBkZmVjOTNiNjQ0ZjcyYTUxYmFkMGJl
YmYzOTZkYTYxYzU3ZjZlNDI4Li42NjMxNzA3NjQ5ODUxYTlhMTgyMGZhNjQ4MDYzYjQzNWNmZjA3
ZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAKQEAg
LTc0LDcgKzc0LDcgQEAgVXNlckdlc3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9y
KE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPgogICAgIH0KIH0KIAotVXNlckdl
c3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9yKFJlZlB0cjxVc2VyR2VzdHVyZVRv
a2VuPiB0b2tlbiwgVXNlckdlc3R1cmVUb2tlbjo6R2VzdHVyZVNjb3BlIHNjb3BlKQorVXNlckdl
c3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9yKFJlZlB0cjxVc2VyR2VzdHVyZVRv
a2VuPiB0b2tlbiwgVXNlckdlc3R1cmVUb2tlbjo6R2VzdHVyZVNjb3BlIHNjb3BlLCBVc2VyR2Vz
dHVyZVRva2VuOjpJc1Byb3BvZ2F0ZWRGcm9tRmV0Y2ggaXNQcm9wb2dhdGVkRnJvbUZldGNoKQog
ewogICAgIC8vIFNpbGVudGx5IGlnbm9yZSBVc2VyR2VzdHVyZUluZGljYXRvcnMgb24gbm9uIG1h
aW4gdGhyZWFkcy4KICAgICBpZiAoIWlzTWFpblRocmVhZCgpKQpAQCAtODUsNiArODUsNyBAQCBV
c2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0b3IoUmVmUHRyPFVzZXJHZXN0
dXJlVG9rZW4+IHRva2VuLCBVc2VyRwogCiAgICAgaWYgKHRva2VuKSB7CiAgICAgICAgIHRva2Vu
LT5zZXRTY29wZShzY29wZSk7CisgICAgICAgIHRva2VuLT5zZXRJc1Byb3BvZ2F0ZWRGcm9tRmV0
Y2goaXNQcm9wb2dhdGVkRnJvbUZldGNoKTsKICAgICAgICAgY3VycmVudFRva2VuKCkgPSB0b2tl
bjsKICAgICB9CiB9CkBAIC05Nyw2ICs5OCw3IEBAIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjp+VXNl
ckdlc3R1cmVJbmRpY2F0b3IoKQogICAgIGlmIChhdXRvIHRva2VuID0gY3VycmVudFRva2VuKCkp
IHsKICAgICAgICAgdG9rZW4tPnJlc2V0RE9NUGFzdGVBY2Nlc3MoKTsKICAgICAgICAgdG9rZW4t
PnJlc2V0U2NvcGUoKTsKKyAgICAgICAgdG9rZW4tPnJlc2V0SXNQcm9wb2dhdGVkRnJvbUZldGNo
KCk7CiAgICAgfQogCiAgICAgY3VycmVudFRva2VuKCkgPSBtX3ByZXZpb3VzVG9rZW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCmluZGV4IDNjZjMyNzc2YzAyYWI3
MDg4OGQzZjNhMGJlN2M5NzJmZTQxYmUyZGMuLjhhNWJmMTc3ODAzMjU0ZWQxZTY3NDRkMjRkNmRi
MTIxOGRiMDQ1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUlu
ZGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5o
CkBAIC00Nyw2ICs0Nyw5IEBAIGVudW0gY2xhc3MgVXNlckdlc3R1cmVUeXBlIHsgRXNjYXBlS2V5
LCBPdGhlciB9OwogCiBjbGFzcyBVc2VyR2VzdHVyZVRva2VuIDogcHVibGljIFJlZkNvdW50ZWQ8
VXNlckdlc3R1cmVUb2tlbj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxVc2VyR2VzdHVyZVRva2Vu
PiB7CiBwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIG1heGltdW1JbnRlcnZh
bEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyB7IDFfcyB9OyAvLyBPbmUgc2Vjb25kIG1hdGNoZXMg
R2Vja28uCisgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIG1heGltdW1JbnRlcnZhbEZvclVz
ZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoIHsgMTBfcyB9OworCiAgICAgc3RhdGljIFJlZjxV
c2VyR2VzdHVyZVRva2VuPiBjcmVhdGUoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGUgc3RhdGUs
IFVzZXJHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFVzZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CkBAIC04NCw2
ICs4NywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY29wZShHZXN0dXJlU2NvcGUgc2NvcGUp
IHsgbV9zY29wZSA9IHNjb3BlOyB9CiAgICAgdm9pZCByZXNldFNjb3BlKCkgeyBtX3Njb3BlID0g
R2VzdHVyZVNjb3BlOjpBbGw7IH0KIAorICAgIC8vIEV4cGFuZCB0aGUgZm9sbG93aW5nIG1ldGhv
ZHMgaWYgbW9yZSBwcm9nb2dhdGlvbiBzb3VyY2VzIGFyZSBhZGRlZCBsYXRlci4KKyAgICBlbnVt
IGNsYXNzIElzUHJvcG9nYXRlZEZyb21GZXRjaCB7IFllcywgTm8gfTsKKyAgICB2b2lkIHNldElz
UHJvcG9nYXRlZEZyb21GZXRjaChJc1Byb3BvZ2F0ZWRGcm9tRmV0Y2ggaXMpIHsgbV9pc1Byb3Bv
Z2F0ZWRGcm9tRmV0Y2ggPSBpczsgfQorICAgIHZvaWQgcmVzZXRJc1Byb3BvZ2F0ZWRGcm9tRmV0
Y2goKSB7IG1faXNQcm9wb2dhdGVkRnJvbUZldGNoID0gSXNQcm9wb2dhdGVkRnJvbUZldGNoOjpO
bzsgfQorICAgIGJvb2wgaXNQcm9wb2dhdGVkRnJvbUZldGNoKCkgY29uc3QgeyByZXR1cm4gbV9p
c1Byb3BvZ2F0ZWRGcm9tRmV0Y2ggPT0gSXNQcm9wb2dhdGVkRnJvbUZldGNoOjpZZXM7IH0KKwog
ICAgIGJvb2wgaGFzRXhwaXJlZChTZWNvbmRzIGV4cGlyYXRpb25JbnRlcnZhbCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX3N0YXJ0VGltZSArIGV4cGlyYXRpb25JbnRlcnZhbCA8IE1v
bm90b25pY1RpbWU6Om5vdygpOwpAQCAtMTA0LDYgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgRE9N
UGFzdGVBY2Nlc3NQb2xpY3kgbV9kb21QYXN0ZUFjY2Vzc1BvbGljeSB7IERPTVBhc3RlQWNjZXNz
UG9saWN5OjpOb3RSZXF1ZXN0ZWRZZXQgfTsKICAgICBHZXN0dXJlU2NvcGUgbV9zY29wZSB7IEdl
c3R1cmVTY29wZTo6QWxsIH07CiAgICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZSB7IE1vbm90
b25pY1RpbWU6Om5vdygpIH07CisgICAgSXNQcm9wb2dhdGVkRnJvbUZldGNoIG1faXNQcm9wb2dh
dGVkRnJvbUZldGNoIHsgSXNQcm9wb2dhdGVkRnJvbUZldGNoOjpObyB9OwogfTsKIAogY2xhc3Mg
VXNlckdlc3R1cmVJbmRpY2F0b3IgewpAQCAtMTE4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICAv
LyBJZiBhIGRvY3VtZW50IGlzIHByb3ZpZGVkLCBpdHMgbGFzdCBrbm93biB1c2VyIGdlc3R1cmUg
dGltZXN0YW1wIGlzIHVwZGF0ZWQuCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzSW50ZXJhY3Rpb25T
dHlsZSB7IEltbWVkaWF0ZSwgRGVsYXllZCB9OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFVzZXJHZXN0dXJlSW5kaWNhdG9yKE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
PiwgRG9jdW1lbnQqID0gbnVsbHB0ciwgVXNlckdlc3R1cmVUeXBlID0gVXNlckdlc3R1cmVUeXBl
OjpPdGhlciwgUHJvY2Vzc0ludGVyYWN0aW9uU3R5bGUgPSBQcm9jZXNzSW50ZXJhY3Rpb25TdHls
ZTo6SW1tZWRpYXRlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBVc2VyR2VzdHVyZUlu
ZGljYXRvcihSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4sIFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1
cmVTY29wZSA9IFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1cmVTY29wZTo6QWxsKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBleHBsaWNpdCBVc2VyR2VzdHVyZUluZGljYXRvcihSZWZQdHI8VXNlckdlc3R1
cmVUb2tlbj4sIFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1cmVTY29wZSA9IFVzZXJHZXN0dXJlVG9r
ZW46Okdlc3R1cmVTY29wZTo6QWxsLCBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BvZ2F0ZWRGcm9t
RmV0Y2ggPSBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BvZ2F0ZWRGcm9tRmV0Y2g6Ok5vKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB+VXNlckdlc3R1cmVJbmRpY2F0b3IoKTsKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggYjIxM2E5OWM4YWZmMDE4ZDE4ODdlY2Y3NDQyYTQz
YWNiNmJkMTQ1OC4uNWI5MzFlZmExZjAzYWJhOWY2NzlmNzk1MmRkOWFkZjczYzgxNjFjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgY29uc3QgU2Vjb25kcyBtYXhJbnRlcnZhbEZvclVzZXJHZXN0dXJl
Rm9yd2FyZGluZyB7IDFfcyB9OyAvLyBPbmUgc2Vjb25kIG1hdGNoZXMgR2Vja28uCiBzdGF0aWMg
Y29uc3QgU2Vjb25kcyBtaW5JbnRlcnZhbEZvck5vblVzZXJPYnNlcnZhYmxlQ2hhbmdlVGltZXJz
IHsgMV9zIH07IC8vIEVtcGlyaWNhbGx5IGRldGVybWluZWQgdG8gbWF4aW1pemUgYmF0dGVyeSBs
aWZlLgogc3RhdGljIGNvbnN0IGludCBtYXhUaW1lck5lc3RpbmdMZXZlbCA9IDU7CiAKQEAgLTMw
MSw3ICszMDAsNyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAKICAgICBET01UaW1lckZpcmVT
dGF0ZSBmaXJlU3RhdGUoY29udGV4dCwgc3RkOjptaW4obV9uZXN0aW5nTGV2ZWwgKyAxLCBtYXhU
aW1lck5lc3RpbmdMZXZlbCkpOwogCi0gICAgaWYgKG1fdXNlckdlc3R1cmVUb2tlblRvRm9yd2Fy
ZCAmJiBtX3VzZXJHZXN0dXJlVG9rZW5Ub0ZvcndhcmQtPmhhc0V4cGlyZWQobWF4SW50ZXJ2YWxG
b3JVc2VyR2VzdHVyZUZvcndhcmRpbmcpKQorICAgIGlmIChtX3VzZXJHZXN0dXJlVG9rZW5Ub0Zv
cndhcmQgJiYgbV91c2VyR2VzdHVyZVRva2VuVG9Gb3J3YXJkLT5oYXNFeHBpcmVkKFVzZXJHZXN0
dXJlVG9rZW46Om1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZykpCiAgICAg
ICAgIG1fdXNlckdlc3R1cmVUb2tlblRvRm9yd2FyZCA9IG51bGxwdHI7CiAKICAgICBBU1NFUlQo
IWlzU3VzcGVuZGVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGFj
YmZlZGM2ZDcyYjE2ZmIzOTA2M2QxMDUwZjA0NjhiMDJjMTk5YmIuLjViMGVmZjEwZDI3ZWU5YTRk
NGJkNzVkYTVhMTAxMzJjNmY1MzIyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RXh0ZW5kYWJsZUV2ZW50LmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCIKKyNp
bmNsdWRlICJGZXRjaFJlcXVlc3QuaCIKICNpbmNsdWRlICJGZXRjaFJlc3BvbnNlLmgiCiAjaW5j
bHVkZSAiRmlsZS5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgpAQCAtNTY3Nyw2ICs1Njc4LDE2
IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRYSFJNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZv
cndhcmRpbmcoWE1MSHR0cFJlcXVlc3QmIHJlCiAgICAgcmVxdWVzdC5zZXRNYXhpbXVtSW50ZXJ2
YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoaW50ZXJ2YWwpOwogfQogCit2b2lkIEludGVybmFs
czo6c2V0RmV0Y2hNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoRmV0Y2hS
ZXF1ZXN0JiByZXF1ZXN0LCBkb3VibGUgaW50ZXJ2YWwpCit7CisgICAgcmVxdWVzdC5zZXRNYXhp
bXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoaW50ZXJ2YWwpOworfQorCit2b2lk
IEludGVybmFsczo6c2V0RmV0Y2hNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRp
bmcoRmV0Y2hSZXNwb25zZSYgcmVzcG9uc2UsIGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICByZXNw
b25zZS5zZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoaW50ZXJ2YWwp
OworfQorCiB2b2lkIEludGVybmFsczo6c2V0VHJhbnNpZW50QWN0aXZhdGlvbkR1cmF0aW9uKGRv
dWJsZSBzZWNvbmRzKQogewogICAgIERPTVdpbmRvdzo6b3ZlcnJpZGVUcmFuc2llbnRBY3RpdmF0
aW9uRHVyYXRpb25Gb3JUZXN0aW5nKFNlY29uZHMgeyBzZWNvbmRzIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKaW5kZXggODQzZWRmYTA0ODE0NDNhNDFiMWExMDdmMDJjOTVmMDAzMDhk
ZjBlYS4uNDQwYmJlM2JmNTY2NjM1YjFhZjczOWVmYzQxYWVjOWI3M2E2MzM5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50TGlzdGVuZXI7CiBjbGFzcyBFeHRlbmRhYmxlRXZl
bnQ7CitjbGFzcyBGZXRjaFJlcXVlc3Q7CiBjbGFzcyBGZXRjaFJlc3BvbnNlOwogY2xhc3MgRmls
ZTsKIGNsYXNzIEZyYW1lOwpAQCAtOTYyLDYgKzk2Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHRl
c3REaWN0aW9uYXJ5TG9nZ2luZygpOwogCiAgICAgdm9pZCBzZXRYSFJNYXhpbXVtSW50ZXJ2YWxG
b3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoWE1MSHR0cFJlcXVlc3QmLCBkb3VibGUpOworICAgIHZv
aWQgc2V0RmV0Y2hNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoRmV0Y2hS
ZXF1ZXN0JiwgZG91YmxlKTsKKyAgICB2b2lkIHNldEZldGNoTWF4aW11bUludGVydmFsRm9yVXNl
ckdlc3R1cmVGb3J3YXJkaW5nKEZldGNoUmVzcG9uc2UmLCBkb3VibGUpOwogICAgIHZvaWQgc2V0
VHJhbnNpZW50QWN0aXZhdGlvbkR1cmF0aW9uKGRvdWJsZSBzZWNvbmRzKTsKIAogICAgIHZvaWQg
c2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKaW5kZXggZTdmNjY1M2NhMDg0YzQyNWExOWMxYWRhN2I3NzBlZTA1Yjhi
NjdlYS4uYzU5MTQzNWVlZWQ0OWE3NTZmMTA3ZWM4YmU4ZGQ4ZjE2OWVkNmI5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtOTA4LDYgKzkwOCw4IEBAIGVudW0gQ29udGVu
dFNpemVDYXRlZ29yeSB7CiAgICAgdm9pZCB0ZXN0RGljdGlvbmFyeUxvZ2dpbmcoKTsKIAogICAg
IHZvaWQgc2V0WEhSTWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKFhNTEh0
dHBSZXF1ZXN0IHhociwgZG91YmxlIGludGVydmFsKTsKKyAgICB2b2lkIHNldEZldGNoTWF4aW11
bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKEZldGNoUmVxdWVzdCByZXF1ZXN0LCBk
b3VibGUgaW50ZXJ2YWwpOworICAgIHZvaWQgc2V0RmV0Y2hNYXhpbXVtSW50ZXJ2YWxGb3JVc2Vy
R2VzdHVyZUZvcndhcmRpbmcoRmV0Y2hSZXNwb25zZSByZXNwb25zZSwgZG91YmxlIGludGVydmFs
KTsKICAgICB2b2lkIHNldFRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbihkb3VibGUgc2Vjb25k
cyk7CiAKICAgICB2b2lkIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2xlYW4g
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYzZmYTQ4Yjg4
ZmI1ZmM2Mjc3MDE2OTc1ODg2OGUzMmYxMzg5NzQwOS4uYWYyM2ZmZjBiNmVhODVlYTUwMDEwZWVl
N2M5ZTg3MDMzMDdhMWQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBA
IC02Nyw4ICs2Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IFNl
Y29uZHMgbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nIHsgMTBfcyB9Owot
CiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoWE1MSHR0cFJlcXVlc3QpOwogCiBERUZJTkVf
REVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHhtbEh0dHBSZXF1
ZXN0Q291bnRlciwgKCJYTUxIdHRwUmVxdWVzdCIpKTsKQEAgLTEyMSw3ICsxMTksNyBAQCBYTUxI
dHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZXNwb25zZVR5
cGU6OkVtcHR5U3RyaW5nKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlKCp0aGlzKQog
ICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVxdWVzdDo6ZGlkUmVhY2hUaW1l
b3V0KQotICAgICwgbV9tYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcobWF4
aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKQorICAgICwgbV9tYXhpbXVtSW50
ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoVXNlckdlc3R1cmVUb2tlbjo6bWF4aW11bUlu
dGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0Y2gpCiB7CiAjaWZuZGVmIE5ERUJV
RwogICAgIHhtbEh0dHBSZXF1ZXN0Q291bnRlci5pbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YTFjZGU1
MjI3Y2RkMDBiMTJkZjA2NTc2OTJlMjhkYTgzYjM1OTlkLi41ZDVjNDg1OWM5YTdlOTIwOTE0YzRh
NDM3Zjc3OTlhZjAwZDg1MDA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDctMjMgIEpp
ZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBQcm9wYWdhdGluZyB1
c2VyIGdlc3R1cmUgdGhyb3VnaCBGZXRjaCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDQ0NAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjU5
ODA5NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBodHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1wcmVzZXJ2ZWQtYWNyb3NzLXhtbGh0dHBy
ZXF1ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL21lZGlhL3VzZXItZ2Vz
dHVyZS1wcmVzZXJ2ZWQtYWNyb3NzLXhtbGh0dHByZXF1ZXN0Lmh0bWw6CisgICAgICAgICogaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZG93bmxvYWQtaGVhZGVyLXdpdGgtZGVs
YXkucGhwOiBBZGRlZC4KKwogMjAyMC0wNy0yMyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IG1pc3NpbmcgZXhjZXB0aW9uIGNoZWNrcyBiZWxvdyBSVENQZWVy
Q29ubmVjdGlvbi5nZW5lcmF0ZUNlcnRpZmljYXRlKCkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1wcmVzZXJ2ZWQtYWNyb3NzLXhtbGh0dHBy
ZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdXNlci1n
ZXN0dXJlLXByZXNlcnZlZC1hY3Jvc3MteG1saHR0cHJlcXVlc3QtZXhwZWN0ZWQudHh0CmluZGV4
IDMxYzg1NGNmZThmZGQyMTQ1ZTliYTVlNTZiYjZkZmFjMzNjMzJkYTcuLmM5OWFkOTdlNjBiMzFl
YzA3YTdhMmQzYzQ1NzdhNWNkMzI2MWY4MTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWVkaWEvdXNlci1nZXN0dXJlLXByZXNlcnZlZC1hY3Jvc3MteG1saHR0cHJlcXVlc3Qt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdXNlci1nZXN0
dXJlLXByZXNlcnZlZC1hY3Jvc3MteG1saHR0cHJlcXVlc3QtZXhwZWN0ZWQudHh0CkBAIC01Miw1
ICs1Miw5MSBAQCBFVkVOVChsb2FkKTogcmVhZHlTdGF0ZSA9IDQKIFJVTihzaG91bGRSZWplY3Qo
bWVkaWFFbGVtZW50LnBsYXkoKSkudGhlbih0ZXN0Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCiBQ
cm9taXNlIHJlamVjdGVkIGNvcnJlY3RseSBPSwogCisqKiBnZXN0dXJlIC0+IGZldGNoIC0+IHdp
bmRvdy5vcGVuOiBzaG91bGQgZmFpbCBiZWNhdXNlIEZldGNoIG9ubHkgcHJvcGFnYXRlcyB1c2Vy
IGdlc3R1cmUgZm9yIG1lZGlhCitmZXRjaGluZywgZGVsYXkgPSAxMDAKK0ZFVENIKHJlc29sdmVk
KTogc3RhdHVzID0gMjAwCitFWFBFQ1RFRCAod2luZG93Lm9wZW4oImFib3V0OmJsYW5rIikgPT0g
J251bGwnKSBPSworCisqKiBnZXN0dXJlIC0+IGZldGNoIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91
bGQgc3VjY2VlZAorRVZFTlQoY2FucGxheXRocm91Z2gpCitmZXRjaGluZywgZGVsYXkgPSAxMDAK
K0ZFVENIKHJlc29sdmVkKTogc3RhdHVzID0gMjAwCitSVU4oc2hvdWxkUmVzb2x2ZShtZWRpYUVs
ZW1lbnQucGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1Byb21pc2Ug
cmVzb2x2ZWQgT0sKKworKiogZ2VzdHVyZSAtPiAibG9uZyIgRmV0Y2ggLT4gdmlkZW8gcGxheWJh
Y2s6IHNob3VsZCBmYWlsCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK2ZldGNoaW5nLCBkZWxheSA9
IDMwMAorRkVUQ0gocmVzb2x2ZWQpOiBzdGF0dXMgPSAyMDAKK1JVTihzaG91bGRSZWplY3QobWVk
aWFFbGVtZW50LnBsYXkoKSkudGhlbih0ZXN0Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCitQcm9t
aXNlIHJlamVjdGVkIGNvcnJlY3RseSBPSworCisqKiBubyBnZXN0dXJlIC0+IGZldGNoIC0+IHZp
ZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbAorRVZFTlQoY2FucGxheXRocm91Z2gpCitmZXRjaGlu
ZywgZGVsYXkgPSAxMDAKK0ZFVENIKHJlc29sdmVkKTogc3RhdHVzID0gMjAwCitSVU4oc2hvdWxk
UmVqZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxl
dGUpKQorUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHkgT0sKKworKiogZ2VzdHVyZSAtPiBmZXRj
aCAtPiBibG9iIC0+IHdpbmRvdy5vcGVuOiBzaG91bGQgZmFpbCBiZWNhdXNlIEZldGNoIG9ubHkg
cHJvcGFnYXRlcyB1c2VyIGdlc3R1cmUgZm9yIG1lZGlhCitmZXRjaGluZyBibG9iLCBkZWxheSA9
IDEwMAorRkVUQ0gocmVzb2x2ZWQpOiBzdGF0dXMgPSAyMDAKK0ZFVENIKHJlc3BvbnNlIHJlc29s
dmVkKQorRVhQRUNURUQgKHdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIpID09ICdudWxsJykgT0sK
KworKiogZ2VzdHVyZSAtPiBmZXRjaCAtPiBibG9iIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQg
c3VjY2VlZAorRVZFTlQoY2FucGxheXRocm91Z2gpCitmZXRjaGluZyBibG9iLCBkZWxheSA9IDEw
MAorRkVUQ0gocmVzb2x2ZWQpOiBzdGF0dXMgPSAyMDAKK0ZFVENIKHJlc3BvbnNlIHJlc29sdmVk
KQorUlVOKHNob3VsZFJlc29sdmUobWVkaWFFbGVtZW50LnBsYXkoKSkudGhlbih0ZXN0Q29tcGxl
dGUsIHRlc3RDb21wbGV0ZSkpCitQcm9taXNlIHJlc29sdmVkIE9LCisKKyoqIGdlc3R1cmUgLT4g
ZmV0Y2ggLT4gImxvbmciIGJsb2IgLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsCitFVkVO
VChjYW5wbGF5dGhyb3VnaCkKK2ZldGNoaW5nIGJsb2IsIGRlbGF5ID0gMzAwCitGRVRDSChyZXNv
bHZlZCk6IHN0YXR1cyA9IDIwMAorRkVUQ0gocmVzcG9uc2UgcmVzb2x2ZWQpCitSVU4oc2hvdWxk
UmVqZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxl
dGUpKQorUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHkgT0sKKworKiogbm8gZ2VzdHVyZSAtPiBm
ZXRjaCAtPiBibG9iIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbAorRVZFTlQoY2FucGxh
eXRocm91Z2gpCitmZXRjaGluZyBibG9iLCBkZWxheSA9IDEwMAorRkVUQ0gocmVzb2x2ZWQpOiBz
dGF0dXMgPSAyMDAKK0ZFVENIKHJlc3BvbnNlIHJlc29sdmVkKQorUlVOKHNob3VsZFJlamVjdCht
ZWRpYUVsZW1lbnQucGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1By
b21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5IE9LCisKKyoqIG5vIGdlc3R1cmUgLT4gcHJvbWlzZSAt
PiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIGZhaWwKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorcHJv
bWlzZQorUFJPTUlTRShyZXNvbHZlZCkKK1JVTihzaG91bGRSZWplY3QobWVkaWFFbGVtZW50LnBs
YXkoKSkudGhlbih0ZXN0Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCitQcm9taXNlIHJlamVjdGVk
IGNvcnJlY3RseSBPSworCisqKiBnZXN0dXJlIC0+IHByb21pc2UgLT4gdmlkZW8gcGxheWJhY2s6
IHNob3VsZCBmYWlsIGJlY2F1c2UgcHJvbWlzZSBvbmx5IHByb3BhZ2F0ZXMgdXNlciBnZXN0dXJl
IHByb3BhZ2F0ZWQgdGhyb3VnaCBGZXRjaAorRVZFTlQoY2FucGxheXRocm91Z2gpCitwcm9taXNl
CitQUk9NSVNFKHJlc29sdmVkKQorUlVOKHNob3VsZFJlamVjdChtZWRpYUVsZW1lbnQucGxheSgp
KS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1Byb21pc2UgcmVqZWN0ZWQgY29y
cmVjdGx5IE9LCisKKyoqIGdlc3R1cmUgLT4gZmV0Y2ggLT4gcHJvbWlzZSAtPiB2aWRlbyBwbGF5
YmFjazogc2hvdWxkIHN1Y2NlZWQKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorZmV0Y2ggdGhlbiBw
cm9taXNlCitGRVRDSChyZXNvbHZlZCk6IHN0YXR1cyA9IDIwMAorUFJPTUlTRShyZXNvbHZlZCkK
K1JVTihzaG91bGRSZXNvbHZlKG1lZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRl
LCB0ZXN0Q29tcGxldGUpKQorUHJvbWlzZSByZXNvbHZlZCBPSworCisqKiBnZXN0dXJlIC0+IGZl
dGNoIC0+IGNyeXB0byAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIGZhaWwgc2luY2UgdGhlIHVz
ZXIgZ2VzdHVyZSB3aWxsIG5vdCBiZSBwcm9wYWdhdGVkIHRocm91Z2ggb3RoZXIgQVBJIGV2ZW4g
dGhvdWdoIGl0IHJldHVybnMgcHJvbWlzZXMKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorZmV0Y2gg
dGhlbiBjcnlwdG8KK0ZFVENIKHJlc29sdmVkKTogc3RhdHVzID0gMjAwCitDUllQVE8oa2V5IGdl
bmVyYXRlZCkKK1JVTihzaG91bGRSZWplY3QobWVkaWFFbGVtZW50LnBsYXkoKSkudGhlbih0ZXN0
Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCitQcm9taXNlIHJlamVjdGVkIGNvcnJlY3RseSBPSwor
CiBFTkQgT0YgVEVTVAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlh
L3VzZXItZ2VzdHVyZS1wcmVzZXJ2ZWQtYWNyb3NzLXhtbGh0dHByZXF1ZXN0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1wcmVzZXJ2ZWQtYWNyb3NzLXht
bGh0dHByZXF1ZXN0Lmh0bWwKaW5kZXggODJhMmU5YmE5YTI2ZDM4MzcyZGJlMzhiOTdjMDFiMjNh
ODY2Zjc1Yi4uNWExMWYwOGM4ZTE1NzhkZjBhODk5ODJlMDJhMjk3MGRjMjk5YTJmYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS91c2VyLWdlc3R1cmUtcHJlc2VydmVk
LWFjcm9zcy14bWxodHRwcmVxdWVzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWVkaWEvdXNlci1nZXN0dXJlLXByZXNlcnZlZC1hY3Jvc3MteG1saHR0cHJlcXVlc3QuaHRtbApA
QCAtNDEsNiArNDEsNzcgQEAKICAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgICB9
CiAKKyAgICAgICAgZnVuY3Rpb24gZG9GZXRjaChkZWxheSwgdGltZW91dCwgY29tcGxldGlvbkhh
bmRsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCByZXF1ZXN0ID0gbmV3IFJlcXVlc3Qo
YC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZG93bmxvYWQtaGVhZGVyLXdpdGgtZGVsYXkucGhw
P2RlbGF5PSR7ZGVsYXl9YCk7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEZldGNoTWF4aW11bUludGVydmFsRm9y
VXNlckdlc3R1cmVGb3J3YXJkaW5nKHJlcXVlc3QsIHRpbWVvdXQpOworCisgICAgICAgICAgICBm
ZXRjaChyZXF1ZXN0LCB7IG1ldGhvZDogJ0dFVCcsIGNhY2hlOiAibm8tY2FjaGUiIH0pLnRoZW4o
cmVzcG9uc2UgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRkVUQ0gocmVzb2x2
ZWQpOiBzdGF0dXMgPSAke3Jlc3BvbnNlLnN0YXR1c31gKTsKKyAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgfSwgZXJyb3IgPT4geworICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZShgRkVUQ0gocmVqZWN0ZWQpOiBleGNlcHRpb24gY29kZSA9ICR7ZXJy
b3IuY29kZX1gKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gZG9GZXRjaEJsb2IoZGVsYXksIHRpbWVvdXQsIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAg
ICB7CisgICAgICAgICAgICBsZXQgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGAveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL2Rvd25sb2FkLXdpdGgtZGVsYXkucGhwP2l0ZXJhdGlvbj0xJmRlbGF5PSR7
ZGVsYXl9YCk7CisKKyAgICAgICAgICAgIGZldGNoKHJlcXVlc3QsIHsgbWV0aG9kOiAnR0VUJywg
Y2FjaGU6ICJuby1jYWNoZSIgfSkudGhlbihyZXNwb25zZSA9PiB7CisgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKGBGRVRDSChyZXNvbHZlZCk6IHN0YXR1cyA9ICR7cmVzcG9uc2Uuc3RhdHVz
fWApOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEZldGNoTWF4aW11bUludGVydmFsRm9yVXNlckdl
c3R1cmVGb3J3YXJkaW5nKHJlc3BvbnNlLCB0aW1lb3V0KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gcmVzcG9uc2UuYmxvYigpOworICAgICAgICAgICAgfSwgZXJyb3IgPT4geworICAgICAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZShgRkVUQ0gocmVqZWN0ZWQpOiBleGNlcHRpb24gY29kZSA9ICR7
ZXJyb3IuY29kZX1gKTsKKyAgICAgICAgICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4geworICAgICAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZShgRkVUQ0gocmVzcG9uc2UgcmVzb2x2ZWQpYCk7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIH0sIGVycm9yID0+
IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYEZFVENIKHJlc3BvbnNlIHJlamVjdGVk
KTogZXhjZXB0aW9uIGNvZGUgPSAke2Vycm9yLmNvZGV9YCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRvUHJvbWlzZShjb21wbGV0aW9uSGFuZGxlcikK
KyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKCAocmVz
b2x1dGlvbkZ1bmMpID0+IHsKKyAgICAgICAgICAgICAgICByZXNvbHV0aW9uRnVuYygpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHByb21pc2UudGhlbigoKSA9PiB7CisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKGBQUk9NSVNFKHJlc29sdmVkKWApOworICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCkKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gZG9GZXRjaFRoZW5Qcm9taXNlKGNvbXBsZXRpb25IYW5kbGVyKQorICAg
ICAgICB7CisgICAgICAgICAgICBsZXQgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGAveG1saHR0cHJl
cXVlc3QvcmVzb3VyY2VzL2Rvd25sb2FkLXdpdGgtZGVsYXkucGhwP2l0ZXJhdGlvbj0xYCk7CisK
KyAgICAgICAgICAgIGZldGNoKHJlcXVlc3QsIHsgbWV0aG9kOiAnR0VUJywgY2FjaGU6ICJuby1j
YWNoZSIgfSkudGhlbihyZXNwb25zZSA9PiB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KGBGRVRDSChyZXNvbHZlZCk6IHN0YXR1cyA9ICR7cmVzcG9uc2Uuc3RhdHVzfWApOworICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSggKHJlc29sdXRpb25GdW5jKSA9PiByZXNvbHV0
aW9uRnVuYygpICk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoYFBST01JU0UocmVzb2x2ZWQpYCk7CisgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBkb0ZldGNoVGhlbkNyeXB0byhjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgbGV0IHJlcXVlc3QgPSBuZXcgUmVxdWVzdChgL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9kb3dubG9hZC13aXRoLWRlbGF5LnBocD9pdGVyYXRpb249MWApOworCisgICAgICAg
ICAgICBmZXRjaChyZXF1ZXN0LCB7IG1ldGhvZDogJ0dFVCcsIGNhY2hlOiAibm8tY2FjaGUiIH0p
LnRoZW4ocmVzcG9uc2UgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRkVUQ0go
cmVzb2x2ZWQpOiBzdGF0dXMgPSAke3Jlc3BvbnNlLnN0YXR1c31gKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7bmFtZTogIlJTQS1PQUVQIiwgbW9k
dWx1c0xlbmd0aDogMjA0OCwgcHVibGljRXhwb25lbnQ6IG5ldyBVaW50OEFycmF5KFsweDAxLCAw
eDAwLCAweDAxXSksIGhhc2g6ICJzaGEtMSJ9LCBmYWxzZSwgWyJkZWNyeXB0IiwgImVuY3J5cHQi
LCAid3JhcEtleSIsICJ1bndyYXBLZXkiXSk7CisgICAgICAgICAgICB9KS50aGVuKGtleSA9PiB7
CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBDUllQVE8oa2V5IGdlbmVyYXRlZClgKTsK
KyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpCisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQorCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZSgpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmIChhdXRvUnVuKQpAQCAtODEsOCArMTUyLDI3IEBACiAgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKGBzZXR0aW5nIHRpbWVvdXQsIGRlbGF5ID0gJHtkZWxheX1gKTsKICAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgcnVuVGVzdCh0ZXN0KTsgfSwgZGVsYXkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZmV0Y2gnOgorICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgZmV0Y2hpbmcsIGRlbGF5ID0gJHtkZWxheX1gKTsK
KyAgICAgICAgICAgICAgICBkb0ZldGNoKGRlbGF5LCB0ZXN0LnRpbWVvdXQgfHwgMC42LCAoKSA9
PiBydW5UZXN0KHRlc3QpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgJ2ZldGNoYmxvYic6CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBmZXRjaGluZyBi
bG9iLCBkZWxheSA9ICR7ZGVsYXl9YCk7CisgICAgICAgICAgICAgICAgZG9GZXRjaEJsb2IoZGVs
YXksIHRlc3QudGltZW91dCB8fCAwLjYsICgpID0+IHJ1blRlc3QodGVzdCkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAncHJvbWlzZSc6CisgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKGBwcm9taXNlYCk7CisgICAgICAgICAgICAgICAgZG9Qcm9taXNlKCgp
ID0+IHJ1blRlc3QodGVzdCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSAnZmV0Y2h0aGVucHJvbWlzZSc6CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBm
ZXRjaCB0aGVuIHByb21pc2VgKTsKKyAgICAgICAgICAgICAgICBkb0ZldGNoVGhlblByb21pc2Uo
KCkgPT4gcnVuVGVzdCh0ZXN0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlICdmZXRjaHRoZW5jcnlwdG8nOgorICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShg
ZmV0Y2ggdGhlbiBjcnlwdG9gKTsKKyAgICAgICAgICAgICAgICBkb0ZldGNoVGhlbkNyeXB0bygo
KSA9PiBydW5UZXN0KHRlc3QpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KLQogICAgICAgICB9CiAKICAgICAgICAgbGV0IHRlc3RzID0gWwpAQCAtMTAyLDE0ICsxOTIs
NTEgQEAKICAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3aXRoa2V5IDogZmFsc2Us
ICBzdWNjZXNzIDogZmFsc2UsICBzZXF1ZW5jZSA6IFsnMTAwIFhIUicsICcxMDAgdGltZW91dCdd
IH0sCiAKICAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiAibG9uZyIgWEhSIC0+IHZp
ZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCcsCi0gICAgICAgICAgICAgICAgYWN0aW9uIDogJ3Bs
YXknLCAgd2l0aGtleSA6IGZhbHNlLCAgc3VjY2VzcyA6IGZhbHNlLCAgdGltZW91dCA6IDAuMSwg
c2VxdWVuY2UgOiBbJzMwMCBYSFInXSB9LAorICAgICAgICAgICAgICAgIGFjdGlvbiA6ICdwbGF5
JywgIHdpdGhrZXkgOiB0cnVlLCAgc3VjY2VzcyA6IGZhbHNlLCAgdGltZW91dCA6IDAuMSwgc2Vx
dWVuY2UgOiBbJzMwMCBYSFInXSB9LAorCisgICAgICAgICAgICB7IHRpdGxlIDogJ2dlc3R1cmUg
LT4gZmV0Y2ggLT4gd2luZG93Lm9wZW46IHNob3VsZCBmYWlsIGJlY2F1c2UgRmV0Y2ggb25seSBw
cm9wYWdhdGVzIHVzZXIgZ2VzdHVyZSBmb3IgbWVkaWEnLAorICAgICAgICAgICAgICAgIGFjdGlv
biA6ICdwb3B1cCcsIHdpdGhrZXkgOiB0cnVlLCAgc3VjY2VzcyA6IGZhbHNlLCAgc2VxdWVuY2Ug
OiBbJzEwMCBGZXRjaCddIH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiBm
ZXRjaCAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIHN1Y2NlZWQnLAorICAgICAgICAgICAgICAg
IGFjdGlvbiA6ICdwbGF5JywgIHdpdGhrZXkgOiB0cnVlLCAgc3VjY2VzcyA6IHRydWUsICBzZXF1
ZW5jZSA6IFsnMTAwIEZldGNoJ10gfSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdnZXN0dXJl
IC0+ICJsb25nIiBGZXRjaCAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIGZhaWwnLAorICAgICAg
ICAgICAgICAgIGFjdGlvbiA6ICdwbGF5JywgIHdpdGhrZXkgOiB0cnVlLCAgc3VjY2VzcyA6IGZh
bHNlLCAgdGltZW91dCA6IDAuMSwgc2VxdWVuY2UgOiBbJzMwMCBGZXRjaCddIH0sCisKKyAgICAg
ICAgICAgIHsgdGl0bGUgOiAnbm8gZ2VzdHVyZSAtPiBmZXRjaCAtPiB2aWRlbyBwbGF5YmFjazog
c2hvdWxkIGZhaWwnLAorICAgICAgICAgICAgICAgIGFjdGlvbiA6ICdwbGF5JywgIHdpdGhrZXkg
OiBmYWxzZSwgIHN1Y2Nlc3MgOiBmYWxzZSwgIHNlcXVlbmNlIDogWycxMDAgRmV0Y2gnXSB9LAor
CisgICAgICAgICAgICB7IHRpdGxlIDogJ2dlc3R1cmUgLT4gZmV0Y2ggLT4gYmxvYiAtPiB3aW5k
b3cub3Blbjogc2hvdWxkIGZhaWwgYmVjYXVzZSBGZXRjaCBvbmx5IHByb3BhZ2F0ZXMgdXNlciBn
ZXN0dXJlIGZvciBtZWRpYScsCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BvcHVwJywgd2l0
aGtleSA6IHRydWUsICBzdWNjZXNzIDogZmFsc2UsICBzZXF1ZW5jZSA6IFsnMTAwIEZldGNoQmxv
YiddIH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiBmZXRjaCAtPiBibG9i
IC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgc3VjY2VlZCcsCisgICAgICAgICAgICAgICAgYWN0
aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDogdHJ1ZSwgIHNlcXVlbmNl
IDogWycxMDAgRmV0Y2hCbG9iJ10gfSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdnZXN0dXJl
IC0+IGZldGNoIC0+ICJsb25nIiBibG9iIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCcs
CisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IHRydWUsICBzdWNj
ZXNzIDogZmFsc2UsICB0aW1lb3V0IDogMC4xLCBzZXF1ZW5jZSA6IFsnMzAwIEZldGNoQmxvYidd
IH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAnbm8gZ2VzdHVyZSAtPiBmZXRjaCAtPiBibG9i
IC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCcsCisgICAgICAgICAgICAgICAgYWN0aW9u
IDogJ3BsYXknLCAgd2l0aGtleSA6IGZhbHNlLCAgc3VjY2VzcyA6IGZhbHNlLCAgc2VxdWVuY2Ug
OiBbJzEwMCBGZXRjaEJsb2InXSB9LAorCisgICAgICAgICAgICB7IHRpdGxlIDogJ25vIGdlc3R1
cmUgLT4gcHJvbWlzZSAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIGZhaWwnLAorICAgICAgICAg
ICAgICAgIGFjdGlvbiA6ICdwbGF5JywgIHdpdGhrZXkgOiBmYWxzZSwgIHN1Y2Nlc3MgOiBmYWxz
ZSwgIHNlcXVlbmNlIDogWycwIHByb21pc2UnXSB9LAorCisgICAgICAgICAgICB7IHRpdGxlIDog
J2dlc3R1cmUgLT4gcHJvbWlzZSAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIGZhaWwgYmVjYXVz
ZSBwcm9taXNlIG9ubHkgcHJvcGFnYXRlcyB1c2VyIGdlc3R1cmUgcHJvcGFnYXRlZCB0aHJvdWdo
IEZldGNoJywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3aXRoa2V5IDogdHJ1
ZSwgIHN1Y2Nlc3MgOiBmYWxzZSwgIHNlcXVlbmNlIDogWycwIHByb21pc2UnXSB9LAorCisgICAg
ICAgICAgICB7IHRpdGxlIDogJ2dlc3R1cmUgLT4gZmV0Y2ggLT4gcHJvbWlzZSAtPiB2aWRlbyBw
bGF5YmFjazogc2hvdWxkIHN1Y2NlZWQnLAorICAgICAgICAgICAgICAgIGFjdGlvbiA6ICdwbGF5
JywgIHdpdGhrZXkgOiB0cnVlLCAgc3VjY2VzcyA6IHRydWUsICBzZXF1ZW5jZSA6IFsnMCBGZXRj
aFRoZW5Qcm9taXNlJ10gfSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdnZXN0dXJlIC0+IGZl
dGNoIC0+IGNyeXB0byAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIGZhaWwgc2luY2UgdGhlIHVz
ZXIgZ2VzdHVyZSB3aWxsIG5vdCBiZSBwcm9wYWdhdGVkIHRocm91Z2ggb3RoZXIgQVBJIGV2ZW4g
dGhvdWdoIGl0IHJldHVybnMgcHJvbWlzZXMnLAorICAgICAgICAgICAgICAgIGFjdGlvbiA6ICdw
bGF5JywgIHdpdGhrZXkgOiB0cnVlLCAgc3VjY2VzcyA6IGZhbHNlLCAgc2VxdWVuY2UgOiBbJzAg
RmV0Y2hUaGVuQ3J5cHRvJ10gfSwKKwogICAgICAgICBdOwogCiAgICAgICAgIGZ1bmN0aW9uIG5l
eHRUZXN0KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCF0ZXN0cy5sZW5ndGgpIHsKICAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoJycpOwotICAgICAgICAgICAgICAgIGVuZFRlc3Qo
KQorICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2Rvd25sb2FkLWhlYWRlci13aXRoLWRlbGF5LnBocCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2Rvd25sb2FkLWhlYWRl
ci13aXRoLWRlbGF5LnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjBiNTc4ZTQ5ZmE0NmJmNjEyNDU5ODUwOWJm
YThlOTJmZTAzYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94
bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZG93bmxvYWQtaGVhZGVyLXdpdGgtZGVsYXkucGhwCkBA
IC0wLDAgKzEsMTQgQEAKKzw/cGhwCiskZGVsYXkgPSAkX0dFVFsnZGVsYXknXTsKK3VzbGVlcCgk
ZGVsYXkgKiAxMDAwKTsKKworaGVhZGVyKCJFeHBpcmVzOiBUaHUsIDAxIERlYyAyMDAzIDE2OjAw
OjAwIEdNVCIpOworaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbm8tc3RvcmUsIG11
c3QtcmV2YWxpZGF0ZSIpOworaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7CitoZWFkZXIoIkNv
bnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1uby1idWZmZXJpbmctcGxlYXNlIik7CisKK2VjaG8g
IiRkZWxheVxuIjsKK2VjaG8gImZvb2JhclxuIjsKK29iX2ZsdXNoKCk7CitmbHVzaCgpOworPz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405130</attachid>
            <date>2020-07-23 23:51:48 -0700</date>
            <delta_ts>2020-07-24 00:03:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214444-20200723235147.patch</filename>
            <type>text/plain</type>
            <size>41837</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0NzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc5Y2E0ZWE2MjI1YzU2
ZWI5ZDYwZWM1NzhiZDc2YzRjNmVhMjgwYy4uMDc0Zjg2ZWRmYjc5NTIxOGIxM2Q3MjcyMmZkYjlk
NTY5YjVjOTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTA3LTIzICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvcGFnYXRpbmcgdXNl
ciBnZXN0dXJlIHRocm91Z2ggRmV0Y2ggQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0NDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1OTgw
OTUzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcHJvcGFnYXRlcyBtZWRpYSBvbmx5IHVzZXIgZ2VzdHVyZXMgdGhyb3VnaCBGZXRj
aCBBUEksIGluY2x1ZGluZyBGZXRjaCBhbmQgRmV0Y2hSZXNwb25zZS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyB0ZXN0IGNvbnRlbnRzLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9ET01X
aW5kb3dGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dGZXRjaDo6ZmV0Y2gp
OgorICAgICAgICBQcm9wYWdhdGVzIG1lZGlhIG9ubHkgdXNlciBnZXN0dXJlcyB0aHJvdWdoIEZl
dGNoLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldENvbnN1bWVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6c2V0TWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpGZXRjaEJvZHlDb25zdW1lcik6CisgICAg
ICAgIFByb3BhZ2F0ZXMgbWVkaWEgb25seSB1c2VyIGdlc3R1cmVzIHRocm91Z2ggRmV0Y2hSZXNw
b25zZS4gVXNlckdlc3R1cmVJbmRpY2F0b3IgaXMgb25seSBzZXQgaW4gdGhlIGFzeW5jIHByb21p
c2UgcmVzb2x2aW5nIHBhdGguCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9v
cCk6CisgICAgICAgIFByb3BhZ2F0ZXMgbWVkaWEgb25seSB1c2VyIGdlc3R1cmVzIHRoYXQgd2Fz
IHByb3BhZ2F0ZWQgdGhyb3VnaCBGZXRjaCB0byB0aGUgcmVsYXRlZCBwcm9taXNlIGV4ZWN1dG9y
cy4KKworICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3I6On5Vc2VyR2VzdHVyZUluZGljYXRv
cik6CisgICAgICAgICogZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpVc2VyR2VzdHVyZVRva2VuOjpzZXRJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2gpOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6cmVzZXRJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6aXNQcm9wYWdhdGVkRnJvbUZl
dGNoIGNvbnN0KToKKyAgICAgICAgQWRkcyBhIGZsYWcgdG8gaW5kaWNhdGUgdGhlIHByb3BhZ2F0
aW9uIHNvdXJjZSBvZiBhIHVzZXIgZ2VzdHVyZSB0b2tlbi4gQW5kIG1ha2VzIHBpcGVsaW5lcyBm
cm9tIHRlc3RpbmcuCisKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgIEdhdGhlcnMgc29tZSBjb25zdGFudHMu
CisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnNldEZldGNoTWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5n
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmlkbDoKKyAgICAgICAgQ3JhZnRzIGEgd2F5IHRvIHBhc3MgdGhlIG1heGltdW0gaW50
ZXJ2YWwgZnJvbSBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KToK
KyAgICAgICAgR2F0aGVycyBzb21lIGNvbnN0YW50cy4KKwogMjAyMC0wNy0yMyAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IG1pc3NpbmcgZXhjZXB0aW9uIGNo
ZWNrcyBiZWxvdyBSVENQZWVyQ29ubmVjdGlvbi5nZW5lcmF0ZUNlcnRpZmljYXRlKCkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0RPTVdpbmRvd0ZldGNoLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2guY3BwCmluZGV4IGRl
YzMxZDk0MGE1NzQ0ZTQ5ZDY1YjZlMTVlNzY0MmM5M2MzMGIzMjYuLjdiNzJlZmFmYWE3OWM4ZDZk
YmI2YjhmY2IxY2E2MWYwODZjOGQ3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRE9NV2luZG93RmV0Y2guY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRmV0
Y2hSZXNwb25zZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVk
ZSAiSlNGZXRjaFJlc3BvbnNlLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Niw3ICs1NywxMyBAQCB2b2lkIERPTVdpbmRv
d0ZldGNoOjpmZXRjaChET01XaW5kb3cmIHdpbmRvdywgRmV0Y2hSZXF1ZXN0OjpJbmZvJiYgaW5w
dXQsIEZldGNoUgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRmV0Y2hSZXNwb25zZTo6
ZmV0Y2goKmRvY3VtZW50LCByZXF1ZXN0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLmdldCgpLCBbcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPEZldGNoUmVzcG9uc2UmPiYmIHJl
c3VsdCkgbXV0YWJsZSB7CisgICAgRmV0Y2hSZXNwb25zZTo6ZmV0Y2goKmRvY3VtZW50LCByZXF1
ZXN0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHVz
ZXJHZXN0dXJlVG9rZW4gPSBVc2VyR2VzdHVyZUluZGljYXRvcjo6Y3VycmVudFVzZXJHZXN0dXJl
KCldKEV4Y2VwdGlvbk9yPEZldGNoUmVzcG9uc2UmPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghdXNlckdlc3R1cmVUb2tlbiB8fCB1c2VyR2VzdHVyZVRva2VuLT5oYXNFeHBpcmVk
KFVzZXJHZXN0dXJlVG9rZW46Om1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGlu
Z0ZvckZldGNoKCkpIHx8ICF1c2VyR2VzdHVyZVRva2VuLT5wcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSkgeworICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9y
IGdlc3R1cmVJbmRpY2F0b3IodXNlckdlc3R1cmVUb2tlbiwgVXNlckdlc3R1cmVUb2tlbjo6R2Vz
dHVyZVNjb3BlOjpNZWRpYU9ubHksIFVzZXJHZXN0dXJlVG9rZW46OklzUHJvcGFnYXRlZEZyb21G
ZXRjaDo6WWVzKTsKICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKaW5kZXggZmE1NmEyMjdhM2I0OTgwNzI1N2JjYTQ2MzMwZDc1OGE5MjlhNDRl
Yi4uOTVjZmI2ZmQzYTBkOTk2MzY1MmNkZDQ1MDM4MTczMWE0ZDliMjNmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTY4
LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIHZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmNsZWFuKCkKIHsKICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgbV9jb25zdW1lUHJv
bWlzZSA9IG51bGxwdHI7CisgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAgIGlmIChtX3Np
bmspIHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVhZGFibGVTdHJlYW0qCiAgICAgfQogCiAgICAg
aWYgKG1faXNMb2FkaW5nKSB7Ci0gICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpOworICAgICAgICBzZXRDb25zdW1lUHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTg5LDkgKzE4OSwxNiBAQCBTdHJpbmcgRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0Q29u
c3VtZVByb21pc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIEFTU0VS
VCghbV9jb25zdW1lUHJvbWlzZSk7CisgICAgbV91c2VyR2VzdHVyZVRva2VuID0gVXNlckdlc3R1
cmVJbmRpY2F0b3I6OmN1cnJlbnRVc2VyR2VzdHVyZSgpOwogICAgIG1fY29uc3VtZVByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpOwogfQogCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENv
bnN1bWVQcm9taXNlKCkKK3sKKyAgICBtX2NvbnN1bWVQcm9taXNlID0gbnVsbHB0cjsKKyAgICBt
X3VzZXJHZXN0dXJlVG9rZW4gPSBudWxscHRyOworfQorCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpzZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3Vy
Y2UgPSBXVEZNb3ZlKHNvdXJjZSk7CkBAIC0yMDYsNyArMjEzLDcgQEAgdm9pZCBGZXRjaEJvZHlD
b25zdW1lcjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKICAgICBt
X2lzTG9hZGluZyA9IGZhbHNlOwogICAgIGlmIChtX2NvbnN1bWVQcm9taXNlKSB7CiAgICAgICAg
IG1fY29uc3VtZVByb21pc2UtPnJlamVjdChleGNlcHRpb24pOwotICAgICAgICBtX2NvbnN1bWVQ
cm9taXNlID0gbnVsbHB0cjsKKyAgICAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAgIH0K
ICAgICBpZiAobV9zb3VyY2UpIHsKICAgICAgICAgbV9zb3VyY2UtPmVycm9yKGV4Y2VwdGlvbik7
CkBAIC0yMTgsOCArMjI1LDE0IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdTdWNj
ZWVkZWQoKQogewogICAgIG1faXNMb2FkaW5nID0gZmFsc2U7CiAKLSAgICBpZiAobV9jb25zdW1l
UHJvbWlzZSkKLSAgICAgICAgcmVzb2x2ZShtX2NvbnN1bWVQcm9taXNlLnJlbGVhc2VOb25OdWxs
KCksIG51bGxwdHIpOworICAgIGlmIChtX2NvbnN1bWVQcm9taXNlKSB7CisgICAgICAgIGlmICgh
bV91c2VyR2VzdHVyZVRva2VuIHx8IG1fdXNlckdlc3R1cmVUb2tlbi0+aGFzRXhwaXJlZChVc2Vy
R2VzdHVyZVRva2VuOjptYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JG
ZXRjaCgpKSB8fCAhbV91c2VyR2VzdHVyZVRva2VuLT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkK
KyAgICAgICAgICAgIHJlc29sdmUobV9jb25zdW1lUHJvbWlzZS5yZWxlYXNlTm9uTnVsbCgpLCBu
dWxscHRyKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yKG1fdXNlckdlc3R1cmVUb2tlbiwgVXNlckdlc3R1cmVUb2tlbjo6
R2VzdHVyZVNjb3BlOjpNZWRpYU9ubHksIFVzZXJHZXN0dXJlVG9rZW46OklzUHJvcGFnYXRlZEZy
b21GZXRjaDo6WWVzKTsKKyAgICAgICAgICAgIHJlc29sdmUobV9jb25zdW1lUHJvbWlzZS5yZWxl
YXNlTm9uTnVsbCgpLCBudWxscHRyKTsKKyAgICAgICAgfQorICAgIH0KICAgICBpZiAobV9zb3Vy
Y2UpIHsKICAgICAgICAgbV9zb3VyY2UtPmNsb3NlKCk7CiAgICAgICAgIG1fc291cmNlID0gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaAppbmRleCAzY2MyNDY0NjA5OTQ4YWQzZmU0ZDIzZDAwNjVjNjg3OWY3NDI2NzgyLi4zZjA4
ZjI1ZTg0YTZkMzk5ZDgzZTI1YTkxZjU0NWQ5ZWE0ZjBjZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0
cmVhbVNpbmsuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJVc2VyR2Vz
dHVyZUluZGljYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDcgKzQ0LDcg
QEAgY2xhc3MgRmV0Y2hCb2R5Q29uc3VtZXIgewogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlw
ZSB7IE5vbmUsIEFycmF5QnVmZmVyLCBCbG9iLCBKU09OLCBUZXh0IH07CiAKLSAgICBGZXRjaEJv
ZHlDb25zdW1lcihUeXBlIHR5cGUpIDogbV90eXBlKHR5cGUpIHsgfQorICAgIGV4cGxpY2l0IEZl
dGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9CiAKICAgICB2b2lk
IGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCk7CiAgICAgdm9pZCBhcHBlbmQoY29u
c3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQpOwpAQCAtNzUsNiArNzYsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgUmVmPEJsb2I+IHRha2VBc0Jsb2IoKTsKKyAgICB2b2lkIHJl
c2V0Q29uc3VtZVByb21pc2UoKTsKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2Nv
bnRlbnRUeXBlOwpAQCAtODMsNiArODUsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZWFkYWJs
ZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlT
b3VyY2U+IG1fc291cmNlOwogICAgIGJvb2wgbV9pc0xvYWRpbmcgeyBmYWxzZSB9OworICAgIFJl
ZlB0cjxVc2VyR2VzdHVyZVRva2VuPiBtX3VzZXJHZXN0dXJlVG9rZW47CisgICAgU2Vjb25kcyBt
X21heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZzsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1
ZXN0LmNwcAppbmRleCBlZmMxNjM1ZWE1NWVlNzQ1MDYwZDkxMjA4ZmQxMDEyZDY5YWVkOWM0Li43
ZWVlZTI5MmFkOTQyMjk4MWQyZWQyNDY5ZDIzOTBiYTE0ZjlhMmEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCkBAIC0yMDcsNiArMjA3LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gRmV0Y2hSZXF1ZXN0Ojppbml0aWFsaXplV2l0aChGZXRjaFJlcXVl
c3QmIGlucHV0LCBJbml0JiYgaW5pdCkKICAgICBtX3JlcXVlc3QgPSBpbnB1dC5tX3JlcXVlc3Q7
CiAgICAgbV9vcHRpb25zID0gaW5wdXQubV9vcHRpb25zOwogICAgIG1fcmVmZXJyZXIgPSBpbnB1
dC5tX3JlZmVycmVyOworICAgIG1fbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJk
aW5nID0gaW5wdXQubV9tYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmc7CiAK
ICAgICBhdXRvIG9wdGlvbnNSZXN1bHQgPSBpbml0aWFsaXplT3B0aW9ucyhpbml0KTsKICAgICBp
ZiAob3B0aW9uc1Jlc3VsdC5oYXNFeGNlcHRpb24oKSkKQEAgLTMzNCw0ICszMzUsMyBAQCBjb25z
dCBjaGFyKiBGZXRjaFJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5oCmluZGV4IDA3OTBkY2IxNGYzZjNhY2U3ZDUxYzE2ZTIyNjU2NDZjNmY5ZmVh
Y2UuLmFiODgwMzcyMGU2OThjMGZlMTQ0ZTMxODQ3MWYyYjUyMDdhOGFhNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaApAQCAtMzQsNiArMzQsNyBAQAog
I2luY2x1ZGUgIkZldGNoT3B0aW9ucy5oIgogI2luY2x1ZGUgIkZldGNoUmVxdWVzdEluaXQuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVyZUluZGlj
YXRvci5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC05OCw2ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcmVmZXJyZXI7CiAgICAg
bXV0YWJsZSBTdHJpbmcgbV9yZXF1ZXN0VVJMOwogICAgIFJlZjxBYm9ydFNpZ25hbD4gbV9zaWdu
YWw7CisgICAgU2Vjb25kcyBtX21heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGlu
ZzsKIH07CiAKIGlubGluZSBGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBPcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNo
SGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlv
bnMmJiBvcHRpb25zLCBTdHJpbmcmJiByZWZlcnJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmlkbAppbmRleCBiZDRiMzcxNWJlNTdiNjQxNjI5ZGRmMjFk
ZDgzMzZlMjFlNjgxY2E5Li42YTNiMDFhZjllNDY0YTJjMTk1ZTQzNzFhZDZmNmFlM2I3MzZmYzc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaWRsCkBA
IC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgKEJsb2Igb3IgQnVmZmVyU291cmNlIG9yIERPTUZvcm1E
YXRhIG9yIFVSTFNlYXJjaFBhcmFtcyBvciBSZWFkYWJsZVN0cmVhCiBbCiAgICAgQWN0aXZlRE9N
T2JqZWN0LAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9RmV0Y2hBUEksCisgICAgRXhwb3J0TWFjcm89
V0VCQ09SRV9FWFBPUlQsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCiAgICAgR2VuZXJh
dGVJc1JlYWNoYWJsZT1JbXBsLAogICAgIEludGVyZmFjZU5hbWU9UmVxdWVzdCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZjg4
ZjgyMzJhNGRlMjgzNGY3NzQ2Y2JjM2Q3MTM4MDk1YmE1ZTFhLi40ZTQxMDIyMDU0NDI0MDc2MTQ1
YWFlMzA0OWFhMzVjZTIwNjhlYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzYwLDYgKzE3NjAsNyBAQAogCQk1NzA0NDA1
QTFFNTM5MzYyMDAzNTY2MDEgLyogSlNBZXNDYmNDZmJQYXJhbXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MDQ0MDU5MUU1MzkzNjIwMDM1NjYwMSAv
KiBKU0Flc0NiY0NmYlBhcmFtcy5oICovOyB9OwogCQk1NzA2QTY5NjFEREU1Qzk1MDBBMDNCMTQg
LyogQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwNkE2OTUxRERFNUM5NTAwQTAzQjE0IC8qIENyeXB0
b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaCAqLzsgfTsKIAkJNTcwNkE2OTgxRERFNUU0NjAwQTAz
QjE0IC8qIEpTUnNhT2FlcFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTcwNkE2OTcxRERFNUU0NjAwQTAzQjE0IC8qIEpTUnNhT2FlcFBhcmFt
cy5oICovOyB9OworCQk1NzA5M0QxMzI0Qzk3QzhGMDA4NkM1MkQgLyogRmV0Y2hSZXNwb25zZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDE1RDYx
QzdCNTcwNDAwMDkxQzZFIC8qIEZldGNoUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzEyNTI2OTFFNTI0RUIxMDA4RkYzNjkgLyog
Q3J5cHRvQWxnb3JpdGhtQUVTX0NGQi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTcxMjUyNjgxRTUyNEVCMTAwOEZGMzY5IC8qIENyeXB0b0FsZ29yaXRo
bUFFU19DRkIuaCAqLzsgfTsKIAkJNTcxNTJCNUEyMUNCM0U4ODAwMEMzN0NBIC8qIEFwZHVDb21t
YW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1
MkI1ODIxQ0IyRTNCMDAwQzM3Q0EgLyogQXBkdUNvbW1hbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzE1MkI1QzIxQ0MxOTAyMDAwQzM3Q0Eg
LyogQXBkdVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NzE1MkI1NjIxQ0IyRTNBMDAwQzM3Q0EgLyogQXBkdVJlc3BvbnNlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE4MTAsNiArMTgx
MSw3IEBACiAJCTU3NTBBOTdFMUU2QTEzRUYwMDcwNUM0QSAvKiBDcnlwdG9BbGdvcml0aG1FY0tl
eVBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTc1MEE5N0QxRTZBMTNFRjAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zLmgg
Ki87IH07CiAJCTU3NTBBOTgyMUU2QTE1MDgwMDcwNUM0QSAvKiBKU0VjS2V5UGFyYW1zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzUwQTk4MDFFNkEx
NTA4MDA3MDVDNEEgLyogSlNFY0tleVBhcmFtcy5oICovOyB9OwogCQk1NzUwQTk4NzFFNkEyMTY4
MDA3MDVDNEEgLyogQ3J5cHRvQWxnb3JpdGhtRUNESC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5ODUxRTZBMjE2ODAwNzA1QzRBIC8qIENyeXB0
b0FsZ29yaXRobUVDREguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1NzUzM0UwODI0QzZDNTk4MDAzRUYyRDMgLyogRmV0Y2hSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUY1NEY4ODFDNTBD
NEY2MDAzMzg0ODggLyogRmV0Y2hSZXF1ZXN0LmggKi87IH07CiAJCTU3NTQ3MTlGMUVDRTYyODMw
MERENjNCMiAvKiBKU1JzYVBzc1BhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTc1NDcxOTkxRUNFNUQyQTAwREQ2M0IyIC8qIEpTUnNhUHNzUGFy
YW1zLmggKi87IH07CiAJCTU3NTg1OTYxMjM5RjEyNEQwMEM3NDU3MiAvKiBKU0F1dGhlbnRpY2F0
aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTVFMjM5RjExNzMwMEM3NDU3MiAvKiBKU0F1dGhlbnRp
Y2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCAqLzsgfTsKIAkJNTc1ODU5NkMyMzlGMzIx
QzAwQzc0NTcyIC8qIEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTY1MjM5RjE0
Q0MwMEM3NDU3MiAvKiBBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMwMDcyLDcg
KzMwMDc0LDYgQEAKIAkJCQk4MzAwMzBGODFCN0QzQjc4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjE2QzFDMDk3OUMzQkQwMDQ2Nzc0MSAv
KiBDYWNoZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE5RkJENUYxNUQyRjQ2NDAwOTY0
MEE2IC8qIENhY2hlZEltYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlDREFDMDY4MzI0
QzZBOTVBMDAyRjcyN0YgLyogVlA5VXRpbGl0aWVzQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzMDdERUQwMUQ4MUU0QzcwMDE0MUNBRiAvKiBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUUzMDdERUQxMUQ4MUU0Q0IwMDE0MUNBRiAvKiBDYWNoZWRNb2R1
bGVTY3JpcHRMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE4NDY5MEIwODYw
MkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNzc5LDExICsz
MDc4MCwxMyBAQAogCQkJCTUxN0E1MzU4MUY1ODg5RTgwMERDREMwQSAvKiBGZXRjaExvYWRlckNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBRDc1M0ExQ0VGNkJEMTAwQTMxNDg2IC8qIEZl
dGNoT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkxNEQxRjJBOUFGQjAwMjcyRjc4
IC8qIEZldGNoUmVmZXJyZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3NTMzRTA4MjRD
NkM1OTgwMDNFRjJEMyAvKiBGZXRjaFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5
MTVBMUYyQTlCMzQwMDI3MkY3OCAvKiBGZXRjaFJlcXVlc3RDYWNoZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0NFMTkxNTUxRjJBOUIxRDAwMjcyRjc4IC8qIEZldGNoUmVxdWVzdENyZWRlbnRpYWxz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE0QTFGMkE5OEI5MDAyNzJGNzggLyogRmV0Y2hS
ZXF1ZXN0SW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkxNTExRjJBOUIwQTAwMjcyRjc4
IC8qIEZldGNoUmVxdWVzdE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5MTYwMUYyQTlC
NEYwMDI3MkY3OCAvKiBGZXRjaFJlcXVlc3RSZWRpcmVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTcwOTNEMTMyNEM5N0M4RjAwODZDNTJEIC8qIEZldGNoUmVzcG9uc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg0NzMwRDhCMTI0OEYwQjMwMEQzQTlDOSAvKiBGRVRpbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg0NzMwRDhEMTI0OEYwQjMwMEQzQTlDOSAvKiBGRVR1cmJ1bGVuY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDk1MTJCMDI2RjcwMEMxQTM1OSAvKiBGRlRDb252b2x2ZXIuaCBp
biBIZWFkZXJzICovLApAQCAtMzExNDUsNyArMzExNDgsNiBAQAogCQkJCTUxOURCQzZGMURDMDEx
QTcwMDMyOUJGNSAvKiBJREJHZXRBbGxSZWNvcmRzRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE5REJDNzIxREMxMEY1MjAwMzI5QkY1IC8qIElEQkdldEFsbFJlc3VsdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTEwNUYwNjkxRDRCQTlEOTAwRkI4MEJDIC8qIElEQkdldFJlY29yZERhdGEuaCBp
biBIZWFkZXJzICovLAotCQkJCUNEOUNDNTg1MjRDNkJCRUIwMENEM0M2NCAvKiBWUDlVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODVGQzhGMUJCNEM0RTgwMDEyODk4RiAvKiBJREJH
ZXRSZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODVGQzkxMUJCNEM0RTgwMDEyODk4RiAv
KiBJREJJbmRleC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNzk4RjAxQkU4ODBFNzAwOEFFNDkx
IC8qIElEQkluZGV4SW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzgyNiw2ICszMzgyOCw4IEBA
CiAJCQkJNDE5QkMyREYxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQkE4MDAwMTg5NzM0MTIwMERDRTlENiAvKiBWaXNpdGVkTGlua1N0
b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQ2MTNCNjBDRDYzNDRFMDBGQURBNzUgLyogVm9p
ZENhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDlDQzU4NTI0QzZCQkVCMDBDRDNDNjQg
LyogVlA5VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREFDMDY4MzI0QzZBOTVBMDAy
RjcyN0YgLyogVlA5VXRpbGl0aWVzQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJCUJFMjA1MDdB
MThBNDU4NkIwMDgwNjQ3RSAvKiBWVFRDdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRjlCMjAz
MThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRjlC
MjA2MThDRkIyREYwMEM2NEJFRiAvKiBWVFRSZWdpb25MaXN0LmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGFj
ZWE3NjZhZjFjN2Q1ZmVlYWUxN2E2OWY5ZTNiMzVjZGVlOWE4OGMuLmNiZWM3ZDJkOWEyN2RjYWMx
ZTgwOGRlZjFjNGQxMGRiMDM5M2ZkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjE1LDcgKzIxNSwxNyBAQCB2b2lkIEpTRE9NV2lu
ZG93QmFzZTo6cXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9vcChKU0dsb2JhbE9iamVjdCYgb2JqZWN0
LCBSZWY8SlNDOgogCiAgICAgYXV0byBjYWxsYmFjayA9IEpTTWljcm90YXNrQ2FsbGJhY2s6OmNy
ZWF0ZSh0aGlzT2JqZWN0LCBXVEZNb3ZlKHRhc2spKTsKICAgICBhdXRvJiBldmVudExvb3AgPSB0
aGlzT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXZlbnRMb29wKCk7Ci0gICAgZXZl
bnRMb29wLnF1ZXVlTWljcm90YXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11
dGFibGUgeworICAgIC8vIFByb3BvZ2F0aW5nIG1lZGlhIG9ubHkgdXNlciBnZXN0dXJlIGZvciBG
ZXRjaCBBUEkncyBwcm9taXNlIGNoYWluLgorICAgIGF1dG8gdXNlckdlc3R1cmVUb2tlbiA9IFVz
ZXJHZXN0dXJlSW5kaWNhdG9yOjpjdXJyZW50VXNlckdlc3R1cmUoKTsKKyAgICAvLyBNZXRhZGF0
YSBzdWNoIGFzIHRoZSBzY29wZSBhbmQgaXNQcm9wYWdhdGVkRnJvbUZldGNoIHdpbGwgYmUgcmVz
ZXQgb25jZSB0aGUgVXNlckdlc3R1cmVJbmRpY2F0b3IgaXMgZGVzdHJveWVkLgorICAgIGJvb2wg
aXNQcm9wYWdhdGVkVG9OZXh0TWljcm90YXNrID0gdXNlckdlc3R1cmVUb2tlbiAmJiB1c2VyR2Vz
dHVyZVRva2VuLT5pc1Byb3BhZ2F0ZWRGcm9tRmV0Y2goKTsKKyAgICBldmVudExvb3AucXVldWVN
aWNyb3Rhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGlzUHJvcGFnYXRlZFRvTmV4
dE1pY3JvdGFzaywgdXNlckdlc3R1cmVUb2tlbiA9IFdURk1vdmUodXNlckdlc3R1cmVUb2tlbild
KCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghaXNQcm9wYWdhdGVkVG9OZXh0TWljcm90YXNrKSB7
CisgICAgICAgICAgICBjYWxsYmFjay0+Y2FsbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih1
c2VyR2VzdHVyZVRva2VuLCBVc2VyR2VzdHVyZVRva2VuOjpHZXN0dXJlU2NvcGU6Ok1lZGlhT25s
eSwgVXNlckdlc3R1cmVUb2tlbjo6SXNQcm9wYWdhdGVkRnJvbUZldGNoOjpZZXMpOwogICAgICAg
ICBjYWxsYmFjay0+Y2FsbCgpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2Vy
R2VzdHVyZUluZGljYXRvci5jcHAKaW5kZXggZGZlYzkzYjY0NGY3MmE1MWJhZDBiZWJmMzk2ZGE2
MWM1N2Y2ZTQyOC4uNzQ0Y2EyZTkwZDY3YzUzYTJiNTRmZjE3YzM4M2Q1OGM4ZDVhOTM1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwCkBAIC00OSw2ICs0
OSwxNyBAQCBVc2VyR2VzdHVyZVRva2VuOjp+VXNlckdlc3R1cmVUb2tlbigpCiAgICAgICAgIG9i
c2VydmVyKCp0aGlzKTsKIH0KIAorc3RhdGljIFNlY29uZHMgbWF4SW50ZXJ2YWxGb3JVc2VyR2Vz
dHVyZUZvcndhcmRpbmdGb3JGZXRjaCB7IDEwIH07Citjb25zdCBTZWNvbmRzJiBVc2VyR2VzdHVy
ZVRva2VuOjptYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JGZXRjaCgp
Cit7CisgICAgcmV0dXJuIG1heEludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0
Y2g7Cit9CisKK3ZvaWQgVXNlckdlc3R1cmVUb2tlbjo6c2V0TWF4aW11bUludGVydmFsRm9yVXNl
ckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0Y2hGb3JUZXN0aW5nKFNlY29uZHMmJiB2YWx1ZSkKK3sK
KyAgICBtYXhJbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoID0gV1RGTW92
ZSh2YWx1ZSk7Cit9CisKIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpVc2VyR2VzdHVyZUluZGljYXRv
cihPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4gc3RhdGUsIERvY3VtZW50KiBk
b2N1bWVudCwgVXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBQcm9jZXNzSW50ZXJhY3Rpb25T
dHlsZSBwcm9jZXNzSW50ZXJhY3Rpb25TdHlsZSkKICAgICA6IG1fcHJldmlvdXNUb2tlbiB7IGN1
cnJlbnRUb2tlbigpIH0KIHsKQEAgLTc0LDcgKzg1LDcgQEAgVXNlckdlc3R1cmVJbmRpY2F0b3I6
OlVzZXJHZXN0dXJlSW5kaWNhdG9yKE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRl
PgogICAgIH0KIH0KIAotVXNlckdlc3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9y
KFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiB0b2tlbiwgVXNlckdlc3R1cmVUb2tlbjo6R2VzdHVy
ZVNjb3BlIHNjb3BlKQorVXNlckdlc3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9y
KFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiB0b2tlbiwgVXNlckdlc3R1cmVUb2tlbjo6R2VzdHVy
ZVNjb3BlIHNjb3BlLCBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2ggaXNQ
cm9wYWdhdGVkRnJvbUZldGNoKQogewogICAgIC8vIFNpbGVudGx5IGlnbm9yZSBVc2VyR2VzdHVy
ZUluZGljYXRvcnMgb24gbm9uIG1haW4gdGhyZWFkcy4KICAgICBpZiAoIWlzTWFpblRocmVhZCgp
KQpAQCAtODUsNiArOTYsNyBAQCBVc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRp
Y2F0b3IoUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IHRva2VuLCBVc2VyRwogCiAgICAgaWYgKHRv
a2VuKSB7CiAgICAgICAgIHRva2VuLT5zZXRTY29wZShzY29wZSk7CisgICAgICAgIHRva2VuLT5z
ZXRJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2goaXNQcm9wYWdhdGVkRnJvbUZldGNoKTsKICAgICAgICAg
Y3VycmVudFRva2VuKCkgPSB0b2tlbjsKICAgICB9CiB9CkBAIC05Nyw2ICsxMDksNyBAQCBVc2Vy
R2VzdHVyZUluZGljYXRvcjo6flVzZXJHZXN0dXJlSW5kaWNhdG9yKCkKICAgICBpZiAoYXV0byB0
b2tlbiA9IGN1cnJlbnRUb2tlbigpKSB7CiAgICAgICAgIHRva2VuLT5yZXNldERPTVBhc3RlQWNj
ZXNzKCk7CiAgICAgICAgIHRva2VuLT5yZXNldFNjb3BlKCk7CisgICAgICAgIHRva2VuLT5yZXNl
dElzUHJvcGFnYXRlZEZyb21GZXRjaCgpOwogICAgIH0KIAogICAgIGN1cnJlbnRUb2tlbigpID0g
bV9wcmV2aW91c1Rva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0
dXJlSW5kaWNhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3Iu
aAppbmRleCAzY2YzMjc3NmMwMmFiNzA4ODhkM2YzYTBiZTdjOTcyZmU0MWJlMmRjLi42NTEyZmIx
MmIzNDFkZTMyY2M2NjY1MTVlZjhhMGU4NDJiMzYwZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VXNlckdlc3R1cmVJbmRpY2F0b3IuaApAQCAtNDcsNiArNDcsMTAgQEAgZW51bSBjbGFzcyBVc2Vy
R2VzdHVyZVR5cGUgeyBFc2NhcGVLZXksIE90aGVyIH07CiAKIGNsYXNzIFVzZXJHZXN0dXJlVG9r
ZW4gOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyR2VzdHVyZVRva2VuPiwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFVzZXJHZXN0dXJlVG9rZW4+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgY29uc3RleHBy
IFNlY29uZHMgbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nIHsgMV9zIH07
IC8vIE9uZSBzZWNvbmQgbWF0Y2hlcyBHZWNrby4KKyAgICBzdGF0aWMgY29uc3QgU2Vjb25kcyYg
bWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0Y2goKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVy
ZUZvcndhcmRpbmdGb3JGZXRjaEZvclRlc3RpbmcoU2Vjb25kcyYmKTsKKwogICAgIHN0YXRpYyBS
ZWY8VXNlckdlc3R1cmVUb2tlbj4gY3JlYXRlKFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIHN0
YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBVc2VyR2VzdHVyZVRva2VuKHN0YXRlLCBnZXN0dXJlVHlwZSkpOwpAQCAt
ODQsNiArODgsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2NvcGUoR2VzdHVyZVNjb3BlIHNj
b3BlKSB7IG1fc2NvcGUgPSBzY29wZTsgfQogICAgIHZvaWQgcmVzZXRTY29wZSgpIHsgbV9zY29w
ZSA9IEdlc3R1cmVTY29wZTo6QWxsOyB9CiAKKyAgICAvLyBFeHBhbmQgdGhlIGZvbGxvd2luZyBt
ZXRob2RzIGlmIG1vcmUgcHJvZ29nYXRpb24gc291cmNlcyBhcmUgYWRkZWQgbGF0ZXIuCisgICAg
ZW51bSBjbGFzcyBJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2ggeyBZZXMsIE5vIH07CisgICAgdm9pZCBz
ZXRJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2goSXNQcm9wYWdhdGVkRnJvbUZldGNoIGlzKSB7IG1faXNQ
cm9wYWdhdGVkRnJvbUZldGNoID0gaXM7IH0KKyAgICB2b2lkIHJlc2V0SXNQcm9wYWdhdGVkRnJv
bUZldGNoKCkgeyBtX2lzUHJvcGFnYXRlZEZyb21GZXRjaCA9IElzUHJvcGFnYXRlZEZyb21GZXRj
aDo6Tm87IH0KKyAgICBib29sIGlzUHJvcGFnYXRlZEZyb21GZXRjaCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNQcm9wYWdhdGVkRnJvbUZldGNoID09IElzUHJvcGFnYXRlZEZyb21GZXRjaDo6WWVzOyB9
CisKICAgICBib29sIGhhc0V4cGlyZWQoU2Vjb25kcyBleHBpcmF0aW9uSW50ZXJ2YWwpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9zdGFydFRpbWUgKyBleHBpcmF0aW9uSW50ZXJ2YWwg
PCBNb25vdG9uaWNUaW1lOjpub3coKTsKQEAgLTEwNCw2ICsxMTQsNyBAQCBwcml2YXRlOgogICAg
IERPTVBhc3RlQWNjZXNzUG9saWN5IG1fZG9tUGFzdGVBY2Nlc3NQb2xpY3kgeyBET01QYXN0ZUFj
Y2Vzc1BvbGljeTo6Tm90UmVxdWVzdGVkWWV0IH07CiAgICAgR2VzdHVyZVNjb3BlIG1fc2NvcGUg
eyBHZXN0dXJlU2NvcGU6OkFsbCB9OwogICAgIE1vbm90b25pY1RpbWUgbV9zdGFydFRpbWUgeyBN
b25vdG9uaWNUaW1lOjpub3coKSB9OworICAgIElzUHJvcGFnYXRlZEZyb21GZXRjaCBtX2lzUHJv
cGFnYXRlZEZyb21GZXRjaCB7IElzUHJvcGFnYXRlZEZyb21GZXRjaDo6Tm8gfTsKIH07CiAKIGNs
YXNzIFVzZXJHZXN0dXJlSW5kaWNhdG9yIHsKQEAgLTExOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAg
ICAgLy8gSWYgYSBkb2N1bWVudCBpcyBwcm92aWRlZCwgaXRzIGxhc3Qga25vd24gdXNlciBnZXN0
dXJlIHRpbWVzdGFtcCBpcyB1cGRhdGVkLgogICAgIGVudW0gY2xhc3MgUHJvY2Vzc0ludGVyYWN0
aW9uU3R5bGUgeyBJbW1lZGlhdGUsIERlbGF5ZWQgfTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBVc2VyR2VzdHVyZUluZGljYXRvcihPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVT
dGF0ZT4sIERvY3VtZW50KiA9IG51bGxwdHIsIFVzZXJHZXN0dXJlVHlwZSA9IFVzZXJHZXN0dXJl
VHlwZTo6T3RoZXIsIFByb2Nlc3NJbnRlcmFjdGlvblN0eWxlID0gUHJvY2Vzc0ludGVyYWN0aW9u
U3R5bGU6OkltbWVkaWF0ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgVXNlckdlc3R1
cmVJbmRpY2F0b3IoUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+LCBVc2VyR2VzdHVyZVRva2VuOjpH
ZXN0dXJlU2NvcGUgPSBVc2VyR2VzdHVyZVRva2VuOjpHZXN0dXJlU2NvcGU6OkFsbCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgVXNlckdlc3R1cmVJbmRpY2F0b3IoUmVmUHRyPFVzZXJH
ZXN0dXJlVG9rZW4+LCBVc2VyR2VzdHVyZVRva2VuOjpHZXN0dXJlU2NvcGUgPSBVc2VyR2VzdHVy
ZVRva2VuOjpHZXN0dXJlU2NvcGU6OkFsbCwgVXNlckdlc3R1cmVUb2tlbjo6SXNQcm9wYWdhdGVk
RnJvbUZldGNoID0gVXNlckdlc3R1cmVUb2tlbjo6SXNQcm9wYWdhdGVkRnJvbUZldGNoOjpObyk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgflVzZXJHZXN0dXJlSW5kaWNhdG9yKCk7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCmluZGV4IGIyMTNhOTljOGFmZjAxOGQxODg3ZWNmNzQ0
MmE0M2FjYjZiZDE0NTguLjViOTMxZWZhMWYwM2FiYTlmNjc5Zjc5NTJkZDlhZGY3M2M4MTYxYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IFNlY29uZHMgbWF4SW50ZXJ2YWxGb3JVc2VyR2Vz
dHVyZUZvcndhcmRpbmcgeyAxX3MgfTsgLy8gT25lIHNlY29uZCBtYXRjaGVzIEdlY2tvLgogc3Rh
dGljIGNvbnN0IFNlY29uZHMgbWluSW50ZXJ2YWxGb3JOb25Vc2VyT2JzZXJ2YWJsZUNoYW5nZVRp
bWVycyB7IDFfcyB9OyAvLyBFbXBpcmljYWxseSBkZXRlcm1pbmVkIHRvIG1heGltaXplIGJhdHRl
cnkgbGlmZS4KIHN0YXRpYyBjb25zdCBpbnQgbWF4VGltZXJOZXN0aW5nTGV2ZWwgPSA1OwogCkBA
IC0zMDEsNyArMzAwLDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogCiAgICAgRE9NVGltZXJG
aXJlU3RhdGUgZmlyZVN0YXRlKGNvbnRleHQsIHN0ZDo6bWluKG1fbmVzdGluZ0xldmVsICsgMSwg
bWF4VGltZXJOZXN0aW5nTGV2ZWwpKTsKIAotICAgIGlmIChtX3VzZXJHZXN0dXJlVG9rZW5Ub0Zv
cndhcmQgJiYgbV91c2VyR2VzdHVyZVRva2VuVG9Gb3J3YXJkLT5oYXNFeHBpcmVkKG1heEludGVy
dmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKSkKKyAgICBpZiAobV91c2VyR2VzdHVyZVRva2Vu
VG9Gb3J3YXJkICYmIG1fdXNlckdlc3R1cmVUb2tlblRvRm9yd2FyZC0+aGFzRXhwaXJlZChVc2Vy
R2VzdHVyZVRva2VuOjptYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcpKQog
ICAgICAgICBtX3VzZXJHZXN0dXJlVG9rZW5Ub0ZvcndhcmQgPSBudWxscHRyOwogCiAgICAgQVNT
RVJUKCFpc1N1c3BlbmRlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCBhY2JmZWRjNmQ3MmIxNmZiMzkwNjNkMTA1MGYwNDY4YjAyYzE5OWJiLi5mMmEwODZlOGUwZjA2
NDQ3YmExZWU1YmQ4MDQ5NjhkNGE5MjIwMWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC03Niw2ICs3Niw3IEBACiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1
ZGUgIkV4dGVuZGFibGVFdmVudC5oIgogI2luY2x1ZGUgIkV4dGVuc2lvblN0eWxlU2hlZXRzLmgi
CisjaW5jbHVkZSAiRmV0Y2hSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRmV0Y2hSZXNwb25zZS5oIgog
I2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKQEAgLTU2NzIsOSArNTY3
Myw5IEBAIHZvaWQgSW50ZXJuYWxzOjp0ZXN0RGljdGlvbmFyeUxvZ2dpbmcoKQogICAgIHBhZ2Ut
PmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWVE
aWN0aW9uYXJ5KCJ0ZXN0TWVzc2FnZSJfcywgInRlc3REZXNjcmlwdGlvbiJfcywgZGljdGlvbmFy
eSwgU2hvdWxkU2FtcGxlOjpObyk7CiB9CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRYSFJNYXhpbXVt
SW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoWE1MSHR0cFJlcXVlc3QmIHJlcXVlc3Qs
IGRvdWJsZSBpbnRlcnZhbCkKK3ZvaWQgSW50ZXJuYWxzOjpzZXRNYXhpbXVtSW50ZXJ2YWxGb3JV
c2VyR2VzdHVyZUZvcndhcmRpbmdGb3JGZXRjaChkb3VibGUgaW50ZXJ2YWwpCiB7Ci0gICAgcmVx
dWVzdC5zZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoaW50ZXJ2YWwp
OworICAgIFVzZXJHZXN0dXJlVG9rZW46OnNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJl
Rm9yd2FyZGluZ0ZvckZldGNoRm9yVGVzdGluZyhTZWNvbmRzKGludGVydmFsKSk7CiB9CiAKIHZv
aWQgSW50ZXJuYWxzOjpzZXRUcmFuc2llbnRBY3RpdmF0aW9uRHVyYXRpb24oZG91YmxlIHNlY29u
ZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA4NDNlZGZhMDQ4MTQ0M2E0MWIx
YTEwN2YwMmM5NWYwMDMwOGRmMGVhLi4wMTVhZmVkYjEyZDU0NDNlZjFlMzlmNTdhYjA2YWVkYzU5
ZjYwOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTY0LDYgKzY0LDcgQEAg
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRXZlbnRMaXN0ZW5lcjsKIGNs
YXNzIEV4dGVuZGFibGVFdmVudDsKK2NsYXNzIEZldGNoUmVxdWVzdDsKIGNsYXNzIEZldGNoUmVz
cG9uc2U7CiBjbGFzcyBGaWxlOwogY2xhc3MgRnJhbWU7CkBAIC05NjEsNyArOTYyLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCB0ZXN0RGljdGlvbmFyeUxvZ2dpbmcoKTsKIAotICAgIHZvaWQgc2V0
WEhSTWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKFhNTEh0dHBSZXF1ZXN0
JiwgZG91YmxlKTsKKyAgICB2b2lkIHNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9y
d2FyZGluZ0ZvckZldGNoKGRvdWJsZSk7CiAgICAgdm9pZCBzZXRUcmFuc2llbnRBY3RpdmF0aW9u
RHVyYXRpb24oZG91YmxlIHNlY29uZHMpOwogCiAgICAgdm9pZCBzZXRJc1BsYXlpbmdUb0F1dG9t
b3RpdmVIZWFkVW5pdChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRl
eCBlN2Y2NjUzY2EwODRjNDI1YTE5YzFhZGE3Yjc3MGVlMDViOGI2N2VhLi43ZjI5YjdjMGU4NWE0
MmIxMmY5ZWFhODdjNTBkODBmYWEwMDI4ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCkBAIC05MDcsNyArOTA3LDcgQEAgZW51bSBDb250ZW50U2l6ZUNhdGVnb3J5IHsKIAog
ICAgIHZvaWQgdGVzdERpY3Rpb25hcnlMb2dnaW5nKCk7CiAKLSAgICB2b2lkIHNldFhIUk1heGlt
dW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhYTUxIdHRwUmVxdWVzdCB4aHIsIGRv
dWJsZSBpbnRlcnZhbCk7CisgICAgdm9pZCBzZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVy
ZUZvcndhcmRpbmdGb3JGZXRjaChkb3VibGUgaW50ZXJ2YWwpOwogICAgIHZvaWQgc2V0VHJhbnNp
ZW50QWN0aXZhdGlvbkR1cmF0aW9uKGRvdWJsZSBzZWNvbmRzKTsKIAogICAgIHZvaWQgc2V0SXNQ
bGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoYm9vbGVhbiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBjNmZhNDhiODhmYjVmYzYyNzcwMTY5NzU4ODY4ZTMy
ZjEzODk3NDA5Li4yZmI0NGMyMDgxOGViZDRiMzRiODk3NTM5M2Q0OTRhZmJkMjU1ZTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTY3LDggKzY3LDYgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgU2Vjb25kcyBtYXhpbXVtSW50ZXJ2YWxG
b3JVc2VyR2VzdHVyZUZvcndhcmRpbmcgeyAxMF9zIH07Ci0KIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChYTUxIdHRwUmVxdWVzdCk7CiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6
OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgeG1sSHR0cFJlcXVlc3RDb3VudGVyLCAoIlhNTEh0dHBS
ZXF1ZXN0IikpOwpAQCAtMTIxLDcgKzExOSw2IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9yZXNwb25zZVR5
cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpKQogICAg
ICwgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUoKnRoaXMpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigq
dGhpcywgJlhNTEh0dHBSZXF1ZXN0OjpkaWRSZWFjaFRpbWVvdXQpCi0gICAgLCBtX21heGltdW1J
bnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhtYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2Vz
dHVyZUZvcndhcmRpbmcpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIHhtbEh0dHBSZXF1ZXN0Q291
bnRlci5pbmNyZW1lbnQoKTsKQEAgLTEwODEsNyArMTA3OCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSk7
CiAKLSAgICBpZiAobV91c2VyR2VzdHVyZVRva2VuICYmIG1fdXNlckdlc3R1cmVUb2tlbi0+aGFz
RXhwaXJlZChtX21heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZykpCisgICAg
aWYgKG1fdXNlckdlc3R1cmVUb2tlbiAmJiBtX3VzZXJHZXN0dXJlVG9rZW4tPmhhc0V4cGlyZWQo
VXNlckdlc3R1cmVUb2tlbjo6bWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5n
Rm9yRmV0Y2goKSkpCiAgICAgICAgIG1fdXNlckdlc3R1cmVUb2tlbiA9IG51bGxwdHI7CiAKICAg
ICBpZiAocmVhZHlTdGF0ZSgpICE9IERPTkUgfHwgIW1fdXNlckdlc3R1cmVUb2tlbiB8fCAhbV91
c2VyR2VzdHVyZVRva2VuLT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgewpAQCAtMTE1NiwxMSAr
MTE1Myw2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNvbnRleHREZXN0cm95ZWQoKQogICAgIEFj
dGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1
ZXN0OjpzZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoZG91YmxlIGlu
dGVydmFsKQotewotICAgIG1fbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5n
ID0gU2Vjb25kcyhpbnRlcnZhbCk7ICAgIAotfQotCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpldmVu
dExpc3RlbmVyc0RpZENoYW5nZSgpCiB7CiAgICAgbV9oYXNSZWxldmFudEV2ZW50TGlzdGVuZXIg
PSBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuYWJvcnRFdmVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggZDU0N2M2OTZmMmQ3Y2Y3NjEzODQzM2EyNGIwYmFhNGQ3
ZjlhOGE5NS4uMDc1OGJjZDhhNmQ4MjhmNzdhN2I5MmY1NjIyY2ZhMWQwNjM1YmJiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTEyOCw4ICsxMjgsNiBAQCBwdWJsaWM6CiAK
ICAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoZG91YmxlKTsKLQog
ICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50OwogICAgIHZvaWQgZGlzcGF0Y2hF
dmVudChFdmVudCYpIG92ZXJyaWRlOwogCkBAIC0yNDcsNyArMjQ1LDYgQEAgcHJpdmF0ZToKIAog
ICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IG1fZXhjZXB0aW9uQ29kZTsKICAgICBSZWZQdHI8
VXNlckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRva2VuOwotICAgIFNlY29uZHMgbV9tYXhp
bXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmc7CiAgICAgYm9vbCBtX2hhc1JlbGV2
YW50RXZlbnRMaXN0ZW5lciB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2ExY2RlNTIyN2NkZDAw
YjEyZGYwNjU3NjkyZTI4ZGE4M2IzNTk5ZC4uNWQ1YzQ4NTljOWE3ZTkyMDkxNGM0YTQzN2Y3Nzk5
YWYwMGQ4NTAwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA3LTIzICBKaWV3ZW4gVGFu
ICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvcGFnYXRpbmcgdXNlciBnZXN0
dXJlIHRocm91Z2ggRmV0Y2ggQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTQ0NDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1OTgwOTUzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90
ZXN0cy9tZWRpYS91c2VyLWdlc3R1cmUtcHJlc2VydmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9tZWRpYS91c2VyLWdlc3R1cmUtcHJl
c2VydmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2Rvd25sb2FkLWhlYWRlci13aXRoLWRlbGF5LnBocDog
QWRkZWQuCisKIDIwMjAtMDctMjMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBtaXNzaW5nIGV4Y2VwdGlvbiBjaGVja3MgYmVsb3cgUlRDUGVlckNvbm5lY3Rp
b24uZ2VuZXJhdGVDZXJ0aWZpY2F0ZSgpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9tZWRpYS91c2VyLWdlc3R1cmUtcHJlc2VydmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1w
cmVzZXJ2ZWQtYWNyb3NzLXhtbGh0dHByZXF1ZXN0LWV4cGVjdGVkLnR4dAppbmRleCAzMWM4NTRj
ZmU4ZmRkMjE0NWU5YmE1ZTU2YmI2ZGZhYzMzYzMyZGE3Li5jOTlhZDk3ZTYwYjMxZWMwN2E3YTJk
M2M0NTc3YTVjZDMyNjFmODEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21l
ZGlhL3VzZXItZ2VzdHVyZS1wcmVzZXJ2ZWQtYWNyb3NzLXhtbGh0dHByZXF1ZXN0LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1wcmVz
ZXJ2ZWQtYWNyb3NzLXhtbGh0dHByZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtNTIsNSArNTIsOTEg
QEAgRVZFTlQobG9hZCk6IHJlYWR5U3RhdGUgPSA0CiBSVU4oc2hvdWxkUmVqZWN0KG1lZGlhRWxl
bWVudC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxldGUpKQogUHJvbWlzZSBy
ZWplY3RlZCBjb3JyZWN0bHkgT0sKIAorKiogZ2VzdHVyZSAtPiBmZXRjaCAtPiB3aW5kb3cub3Bl
bjogc2hvdWxkIGZhaWwgYmVjYXVzZSBGZXRjaCBvbmx5IHByb3BhZ2F0ZXMgdXNlciBnZXN0dXJl
IGZvciBtZWRpYQorZmV0Y2hpbmcsIGRlbGF5ID0gMTAwCitGRVRDSChyZXNvbHZlZCk6IHN0YXR1
cyA9IDIwMAorRVhQRUNURUQgKHdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIpID09ICdudWxsJykg
T0sKKworKiogZ2VzdHVyZSAtPiBmZXRjaCAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIHN1Y2Nl
ZWQKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorZmV0Y2hpbmcsIGRlbGF5ID0gMTAwCitGRVRDSChy
ZXNvbHZlZCk6IHN0YXR1cyA9IDIwMAorUlVOKHNob3VsZFJlc29sdmUobWVkaWFFbGVtZW50LnBs
YXkoKSkudGhlbih0ZXN0Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCitQcm9taXNlIHJlc29sdmVk
IE9LCisKKyoqIGdlc3R1cmUgLT4gImxvbmciIEZldGNoIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91
bGQgZmFpbAorRVZFTlQoY2FucGxheXRocm91Z2gpCitmZXRjaGluZywgZGVsYXkgPSAzMDAKK0ZF
VENIKHJlc29sdmVkKTogc3RhdHVzID0gMjAwCitSVU4oc2hvdWxkUmVqZWN0KG1lZGlhRWxlbWVu
dC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxldGUpKQorUHJvbWlzZSByZWpl
Y3RlZCBjb3JyZWN0bHkgT0sKKworKiogbm8gZ2VzdHVyZSAtPiBmZXRjaCAtPiB2aWRlbyBwbGF5
YmFjazogc2hvdWxkIGZhaWwKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorZmV0Y2hpbmcsIGRlbGF5
ID0gMTAwCitGRVRDSChyZXNvbHZlZCk6IHN0YXR1cyA9IDIwMAorUlVOKHNob3VsZFJlamVjdCht
ZWRpYUVsZW1lbnQucGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1By
b21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5IE9LCisKKyoqIGdlc3R1cmUgLT4gZmV0Y2ggLT4gYmxv
YiAtPiB3aW5kb3cub3Blbjogc2hvdWxkIGZhaWwgYmVjYXVzZSBGZXRjaCBvbmx5IHByb3BhZ2F0
ZXMgdXNlciBnZXN0dXJlIGZvciBtZWRpYQorZmV0Y2hpbmcgYmxvYiwgZGVsYXkgPSAxMDAKK0ZF
VENIKHJlc29sdmVkKTogc3RhdHVzID0gMjAwCitGRVRDSChyZXNwb25zZSByZXNvbHZlZCkKK0VY
UEVDVEVEICh3aW5kb3cub3BlbigiYWJvdXQ6YmxhbmsiKSA9PSAnbnVsbCcpIE9LCisKKyoqIGdl
c3R1cmUgLT4gZmV0Y2ggLT4gYmxvYiAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIHN1Y2NlZWQK
K0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorZmV0Y2hpbmcgYmxvYiwgZGVsYXkgPSAxMDAKK0ZFVENI
KHJlc29sdmVkKTogc3RhdHVzID0gMjAwCitGRVRDSChyZXNwb25zZSByZXNvbHZlZCkKK1JVTihz
aG91bGRSZXNvbHZlKG1lZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRlLCB0ZXN0
Q29tcGxldGUpKQorUHJvbWlzZSByZXNvbHZlZCBPSworCisqKiBnZXN0dXJlIC0+IGZldGNoIC0+
ICJsb25nIiBibG9iIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbAorRVZFTlQoY2FucGxh
eXRocm91Z2gpCitmZXRjaGluZyBibG9iLCBkZWxheSA9IDMwMAorRkVUQ0gocmVzb2x2ZWQpOiBz
dGF0dXMgPSAyMDAKK0ZFVENIKHJlc3BvbnNlIHJlc29sdmVkKQorUlVOKHNob3VsZFJlamVjdCht
ZWRpYUVsZW1lbnQucGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1By
b21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5IE9LCisKKyoqIG5vIGdlc3R1cmUgLT4gZmV0Y2ggLT4g
YmxvYiAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIGZhaWwKK0VWRU5UKGNhbnBsYXl0aHJvdWdo
KQorZmV0Y2hpbmcgYmxvYiwgZGVsYXkgPSAxMDAKK0ZFVENIKHJlc29sdmVkKTogc3RhdHVzID0g
MjAwCitGRVRDSChyZXNwb25zZSByZXNvbHZlZCkKK1JVTihzaG91bGRSZWplY3QobWVkaWFFbGVt
ZW50LnBsYXkoKSkudGhlbih0ZXN0Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCitQcm9taXNlIHJl
amVjdGVkIGNvcnJlY3RseSBPSworCisqKiBubyBnZXN0dXJlIC0+IHByb21pc2UgLT4gdmlkZW8g
cGxheWJhY2s6IHNob3VsZCBmYWlsCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK3Byb21pc2UKK1BS
T01JU0UocmVzb2x2ZWQpCitSVU4oc2hvdWxkUmVqZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRo
ZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxldGUpKQorUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0
bHkgT0sKKworKiogZ2VzdHVyZSAtPiBwcm9taXNlIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQg
ZmFpbCBiZWNhdXNlIHByb21pc2Ugb25seSBwcm9wYWdhdGVzIHVzZXIgZ2VzdHVyZSBwcm9wYWdh
dGVkIHRocm91Z2ggRmV0Y2gKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorcHJvbWlzZQorUFJPTUlT
RShyZXNvbHZlZCkKK1JVTihzaG91bGRSZWplY3QobWVkaWFFbGVtZW50LnBsYXkoKSkudGhlbih0
ZXN0Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCitQcm9taXNlIHJlamVjdGVkIGNvcnJlY3RseSBP
SworCisqKiBnZXN0dXJlIC0+IGZldGNoIC0+IHByb21pc2UgLT4gdmlkZW8gcGxheWJhY2s6IHNo
b3VsZCBzdWNjZWVkCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK2ZldGNoIHRoZW4gcHJvbWlzZQor
RkVUQ0gocmVzb2x2ZWQpOiBzdGF0dXMgPSAyMDAKK1BST01JU0UocmVzb2x2ZWQpCitSVU4oc2hv
dWxkUmVzb2x2ZShtZWRpYUVsZW1lbnQucGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENv
bXBsZXRlKSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sKKworKiogZ2VzdHVyZSAtPiBmZXRjaCAtPiBj
cnlwdG8gLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsIHNpbmNlIHRoZSB1c2VyIGdlc3R1
cmUgd2lsbCBub3QgYmUgcHJvcGFnYXRlZCB0aHJvdWdoIG90aGVyIEFQSSBldmVuIHRob3VnaCBp
dCByZXR1cm5zIHByb21pc2VzCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK2ZldGNoIHRoZW4gY3J5
cHRvCitGRVRDSChyZXNvbHZlZCk6IHN0YXR1cyA9IDIwMAorQ1JZUFRPKGtleSBnZW5lcmF0ZWQp
CitSVU4oc2hvdWxkUmVqZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRl
LCB0ZXN0Q29tcGxldGUpKQorUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHkgT0sKKwogRU5EIE9G
IFRFU1QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS91c2VyLWdl
c3R1cmUtcHJlc2VydmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9tZWRpYS91c2VyLWdlc3R1cmUtcHJlc2VydmVkLWFjcm9zcy14bWxodHRwcmVx
dWVzdC5odG1sCmluZGV4IDgyYTJlOWJhOWEyNmQzODM3MmRiZTM4Yjk3YzAxYjIzYTg2NmY3NWIu
LjQ3ZGQ0MGE2NDRkOGZlNGUxMTY0NTBjOTVlNDg0MWI0YTUxZmRkMmQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdXNlci1nZXN0dXJlLXByZXNlcnZlZC1hY3Jvc3Mt
eG1saHR0cHJlcXVlc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3Vz
ZXItZ2VzdHVyZS1wcmVzZXJ2ZWQtYWNyb3NzLXhtbGh0dHByZXF1ZXN0Lmh0bWwKQEAgLTE5LDcg
KzE5LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOwogICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICAg
ICAgd2luZG93LmludGVybmFscy5zZXRYSFJNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZv
cndhcmRpbmcoeGhyLCB0aW1lb3V0KTsKKyAgICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoKHRpbWVv
dXQpOwogCiAgICAgICAgICAgICB4aHIub3BlbignR0VUJywgYC94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvZG93bmxvYWQtd2l0aC1kZWxheS5waHA/aXRlcmF0aW9uPTEmZGVsYXk9JHtkZWxheX1g
LCB0cnVlKTsKIApAQCAtNDEsNiArNDEsNzcgQEAKICAgICAgICAgICAgIHhoci5zZW5kKG51bGwp
OwogICAgICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24gZG9GZXRjaChkZWxheSwgdGltZW91dCwg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCByZXF1ZXN0ID0g
bmV3IFJlcXVlc3QoYC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZG93bmxvYWQtaGVhZGVyLXdp
dGgtZGVsYXkucGhwP2RlbGF5PSR7ZGVsYXl9YCk7CisgICAgICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldE1heGltdW1JbnRl
cnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoKHRpbWVvdXQpOworCisgICAgICAg
ICAgICBmZXRjaChyZXF1ZXN0LCB7IG1ldGhvZDogJ0dFVCcsIGNhY2hlOiAibm8tY2FjaGUiIH0p
LnRoZW4ocmVzcG9uc2UgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRkVUQ0go
cmVzb2x2ZWQpOiBzdGF0dXMgPSAke3Jlc3BvbnNlLnN0YXR1c31gKTsKKyAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgfSwgZXJyb3IgPT4geworICAgICAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZShgRkVUQ0gocmVqZWN0ZWQpOiBleGNlcHRpb24gY29kZSA9
ICR7ZXJyb3IuY29kZX1gKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gZG9GZXRjaEJsb2IoZGVsYXksIHRpbWVvdXQsIGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgICAgICB7CisgICAgICAgICAgICBsZXQgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGAveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL2Rvd25sb2FkLXdpdGgtZGVsYXkucGhwP2l0ZXJhdGlvbj0xJmRl
bGF5PSR7ZGVsYXl9YCk7CisKKyAgICAgICAgICAgIGZldGNoKHJlcXVlc3QsIHsgbWV0aG9kOiAn
R0VUJywgY2FjaGU6ICJuby1jYWNoZSIgfSkudGhlbihyZXNwb25zZSA9PiB7CisgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKGBGRVRDSChyZXNvbHZlZCk6IHN0YXR1cyA9ICR7cmVzcG9uc2Uu
c3RhdHVzfWApOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldE1heGltdW1JbnRlcnZhbEZvclVzZXJH
ZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoKHRpbWVvdXQpOworICAgICAgICAgICAgICAgIHJldHVy
biByZXNwb25zZS5ibG9iKCk7CisgICAgICAgICAgICB9LCBlcnJvciA9PiB7CisgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKGBGRVRDSChyZWplY3RlZCk6IGV4Y2VwdGlvbiBjb2RlID0gJHtl
cnJvci5jb2RlfWApOworICAgICAgICAgICAgfSkudGhlbihyZXNwb25zZSA9PiB7CisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKGBGRVRDSChyZXNwb25zZSByZXNvbHZlZClgKTsKKyAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgfSwgZXJyb3IgPT4g
eworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRkVUQ0gocmVzcG9uc2UgcmVqZWN0ZWQp
OiBleGNlcHRpb24gY29kZSA9ICR7ZXJyb3IuY29kZX1gKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG9Qcm9taXNlKGNvbXBsZXRpb25IYW5kbGVyKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoIChyZXNv
bHV0aW9uRnVuYykgPT4geworICAgICAgICAgICAgICAgIHJlc29sdXRpb25GdW5jKCk7CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgcHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoYFBST01JU0UocmVzb2x2ZWQpYCk7CisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBkb0ZldGNoVGhlblByb21pc2UoY29tcGxldGlvbkhhbmRsZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGxldCByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoYC94bWxodHRwcmVx
dWVzdC9yZXNvdXJjZXMvZG93bmxvYWQtd2l0aC1kZWxheS5waHA/aXRlcmF0aW9uPTFgKTsKKwor
ICAgICAgICAgICAgZmV0Y2gocmVxdWVzdCwgeyBtZXRob2Q6ICdHRVQnLCBjYWNoZTogIm5vLWNh
Y2hlIiB9KS50aGVuKHJlc3BvbnNlID0+IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
YEZFVENIKHJlc29sdmVkKTogc3RhdHVzID0gJHtyZXNwb25zZS5zdGF0dXN9YCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCAocmVzb2x1dGlvbkZ1bmMpID0+IHJlc29sdXRp
b25GdW5jKCkgKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAg
IGNvbnNvbGVXcml0ZShgUFJPTUlTRShyZXNvbHZlZClgKTsKKyAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGRvRmV0Y2hUaGVuQ3J5cHRvKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICB7Cisg
ICAgICAgICAgICBsZXQgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGAveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL2Rvd25sb2FkLXdpdGgtZGVsYXkucGhwP2l0ZXJhdGlvbj0xYCk7CisKKyAgICAgICAg
ICAgIGZldGNoKHJlcXVlc3QsIHsgbWV0aG9kOiAnR0VUJywgY2FjaGU6ICJuby1jYWNoZSIgfSku
dGhlbihyZXNwb25zZSA9PiB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBGRVRDSChy
ZXNvbHZlZCk6IHN0YXR1cyA9ICR7cmVzcG9uc2Uuc3RhdHVzfWApOworICAgICAgICAgICAgICAg
IHJldHVybiBjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAiUlNBLU9BRVAiLCBtb2R1
bHVzTGVuZ3RoOiAyMDQ4LCBwdWJsaWNFeHBvbmVudDogbmV3IFVpbnQ4QXJyYXkoWzB4MDEsIDB4
MDAsIDB4MDFdKSwgaGFzaDogInNoYS0xIn0sIGZhbHNlLCBbImRlY3J5cHQiLCAiZW5jcnlwdCIs
ICJ3cmFwS2V5IiwgInVud3JhcEtleSJdKTsKKyAgICAgICAgICAgIH0pLnRoZW4oa2V5ID0+IHsK
KyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYENSWVBUTyhrZXkgZ2VuZXJhdGVkKWApOwor
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCkKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisKICAgICAgICAgZnVuY3Rpb24gdGVzdENvbXBsZXRlKCkKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKGF1dG9SdW4pCkBAIC04MSw4ICsxNTIsMjcgQEAKICAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoYHNldHRpbmcgdGltZW91dCwgZGVsYXkgPSAke2RlbGF5fWApOwogICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBydW5UZXN0KHRlc3QpOyB9LCBkZWxheSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdmZXRjaCc6CisgICAg
ICAgICAgICAgICAgY29uc29sZVdyaXRlKGBmZXRjaGluZywgZGVsYXkgPSAke2RlbGF5fWApOwor
ICAgICAgICAgICAgICAgIGRvRmV0Y2goZGVsYXksIHRlc3QudGltZW91dCB8fCAwLjYsICgpID0+
IHJ1blRlc3QodGVzdCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAnZmV0Y2hibG9iJzoKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYGZldGNoaW5nIGJs
b2IsIGRlbGF5ID0gJHtkZWxheX1gKTsKKyAgICAgICAgICAgICAgICBkb0ZldGNoQmxvYihkZWxh
eSwgdGVzdC50aW1lb3V0IHx8IDAuNiwgKCkgPT4gcnVuVGVzdCh0ZXN0KSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdwcm9taXNlJzoKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoYHByb21pc2VgKTsKKyAgICAgICAgICAgICAgICBkb1Byb21pc2UoKCkg
PT4gcnVuVGVzdCh0ZXN0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlICdmZXRjaHRoZW5wcm9taXNlJzoKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYGZl
dGNoIHRoZW4gcHJvbWlzZWApOworICAgICAgICAgICAgICAgIGRvRmV0Y2hUaGVuUHJvbWlzZSgo
KSA9PiBydW5UZXN0KHRlc3QpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgJ2ZldGNodGhlbmNyeXB0byc6CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBm
ZXRjaCB0aGVuIGNyeXB0b2ApOworICAgICAgICAgICAgICAgIGRvRmV0Y2hUaGVuQ3J5cHRvKCgp
ID0+IHJ1blRlc3QodGVzdCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotCiAgICAgICAgIH0KIAogICAgICAgICBsZXQgdGVzdHMgPSBbCkBAIC0xMDIsMTQgKzE5Miw1
MSBAQAogICAgICAgICAgICAgICAgIGFjdGlvbiA6ICdwbGF5JywgIHdpdGhrZXkgOiBmYWxzZSwg
IHN1Y2Nlc3MgOiBmYWxzZSwgIHNlcXVlbmNlIDogWycxMDAgWEhSJywgJzEwMCB0aW1lb3V0J10g
fSwKIAogICAgICAgICAgICAgeyB0aXRsZSA6ICdnZXN0dXJlIC0+ICJsb25nIiBYSFIgLT4gdmlk
ZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsJywKLSAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxh
eScsICB3aXRoa2V5IDogZmFsc2UsICBzdWNjZXNzIDogZmFsc2UsICB0aW1lb3V0IDogMC4xLCBz
ZXF1ZW5jZSA6IFsnMzAwIFhIUiddIH0sCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXkn
LCAgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDogZmFsc2UsICB0aW1lb3V0IDogMC4xLCBzZXF1
ZW5jZSA6IFsnMzAwIFhIUiddIH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAt
PiBmZXRjaCAtPiB3aW5kb3cub3Blbjogc2hvdWxkIGZhaWwgYmVjYXVzZSBGZXRjaCBvbmx5IHBy
b3BhZ2F0ZXMgdXNlciBnZXN0dXJlIGZvciBtZWRpYScsCisgICAgICAgICAgICAgICAgYWN0aW9u
IDogJ3BvcHVwJywgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDogZmFsc2UsICBzZXF1ZW5jZSA6
IFsnMTAwIEZldGNoJ10gfSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdnZXN0dXJlIC0+IGZl
dGNoIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgc3VjY2VlZCcsCisgICAgICAgICAgICAgICAg
YWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDogdHJ1ZSwgIHNlcXVl
bmNlIDogWycxMDAgRmV0Y2gnXSB9LAorCisgICAgICAgICAgICB7IHRpdGxlIDogJ2dlc3R1cmUg
LT4gImxvbmciIEZldGNoIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCcsCisgICAgICAg
ICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDogZmFs
c2UsICB0aW1lb3V0IDogMC4xLCBzZXF1ZW5jZSA6IFsnMzAwIEZldGNoJ10gfSwKKworICAgICAg
ICAgICAgeyB0aXRsZSA6ICdubyBnZXN0dXJlIC0+IGZldGNoIC0+IHZpZGVvIHBsYXliYWNrOiBz
aG91bGQgZmFpbCcsCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6
IGZhbHNlLCAgc3VjY2VzcyA6IGZhbHNlLCAgc2VxdWVuY2UgOiBbJzEwMCBGZXRjaCddIH0sCisK
KyAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiBmZXRjaCAtPiBibG9iIC0+IHdpbmRv
dy5vcGVuOiBzaG91bGQgZmFpbCBiZWNhdXNlIEZldGNoIG9ubHkgcHJvcGFnYXRlcyB1c2VyIGdl
c3R1cmUgZm9yIG1lZGlhJywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncG9wdXAnLCB3aXRo
a2V5IDogdHJ1ZSwgIHN1Y2Nlc3MgOiBmYWxzZSwgIHNlcXVlbmNlIDogWycxMDAgRmV0Y2hCbG9i
J10gfSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdnZXN0dXJlIC0+IGZldGNoIC0+IGJsb2Ig
LT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBzdWNjZWVkJywKKyAgICAgICAgICAgICAgICBhY3Rp
b24gOiAncGxheScsICB3aXRoa2V5IDogdHJ1ZSwgIHN1Y2Nlc3MgOiB0cnVlLCAgc2VxdWVuY2Ug
OiBbJzEwMCBGZXRjaEJsb2InXSB9LAorCisgICAgICAgICAgICB7IHRpdGxlIDogJ2dlc3R1cmUg
LT4gZmV0Y2ggLT4gImxvbmciIGJsb2IgLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsJywK
KyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3aXRoa2V5IDogdHJ1ZSwgIHN1Y2Nl
c3MgOiBmYWxzZSwgIHRpbWVvdXQgOiAwLjEsIHNlcXVlbmNlIDogWyczMDAgRmV0Y2hCbG9iJ10g
fSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdubyBnZXN0dXJlIC0+IGZldGNoIC0+IGJsb2Ig
LT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsJywKKyAgICAgICAgICAgICAgICBhY3Rpb24g
OiAncGxheScsICB3aXRoa2V5IDogZmFsc2UsICBzdWNjZXNzIDogZmFsc2UsICBzZXF1ZW5jZSA6
IFsnMTAwIEZldGNoQmxvYiddIH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAnbm8gZ2VzdHVy
ZSAtPiBwcm9taXNlIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCcsCisgICAgICAgICAg
ICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IGZhbHNlLCAgc3VjY2VzcyA6IGZhbHNl
LCAgc2VxdWVuY2UgOiBbJzAgcHJvbWlzZSddIH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAn
Z2VzdHVyZSAtPiBwcm9taXNlIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCBiZWNhdXNl
IHByb21pc2Ugb25seSBwcm9wYWdhdGVzIHVzZXIgZ2VzdHVyZSBwcm9wYWdhdGVkIHRocm91Z2gg
RmV0Y2gnLAorICAgICAgICAgICAgICAgIGFjdGlvbiA6ICdwbGF5JywgIHdpdGhrZXkgOiB0cnVl
LCAgc3VjY2VzcyA6IGZhbHNlLCAgc2VxdWVuY2UgOiBbJzAgcHJvbWlzZSddIH0sCisKKyAgICAg
ICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiBmZXRjaCAtPiBwcm9taXNlIC0+IHZpZGVvIHBs
YXliYWNrOiBzaG91bGQgc3VjY2VlZCcsCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXkn
LCAgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDogdHJ1ZSwgIHNlcXVlbmNlIDogWycwIEZldGNo
VGhlblByb21pc2UnXSB9LAorCisgICAgICAgICAgICB7IHRpdGxlIDogJ2dlc3R1cmUgLT4gZmV0
Y2ggLT4gY3J5cHRvIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCBzaW5jZSB0aGUgdXNl
ciBnZXN0dXJlIHdpbGwgbm90IGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBvdGhlciBBUEkgZXZlbiB0
aG91Z2ggaXQgcmV0dXJucyBwcm9taXNlcycsCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3Bs
YXknLCAgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDogZmFsc2UsICBzZXF1ZW5jZSA6IFsnMCBG
ZXRjaFRoZW5DcnlwdG8nXSB9LAorCiAgICAgICAgIF07CiAKICAgICAgICAgZnVuY3Rpb24gbmV4
dFRlc3QoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkgewogICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7Ci0gICAgICAgICAgICAgICAgZW5kVGVzdCgp
CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9yZXNvdXJjZXMvZG93bmxvYWQtaGVhZGVyLXdpdGgtZGVsYXkucGhwIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZG93bmxvYWQtaGVhZGVy
LXdpdGgtZGVsYXkucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2MGI1NzhlNDlmYTQ2YmY2MTI0NTk4NTA5YmZh
OGU5MmZlMDNhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3Jlc291cmNlcy9kb3dubG9hZC1oZWFkZXItd2l0aC1kZWxheS5waHAKQEAg
LTAsMCArMSwxNCBAQAorPD9waHAKKyRkZWxheSA9ICRfR0VUWydkZWxheSddOwordXNsZWVwKCRk
ZWxheSAqIDEwMDApOworCitoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6
MDAgR01UIik7CitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlLCBuby1zdG9yZSwgbXVz
dC1yZXZhbGlkYXRlIik7CitoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsKK2hlYWRlcigiQ29u
dGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LW5vLWJ1ZmZlcmluZy1wbGVhc2UiKTsKKworZWNobyAi
JGRlbGF5XG4iOworZWNobyAiZm9vYmFyXG4iOworb2JfZmx1c2goKTsKK2ZsdXNoKCk7Cis/Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405131</attachid>
            <date>2020-07-24 00:03:34 -0700</date>
            <delta_ts>2020-07-24 03:21:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214444-20200724000333.patch</filename>
            <type>text/plain</type>
            <size>38003</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0ODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDhkY2Y5MzIyM2JjNTg3
YTc5MjgzM2ZhODExMWZlZTZjOGRkNGQyMi4uNDUyYTI0MzVjNTAyMGE1YTgzYzVkYzkwODEwYjFm
YjZlZGI2Y2JlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTA3LTIzICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvcGFnYXRpbmcgdXNl
ciBnZXN0dXJlIHRocm91Z2ggRmV0Y2ggQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0NDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1OTgw
OTUzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggcHJvcGFnYXRlcyBtZWRpYSBvbmx5IHVzZXIgZ2VzdHVyZXMgdGhyb3VnaCBGZXRj
aCBBUEksIGluY2x1ZGluZyBGZXRjaCBhbmQgRmV0Y2hSZXNwb25zZS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyB0ZXN0IGNvbnRlbnRzLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9ET01X
aW5kb3dGZXRjaC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dGZXRjaDo6ZmV0Y2gp
OgorICAgICAgICBQcm9wYWdhdGVzIG1lZGlhIG9ubHkgdXNlciBnZXN0dXJlcyB0aHJvdWdoIEZl
dGNoLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6Y2xlYW4pOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnNldENvbnN1bWVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1bWVQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nU3VjY2VlZGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6c2V0TWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpGZXRjaEJvZHlDb25zdW1lcik6CisgICAg
ICAgIFByb3BhZ2F0ZXMgbWVkaWEgb25seSB1c2VyIGdlc3R1cmVzIHRocm91Z2ggRmV0Y2hSZXNw
b25zZS4gVXNlckdlc3R1cmVJbmRpY2F0b3IgaXMgb25seSBzZXQgaW4gdGhlIGFzeW5jIHByb21p
c2UgcmVzb2x2aW5nIHBhdGguCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cXVldWVNaWNyb3Rhc2tUb0V2ZW50TG9v
cCk6CisgICAgICAgIFByb3BhZ2F0ZXMgbWVkaWEgb25seSB1c2VyIGdlc3R1cmVzIHRoYXQgd2Fz
IHByb3BhZ2F0ZWQgdGhyb3VnaCBGZXRjaCB0byB0aGUgcmVsYXRlZCBwcm9taXNlIGV4ZWN1dG9y
cy4KKworICAgICAgICAqIGRvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVJbmRpY2F0b3I6On5Vc2VyR2VzdHVyZUluZGljYXRv
cik6CisgICAgICAgICogZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpVc2VyR2VzdHVyZVRva2VuOjpzZXRJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2gpOgorICAgICAg
ICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6cmVzZXRJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6VXNlckdlc3R1cmVUb2tlbjo6aXNQcm9wYWdhdGVkRnJvbUZl
dGNoIGNvbnN0KToKKyAgICAgICAgQWRkcyBhIGZsYWcgdG8gaW5kaWNhdGUgdGhlIHByb3BhZ2F0
aW9uIHNvdXJjZSBvZiBhIHVzZXIgZ2VzdHVyZSB0b2tlbi4gQW5kIG1ha2VzIHBpcGVsaW5lcyBm
cm9tIHRlc3RpbmcuCisKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgIEdhdGhlcnMgc29tZSBjb25zdGFudHMu
CisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6OnNldEZldGNoTWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5n
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmlkbDoKKyAgICAgICAgQ3JhZnRzIGEgd2F5IHRvIHBhc3MgdGhlIG1heGltdW0gaW50
ZXJ2YWwgZnJvbSBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KToK
KyAgICAgICAgR2F0aGVycyBzb21lIGNvbnN0YW50cy4KKwogMjAyMC0wNy0yMyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFNwbGl0IFdpbmRv
d3MgcGFydHMgZnJvbSBDRk5ldHdvcmtTUEkuaCB0byBDRk5ldHdvcmtTUElXaW4uaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9ET01XaW5kb3dGZXRjaC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0RPTVdpbmRvd0ZldGNoLmNwcAppbmRleCBkZWMz
MWQ5NDBhNTc0NGU0OWQ2NWI2ZTE1ZTc2NDJjOTNjMzBiMzI2Li43YjcyZWZhZmFhNzljOGQ2ZGJi
NmI4ZmNiMWNhNjFmMDg2YzhkN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0RPTVdpbmRvd0ZldGNoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0RPTVdpbmRvd0ZldGNoLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkZldGNo
UmVzcG9uc2UuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUg
IkpTRmV0Y2hSZXNwb25zZS5oIgorI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsNyArNTcsMTMgQEAgdm9pZCBET01XaW5kb3dG
ZXRjaDo6ZmV0Y2goRE9NV2luZG93JiB3aW5kb3csIEZldGNoUmVxdWVzdDo6SW5mbyYmIGlucHV0
LCBGZXRjaFIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZldGNoUmVzcG9uc2U6OmZl
dGNoKCpkb2N1bWVudCwgcmVxdWVzdC5yZWxlYXNlUmV0dXJuVmFsdWUoKS5nZXQoKSwgW3Byb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXShFeGNlcHRpb25PcjxGZXRjaFJlc3BvbnNlJj4mJiByZXN1
bHQpIG11dGFibGUgeworICAgIEZldGNoUmVzcG9uc2U6OmZldGNoKCpkb2N1bWVudCwgcmVxdWVz
dC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCB1c2Vy
R2VzdHVyZVRva2VuID0gVXNlckdlc3R1cmVJbmRpY2F0b3I6OmN1cnJlbnRVc2VyR2VzdHVyZSgp
XShFeGNlcHRpb25PcjxGZXRjaFJlc3BvbnNlJj4mJiByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICBpZiAoIXVzZXJHZXN0dXJlVG9rZW4gfHwgdXNlckdlc3R1cmVUb2tlbi0+aGFzRXhwaXJlZChV
c2VyR2VzdHVyZVRva2VuOjptYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdG
b3JGZXRjaCgpKSB8fCAhdXNlckdlc3R1cmVUb2tlbi0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkp
IHsKKyAgICAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yKHVzZXJHZXN0dXJlVG9rZW4sIFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1
cmVTY29wZTo6TWVkaWFPbmx5LCBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRGcm9tRmV0
Y2g6Olllcyk7CiAgICAgICAgIHByb21pc2Uuc2V0dGxlKFdURk1vdmUocmVzdWx0KSk7CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCmluZGV4IGZhNTZhMjI3YTNiNDk4MDcyNTdiY2E0NjMzMGQ3NThhOTI5YTQ0ZWIu
Ljk1Y2ZiNmZkM2EwZDk5NjM2NTJjZGQ0NTAzODE3MzFhNGQ5YjIzZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC02OCw3
ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiB2b2lkIEZldGNoQm9keUNvbnN1bWVy
OjpjbGVhbigpCiB7CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwotICAgIG1fY29uc3VtZVByb21p
c2UgPSBudWxscHRyOworICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICBpZiAobV9zaW5r
KSB7CiAgICAgICAgIG1fc2luay0+Y2xlYXJDYWxsYmFjaygpOwogICAgICAgICByZXR1cm47CkBA
IC0xMDcsNyArMTA3LDcgQEAgdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFJlYWRhYmxlU3RyZWFtKgogICAgIH0KIAogICAgIGlm
IChtX2lzTG9hZGluZykgewotICAgICAgICBtX2NvbnN1bWVQcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKTsKKyAgICAgICAgc2V0Q29uc3VtZVByb21pc2UoV1RGTW92ZShwcm9taXNlKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4OSw5ICsxODksMTYgQEAgU3RyaW5nIEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldENvbnN1
bWVQcm9taXNlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQo
IW1fY29uc3VtZVByb21pc2UpOworICAgIG1fdXNlckdlc3R1cmVUb2tlbiA9IFVzZXJHZXN0dXJl
SW5kaWNhdG9yOjpjdXJyZW50VXNlckdlc3R1cmUoKTsKICAgICBtX2NvbnN1bWVQcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKTsKIH0KIAordm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6cmVzZXRDb25z
dW1lUHJvbWlzZSgpCit7CisgICAgbV9jb25zdW1lUHJvbWlzZSA9IG51bGxwdHI7CisgICAgbV91
c2VyR2VzdHVyZVRva2VuID0gbnVsbHB0cjsKK30KKwogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6
c2V0U291cmNlKFJlZjxGZXRjaEJvZHlTb3VyY2U+JiYgc291cmNlKQogewogICAgIG1fc291cmNl
ID0gV1RGTW92ZShzb3VyY2UpOwpAQCAtMjA2LDcgKzIxMyw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29u
c3VtZXI6OmxvYWRpbmdGYWlsZWQoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCiAgICAgbV9p
c0xvYWRpbmcgPSBmYWxzZTsKICAgICBpZiAobV9jb25zdW1lUHJvbWlzZSkgewogICAgICAgICBt
X2NvbnN1bWVQcm9taXNlLT5yZWplY3QoZXhjZXB0aW9uKTsKLSAgICAgICAgbV9jb25zdW1lUHJv
bWlzZSA9IG51bGxwdHI7CisgICAgICAgIHJlc2V0Q29uc3VtZVByb21pc2UoKTsKICAgICB9CiAg
ICAgaWYgKG1fc291cmNlKSB7CiAgICAgICAgIG1fc291cmNlLT5lcnJvcihleGNlcHRpb24pOwpA
QCAtMjE4LDggKzIyNSwxNCBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpsb2FkaW5nU3VjY2Vl
ZGVkKCkKIHsKICAgICBtX2lzTG9hZGluZyA9IGZhbHNlOwogCi0gICAgaWYgKG1fY29uc3VtZVBy
b21pc2UpCi0gICAgICAgIHJlc29sdmUobV9jb25zdW1lUHJvbWlzZS5yZWxlYXNlTm9uTnVsbCgp
LCBudWxscHRyKTsKKyAgICBpZiAobV9jb25zdW1lUHJvbWlzZSkgeworICAgICAgICBpZiAoIW1f
dXNlckdlc3R1cmVUb2tlbiB8fCBtX3VzZXJHZXN0dXJlVG9rZW4tPmhhc0V4cGlyZWQoVXNlckdl
c3R1cmVUb2tlbjo6bWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0
Y2goKSkgfHwgIW1fdXNlckdlc3R1cmVUb2tlbi0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCisg
ICAgICAgICAgICByZXNvbHZlKG1fY29uc3VtZVByb21pc2UucmVsZWFzZU5vbk51bGwoKSwgbnVs
bHB0cik7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3Ig
Z2VzdHVyZUluZGljYXRvcihtX3VzZXJHZXN0dXJlVG9rZW4sIFVzZXJHZXN0dXJlVG9rZW46Okdl
c3R1cmVTY29wZTo6TWVkaWFPbmx5LCBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRGcm9t
RmV0Y2g6Olllcyk7CisgICAgICAgICAgICByZXNvbHZlKG1fY29uc3VtZVByb21pc2UucmVsZWFz
ZU5vbk51bGwoKSwgbnVsbHB0cik7CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKG1fc291cmNl
KSB7CiAgICAgICAgIG1fc291cmNlLT5jbG9zZSgpOwogICAgICAgICBtX3NvdXJjZSA9IG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmgKaW5kZXggM2NjMjQ2NDYwOTk0OGFkM2ZlNGQyM2QwMDY1YzY4NzlmNzQyNjc4Mi4uMjZjZDcx
OTFiN2IyMDNjY2RlNTI3OGRmZWE0NDU5MmJkMDhjOTFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJl
YW1TaW5rLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1
cmVJbmRpY2F0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw3ICs0NCw3IEBA
IGNsYXNzIEZldGNoQm9keUNvbnN1bWVyIHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIFR5cGUg
eyBOb25lLCBBcnJheUJ1ZmZlciwgQmxvYiwgSlNPTiwgVGV4dCB9OwogCi0gICAgRmV0Y2hCb2R5
Q29uc3VtZXIoVHlwZSB0eXBlKSA6IG1fdHlwZSh0eXBlKSB7IH0KKyAgICBleHBsaWNpdCBGZXRj
aEJvZHlDb25zdW1lcihUeXBlIHR5cGUpIDogbV90eXBlKHR5cGUpIHsgfQogCiAgICAgdm9pZCBh
cHBlbmQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQpOwogICAgIHZvaWQgYXBwZW5kKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkKTsKQEAgLTc1LDYgKzc2LDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIFJlZjxCbG9iPiB0YWtlQXNCbG9iKCk7CisgICAgdm9pZCByZXNl
dENvbnN1bWVQcm9taXNlKCk7CiAKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9jb250
ZW50VHlwZTsKQEAgLTgzLDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UmVhZGFibGVT
dHJlYW1Ub1NoYXJlZEJ1ZmZlclNpbms+IG1fc2luazsKICAgICBSZWZQdHI8RmV0Y2hCb2R5U291
cmNlPiBtX3NvdXJjZTsKICAgICBib29sIG1faXNMb2FkaW5nIHsgZmFsc2UgfTsKKyAgICBSZWZQ
dHI8VXNlckdlc3R1cmVUb2tlbj4gbV91c2VyR2VzdHVyZVRva2VuOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVl
c3QuY3BwCmluZGV4IGVmYzE2MzVlYTU1ZWU3NDUwNjBkOTEyMDhmZDEwMTJkNjlhZWQ5YzQuLmUz
YjgzYWNlYWZkM2MwYTRlNmE5ZTIyMWU0MWI1NmU4Zjg2YjJmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTMzNCw0ICszMzQsMyBAQCBj
b25zdCBjaGFyKiBGZXRjaFJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NjQyNGQxNWViODIxZjAyODQyZGIxYmNh
MmY0NjAxYWNmN2M0MzBmLi5mMjEzMDdmYWUxNWY4ZjA0Y2JhYjkxMWY4NjFjNzYwNzU0NmM0ZmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNzYyLDYgKzE3NjIsNyBAQAogCQk1NzA0NDA1QTFFNTM5MzYyMDAzNTY2MDEgLyog
SlNBZXNDYmNDZmJQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3MDQ0MDU5MUU1MzkzNjIwMDM1NjYwMSAvKiBKU0Flc0NiY0NmYlBhcmFtcy5o
ICovOyB9OwogCQk1NzA2QTY5NjFEREU1Qzk1MDBBMDNCMTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNh
T2FlcFBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTcwNkE2OTUxRERFNUM5NTAwQTAzQjE0IC8qIENyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXMuaCAqLzsgfTsKIAkJNTcwNkE2OTgxRERFNUU0NjAwQTAzQjE0IC8qIEpTUnNhT2FlcFBhcmFt
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcwNkE2
OTcxRERFNUU0NjAwQTAzQjE0IC8qIEpTUnNhT2FlcFBhcmFtcy5oICovOyB9OworCQk1NzA5M0Qx
MzI0Qzk3QzhGMDA4NkM1MkQgLyogRmV0Y2hSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDEzMDE1RDYxQzdCNTcwNDAwMDkxQzZFIC8qIEZl
dGNoUmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1NzEyNTI2OTFFNTI0RUIxMDA4RkYzNjkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NG
Qi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcxMjUy
NjgxRTUyNEVCMTAwOEZGMzY5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DRkIuaCAqLzsgfTsKIAkJ
NTcxNTJCNUEyMUNCM0U4ODAwMEMzN0NBIC8qIEFwZHVDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1MkI1ODIxQ0IyRTNCMDAwQzM3Q0Eg
LyogQXBkdUNvbW1hbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1NzE1MkI1QzIxQ0MxOTAyMDAwQzM3Q0EgLyogQXBkdVJlc3BvbnNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzE1MkI1NjIxQ0Iy
RTNBMDAwQzM3Q0EgLyogQXBkdVJlc3BvbnNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE4MTIsNiArMTgxMyw3IEBACiAJCTU3NTBBOTdFMUU2
QTEzRUYwMDcwNUM0QSAvKiBDcnlwdG9BbGdvcml0aG1FY0tleVBhcmFtcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1MEE5N0QxRTZBMTNFRjAwNzA1
QzRBIC8qIENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zLmggKi87IH07CiAJCTU3NTBBOTgyMUU2
QTE1MDgwMDcwNUM0QSAvKiBKU0VjS2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzUwQTk4MDFFNkExNTA4MDA3MDVDNEEgLyogSlNFY0tl
eVBhcmFtcy5oICovOyB9OwogCQk1NzUwQTk4NzFFNkEyMTY4MDA3MDVDNEEgLyogQ3J5cHRvQWxn
b3JpdGhtRUNESC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTc1MEE5ODUxRTZBMjE2ODAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVDREguaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1NzUzM0UwODI0
QzZDNTk4MDAzRUYyRDMgLyogRmV0Y2hSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUY1NEY4ODFDNTBDNEY2MDAzMzg0ODggLyogRmV0Y2hS
ZXF1ZXN0LmggKi87IH07CiAJCTU3NTQ3MTlGMUVDRTYyODMwMERENjNCMiAvKiBKU1JzYVBzc1Bh
cmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1
NDcxOTkxRUNFNUQyQTAwREQ2M0IyIC8qIEpTUnNhUHNzUGFyYW1zLmggKi87IH07CiAJCTU3NTg1
OTYxMjM5RjEyNEQwMEM3NDU3MiAvKiBKU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91
dHB1dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
NTg1OTVFMjM5RjExNzMwMEM3NDU3MiAvKiBKU0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVu
dE91dHB1dHMuaCAqLzsgfTsKIAkJNTc1ODU5NkMyMzlGMzIxQzAwQzc0NTcyIC8qIEF1dGhlbnRp
Y2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTg1OTY1MjM5RjE0Q0MwMEM3NDU3MiAvKiBBdXRoZW50
aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRPdXRwdXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMwODA2LDExICszMDgwOCwxMyBAQAogCQkJCTUx
N0E1MzU4MUY1ODg5RTgwMERDREMwQSAvKiBGZXRjaExvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFBRDc1M0ExQ0VGNkJEMTAwQTMxNDg2IC8qIEZldGNoT3B0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0NFMTkxNEQxRjJBOUFGQjAwMjcyRjc4IC8qIEZldGNoUmVmZXJyZXJQ
b2xpY3kuaCBpbiBIZWFkZXJzICovLAorCQkJCTU3NTMzRTA4MjRDNkM1OTgwMDNFRjJEMyAvKiBG
ZXRjaFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5MTVBMUYyQTlCMzQwMDI3MkY3
OCAvKiBGZXRjaFJlcXVlc3RDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkxNTUxRjJB
OUIxRDAwMjcyRjc4IC8qIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0UxOTE0QTFGMkE5OEI5MDAyNzJGNzggLyogRmV0Y2hSZXF1ZXN0SW5pdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0NFMTkxNTExRjJBOUIwQTAwMjcyRjc4IC8qIEZldGNoUmVxdWVzdE1v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTE5MTYwMUYyQTlCNEYwMDI3MkY3OCAvKiBGZXRj
aFJlcXVlc3RSZWRpcmVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTcwOTNEMTMyNEM5N0M4RjAw
ODZDNTJEIC8qIEZldGNoUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDhCMTI0
OEYwQjMwMEQzQTlDOSAvKiBGRVRpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzMwRDhEMTI0
OEYwQjMwMEQzQTlDOSAvKiBGRVR1cmJ1bGVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2
MDk1MTJCMDI2RjcwMEMxQTM1OSAvKiBGRlRDb252b2x2ZXIuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggYWNl
YTc2NmFmMWM3ZDVmZWVhZTE3YTY5ZjllM2IzNWNkZWU5YTg4Yy4uY2JlYzdkMmQ5YTI3ZGNhYzFl
ODA4ZGVmMWM0ZDEwZGIwMzkzZmQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0yMTUsNyArMjE1LDE3IEBAIHZvaWQgSlNET01XaW5k
b3dCYXNlOjpxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29wKEpTR2xvYmFsT2JqZWN0JiBvYmplY3Qs
IFJlZjxKU0M6CiAKICAgICBhdXRvIGNhbGxiYWNrID0gSlNNaWNyb3Rhc2tDYWxsYmFjazo6Y3Jl
YXRlKHRoaXNPYmplY3QsIFdURk1vdmUodGFzaykpOwogICAgIGF1dG8mIGV2ZW50TG9vcCA9IHRo
aXNPYmplY3Quc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVudExvb3AoKTsKLSAgICBldmVu
dExvb3AucXVldWVNaWNyb3Rhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0
YWJsZSB7CisgICAgLy8gUHJvcG9nYXRpbmcgbWVkaWEgb25seSB1c2VyIGdlc3R1cmUgZm9yIEZl
dGNoIEFQSSdzIHByb21pc2UgY2hhaW4uCisgICAgYXV0byB1c2VyR2VzdHVyZVRva2VuID0gVXNl
ckdlc3R1cmVJbmRpY2F0b3I6OmN1cnJlbnRVc2VyR2VzdHVyZSgpOworICAgIC8vIE1ldGFkYXRh
IHN1Y2ggYXMgdGhlIHNjb3BlIGFuZCBpc1Byb3BhZ2F0ZWRGcm9tRmV0Y2ggd2lsbCBiZSByZXNl
dCBvbmNlIHRoZSBVc2VyR2VzdHVyZUluZGljYXRvciBpcyBkZXN0cm95ZWQuCisgICAgYm9vbCBp
c1Byb3BhZ2F0ZWRUb05leHRNaWNyb3Rhc2sgPSB1c2VyR2VzdHVyZVRva2VuICYmIHVzZXJHZXN0
dXJlVG9rZW4tPmlzUHJvcGFnYXRlZEZyb21GZXRjaCgpOworICAgIGV2ZW50TG9vcC5xdWV1ZU1p
Y3JvdGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgaXNQcm9wYWdhdGVkVG9OZXh0
TWljcm90YXNrLCB1c2VyR2VzdHVyZVRva2VuID0gV1RGTW92ZSh1c2VyR2VzdHVyZVRva2VuKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFpc1Byb3BhZ2F0ZWRUb05leHRNaWNyb3Rhc2spIHsK
KyAgICAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHVz
ZXJHZXN0dXJlVG9rZW4sIFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1cmVTY29wZTo6TWVkaWFPbmx5
LCBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2g6Olllcyk7CiAgICAgICAg
IGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJH
ZXN0dXJlSW5kaWNhdG9yLmNwcAppbmRleCBkZmVjOTNiNjQ0ZjcyYTUxYmFkMGJlYmYzOTZkYTYx
YzU3ZjZlNDI4Li43NDRjYTJlOTBkNjdjNTNhMmI1NGZmMTdjMzgzZDU4YzhkNWE5MzVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5jcHAKQEAgLTQ5LDYgKzQ5
LDE3IEBAIFVzZXJHZXN0dXJlVG9rZW46On5Vc2VyR2VzdHVyZVRva2VuKCkKICAgICAgICAgb2Jz
ZXJ2ZXIoKnRoaXMpOwogfQogCitzdGF0aWMgU2Vjb25kcyBtYXhJbnRlcnZhbEZvclVzZXJHZXN0
dXJlRm9yd2FyZGluZ0ZvckZldGNoIHsgMTAgfTsKK2NvbnN0IFNlY29uZHMmIFVzZXJHZXN0dXJl
VG9rZW46Om1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoKCkK
K3sKKyAgICByZXR1cm4gbWF4SW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JGZXRj
aDsKK30KKwordm9pZCBVc2VyR2VzdHVyZVRva2VuOjpzZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2Vy
R2VzdHVyZUZvcndhcmRpbmdGb3JGZXRjaEZvclRlc3RpbmcoU2Vjb25kcyYmIHZhbHVlKQorewor
ICAgIG1heEludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0Y2ggPSBXVEZNb3Zl
KHZhbHVlKTsKK30KKwogVXNlckdlc3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9y
KE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPiBzdGF0ZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIFByb2Nlc3NJbnRlcmFjdGlvblN0
eWxlIHByb2Nlc3NJbnRlcmFjdGlvblN0eWxlKQogICAgIDogbV9wcmV2aW91c1Rva2VuIHsgY3Vy
cmVudFRva2VuKCkgfQogewpAQCAtNzQsNyArODUsNyBAQCBVc2VyR2VzdHVyZUluZGljYXRvcjo6
VXNlckdlc3R1cmVJbmRpY2F0b3IoT3B0aW9uYWw8UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+
CiAgICAgfQogfQogCi1Vc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0b3Io
UmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IHRva2VuLCBVc2VyR2VzdHVyZVRva2VuOjpHZXN0dXJl
U2NvcGUgc2NvcGUpCitVc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRpY2F0b3Io
UmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IHRva2VuLCBVc2VyR2VzdHVyZVRva2VuOjpHZXN0dXJl
U2NvcGUgc2NvcGUsIFVzZXJHZXN0dXJlVG9rZW46OklzUHJvcGFnYXRlZEZyb21GZXRjaCBpc1By
b3BhZ2F0ZWRGcm9tRmV0Y2gpCiB7CiAgICAgLy8gU2lsZW50bHkgaWdub3JlIFVzZXJHZXN0dXJl
SW5kaWNhdG9ycyBvbiBub24gbWFpbiB0aHJlYWRzLgogICAgIGlmICghaXNNYWluVGhyZWFkKCkp
CkBAIC04NSw2ICs5Niw3IEBAIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpVc2VyR2VzdHVyZUluZGlj
YXRvcihSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4gdG9rZW4sIFVzZXJHCiAKICAgICBpZiAodG9r
ZW4pIHsKICAgICAgICAgdG9rZW4tPnNldFNjb3BlKHNjb3BlKTsKKyAgICAgICAgdG9rZW4tPnNl
dElzUHJvcGFnYXRlZEZyb21GZXRjaChpc1Byb3BhZ2F0ZWRGcm9tRmV0Y2gpOwogICAgICAgICBj
dXJyZW50VG9rZW4oKSA9IHRva2VuOwogICAgIH0KIH0KQEAgLTk3LDYgKzEwOSw3IEBAIFVzZXJH
ZXN0dXJlSW5kaWNhdG9yOjp+VXNlckdlc3R1cmVJbmRpY2F0b3IoKQogICAgIGlmIChhdXRvIHRv
a2VuID0gY3VycmVudFRva2VuKCkpIHsKICAgICAgICAgdG9rZW4tPnJlc2V0RE9NUGFzdGVBY2Nl
c3MoKTsKICAgICAgICAgdG9rZW4tPnJlc2V0U2NvcGUoKTsKKyAgICAgICAgdG9rZW4tPnJlc2V0
SXNQcm9wYWdhdGVkRnJvbUZldGNoKCk7CiAgICAgfQogCiAgICAgY3VycmVudFRva2VuKCkgPSBt
X3ByZXZpb3VzVG9rZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1
cmVJbmRpY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5o
CmluZGV4IDNjZjMyNzc2YzAyYWI3MDg4OGQzZjNhMGJlN2M5NzJmZTQxYmUyZGMuLjY1MTJmYjEy
YjM0MWRlMzJjYzY2NjUxNWVmOGEwZTg0MmIzNjBlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9V
c2VyR2VzdHVyZUluZGljYXRvci5oCkBAIC00Nyw2ICs0NywxMCBAQCBlbnVtIGNsYXNzIFVzZXJH
ZXN0dXJlVHlwZSB7IEVzY2FwZUtleSwgT3RoZXIgfTsKIAogY2xhc3MgVXNlckdlc3R1cmVUb2tl
biA6IHB1YmxpYyBSZWZDb3VudGVkPFVzZXJHZXN0dXJlVG9rZW4+LCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8VXNlckdlc3R1cmVUb2tlbj4gewogcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIg
U2Vjb25kcyBtYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcgeyAxX3MgfTsg
Ly8gT25lIHNlY29uZCBtYXRjaGVzIEdlY2tvLgorICAgIHN0YXRpYyBjb25zdCBTZWNvbmRzJiBt
YXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JGZXRjaCgpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJl
Rm9yd2FyZGluZ0ZvckZldGNoRm9yVGVzdGluZyhTZWNvbmRzJiYpOworCiAgICAgc3RhdGljIFJl
ZjxVc2VyR2VzdHVyZVRva2VuPiBjcmVhdGUoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGUgc3Rh
dGUsIFVzZXJHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFVzZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdlc3R1cmVUeXBlKSk7CkBAIC04
NCw2ICs4OCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY29wZShHZXN0dXJlU2NvcGUgc2Nv
cGUpIHsgbV9zY29wZSA9IHNjb3BlOyB9CiAgICAgdm9pZCByZXNldFNjb3BlKCkgeyBtX3Njb3Bl
ID0gR2VzdHVyZVNjb3BlOjpBbGw7IH0KIAorICAgIC8vIEV4cGFuZCB0aGUgZm9sbG93aW5nIG1l
dGhvZHMgaWYgbW9yZSBwcm9nb2dhdGlvbiBzb3VyY2VzIGFyZSBhZGRlZCBsYXRlci4KKyAgICBl
bnVtIGNsYXNzIElzUHJvcGFnYXRlZEZyb21GZXRjaCB7IFllcywgTm8gfTsKKyAgICB2b2lkIHNl
dElzUHJvcGFnYXRlZEZyb21GZXRjaChJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2ggaXMpIHsgbV9pc1By
b3BhZ2F0ZWRGcm9tRmV0Y2ggPSBpczsgfQorICAgIHZvaWQgcmVzZXRJc1Byb3BhZ2F0ZWRGcm9t
RmV0Y2goKSB7IG1faXNQcm9wYWdhdGVkRnJvbUZldGNoID0gSXNQcm9wYWdhdGVkRnJvbUZldGNo
OjpObzsgfQorICAgIGJvb2wgaXNQcm9wYWdhdGVkRnJvbUZldGNoKCkgY29uc3QgeyByZXR1cm4g
bV9pc1Byb3BhZ2F0ZWRGcm9tRmV0Y2ggPT0gSXNQcm9wYWdhdGVkRnJvbUZldGNoOjpZZXM7IH0K
KwogICAgIGJvb2wgaGFzRXhwaXJlZChTZWNvbmRzIGV4cGlyYXRpb25JbnRlcnZhbCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBtX3N0YXJ0VGltZSArIGV4cGlyYXRpb25JbnRlcnZhbCA8
IE1vbm90b25pY1RpbWU6Om5vdygpOwpAQCAtMTA0LDYgKzExNCw3IEBAIHByaXZhdGU6CiAgICAg
RE9NUGFzdGVBY2Nlc3NQb2xpY3kgbV9kb21QYXN0ZUFjY2Vzc1BvbGljeSB7IERPTVBhc3RlQWNj
ZXNzUG9saWN5OjpOb3RSZXF1ZXN0ZWRZZXQgfTsKICAgICBHZXN0dXJlU2NvcGUgbV9zY29wZSB7
IEdlc3R1cmVTY29wZTo6QWxsIH07CiAgICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZSB7IE1v
bm90b25pY1RpbWU6Om5vdygpIH07CisgICAgSXNQcm9wYWdhdGVkRnJvbUZldGNoIG1faXNQcm9w
YWdhdGVkRnJvbUZldGNoIHsgSXNQcm9wYWdhdGVkRnJvbUZldGNoOjpObyB9OwogfTsKIAogY2xh
c3MgVXNlckdlc3R1cmVJbmRpY2F0b3IgewpAQCAtMTE4LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBJZiBhIGRvY3VtZW50IGlzIHByb3ZpZGVkLCBpdHMgbGFzdCBrbm93biB1c2VyIGdlc3R1
cmUgdGltZXN0YW1wIGlzIHVwZGF0ZWQuCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzSW50ZXJhY3Rp
b25TdHlsZSB7IEltbWVkaWF0ZSwgRGVsYXllZCB9OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFVzZXJHZXN0dXJlSW5kaWNhdG9yKE9wdGlvbmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0
YXRlPiwgRG9jdW1lbnQqID0gbnVsbHB0ciwgVXNlckdlc3R1cmVUeXBlID0gVXNlckdlc3R1cmVU
eXBlOjpPdGhlciwgUHJvY2Vzc0ludGVyYWN0aW9uU3R5bGUgPSBQcm9jZXNzSW50ZXJhY3Rpb25T
dHlsZTo6SW1tZWRpYXRlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBVc2VyR2VzdHVy
ZUluZGljYXRvcihSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4sIFVzZXJHZXN0dXJlVG9rZW46Okdl
c3R1cmVTY29wZSA9IFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1cmVTY29wZTo6QWxsKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBVc2VyR2VzdHVyZUluZGljYXRvcihSZWZQdHI8VXNlckdl
c3R1cmVUb2tlbj4sIFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1cmVTY29wZSA9IFVzZXJHZXN0dXJl
VG9rZW46Okdlc3R1cmVTY29wZTo6QWxsLCBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRG
cm9tRmV0Y2ggPSBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2g6Ok5vKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+VXNlckdlc3R1cmVJbmRpY2F0b3IoKTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggYjIxM2E5OWM4YWZmMDE4ZDE4ODdlY2Y3NDQy
YTQzYWNiNmJkMTQ1OC4uNWI5MzFlZmExZjAzYWJhOWY2NzlmNzk1MmRkOWFkZjczYzgxNjFjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgU2Vjb25kcyBtYXhJbnRlcnZhbEZvclVzZXJHZXN0
dXJlRm9yd2FyZGluZyB7IDFfcyB9OyAvLyBPbmUgc2Vjb25kIG1hdGNoZXMgR2Vja28uCiBzdGF0
aWMgY29uc3QgU2Vjb25kcyBtaW5JbnRlcnZhbEZvck5vblVzZXJPYnNlcnZhYmxlQ2hhbmdlVGlt
ZXJzIHsgMV9zIH07IC8vIEVtcGlyaWNhbGx5IGRldGVybWluZWQgdG8gbWF4aW1pemUgYmF0dGVy
eSBsaWZlLgogc3RhdGljIGNvbnN0IGludCBtYXhUaW1lck5lc3RpbmdMZXZlbCA9IDU7CiAKQEAg
LTMwMSw3ICszMDAsNyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAKICAgICBET01UaW1lckZp
cmVTdGF0ZSBmaXJlU3RhdGUoY29udGV4dCwgc3RkOjptaW4obV9uZXN0aW5nTGV2ZWwgKyAxLCBt
YXhUaW1lck5lc3RpbmdMZXZlbCkpOwogCi0gICAgaWYgKG1fdXNlckdlc3R1cmVUb2tlblRvRm9y
d2FyZCAmJiBtX3VzZXJHZXN0dXJlVG9rZW5Ub0ZvcndhcmQtPmhhc0V4cGlyZWQobWF4SW50ZXJ2
YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcpKQorICAgIGlmIChtX3VzZXJHZXN0dXJlVG9rZW5U
b0ZvcndhcmQgJiYgbV91c2VyR2VzdHVyZVRva2VuVG9Gb3J3YXJkLT5oYXNFeHBpcmVkKFVzZXJH
ZXN0dXJlVG9rZW46Om1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZykpCiAg
ICAgICAgIG1fdXNlckdlc3R1cmVUb2tlblRvRm9yd2FyZCA9IG51bGxwdHI7CiAKICAgICBBU1NF
UlQoIWlzU3VzcGVuZGVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IGFjYmZlZGM2ZDcyYjE2ZmIzOTA2M2QxMDUwZjA0NjhiMDJjMTk5YmIuLjg5MzdhMDdhYjllZjBh
ODgxYWEyMzI5YjdlNmRlM2FmYTM1ZWZkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTU2NzIsOSArNTY3Miw5IEBAIHZvaWQgSW50ZXJuYWxzOjp0ZXN0RGljdGlvbmFy
eUxvZ2dpbmcoKQogICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25v
c3RpY01lc3NhZ2VXaXRoVmFsdWVEaWN0aW9uYXJ5KCJ0ZXN0TWVzc2FnZSJfcywgInRlc3REZXNj
cmlwdGlvbiJfcywgZGljdGlvbmFyeSwgU2hvdWxkU2FtcGxlOjpObyk7CiB9CiAKLXZvaWQgSW50
ZXJuYWxzOjpzZXRYSFJNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoWE1M
SHR0cFJlcXVlc3QmIHJlcXVlc3QsIGRvdWJsZSBpbnRlcnZhbCkKK3ZvaWQgSW50ZXJuYWxzOjpz
ZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JGZXRjaChkb3VibGUg
aW50ZXJ2YWwpCiB7Ci0gICAgcmVxdWVzdC5zZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVy
ZUZvcndhcmRpbmcoaW50ZXJ2YWwpOworICAgIFVzZXJHZXN0dXJlVG9rZW46OnNldE1heGltdW1J
bnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoRm9yVGVzdGluZyhTZWNvbmRz
KGludGVydmFsKSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjpzZXRUcmFuc2llbnRBY3RpdmF0aW9u
RHVyYXRpb24oZG91YmxlIHNlY29uZHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRl
eCA4NDNlZGZhMDQ4MTQ0M2E0MWIxYTEwN2YwMmM5NWYwMDMwOGRmMGVhLi43ZTRkOTYyYzJmODVl
YTFhNGY2M2QwNjg1MmM3MmNkYzFlYTE3YmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKQEAgLTk2MSw3ICs5NjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRlc3REaWN0aW9uYXJ5
TG9nZ2luZygpOwogCi0gICAgdm9pZCBzZXRYSFJNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVy
ZUZvcndhcmRpbmcoWE1MSHR0cFJlcXVlc3QmLCBkb3VibGUpOworICAgIHZvaWQgc2V0TWF4aW11
bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0Y2goZG91YmxlKTsKICAgICB2
b2lkIHNldFRyYW5zaWVudEFjdGl2YXRpb25EdXJhdGlvbihkb3VibGUgc2Vjb25kcyk7CiAKICAg
ICB2b2lkIHNldElzUGxheWluZ1RvQXV0b21vdGl2ZUhlYWRVbml0KGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGU3ZjY2NTNjYTA4NGM0MjVhMTljMWFkYTdiNzcw
ZWUwNWI4YjY3ZWEuLjdmMjliN2MwZTg1YTQyYjEyZjllYWE4N2M1MGQ4MGZhYTAwMjhlNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTkwNyw3ICs5MDcsNyBAQCBlbnVt
IENvbnRlbnRTaXplQ2F0ZWdvcnkgewogCiAgICAgdm9pZCB0ZXN0RGljdGlvbmFyeUxvZ2dpbmco
KTsKIAotICAgIHZvaWQgc2V0WEhSTWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJk
aW5nKFhNTEh0dHBSZXF1ZXN0IHhociwgZG91YmxlIGludGVydmFsKTsKKyAgICB2b2lkIHNldE1h
eGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoKGRvdWJsZSBpbnRl
cnZhbCk7CiAgICAgdm9pZCBzZXRUcmFuc2llbnRBY3RpdmF0aW9uRHVyYXRpb24oZG91YmxlIHNl
Y29uZHMpOwogCiAgICAgdm9pZCBzZXRJc1BsYXlpbmdUb0F1dG9tb3RpdmVIZWFkVW5pdChib29s
ZWFuIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGM2ZmE0
OGI4OGZiNWZjNjI3NzAxNjk3NTg4NjhlMzJmMTM4OTc0MDkuLjJmYjQ0YzIwODE4ZWJkNGIzNGI4
OTc1MzkzZDQ5NGFmYmQyNTVlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cApAQCAtNjcsOCArNjcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25z
dCBTZWNvbmRzIG1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyB7IDEwX3Mg
fTsKLQogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFhNTEh0dHBSZXF1ZXN0KTsKIAogREVG
SU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCB4bWxIdHRw
UmVxdWVzdENvdW50ZXIsICgiWE1MSHR0cFJlcXVlc3QiKSk7CkBAIC0xMjEsNyArMTE5LDYgQEAg
WE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCiAgICAgLCBtX3Jlc3BvbnNlVHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVzcG9u
c2VUeXBlOjpFbXB0eVN0cmluZykpCiAgICAgLCBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZSgqdGhp
cykKICAgICAsIG1fdGltZW91dFRpbWVyKCp0aGlzLCAmWE1MSHR0cFJlcXVlc3Q6OmRpZFJlYWNo
VGltZW91dCkKLSAgICAsIG1fbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5n
KG1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZykKIHsKICNpZm5kZWYgTkRF
QlVHCiAgICAgeG1sSHR0cFJlcXVlc3RDb3VudGVyLmluY3JlbWVudCgpOwpAQCAtMTA4MSw3ICsx
MDc4LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQp
CiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWN0aXZl
RE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKTsKIAotICAgIGlmIChtX3VzZXJHZXN0dXJlVG9rZW4g
JiYgbV91c2VyR2VzdHVyZVRva2VuLT5oYXNFeHBpcmVkKG1fbWF4aW11bUludGVydmFsRm9yVXNl
ckdlc3R1cmVGb3J3YXJkaW5nKSkKKyAgICBpZiAobV91c2VyR2VzdHVyZVRva2VuICYmIG1fdXNl
ckdlc3R1cmVUb2tlbi0+aGFzRXhwaXJlZChVc2VyR2VzdHVyZVRva2VuOjptYXhpbXVtSW50ZXJ2
YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JGZXRjaCgpKSkKICAgICAgICAgbV91c2VyR2Vz
dHVyZVRva2VuID0gbnVsbHB0cjsKIAogICAgIGlmIChyZWFkeVN0YXRlKCkgIT0gRE9ORSB8fCAh
bV91c2VyR2VzdHVyZVRva2VuIHx8ICFtX3VzZXJHZXN0dXJlVG9rZW4tPnByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSgpKSB7CkBAIC0xMTU2LDExICsxMTUzLDYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
Y29udGV4dERlc3Ryb3llZCgpCiAgICAgQWN0aXZlRE9NT2JqZWN0Ojpjb250ZXh0RGVzdHJveWVk
KCk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldE1heGltdW1JbnRlcnZhbEZvclVzZXJH
ZXN0dXJlRm9yd2FyZGluZyhkb3VibGUgaW50ZXJ2YWwpCi17Ci0gICAgbV9tYXhpbXVtSW50ZXJ2
YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcgPSBTZWNvbmRzKGludGVydmFsKTsgICAgCi19Ci0K
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCkKIHsKICAgICBt
X2hhc1JlbGV2YW50RXZlbnRMaXN0ZW5lciA9IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMo
KS5hYm9ydEV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCBkNTQ3YzY5
NmYyZDdjZjc2MTM4NDMzYTI0YjBiYWE0ZDdmOWE4YTk1Li4wNzU4YmNkOGE2ZDgyOGY3N2E3Yjky
ZjU2MjJjZmExZDA2MzViYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAt
MTI4LDggKzEyOCw2IEBAIHB1YmxpYzoKIAogICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Q7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0
dXJlRm9yd2FyZGluZyhkb3VibGUpOwotCiAgICAgdXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNo
RXZlbnQ7CiAgICAgdm9pZCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGU7CiAKQEAgLTI0
Nyw3ICsyNDUsNiBAQCBwcml2YXRlOgogCiAgICAgT3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gbV9l
eGNlcHRpb25Db2RlOwogICAgIFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiBtX3VzZXJHZXN0dXJl
VG9rZW47Ci0gICAgU2Vjb25kcyBtX21heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2Fy
ZGluZzsKICAgICBib29sIG1faGFzUmVsZXZhbnRFdmVudExpc3RlbmVyIHsgZmFsc2UgfTsKIH07
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBlMzcyOTk4NjA2NzI5ZGYwM2FlZGM3MzdjNzgyMWIxNGNmYTQ5YzI5Li4xMWU3
NTI0NzE3ZjhjNTRlODUzYTFkMDE5YzI4MGY0YjZjZTczNDlkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMjAtMDctMjMgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAg
ICAgICBQcm9wYWdhdGluZyB1c2VyIGdlc3R1cmUgdGhyb3VnaCBGZXRjaCBBUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDQ0NAorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjU5ODA5NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1wcmVzZXJ2
ZWQtYWNyb3NzLXhtbGh0dHByZXF1ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL21lZGlhL3VzZXItZ2VzdHVyZS1wcmVzZXJ2ZWQtYWNyb3NzLXhtbGh0dHByZXF1ZXN0Lmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZG93bmxv
YWQtaGVhZGVyLXdpdGgtZGVsYXkucGhwOiBBZGRlZC4KKwogMjAyMC0wNy0yMyAgSmFtZXMgRGFy
cGluaWFuICA8amRhcnBpbmlhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1dlYkdMMl0gUXVl
cnkgT2JqZWN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS91c2Vy
LWdlc3R1cmUtcHJlc2VydmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1wcmVzZXJ2ZWQtYWNyb3Nz
LXhtbGh0dHByZXF1ZXN0LWV4cGVjdGVkLnR4dAppbmRleCAzMWM4NTRjZmU4ZmRkMjE0NWU5YmE1
ZTU2YmI2ZGZhYzMzYzMyZGE3Li5jOTlhZDk3ZTYwYjMxZWMwN2E3YTJkM2M0NTc3YTVjZDMyNjFm
ODEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVy
ZS1wcmVzZXJ2ZWQtYWNyb3NzLXhtbGh0dHByZXF1ZXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1wcmVzZXJ2ZWQtYWNyb3NzLXht
bGh0dHByZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtNTIsNSArNTIsOTEgQEAgRVZFTlQobG9hZCk6
IHJlYWR5U3RhdGUgPSA0CiBSVU4oc2hvdWxkUmVqZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRo
ZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxldGUpKQogUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0
bHkgT0sKIAorKiogZ2VzdHVyZSAtPiBmZXRjaCAtPiB3aW5kb3cub3Blbjogc2hvdWxkIGZhaWwg
YmVjYXVzZSBGZXRjaCBvbmx5IHByb3BhZ2F0ZXMgdXNlciBnZXN0dXJlIGZvciBtZWRpYQorZmV0
Y2hpbmcsIGRlbGF5ID0gMTAwCitGRVRDSChyZXNvbHZlZCk6IHN0YXR1cyA9IDIwMAorRVhQRUNU
RUQgKHdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIpID09ICdudWxsJykgT0sKKworKiogZ2VzdHVy
ZSAtPiBmZXRjaCAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIHN1Y2NlZWQKK0VWRU5UKGNhbnBs
YXl0aHJvdWdoKQorZmV0Y2hpbmcsIGRlbGF5ID0gMTAwCitGRVRDSChyZXNvbHZlZCk6IHN0YXR1
cyA9IDIwMAorUlVOKHNob3VsZFJlc29sdmUobWVkaWFFbGVtZW50LnBsYXkoKSkudGhlbih0ZXN0
Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCitQcm9taXNlIHJlc29sdmVkIE9LCisKKyoqIGdlc3R1
cmUgLT4gImxvbmciIEZldGNoIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbAorRVZFTlQo
Y2FucGxheXRocm91Z2gpCitmZXRjaGluZywgZGVsYXkgPSAzMDAKK0ZFVENIKHJlc29sdmVkKTog
c3RhdHVzID0gMjAwCitSVU4oc2hvdWxkUmVqZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4o
dGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxldGUpKQorUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHkg
T0sKKworKiogbm8gZ2VzdHVyZSAtPiBmZXRjaCAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIGZh
aWwKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorZmV0Y2hpbmcsIGRlbGF5ID0gMTAwCitGRVRDSChy
ZXNvbHZlZCk6IHN0YXR1cyA9IDIwMAorUlVOKHNob3VsZFJlamVjdChtZWRpYUVsZW1lbnQucGxh
eSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1Byb21pc2UgcmVqZWN0ZWQg
Y29ycmVjdGx5IE9LCisKKyoqIGdlc3R1cmUgLT4gZmV0Y2ggLT4gYmxvYiAtPiB3aW5kb3cub3Bl
bjogc2hvdWxkIGZhaWwgYmVjYXVzZSBGZXRjaCBvbmx5IHByb3BhZ2F0ZXMgdXNlciBnZXN0dXJl
IGZvciBtZWRpYQorZmV0Y2hpbmcgYmxvYiwgZGVsYXkgPSAxMDAKK0ZFVENIKHJlc29sdmVkKTog
c3RhdHVzID0gMjAwCitGRVRDSChyZXNwb25zZSByZXNvbHZlZCkKK0VYUEVDVEVEICh3aW5kb3cu
b3BlbigiYWJvdXQ6YmxhbmsiKSA9PSAnbnVsbCcpIE9LCisKKyoqIGdlc3R1cmUgLT4gZmV0Y2gg
LT4gYmxvYiAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIHN1Y2NlZWQKK0VWRU5UKGNhbnBsYXl0
aHJvdWdoKQorZmV0Y2hpbmcgYmxvYiwgZGVsYXkgPSAxMDAKK0ZFVENIKHJlc29sdmVkKTogc3Rh
dHVzID0gMjAwCitGRVRDSChyZXNwb25zZSByZXNvbHZlZCkKK1JVTihzaG91bGRSZXNvbHZlKG1l
ZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxldGUpKQorUHJv
bWlzZSByZXNvbHZlZCBPSworCisqKiBnZXN0dXJlIC0+IGZldGNoIC0+ICJsb25nIiBibG9iIC0+
IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbAorRVZFTlQoY2FucGxheXRocm91Z2gpCitmZXRj
aGluZyBibG9iLCBkZWxheSA9IDMwMAorRkVUQ0gocmVzb2x2ZWQpOiBzdGF0dXMgPSAyMDAKK0ZF
VENIKHJlc3BvbnNlIHJlc29sdmVkKQorUlVOKHNob3VsZFJlamVjdChtZWRpYUVsZW1lbnQucGxh
eSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1Byb21pc2UgcmVqZWN0ZWQg
Y29ycmVjdGx5IE9LCisKKyoqIG5vIGdlc3R1cmUgLT4gZmV0Y2ggLT4gYmxvYiAtPiB2aWRlbyBw
bGF5YmFjazogc2hvdWxkIGZhaWwKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorZmV0Y2hpbmcgYmxv
YiwgZGVsYXkgPSAxMDAKK0ZFVENIKHJlc29sdmVkKTogc3RhdHVzID0gMjAwCitGRVRDSChyZXNw
b25zZSByZXNvbHZlZCkKK1JVTihzaG91bGRSZWplY3QobWVkaWFFbGVtZW50LnBsYXkoKSkudGhl
bih0ZXN0Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCitQcm9taXNlIHJlamVjdGVkIGNvcnJlY3Rs
eSBPSworCisqKiBubyBnZXN0dXJlIC0+IHByb21pc2UgLT4gdmlkZW8gcGxheWJhY2s6IHNob3Vs
ZCBmYWlsCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK3Byb21pc2UKK1BST01JU0UocmVzb2x2ZWQp
CitSVU4oc2hvdWxkUmVqZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRl
LCB0ZXN0Q29tcGxldGUpKQorUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHkgT0sKKworKiogZ2Vz
dHVyZSAtPiBwcm9taXNlIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCBiZWNhdXNlIHBy
b21pc2Ugb25seSBwcm9wYWdhdGVzIHVzZXIgZ2VzdHVyZSBwcm9wYWdhdGVkIHRocm91Z2ggRmV0
Y2gKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorcHJvbWlzZQorUFJPTUlTRShyZXNvbHZlZCkKK1JV
TihzaG91bGRSZWplY3QobWVkaWFFbGVtZW50LnBsYXkoKSkudGhlbih0ZXN0Q29tcGxldGUsIHRl
c3RDb21wbGV0ZSkpCitQcm9taXNlIHJlamVjdGVkIGNvcnJlY3RseSBPSworCisqKiBnZXN0dXJl
IC0+IGZldGNoIC0+IHByb21pc2UgLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBzdWNjZWVkCitF
VkVOVChjYW5wbGF5dGhyb3VnaCkKK2ZldGNoIHRoZW4gcHJvbWlzZQorRkVUQ0gocmVzb2x2ZWQp
OiBzdGF0dXMgPSAyMDAKK1BST01JU0UocmVzb2x2ZWQpCitSVU4oc2hvdWxkUmVzb2x2ZShtZWRp
YUVsZW1lbnQucGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1Byb21p
c2UgcmVzb2x2ZWQgT0sKKworKiogZ2VzdHVyZSAtPiBmZXRjaCAtPiBjcnlwdG8gLT4gdmlkZW8g
cGxheWJhY2s6IHNob3VsZCBmYWlsIHNpbmNlIHRoZSB1c2VyIGdlc3R1cmUgd2lsbCBub3QgYmUg
cHJvcGFnYXRlZCB0aHJvdWdoIG90aGVyIEFQSSBldmVuIHRob3VnaCBpdCByZXR1cm5zIHByb21p
c2VzCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK2ZldGNoIHRoZW4gY3J5cHRvCitGRVRDSChyZXNv
bHZlZCk6IHN0YXR1cyA9IDIwMAorQ1JZUFRPKGtleSBnZW5lcmF0ZWQpCitSVU4oc2hvdWxkUmVq
ZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxldGUp
KQorUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHkgT0sKKwogRU5EIE9GIFRFU1QKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS91c2VyLWdlc3R1cmUtcHJlc2VydmVk
LWFjcm9zcy14bWxodHRwcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRp
YS91c2VyLWdlc3R1cmUtcHJlc2VydmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC5odG1sCmluZGV4
IDgyYTJlOWJhOWEyNmQzODM3MmRiZTM4Yjk3YzAxYjIzYTg2NmY3NWIuLjQ3ZGQ0MGE2NDRkOGZl
NGUxMTY0NTBjOTVlNDg0MWI0YTUxZmRkMmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWVkaWEvdXNlci1nZXN0dXJlLXByZXNlcnZlZC1hY3Jvc3MteG1saHR0cHJlcXVlc3Qu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1wcmVz
ZXJ2ZWQtYWNyb3NzLXhtbGh0dHByZXF1ZXN0Lmh0bWwKQEAgLTE5LDcgKzE5LDcgQEAKICAgICAg
ICAgewogICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICAgICAgd2luZG93LmludGVy
bmFscy5zZXRYSFJNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcoeGhyLCB0
aW1lb3V0KTsKKyAgICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldE1heGltdW1JbnRl
cnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoKHRpbWVvdXQpOwogCiAgICAgICAg
ICAgICB4aHIub3BlbignR0VUJywgYC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZG93bmxvYWQt
d2l0aC1kZWxheS5waHA/aXRlcmF0aW9uPTEmZGVsYXk9JHtkZWxheX1gLCB0cnVlKTsKIApAQCAt
NDEsNiArNDEsNzcgQEAKICAgICAgICAgICAgIHhoci5zZW5kKG51bGwpOwogICAgICAgICB9CiAK
KyAgICAgICAgZnVuY3Rpb24gZG9GZXRjaChkZWxheSwgdGltZW91dCwgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxldCByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoYC94
bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZG93bmxvYWQtaGVhZGVyLXdpdGgtZGVsYXkucGhwP2Rl
bGF5PSR7ZGVsYXl9YCk7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0
dXJlRm9yd2FyZGluZ0ZvckZldGNoKHRpbWVvdXQpOworCisgICAgICAgICAgICBmZXRjaChyZXF1
ZXN0LCB7IG1ldGhvZDogJ0dFVCcsIGNhY2hlOiAibm8tY2FjaGUiIH0pLnRoZW4ocmVzcG9uc2Ug
PT4geworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRkVUQ0gocmVzb2x2ZWQpOiBzdGF0
dXMgPSAke3Jlc3BvbnNlLnN0YXR1c31gKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgICAgICAgICAgfSwgZXJyb3IgPT4geworICAgICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZShgRkVUQ0gocmVqZWN0ZWQpOiBleGNlcHRpb24gY29kZSA9ICR7ZXJyb3IuY29kZX1g
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG9GZXRj
aEJsb2IoZGVsYXksIHRpbWVvdXQsIGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICB7CisgICAg
ICAgICAgICBsZXQgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGAveG1saHR0cHJlcXVlc3QvcmVzb3Vy
Y2VzL2Rvd25sb2FkLXdpdGgtZGVsYXkucGhwP2l0ZXJhdGlvbj0xJmRlbGF5PSR7ZGVsYXl9YCk7
CisKKyAgICAgICAgICAgIGZldGNoKHJlcXVlc3QsIHsgbWV0aG9kOiAnR0VUJywgY2FjaGU6ICJu
by1jYWNoZSIgfSkudGhlbihyZXNwb25zZSA9PiB7CisgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKGBGRVRDSChyZXNvbHZlZCk6IHN0YXR1cyA9ICR7cmVzcG9uc2Uuc3RhdHVzfWApOworICAg
ICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgICAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGlu
Z0ZvckZldGNoKHRpbWVvdXQpOworICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9i
KCk7CisgICAgICAgICAgICB9LCBlcnJvciA9PiB7CisgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKGBGRVRDSChyZWplY3RlZCk6IGV4Y2VwdGlvbiBjb2RlID0gJHtlcnJvci5jb2RlfWApOwor
ICAgICAgICAgICAgfSkudGhlbihyZXNwb25zZSA9PiB7CisgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKGBGRVRDSChyZXNwb25zZSByZXNvbHZlZClgKTsKKyAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgfSwgZXJyb3IgPT4geworICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZShgRkVUQ0gocmVzcG9uc2UgcmVqZWN0ZWQpOiBleGNlcHRpb24gY29k
ZSA9ICR7ZXJyb3IuY29kZX1gKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gZG9Qcm9taXNlKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICB7CisgICAg
ICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoIChyZXNvbHV0aW9uRnVuYykgPT4g
eworICAgICAgICAgICAgICAgIHJlc29sdXRpb25GdW5jKCk7CisgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgcHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoYFBST01JU0UocmVzb2x2ZWQpYCk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBk
b0ZldGNoVGhlblByb21pc2UoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGxldCByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoYC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMv
ZG93bmxvYWQtd2l0aC1kZWxheS5waHA/aXRlcmF0aW9uPTFgKTsKKworICAgICAgICAgICAgZmV0
Y2gocmVxdWVzdCwgeyBtZXRob2Q6ICdHRVQnLCBjYWNoZTogIm5vLWNhY2hlIiB9KS50aGVuKHJl
c3BvbnNlID0+IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYEZFVENIKHJlc29sdmVk
KTogc3RhdHVzID0gJHtyZXNwb25zZS5zdGF0dXN9YCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBQcm9taXNlKCAocmVzb2x1dGlvbkZ1bmMpID0+IHJlc29sdXRpb25GdW5jKCkgKTsKKyAg
ICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShg
UFJPTUlTRShyZXNvbHZlZClgKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRvRmV0Y2hU
aGVuQ3J5cHRvKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICB7CisgICAgICAgICAgICBsZXQg
cmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2Rvd25sb2Fk
LXdpdGgtZGVsYXkucGhwP2l0ZXJhdGlvbj0xYCk7CisKKyAgICAgICAgICAgIGZldGNoKHJlcXVl
c3QsIHsgbWV0aG9kOiAnR0VUJywgY2FjaGU6ICJuby1jYWNoZSIgfSkudGhlbihyZXNwb25zZSA9
PiB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBGRVRDSChyZXNvbHZlZCk6IHN0YXR1
cyA9ICR7cmVzcG9uc2Uuc3RhdHVzfWApOworICAgICAgICAgICAgICAgIHJldHVybiBjcnlwdG8u
c3VidGxlLmdlbmVyYXRlS2V5KHtuYW1lOiAiUlNBLU9BRVAiLCBtb2R1bHVzTGVuZ3RoOiAyMDQ4
LCBwdWJsaWNFeHBvbmVudDogbmV3IFVpbnQ4QXJyYXkoWzB4MDEsIDB4MDAsIDB4MDFdKSwgaGFz
aDogInNoYS0xIn0sIGZhbHNlLCBbImRlY3J5cHQiLCAiZW5jcnlwdCIsICJ3cmFwS2V5IiwgInVu
d3JhcEtleSJdKTsKKyAgICAgICAgICAgIH0pLnRoZW4oa2V5ID0+IHsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoYENSWVBUTyhrZXkgZ2VuZXJhdGVkKWApOworICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCkKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKICAgICAg
ICAgZnVuY3Rpb24gdGVzdENvbXBsZXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGF1
dG9SdW4pCkBAIC04MSw4ICsxNTIsMjcgQEAKICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
YHNldHRpbmcgdGltZW91dCwgZGVsYXkgPSAke2RlbGF5fWApOwogICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoKCkgPT4geyBydW5UZXN0KHRlc3QpOyB9LCBkZWxheSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdmZXRjaCc6CisgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKGBmZXRjaGluZywgZGVsYXkgPSAke2RlbGF5fWApOworICAgICAgICAgICAgICAg
IGRvRmV0Y2goZGVsYXksIHRlc3QudGltZW91dCB8fCAwLjYsICgpID0+IHJ1blRlc3QodGVzdCkp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZmV0Y2hibG9iJzoK
KyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYGZldGNoaW5nIGJsb2IsIGRlbGF5ID0gJHtk
ZWxheX1gKTsKKyAgICAgICAgICAgICAgICBkb0ZldGNoQmxvYihkZWxheSwgdGVzdC50aW1lb3V0
IHx8IDAuNiwgKCkgPT4gcnVuVGVzdCh0ZXN0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlICdwcm9taXNlJzoKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
YHByb21pc2VgKTsKKyAgICAgICAgICAgICAgICBkb1Byb21pc2UoKCkgPT4gcnVuVGVzdCh0ZXN0
KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdmZXRjaHRoZW5w
cm9taXNlJzoKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYGZldGNoIHRoZW4gcHJvbWlz
ZWApOworICAgICAgICAgICAgICAgIGRvRmV0Y2hUaGVuUHJvbWlzZSgoKSA9PiBydW5UZXN0KHRl
c3QpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2ZldGNodGhl
bmNyeXB0byc6CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBmZXRjaCB0aGVuIGNyeXB0
b2ApOworICAgICAgICAgICAgICAgIGRvRmV0Y2hUaGVuQ3J5cHRvKCgpID0+IHJ1blRlc3QodGVz
dCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotCiAgICAgICAgIH0K
IAogICAgICAgICBsZXQgdGVzdHMgPSBbCkBAIC0xMDIsMTQgKzE5Miw1MSBAQAogICAgICAgICAg
ICAgICAgIGFjdGlvbiA6ICdwbGF5JywgIHdpdGhrZXkgOiBmYWxzZSwgIHN1Y2Nlc3MgOiBmYWxz
ZSwgIHNlcXVlbmNlIDogWycxMDAgWEhSJywgJzEwMCB0aW1lb3V0J10gfSwKIAogICAgICAgICAg
ICAgeyB0aXRsZSA6ICdnZXN0dXJlIC0+ICJsb25nIiBYSFIgLT4gdmlkZW8gcGxheWJhY2s6IHNo
b3VsZCBmYWlsJywKLSAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3aXRoa2V5IDog
ZmFsc2UsICBzdWNjZXNzIDogZmFsc2UsICB0aW1lb3V0IDogMC4xLCBzZXF1ZW5jZSA6IFsnMzAw
IFhIUiddIH0sCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IHRy
dWUsICBzdWNjZXNzIDogZmFsc2UsICB0aW1lb3V0IDogMC4xLCBzZXF1ZW5jZSA6IFsnMzAwIFhI
UiddIH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiBmZXRjaCAtPiB3aW5k
b3cub3Blbjogc2hvdWxkIGZhaWwgYmVjYXVzZSBGZXRjaCBvbmx5IHByb3BhZ2F0ZXMgdXNlciBn
ZXN0dXJlIGZvciBtZWRpYScsCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BvcHVwJywgd2l0
aGtleSA6IHRydWUsICBzdWNjZXNzIDogZmFsc2UsICBzZXF1ZW5jZSA6IFsnMTAwIEZldGNoJ10g
fSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdnZXN0dXJlIC0+IGZldGNoIC0+IHZpZGVvIHBs
YXliYWNrOiBzaG91bGQgc3VjY2VlZCcsCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXkn
LCAgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDogdHJ1ZSwgIHNlcXVlbmNlIDogWycxMDAgRmV0
Y2gnXSB9LAorCisgICAgICAgICAgICB7IHRpdGxlIDogJ2dlc3R1cmUgLT4gImxvbmciIEZldGNo
IC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCcsCisgICAgICAgICAgICAgICAgYWN0aW9u
IDogJ3BsYXknLCAgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDogZmFsc2UsICB0aW1lb3V0IDog
MC4xLCBzZXF1ZW5jZSA6IFsnMzAwIEZldGNoJ10gfSwKKworICAgICAgICAgICAgeyB0aXRsZSA6
ICdubyBnZXN0dXJlIC0+IGZldGNoIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCcsCisg
ICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IGZhbHNlLCAgc3VjY2Vz
cyA6IGZhbHNlLCAgc2VxdWVuY2UgOiBbJzEwMCBGZXRjaCddIH0sCisKKyAgICAgICAgICAgIHsg
dGl0bGUgOiAnZ2VzdHVyZSAtPiBmZXRjaCAtPiBibG9iIC0+IHdpbmRvdy5vcGVuOiBzaG91bGQg
ZmFpbCBiZWNhdXNlIEZldGNoIG9ubHkgcHJvcGFnYXRlcyB1c2VyIGdlc3R1cmUgZm9yIG1lZGlh
JywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncG9wdXAnLCB3aXRoa2V5IDogdHJ1ZSwgIHN1
Y2Nlc3MgOiBmYWxzZSwgIHNlcXVlbmNlIDogWycxMDAgRmV0Y2hCbG9iJ10gfSwKKworICAgICAg
ICAgICAgeyB0aXRsZSA6ICdnZXN0dXJlIC0+IGZldGNoIC0+IGJsb2IgLT4gdmlkZW8gcGxheWJh
Y2s6IHNob3VsZCBzdWNjZWVkJywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3
aXRoa2V5IDogdHJ1ZSwgIHN1Y2Nlc3MgOiB0cnVlLCAgc2VxdWVuY2UgOiBbJzEwMCBGZXRjaEJs
b2InXSB9LAorCisgICAgICAgICAgICB7IHRpdGxlIDogJ2dlc3R1cmUgLT4gZmV0Y2ggLT4gImxv
bmciIGJsb2IgLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsJywKKyAgICAgICAgICAgICAg
ICBhY3Rpb24gOiAncGxheScsICB3aXRoa2V5IDogdHJ1ZSwgIHN1Y2Nlc3MgOiBmYWxzZSwgIHRp
bWVvdXQgOiAwLjEsIHNlcXVlbmNlIDogWyczMDAgRmV0Y2hCbG9iJ10gfSwKKworICAgICAgICAg
ICAgeyB0aXRsZSA6ICdubyBnZXN0dXJlIC0+IGZldGNoIC0+IGJsb2IgLT4gdmlkZW8gcGxheWJh
Y2s6IHNob3VsZCBmYWlsJywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3aXRo
a2V5IDogZmFsc2UsICBzdWNjZXNzIDogZmFsc2UsICBzZXF1ZW5jZSA6IFsnMTAwIEZldGNoQmxv
YiddIH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAnbm8gZ2VzdHVyZSAtPiBwcm9taXNlIC0+
IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCcsCisgICAgICAgICAgICAgICAgYWN0aW9uIDog
J3BsYXknLCAgd2l0aGtleSA6IGZhbHNlLCAgc3VjY2VzcyA6IGZhbHNlLCAgc2VxdWVuY2UgOiBb
JzAgcHJvbWlzZSddIH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiBwcm9t
aXNlIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCBiZWNhdXNlIHByb21pc2Ugb25seSBw
cm9wYWdhdGVzIHVzZXIgZ2VzdHVyZSBwcm9wYWdhdGVkIHRocm91Z2ggRmV0Y2gnLAorICAgICAg
ICAgICAgICAgIGFjdGlvbiA6ICdwbGF5JywgIHdpdGhrZXkgOiB0cnVlLCAgc3VjY2VzcyA6IGZh
bHNlLCAgc2VxdWVuY2UgOiBbJzAgcHJvbWlzZSddIH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUg
OiAnZ2VzdHVyZSAtPiBmZXRjaCAtPiBwcm9taXNlIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQg
c3VjY2VlZCcsCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IHRy
dWUsICBzdWNjZXNzIDogdHJ1ZSwgIHNlcXVlbmNlIDogWycwIEZldGNoVGhlblByb21pc2UnXSB9
LAorCisgICAgICAgICAgICB7IHRpdGxlIDogJ2dlc3R1cmUgLT4gZmV0Y2ggLT4gY3J5cHRvIC0+
IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCBzaW5jZSB0aGUgdXNlciBnZXN0dXJlIHdpbGwg
bm90IGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBvdGhlciBBUEkgZXZlbiB0aG91Z2ggaXQgcmV0dXJu
cyBwcm9taXNlcycsCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6
IHRydWUsICBzdWNjZXNzIDogZmFsc2UsICBzZXF1ZW5jZSA6IFsnMCBGZXRjaFRoZW5DcnlwdG8n
XSB9LAorCiAgICAgICAgIF07CiAKICAgICAgICAgZnVuY3Rpb24gbmV4dFRlc3QoKQogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAoIXRlc3RzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgnJyk7Ci0gICAgICAgICAgICAgICAgZW5kVGVzdCgpCisgICAgICAgICAgICAg
ICAgZW5kVGVzdCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJj
ZXMvZG93bmxvYWQtaGVhZGVyLXdpdGgtZGVsYXkucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZG93bmxvYWQtaGVhZGVyLXdpdGgtZGVsYXkucGhw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY2MGI1NzhlNDlmYTQ2YmY2MTI0NTk4NTA5YmZhOGU5MmZlMDNhYjUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9kb3dubG9hZC1oZWFkZXItd2l0aC1kZWxheS5waHAKQEAgLTAsMCArMSwxNCBAQAor
PD9waHAKKyRkZWxheSA9ICRfR0VUWydkZWxheSddOwordXNsZWVwKCRkZWxheSAqIDEwMDApOwor
CitoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6MDAgR01UIik7CitoZWFk
ZXIoIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlLCBuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlIik7
CitoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsKK2hlYWRlcigiQ29udGVudC1UeXBlOiBhcHBs
aWNhdGlvbi94LW5vLWJ1ZmZlcmluZy1wbGVhc2UiKTsKKworZWNobyAiJGRlbGF5XG4iOworZWNo
byAiZm9vYmFyXG4iOworb2JfZmx1c2goKTsKK2ZsdXNoKCk7Cis/Pgo=
</data>
<flag name="review"
          id="420524"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405169</attachid>
            <date>2020-07-24 13:15:41 -0700</date>
            <delta_ts>2020-07-24 13:48:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-214444-20200724131541.patch</filename>
            <type>text/plain</type>
            <size>37643</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY0ODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDhkY2Y5MzIyM2JjNTg3
YTc5MjgzM2ZhODExMWZlZTZjOGRkNGQyMi4uNDhlZDg5MzYzYmYzYTg3ZWRlOWZmMTQwMTZiMTNl
NzIyMDg5MjhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTA3LTIzICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJvcGFnYXRpbmcgdXNl
ciBnZXN0dXJlIHRocm91Z2ggRmV0Y2ggQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQ0NDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY1OTgw
OTUzPgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBwcm9wYWdhdGVzIG1lZGlhIG9ubHkgdXNlciBnZXN0dXJlcyB0aHJvdWdoIEZldGNo
IEFQSSwgaW5jbHVkaW5nIEZldGNoIGFuZCBGZXRjaFJlc3BvbnNlLgorCisgICAgICAgIENvdmVy
ZWQgYnkgbmV3IHRlc3QgY29udGVudHMuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0RPTVdp
bmRvd0ZldGNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd0ZldGNoOjpmZXRjaCk6
CisgICAgICAgIFByb3BhZ2F0ZXMgbWVkaWEgb25seSB1c2VyIGdlc3R1cmVzIHRocm91Z2ggRmV0
Y2guCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpjbGVhbik6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHlDb25zdW1lcjo6c2V0Q29uc3VtZVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OnJlc2V0Q29uc3VtZVByb21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdGYWlsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdTdWNjZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1
bWVyOjpzZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OkZldGNoQm9keUNvbnN1bWVyKToKKyAgICAg
ICAgUHJvcGFnYXRlcyBtZWRpYSBvbmx5IHVzZXIgZ2VzdHVyZXMgdGhyb3VnaCBGZXRjaFJlc3Bv
bnNlLiBVc2VyR2VzdHVyZUluZGljYXRvciBpcyBvbmx5IHNldCBpbiB0aGUgYXN5bmMgcHJvbWlz
ZSByZXNvbHZpbmcgcGF0aC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpxdWV1ZU1pY3JvdGFza1RvRXZlbnRMb29w
KToKKyAgICAgICAgUHJvcGFnYXRlcyBtZWRpYSBvbmx5IHVzZXIgZ2VzdHVyZXMgdGhhdCB3YXMg
cHJvcGFnYXRlZCB0aHJvdWdoIEZldGNoIHRvIHRoZSByZWxhdGVkIHByb21pc2UgZXhlY3V0b3Jz
LgorCisgICAgICAgICogZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlVzZXJHZXN0dXJlSW5kaWNhdG9yOjpVc2VyR2VzdHVyZUluZGljYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZUluZGljYXRvcjo6flVzZXJHZXN0dXJlSW5kaWNhdG9y
KToKKyAgICAgICAgKiBkb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJHZXN0dXJlVG9rZW46OnNldElzUHJvcGFnYXRlZEZyb21GZXRjaCk6CisgICAgICAg
IChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjpyZXNldElzUHJvcGFnYXRlZEZyb21GZXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpVc2VyR2VzdHVyZVRva2VuOjppc1Byb3BhZ2F0ZWRGcm9tRmV0
Y2ggY29uc3QpOgorICAgICAgICBBZGRzIGEgZmxhZyB0byBpbmRpY2F0ZSB0aGUgcHJvcGFnYXRp
b24gc291cmNlIG9mIGEgdXNlciBnZXN0dXJlIHRva2VuLiBBbmQgbWFrZXMgcGlwZWxpbmVzIGZy
b20gdGVzdGluZy4KKworICAgICAgICAqIHBhZ2UvRE9NVGltZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAgR2F0aGVycyBzb21lIGNvbnN0YW50cy4K
KworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6c2V0RmV0Y2hNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaWRsOgorICAgICAgICBDcmFmdHMgYSB3YXkgdG8gcGFzcyB0aGUgbWF4aW11bSBpbnRl
cnZhbCBmcm9tIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QpOgor
ICAgICAgICBHYXRoZXJzIHNvbWUgY29uc3RhbnRzLgorCiAyMDIwLTA3LTIzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3BsaXQgV2luZG93
cyBwYXJ0cyBmcm9tIENGTmV0d29ya1NQSS5oIHRvIENGTmV0d29ya1NQSVdpbi5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0RPTVdpbmRvd0ZldGNoLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRE9NV2luZG93RmV0Y2guY3BwCmluZGV4IGRlYzMx
ZDk0MGE1NzQ0ZTQ5ZDY1YjZlMTVlNzY0MmM5M2MzMGIzMjYuLjdiNzJlZmFmYWE3OWM4ZDZkYmI2
YjhmY2IxY2E2MWYwODZjOGQ3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRE9NV2luZG93RmV0Y2guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRE9NV2luZG93RmV0Y2guY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRmV0Y2hS
ZXNwb25zZS5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAi
SlNGZXRjaFJlc3BvbnNlLmgiCisjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Niw3ICs1NywxMyBAQCB2b2lkIERPTVdpbmRvd0Zl
dGNoOjpmZXRjaChET01XaW5kb3cmIHdpbmRvdywgRmV0Y2hSZXF1ZXN0OjpJbmZvJiYgaW5wdXQs
IEZldGNoUgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRmV0Y2hSZXNwb25zZTo6ZmV0
Y2goKmRvY3VtZW50LCByZXF1ZXN0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLmdldCgpLCBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldKEV4Y2VwdGlvbk9yPEZldGNoUmVzcG9uc2UmPiYmIHJlc3Vs
dCkgbXV0YWJsZSB7CisgICAgRmV0Y2hSZXNwb25zZTo6ZmV0Y2goKmRvY3VtZW50LCByZXF1ZXN0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHVzZXJH
ZXN0dXJlVG9rZW4gPSBVc2VyR2VzdHVyZUluZGljYXRvcjo6Y3VycmVudFVzZXJHZXN0dXJlKCld
KEV4Y2VwdGlvbk9yPEZldGNoUmVzcG9uc2UmPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAg
IGlmICghdXNlckdlc3R1cmVUb2tlbiB8fCB1c2VyR2VzdHVyZVRva2VuLT5oYXNFeHBpcmVkKFVz
ZXJHZXN0dXJlVG9rZW46Om1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0Zv
ckZldGNoKCkpIHx8ICF1c2VyR2VzdHVyZVRva2VuLT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkg
eworICAgICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdl
c3R1cmVJbmRpY2F0b3IodXNlckdlc3R1cmVUb2tlbiwgVXNlckdlc3R1cmVUb2tlbjo6R2VzdHVy
ZVNjb3BlOjpNZWRpYU9ubHksIFVzZXJHZXN0dXJlVG9rZW46OklzUHJvcGFnYXRlZEZyb21GZXRj
aDo6WWVzKTsKICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKICAgICB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHAKaW5kZXggZmE1NmEyMjdhM2I0OTgwNzI1N2JjYTQ2MzMwZDc1OGE5MjlhNDRlYi4u
OTVjZmI2ZmQzYTBkOTk2MzY1MmNkZDQ1MDM4MTczMWE0ZDliMjNmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTY4LDcg
KzY4LDcgQEAgc3RhdGljIHZvaWQgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UsIEZldGNoQm9keUNvbnMKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6
OmNsZWFuKCkKIHsKICAgICBtX2J1ZmZlciA9IG51bGxwdHI7Ci0gICAgbV9jb25zdW1lUHJvbWlz
ZSA9IG51bGxwdHI7CisgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAgIGlmIChtX3Npbmsp
IHsKICAgICAgICAgbV9zaW5rLT5jbGVhckNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTEwNyw3ICsxMDcsNyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVhZGFibGVTdHJlYW0qCiAgICAgfQogCiAgICAgaWYg
KG1faXNMb2FkaW5nKSB7Ci0gICAgICAgIG1fY29uc3VtZVByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpOworICAgICAgICBzZXRDb25zdW1lUHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTg5LDkgKzE4OSwxNiBAQCBTdHJpbmcgRmV0Y2hCb2R5
Q29uc3VtZXI6OnRha2VBc1RleHQoKQogdm9pZCBGZXRjaEJvZHlDb25zdW1lcjo6c2V0Q29uc3Vt
ZVByb21pc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIEFTU0VSVCgh
bV9jb25zdW1lUHJvbWlzZSk7CisgICAgbV91c2VyR2VzdHVyZVRva2VuID0gVXNlckdlc3R1cmVJ
bmRpY2F0b3I6OmN1cnJlbnRVc2VyR2VzdHVyZSgpOwogICAgIG1fY29uc3VtZVByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpOwogfQogCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNldENvbnN1
bWVQcm9taXNlKCkKK3sKKyAgICBtX2NvbnN1bWVQcm9taXNlID0gbnVsbHB0cjsKKyAgICBtX3Vz
ZXJHZXN0dXJlVG9rZW4gPSBudWxscHRyOworfQorCiB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpz
ZXRTb3VyY2UoUmVmPEZldGNoQm9keVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgbV9zb3VyY2Ug
PSBXVEZNb3ZlKHNvdXJjZSk7CkBAIC0yMDYsNyArMjEzLDcgQEAgdm9pZCBGZXRjaEJvZHlDb25z
dW1lcjo6bG9hZGluZ0ZhaWxlZChjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKICAgICBtX2lz
TG9hZGluZyA9IGZhbHNlOwogICAgIGlmIChtX2NvbnN1bWVQcm9taXNlKSB7CiAgICAgICAgIG1f
Y29uc3VtZVByb21pc2UtPnJlamVjdChleGNlcHRpb24pOwotICAgICAgICBtX2NvbnN1bWVQcm9t
aXNlID0gbnVsbHB0cjsKKyAgICAgICAgcmVzZXRDb25zdW1lUHJvbWlzZSgpOwogICAgIH0KICAg
ICBpZiAobV9zb3VyY2UpIHsKICAgICAgICAgbV9zb3VyY2UtPmVycm9yKGV4Y2VwdGlvbik7CkBA
IC0yMTgsOCArMjI1LDE0IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmxvYWRpbmdTdWNjZWVk
ZWQoKQogewogICAgIG1faXNMb2FkaW5nID0gZmFsc2U7CiAKLSAgICBpZiAobV9jb25zdW1lUHJv
bWlzZSkKLSAgICAgICAgcmVzb2x2ZShtX2NvbnN1bWVQcm9taXNlLnJlbGVhc2VOb25OdWxsKCks
IG51bGxwdHIpOworICAgIGlmIChtX2NvbnN1bWVQcm9taXNlKSB7CisgICAgICAgIGlmICghbV91
c2VyR2VzdHVyZVRva2VuIHx8IG1fdXNlckdlc3R1cmVUb2tlbi0+aGFzRXhwaXJlZChVc2VyR2Vz
dHVyZVRva2VuOjptYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JGZXRj
aCgpKSB8fCAhbV91c2VyR2VzdHVyZVRva2VuLT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAg
ICAgICAgICAgIHJlc29sdmUobV9jb25zdW1lUHJvbWlzZS5yZWxlYXNlTm9uTnVsbCgpLCBudWxs
cHRyKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yKG1fdXNlckdlc3R1cmVUb2tlbiwgVXNlckdlc3R1cmVUb2tlbjo6R2Vz
dHVyZVNjb3BlOjpNZWRpYU9ubHksIFVzZXJHZXN0dXJlVG9rZW46OklzUHJvcGFnYXRlZEZyb21G
ZXRjaDo6WWVzKTsKKyAgICAgICAgICAgIHJlc29sdmUobV9jb25zdW1lUHJvbWlzZS5yZWxlYXNl
Tm9uTnVsbCgpLCBudWxscHRyKTsKKyAgICAgICAgfQorICAgIH0KICAgICBpZiAobV9zb3VyY2Up
IHsKICAgICAgICAgbV9zb3VyY2UtPmNsb3NlKCk7CiAgICAgICAgIG1fc291cmNlID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
aAppbmRleCAzY2MyNDY0NjA5OTQ4YWQzZmU0ZDIzZDAwNjVjNjg3OWY3NDI2NzgyLi4yNmNkNzE5
MWI3YjIwM2NjZGU1Mjc4ZGZlYTQ0NTkyYmQwOGM5MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVh
bVNpbmsuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJVc2VyR2VzdHVy
ZUluZGljYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDcgKzQ0LDcgQEAg
Y2xhc3MgRmV0Y2hCb2R5Q29uc3VtZXIgewogcHVibGljOgogICAgIGVudW0gY2xhc3MgVHlwZSB7
IE5vbmUsIEFycmF5QnVmZmVyLCBCbG9iLCBKU09OLCBUZXh0IH07CiAKLSAgICBGZXRjaEJvZHlD
b25zdW1lcihUeXBlIHR5cGUpIDogbV90eXBlKHR5cGUpIHsgfQorICAgIGV4cGxpY2l0IEZldGNo
Qm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9CiAKICAgICB2b2lkIGFw
cGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCk7CiAgICAgdm9pZCBhcHBlbmQoY29uc3Qg
dW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQpOwpAQCAtNzUsNiArNzYsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgUmVmPEJsb2I+IHRha2VBc0Jsb2IoKTsKKyAgICB2b2lkIHJlc2V0
Q29uc3VtZVByb21pc2UoKTsKIAogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX2NvbnRl
bnRUeXBlOwpAQCAtODMsNiArODUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxSZWFkYWJsZVN0
cmVhbVRvU2hhcmVkQnVmZmVyU2luaz4gbV9zaW5rOwogICAgIFJlZlB0cjxGZXRjaEJvZHlTb3Vy
Y2U+IG1fc291cmNlOwogICAgIGJvb2wgbV9pc0xvYWRpbmcgeyBmYWxzZSB9OworICAgIFJlZlB0
cjxVc2VyR2VzdHVyZVRva2VuPiBtX3VzZXJHZXN0dXJlVG9rZW47CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5jcHAKaW5kZXggZWZjMTYzNWVhNTVlZTc0NTA2MGQ5MTIwOGZkMTAxMmQ2OWFlZDljNC4uZTNi
ODNhY2VhZmQzYzBhNGU2YTllMjIxZTQxYjU2ZThmODZiMmZkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtMzM0LDQgKzMzNCwzIEBAIGNv
bnN0IGNoYXIqIEZldGNoUmVxdWVzdDo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk2NDI0ZDE1ZWI4MjFmMDI4NDJkYjFiY2Ey
ZjQ2MDFhY2Y3YzQzMGYuLmYyMTMwN2ZhZTE1ZjhmMDRjYmFiOTExZjg2MWM3NjA3NTQ2YzRmZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE3NjIsNiArMTc2Miw3IEBACiAJCTU3MDQ0MDVBMUU1MzkzNjIwMDM1NjYwMSAvKiBK
U0Flc0NiY0NmYlBhcmFtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTcwNDQwNTkxRTUzOTM2MjAwMzU2NjAxIC8qIEpTQWVzQ2JjQ2ZiUGFyYW1zLmgg
Ki87IH07CiAJCTU3MDZBNjk2MURERTVDOTUwMEEwM0IxNCAvKiBDcnlwdG9BbGdvcml0aG1Sc2FP
YWVwUGFyYW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzA2QTY5NTFEREU1Qzk1MDBBMDNCMTQgLyogQ3J5cHRvQWxnb3JpdGhtUnNhT2FlcFBhcmFt
cy5oICovOyB9OwogCQk1NzA2QTY5ODFEREU1RTQ2MDBBMDNCMTQgLyogSlNSc2FPYWVwUGFyYW1z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzA2QTY5
NzFEREU1RTQ2MDBBMDNCMTQgLyogSlNSc2FPYWVwUGFyYW1zLmggKi87IH07CisJCTU3MDkzRDEz
MjRDOTdDOEYwMDg2QzUyRCAvKiBGZXRjaFJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTMwMTVENjFDN0I1NzA0MDAwOTFDNkUgLyogRmV0
Y2hSZXNwb25zZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTU3MTI1MjY5MUU1MjRFQjEwMDhGRjM2OSAvKiBDcnlwdG9BbGdvcml0aG1BRVNfQ0ZC
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzEyNTI2
ODFFNTI0RUIxMDA4RkYzNjkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NGQi5oICovOyB9OwogCQk1
NzE1MkI1QTIxQ0IzRTg4MDAwQzM3Q0EgLyogQXBkdUNvbW1hbmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjU4MjFDQjJFM0IwMDBDMzdDQSAv
KiBBcGR1Q29tbWFuZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTU3MTUyQjVDMjFDQzE5MDIwMDBDMzdDQSAvKiBBcGR1UmVzcG9uc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MTUyQjU2MjFDQjJF
M0EwMDBDMzdDQSAvKiBBcGR1UmVzcG9uc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTgxMiw2ICsxODEzLDcgQEAKIAkJNTc1MEE5N0UxRTZB
MTNFRjAwNzA1QzRBIC8qIENyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzUwQTk3RDFFNkExM0VGMDA3MDVD
NEEgLyogQ3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXMuaCAqLzsgfTsKIAkJNTc1MEE5ODIxRTZB
MTUwODAwNzA1QzRBIC8qIEpTRWNLZXlQYXJhbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTBBOTgwMUU2QTE1MDgwMDcwNUM0QSAvKiBKU0VjS2V5
UGFyYW1zLmggKi87IH07CiAJCTU3NTBBOTg3MUU2QTIxNjgwMDcwNUM0QSAvKiBDcnlwdG9BbGdv
cml0aG1FQ0RILmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NzUwQTk4NTFFNkEyMTY4MDA3MDVDNEEgLyogQ3J5cHRvQWxnb3JpdGhtRUNESC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTU3NTMzRTA4MjRD
NkM1OTgwMDNFRjJEMyAvKiBGZXRjaFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRjU0Rjg4MUM1MEM0RjYwMDMzODQ4OCAvKiBGZXRjaFJl
cXVlc3QuaCAqLzsgfTsKIAkJNTc1NDcxOUYxRUNFNjI4MzAwREQ2M0IyIC8qIEpTUnNhUHNzUGFy
YW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzU0
NzE5OTFFQ0U1RDJBMDBERDYzQjIgLyogSlNSc2FQc3NQYXJhbXMuaCAqLzsgfTsKIAkJNTc1ODU5
NjEyMzlGMTI0RDAwQzc0NTcyIC8qIEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0
cHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1
ODU5NUUyMzlGMTE3MzAwQzc0NTcyIC8qIEpTQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50
T3V0cHV0cy5oICovOyB9OwogCQk1NzU4NTk2QzIzOUYzMjFDMDBDNzQ1NzIgLyogQXV0aGVudGlj
YXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTc1ODU5NjUyMzlGMTRDQzAwQzc0NTcyIC8qIEF1dGhlbnRp
Y2F0aW9uRXh0ZW5zaW9uc0NsaWVudE91dHB1dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzA4MDYsMTEgKzMwODA4LDEzIEBACiAJCQkJNTE3
QTUzNTgxRjU4ODlFODAwRENEQzBBIC8qIEZldGNoTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUFENzUzQTFDRUY2QkQxMDBBMzE0ODYgLyogRmV0Y2hPcHRpb25zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0UxOTE0RDFGMkE5QUZCMDAyNzJGNzggLyogRmV0Y2hSZWZlcnJlclBv
bGljeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTc1MzNFMDgyNEM2QzU5ODAwM0VGMkQzIC8qIEZl
dGNoUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkxNUExRjJBOUIzNDAwMjcyRjc4
IC8qIEZldGNoUmVxdWVzdENhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0UxOTE1NTFGMkE5
QjFEMDAyNzJGNzggLyogRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDRTE5MTRBMUYyQTk4QjkwMDI3MkY3OCAvKiBGZXRjaFJlcXVlc3RJbml0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0UxOTE1MTFGMkE5QjBBMDAyNzJGNzggLyogRmV0Y2hSZXF1ZXN0TW9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFMTkxNjAxRjJBOUI0RjAwMjcyRjc4IC8qIEZldGNo
UmVxdWVzdFJlZGlyZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1NzA5M0QxMzI0Qzk3QzhGMDA4
NkM1MkQgLyogRmV0Y2hSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBEOEIxMjQ4
RjBCMzAwRDNBOUM5IC8qIEZFVGlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBEOEQxMjQ4
RjBCMzAwRDNBOUM5IC8qIEZFVHVyYnVsZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYw
OTUxMkIwMjZGNzAwQzFBMzU5IC8qIEZGVENvbnZvbHZlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAppbmRleCBhY2Vh
NzY2YWYxYzdkNWZlZWFlMTdhNjlmOWUzYjM1Y2RlZTlhODhjLi4xODhkOGU0NWUwNTZhNDM4MWFm
YWE0OTViYTIzMTFhMWQ5ZjZjNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTIxNSw3ICsyMTUsMTcgQEAgdm9pZCBKU0RPTVdpbmRv
d0Jhc2U6OnF1ZXVlTWljcm90YXNrVG9FdmVudExvb3AoSlNHbG9iYWxPYmplY3QmIG9iamVjdCwg
UmVmPEpTQzoKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBKU01pY3JvdGFza0NhbGxiYWNrOjpjcmVh
dGUodGhpc09iamVjdCwgV1RGTW92ZSh0YXNrKSk7CiAgICAgYXV0byYgZXZlbnRMb29wID0gdGhp
c09iamVjdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2ZW50TG9vcCgpOwotICAgIGV2ZW50
TG9vcC5xdWV1ZU1pY3JvdGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRh
YmxlIHsKKyAgICAvLyBQcm9wYWdhdGluZyBtZWRpYSBvbmx5IHVzZXIgZ2VzdHVyZSBmb3IgRmV0
Y2ggQVBJJ3MgcHJvbWlzZSBjaGFpbi4KKyAgICBhdXRvIHVzZXJHZXN0dXJlVG9rZW4gPSBVc2Vy
R2VzdHVyZUluZGljYXRvcjo6Y3VycmVudFVzZXJHZXN0dXJlKCk7CisgICAgaWYgKHVzZXJHZXN0
dXJlVG9rZW4gJiYgIXVzZXJHZXN0dXJlVG9rZW4tPmlzUHJvcGFnYXRlZEZyb21GZXRjaCgpKQor
ICAgICAgICB1c2VyR2VzdHVyZVRva2VuID0gbnVsbHB0cjsKKyAgICBldmVudExvb3AucXVldWVN
aWNyb3Rhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHVzZXJHZXN0dXJlVG9rZW4g
PSBXVEZNb3ZlKHVzZXJHZXN0dXJlVG9rZW4pXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIXVz
ZXJHZXN0dXJlVG9rZW4pIHsKKyAgICAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBn
ZXN0dXJlSW5kaWNhdG9yKHVzZXJHZXN0dXJlVG9rZW4sIFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1
cmVTY29wZTo6TWVkaWFPbmx5LCBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRGcm9tRmV0
Y2g6Olllcyk7CiAgICAgICAgIGNhbGxiYWNrLT5jYWxsKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcAppbmRleCBkZmVjOTNiNjQ0Zjcy
YTUxYmFkMGJlYmYzOTZkYTYxYzU3ZjZlNDI4Li43NjM5OWFiNTc0ZDk0ZDczYzVhYmMwOGY4ZGY3
OTAxOTc5ZTU4MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJ
bmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGljYXRv
ci5jcHAKQEAgLTQ5LDYgKzQ5LDE3IEBAIFVzZXJHZXN0dXJlVG9rZW46On5Vc2VyR2VzdHVyZVRv
a2VuKCkKICAgICAgICAgb2JzZXJ2ZXIoKnRoaXMpOwogfQogCitzdGF0aWMgU2Vjb25kcyBtYXhJ
bnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoIHsgMTAgfTsKK2NvbnN0IFNl
Y29uZHMmIFVzZXJHZXN0dXJlVG9rZW46Om1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9y
d2FyZGluZ0ZvckZldGNoKCkKK3sKKyAgICByZXR1cm4gbWF4SW50ZXJ2YWxGb3JVc2VyR2VzdHVy
ZUZvcndhcmRpbmdGb3JGZXRjaDsKK30KKwordm9pZCBVc2VyR2VzdHVyZVRva2VuOjpzZXRNYXhp
bXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JGZXRjaEZvclRlc3RpbmcoU2Vj
b25kcyB2YWx1ZSkKK3sKKyAgICBtYXhJbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0Zv
ckZldGNoID0gV1RGTW92ZSh2YWx1ZSk7Cit9CisKIFVzZXJHZXN0dXJlSW5kaWNhdG9yOjpVc2Vy
R2VzdHVyZUluZGljYXRvcihPcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4gc3Rh
dGUsIERvY3VtZW50KiBkb2N1bWVudCwgVXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBQcm9j
ZXNzSW50ZXJhY3Rpb25TdHlsZSBwcm9jZXNzSW50ZXJhY3Rpb25TdHlsZSkKICAgICA6IG1fcHJl
dmlvdXNUb2tlbiB7IGN1cnJlbnRUb2tlbigpIH0KIHsKQEAgLTc0LDcgKzg1LDcgQEAgVXNlckdl
c3R1cmVJbmRpY2F0b3I6OlVzZXJHZXN0dXJlSW5kaWNhdG9yKE9wdGlvbmFsPFByb2Nlc3NpbmdV
c2VyR2VzdHVyZVN0YXRlPgogICAgIH0KIH0KIAotVXNlckdlc3R1cmVJbmRpY2F0b3I6OlVzZXJH
ZXN0dXJlSW5kaWNhdG9yKFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiB0b2tlbiwgVXNlckdlc3R1
cmVUb2tlbjo6R2VzdHVyZVNjb3BlIHNjb3BlKQorVXNlckdlc3R1cmVJbmRpY2F0b3I6OlVzZXJH
ZXN0dXJlSW5kaWNhdG9yKFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiB0b2tlbiwgVXNlckdlc3R1
cmVUb2tlbjo6R2VzdHVyZVNjb3BlIHNjb3BlLCBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0
ZWRGcm9tRmV0Y2ggaXNQcm9wYWdhdGVkRnJvbUZldGNoKQogewogICAgIC8vIFNpbGVudGx5IGln
bm9yZSBVc2VyR2VzdHVyZUluZGljYXRvcnMgb24gbm9uIG1haW4gdGhyZWFkcy4KICAgICBpZiAo
IWlzTWFpblRocmVhZCgpKQpAQCAtODUsNiArOTYsNyBAQCBVc2VyR2VzdHVyZUluZGljYXRvcjo6
VXNlckdlc3R1cmVJbmRpY2F0b3IoUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+IHRva2VuLCBVc2Vy
RwogCiAgICAgaWYgKHRva2VuKSB7CiAgICAgICAgIHRva2VuLT5zZXRTY29wZShzY29wZSk7Cisg
ICAgICAgIHRva2VuLT5zZXRJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2goaXNQcm9wYWdhdGVkRnJvbUZl
dGNoKTsKICAgICAgICAgY3VycmVudFRva2VuKCkgPSB0b2tlbjsKICAgICB9CiB9CkBAIC05Nyw2
ICsxMDksNyBAQCBVc2VyR2VzdHVyZUluZGljYXRvcjo6flVzZXJHZXN0dXJlSW5kaWNhdG9yKCkK
ICAgICBpZiAoYXV0byB0b2tlbiA9IGN1cnJlbnRUb2tlbigpKSB7CiAgICAgICAgIHRva2VuLT5y
ZXNldERPTVBhc3RlQWNjZXNzKCk7CiAgICAgICAgIHRva2VuLT5yZXNldFNjb3BlKCk7CisgICAg
ICAgIHRva2VuLT5yZXNldElzUHJvcGFnYXRlZEZyb21GZXRjaCgpOwogICAgIH0KIAogICAgIGN1
cnJlbnRUb2tlbigpID0gbV9wcmV2aW91c1Rva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdl
c3R1cmVJbmRpY2F0b3IuaAppbmRleCAzY2YzMjc3NmMwMmFiNzA4ODhkM2YzYTBiZTdjOTcyZmU0
MWJlMmRjLi43OTUwM2IwNDhlZmU0OGIyNzBhZWU1ZGMwMjE4ODNjZjI0ZmQ1Mjk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaApAQCAtNDcsNiArNDcsMTAgQEAg
ZW51bSBjbGFzcyBVc2VyR2VzdHVyZVR5cGUgeyBFc2NhcGVLZXksIE90aGVyIH07CiAKIGNsYXNz
IFVzZXJHZXN0dXJlVG9rZW4gOiBwdWJsaWMgUmVmQ291bnRlZDxVc2VyR2VzdHVyZVRva2VuPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFVzZXJHZXN0dXJlVG9rZW4+IHsKIHB1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3RleHByIFNlY29uZHMgbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3
YXJkaW5nIHsgMV9zIH07IC8vIE9uZSBzZWNvbmQgbWF0Y2hlcyBHZWNrby4KKyAgICBzdGF0aWMg
Y29uc3QgU2Vjb25kcyYgbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9y
RmV0Y2goKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRNYXhpbXVtSW50ZXJ2
YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JGZXRjaEZvclRlc3RpbmcoU2Vjb25kcyk7CisK
ICAgICBzdGF0aWMgUmVmPFVzZXJHZXN0dXJlVG9rZW4+IGNyZWF0ZShQcm9jZXNzaW5nVXNlckdl
c3R1cmVTdGF0ZSBzdGF0ZSwgVXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlckdlc3R1cmVUb2tlbihzdGF0ZSwgZ2VzdHVy
ZVR5cGUpKTsKQEAgLTg0LDYgKzg4LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNjb3BlKEdl
c3R1cmVTY29wZSBzY29wZSkgeyBtX3Njb3BlID0gc2NvcGU7IH0KICAgICB2b2lkIHJlc2V0U2Nv
cGUoKSB7IG1fc2NvcGUgPSBHZXN0dXJlU2NvcGU6OkFsbDsgfQogCisgICAgLy8gRXhwYW5kIHRo
ZSBmb2xsb3dpbmcgbWV0aG9kcyBpZiBtb3JlIHByb3BhZ2F0aW9uIHNvdXJjZXMgYXJlIGFkZGVk
IGxhdGVyLgorICAgIGVudW0gY2xhc3MgSXNQcm9wYWdhdGVkRnJvbUZldGNoIHsgWWVzLCBObyB9
OworICAgIHZvaWQgc2V0SXNQcm9wYWdhdGVkRnJvbUZldGNoKElzUHJvcGFnYXRlZEZyb21GZXRj
aCBpcykgeyBtX2lzUHJvcGFnYXRlZEZyb21GZXRjaCA9IGlzOyB9CisgICAgdm9pZCByZXNldElz
UHJvcGFnYXRlZEZyb21GZXRjaCgpIHsgbV9pc1Byb3BhZ2F0ZWRGcm9tRmV0Y2ggPSBJc1Byb3Bh
Z2F0ZWRGcm9tRmV0Y2g6Ok5vOyB9CisgICAgYm9vbCBpc1Byb3BhZ2F0ZWRGcm9tRmV0Y2goKSBj
b25zdCB7IHJldHVybiBtX2lzUHJvcGFnYXRlZEZyb21GZXRjaCA9PSBJc1Byb3BhZ2F0ZWRGcm9t
RmV0Y2g6OlllczsgfQorCiAgICAgYm9vbCBoYXNFeHBpcmVkKFNlY29uZHMgZXhwaXJhdGlvbklu
dGVydmFsKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc3RhcnRUaW1lICsgZXhwaXJh
dGlvbkludGVydmFsIDwgTW9ub3RvbmljVGltZTo6bm93KCk7CkBAIC0xMDQsNiArMTE0LDcgQEAg
cHJpdmF0ZToKICAgICBET01QYXN0ZUFjY2Vzc1BvbGljeSBtX2RvbVBhc3RlQWNjZXNzUG9saWN5
IHsgRE9NUGFzdGVBY2Nlc3NQb2xpY3k6Ok5vdFJlcXVlc3RlZFlldCB9OwogICAgIEdlc3R1cmVT
Y29wZSBtX3Njb3BlIHsgR2VzdHVyZVNjb3BlOjpBbGwgfTsKICAgICBNb25vdG9uaWNUaW1lIG1f
c3RhcnRUaW1lIHsgTW9ub3RvbmljVGltZTo6bm93KCkgfTsKKyAgICBJc1Byb3BhZ2F0ZWRGcm9t
RmV0Y2ggbV9pc1Byb3BhZ2F0ZWRGcm9tRmV0Y2ggeyBJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2g6Ok5v
IH07CiB9OwogCiBjbGFzcyBVc2VyR2VzdHVyZUluZGljYXRvciB7CkBAIC0xMTgsNyArMTI5LDcg
QEAgcHVibGljOgogICAgIC8vIElmIGEgZG9jdW1lbnQgaXMgcHJvdmlkZWQsIGl0cyBsYXN0IGtu
b3duIHVzZXIgZ2VzdHVyZSB0aW1lc3RhbXAgaXMgdXBkYXRlZC4KICAgICBlbnVtIGNsYXNzIFBy
b2Nlc3NJbnRlcmFjdGlvblN0eWxlIHsgSW1tZWRpYXRlLCBEZWxheWVkIH07CiAgICAgV0VCQ09S
RV9FWFBPUlQgZXhwbGljaXQgVXNlckdlc3R1cmVJbmRpY2F0b3IoT3B0aW9uYWw8UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlU3RhdGU+LCBEb2N1bWVudCogPSBudWxscHRyLCBVc2VyR2VzdHVyZVR5cGUg
PSBVc2VyR2VzdHVyZVR5cGU6Ok90aGVyLCBQcm9jZXNzSW50ZXJhY3Rpb25TdHlsZSA9IFByb2Nl
c3NJbnRlcmFjdGlvblN0eWxlOjpJbW1lZGlhdGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFVzZXJHZXN0dXJlSW5kaWNhdG9yKFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiwgVXNlckdl
c3R1cmVUb2tlbjo6R2VzdHVyZVNjb3BlID0gVXNlckdlc3R1cmVUb2tlbjo6R2VzdHVyZVNjb3Bl
OjpBbGwpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFVzZXJHZXN0dXJlSW5kaWNhdG9y
KFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiwgVXNlckdlc3R1cmVUb2tlbjo6R2VzdHVyZVNjb3Bl
ID0gVXNlckdlc3R1cmVUb2tlbjo6R2VzdHVyZVNjb3BlOjpBbGwsIFVzZXJHZXN0dXJlVG9rZW46
OklzUHJvcGFnYXRlZEZyb21GZXRjaCA9IFVzZXJHZXN0dXJlVG9rZW46OklzUHJvcGFnYXRlZEZy
b21GZXRjaDo6Tm8pOwogICAgIFdFQkNPUkVfRVhQT1JUIH5Vc2VyR2VzdHVyZUluZGljYXRvcigp
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAppbmRleCBiMjEzYTk5YzhhZmYw
MThkMTg4N2VjZjc0NDJhNDNhY2I2YmQxNDU4Li41YjkzMWVmYTFmMDNhYmE5ZjY3OWY3OTUyZGQ5
YWRmNzNjODE2MWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcApAQCAtNDgsNyArNDgsNiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBTZWNvbmRzIG1heEludGVy
dmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nIHsgMV9zIH07IC8vIE9uZSBzZWNvbmQgbWF0Y2hl
cyBHZWNrby4KIHN0YXRpYyBjb25zdCBTZWNvbmRzIG1pbkludGVydmFsRm9yTm9uVXNlck9ic2Vy
dmFibGVDaGFuZ2VUaW1lcnMgeyAxX3MgfTsgLy8gRW1waXJpY2FsbHkgZGV0ZXJtaW5lZCB0byBt
YXhpbWl6ZSBiYXR0ZXJ5IGxpZmUuCiBzdGF0aWMgY29uc3QgaW50IG1heFRpbWVyTmVzdGluZ0xl
dmVsID0gNTsKIApAQCAtMzAxLDcgKzMwMCw3IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKIAog
ICAgIERPTVRpbWVyRmlyZVN0YXRlIGZpcmVTdGF0ZShjb250ZXh0LCBzdGQ6Om1pbihtX25lc3Rp
bmdMZXZlbCArIDEsIG1heFRpbWVyTmVzdGluZ0xldmVsKSk7CiAKLSAgICBpZiAobV91c2VyR2Vz
dHVyZVRva2VuVG9Gb3J3YXJkICYmIG1fdXNlckdlc3R1cmVUb2tlblRvRm9yd2FyZC0+aGFzRXhw
aXJlZChtYXhJbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZykpCisgICAgaWYgKG1fdXNl
ckdlc3R1cmVUb2tlblRvRm9yd2FyZCAmJiBtX3VzZXJHZXN0dXJlVG9rZW5Ub0ZvcndhcmQtPmhh
c0V4cGlyZWQoVXNlckdlc3R1cmVUb2tlbjo6bWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVG
b3J3YXJkaW5nKSkKICAgICAgICAgbV91c2VyR2VzdHVyZVRva2VuVG9Gb3J3YXJkID0gbnVsbHB0
cjsKIAogICAgIEFTU0VSVCghaXNTdXNwZW5kZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggYWNiZmVkYzZkNzJiMTZmYjM5MDYzZDEwNTBmMDQ2OGIwMmMxOTliYi4u
ODkzN2EwN2FiOWVmMGE4ODFhYTIzMjliN2U2ZGUzYWZhMzVlZmRmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTY3Miw5ICs1NjcyLDkgQEAgdm9pZCBJbnRlcm5hbHM6
OnRlc3REaWN0aW9uYXJ5TG9nZ2luZygpCiAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZURpY3Rpb25hcnkoInRlc3RNZXNzYWdl
Il9zLCAidGVzdERlc2NyaXB0aW9uIl9zLCBkaWN0aW9uYXJ5LCBTaG91bGRTYW1wbGU6Ok5vKTsK
IH0KIAotdm9pZCBJbnRlcm5hbHM6OnNldFhIUk1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJl
Rm9yd2FyZGluZyhYTUxIdHRwUmVxdWVzdCYgcmVxdWVzdCwgZG91YmxlIGludGVydmFsKQordm9p
ZCBJbnRlcm5hbHM6OnNldE1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0Zv
ckZldGNoKGRvdWJsZSBpbnRlcnZhbCkKIHsKLSAgICByZXF1ZXN0LnNldE1heGltdW1JbnRlcnZh
bEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhpbnRlcnZhbCk7CisgICAgVXNlckdlc3R1cmVUb2tl
bjo6c2V0TWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0Y2hGb3JU
ZXN0aW5nKFNlY29uZHMoaW50ZXJ2YWwpKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnNldFRyYW5z
aWVudEFjdGl2YXRpb25EdXJhdGlvbihkb3VibGUgc2Vjb25kcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCmluZGV4IDg0M2VkZmEwNDgxNDQzYTQxYjFhMTA3ZjAyYzk1ZjAwMzA4ZGYwZWEu
LjdlNGQ5NjJjMmY4NWVhMWE0ZjYzZDA2ODUyYzcyY2RjMWVhMTdiYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaApAQCAtOTYxLDcgKzk2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
dGVzdERpY3Rpb25hcnlMb2dnaW5nKCk7CiAKLSAgICB2b2lkIHNldFhIUk1heGltdW1JbnRlcnZh
bEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyhYTUxIdHRwUmVxdWVzdCYsIGRvdWJsZSk7CisgICAg
dm9pZCBzZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JGZXRjaChk
b3VibGUpOwogICAgIHZvaWQgc2V0VHJhbnNpZW50QWN0aXZhdGlvbkR1cmF0aW9uKGRvdWJsZSBz
ZWNvbmRzKTsKIAogICAgIHZvaWQgc2V0SXNQbGF5aW5nVG9BdXRvbW90aXZlSGVhZFVuaXQoYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZTdmNjY1M2NhMDg0YzQy
NWExOWMxYWRhN2I3NzBlZTA1YjhiNjdlYS4uN2YyOWI3YzBlODVhNDJiMTJmOWVhYTg3YzUwZDgw
ZmFhMDAyOGU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtOTA3LDcg
KzkwNyw3IEBAIGVudW0gQ29udGVudFNpemVDYXRlZ29yeSB7CiAKICAgICB2b2lkIHRlc3REaWN0
aW9uYXJ5TG9nZ2luZygpOwogCi0gICAgdm9pZCBzZXRYSFJNYXhpbXVtSW50ZXJ2YWxGb3JVc2Vy
R2VzdHVyZUZvcndhcmRpbmcoWE1MSHR0cFJlcXVlc3QgeGhyLCBkb3VibGUgaW50ZXJ2YWwpOwor
ICAgIHZvaWQgc2V0TWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0
Y2goZG91YmxlIGludGVydmFsKTsKICAgICB2b2lkIHNldFRyYW5zaWVudEFjdGl2YXRpb25EdXJh
dGlvbihkb3VibGUgc2Vjb25kcyk7CiAKICAgICB2b2lkIHNldElzUGxheWluZ1RvQXV0b21vdGl2
ZUhlYWRVbml0KGJvb2xlYW4gdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKaW5kZXggYzZmYTQ4Yjg4ZmI1ZmM2Mjc3MDE2OTc1ODg2OGUzMmYxMzg5NzQwOS4uMmZiNDRj
MjA4MThlYmQ0YjM0Yjg5NzUzOTNkNDk0YWZiZDI1NWU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCkBAIC02Nyw4ICs2Nyw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIGNvbnN0IFNlY29uZHMgbWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3
YXJkaW5nIHsgMTBfcyB9OwotCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoWE1MSHR0cFJl
cXVlc3QpOwogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0Nv
dW50ZXIsIHhtbEh0dHBSZXF1ZXN0Q291bnRlciwgKCJYTUxIdHRwUmVxdWVzdCIpKTsKQEAgLTEy
MSw3ICsxMTksNiBAQCBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1fcmVzcG9uc2VUeXBlKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSkKICAgICAsIG1fcHJvZ3Jlc3NFdmVu
dFRocm90dGxlKCp0aGlzKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZYTUxIdHRwUmVx
dWVzdDo6ZGlkUmVhY2hUaW1lb3V0KQotICAgICwgbV9tYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2Vz
dHVyZUZvcndhcmRpbmcobWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKQog
ewogI2lmbmRlZiBOREVCVUcKICAgICB4bWxIdHRwUmVxdWVzdENvdW50ZXIuaW5jcmVtZW50KCk7
CkBAIC0xMDgxLDcgKzEwNzgsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50
KEV2ZW50JiBldmVudCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkpOwogCi0gICAgaWYgKG1fdXNl
ckdlc3R1cmVUb2tlbiAmJiBtX3VzZXJHZXN0dXJlVG9rZW4tPmhhc0V4cGlyZWQobV9tYXhpbXVt
SW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmcpKQorICAgIGlmIChtX3VzZXJHZXN0dXJl
VG9rZW4gJiYgbV91c2VyR2VzdHVyZVRva2VuLT5oYXNFeHBpcmVkKFVzZXJHZXN0dXJlVG9rZW46
Om1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoKCkpKQogICAg
ICAgICBtX3VzZXJHZXN0dXJlVG9rZW4gPSBudWxscHRyOwogCiAgICAgaWYgKHJlYWR5U3RhdGUo
KSAhPSBET05FIHx8ICFtX3VzZXJHZXN0dXJlVG9rZW4gfHwgIW1fdXNlckdlc3R1cmVUb2tlbi0+
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKQEAgLTExNTYsMTEgKzExNTMsNiBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkKICAgICBBY3RpdmVET01PYmplY3Q6OmNv
bnRleHREZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0TWF4aW11bUlu
dGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKGRvdWJsZSBpbnRlcnZhbCkKLXsKLSAgICBt
X21heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZyA9IFNlY29uZHMoaW50ZXJ2
YWwpOyAgICAKLX0KLQogdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZXZlbnRMaXN0ZW5lcnNEaWRDaGFu
Z2UoKQogewogICAgIG1faGFzUmVsZXZhbnRFdmVudExpc3RlbmVyID0gaGFzRXZlbnRMaXN0ZW5l
cnMoZXZlbnROYW1lcygpLmFib3J0RXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CmluZGV4IGQ1NDdjNjk2ZjJkN2NmNzYxMzg0MzNhMjRiMGJhYTRkN2Y5YThhOTUuLjA3NThiY2Q4
YTZkODI4Zjc3YTdiOTJmNTYyMmNmYTFkMDYzNWJiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCkBAIC0xMjgsOCArMTI4LDYgQEAgcHVibGljOgogCiAgICAgc2l6ZV90IG1lbW9y
eUNvc3QoKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWF4aW11bUludGVy
dmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nKGRvdWJsZSk7Ci0KICAgICB1c2luZyBFdmVudFRh
cmdldDo6ZGlzcGF0Y2hFdmVudDsKICAgICB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVy
cmlkZTsKIApAQCAtMjQ3LDcgKzI0NSw2IEBAIHByaXZhdGU6CiAKICAgICBPcHRpb25hbDxFeGNl
cHRpb25Db2RlPiBtX2V4Y2VwdGlvbkNvZGU7CiAgICAgUmVmUHRyPFVzZXJHZXN0dXJlVG9rZW4+
IG1fdXNlckdlc3R1cmVUb2tlbjsKLSAgICBTZWNvbmRzIG1fbWF4aW11bUludGVydmFsRm9yVXNl
ckdlc3R1cmVGb3J3YXJkaW5nOwogICAgIGJvb2wgbV9oYXNSZWxldmFudEV2ZW50TGlzdGVuZXIg
eyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGUzNzI5OTg2MDY3MjlkZjAzYWVkYzczN2M3ODIxYjE0
Y2ZhNDljMjkuLmNlMDRlMGQ4OTFlODBkNTUwYzI0ZTkxYzdlMmI4YmJhZjAyOGM4ODAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNy0yMyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBw
bGUuY29tPgorCisgICAgICAgIFByb3BhZ2F0aW5nIHVzZXIgZ2VzdHVyZSB0aHJvdWdoIEZldGNo
IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0
NDQ0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTk4MDk1Mz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogaHR0cC90ZXN0cy9tZWRpYS91c2VyLWdl
c3R1cmUtcHJlc2VydmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaHR0cC90ZXN0cy9tZWRpYS91c2VyLWdlc3R1cmUtcHJlc2VydmVkLWFjcm9zcy14bWxo
dHRwcmVxdWVzdC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL2Rvd25sb2FkLWhlYWRlci13aXRoLWRlbGF5LnBocDogQWRkZWQuCisKIDIwMjAtMDct
MjMgIEphbWVzIERhcnBpbmlhbiAgPGpkYXJwaW5pYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtXZWJHTDJdIFF1ZXJ5IE9iamVjdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWVkaWEvdXNlci1nZXN0dXJlLXByZXNlcnZlZC1hY3Jvc3MteG1saHR0cHJlcXVlc3QtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS91c2VyLWdlc3R1cmUtcHJl
c2VydmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC1leHBlY3RlZC50eHQKaW5kZXggMzFjODU0Y2Zl
OGZkZDIxNDVlOWJhNWU1NmJiNmRmYWMzM2MzMmRhNy4uYzk5YWQ5N2U2MGIzMWVjMDdhN2EyZDNj
NDU3N2E1Y2QzMjYxZjgxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRp
YS91c2VyLWdlc3R1cmUtcHJlc2VydmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS91c2VyLWdlc3R1cmUtcHJlc2Vy
dmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTUyLDUgKzUyLDkxIEBA
IEVWRU5UKGxvYWQpOiByZWFkeVN0YXRlID0gNAogUlVOKHNob3VsZFJlamVjdChtZWRpYUVsZW1l
bnQucGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKIFByb21pc2UgcmVq
ZWN0ZWQgY29ycmVjdGx5IE9LCiAKKyoqIGdlc3R1cmUgLT4gZmV0Y2ggLT4gd2luZG93Lm9wZW46
IHNob3VsZCBmYWlsIGJlY2F1c2UgRmV0Y2ggb25seSBwcm9wYWdhdGVzIHVzZXIgZ2VzdHVyZSBm
b3IgbWVkaWEKK2ZldGNoaW5nLCBkZWxheSA9IDEwMAorRkVUQ0gocmVzb2x2ZWQpOiBzdGF0dXMg
PSAyMDAKK0VYUEVDVEVEICh3aW5kb3cub3BlbigiYWJvdXQ6YmxhbmsiKSA9PSAnbnVsbCcpIE9L
CisKKyoqIGdlc3R1cmUgLT4gZmV0Y2ggLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBzdWNjZWVk
CitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK2ZldGNoaW5nLCBkZWxheSA9IDEwMAorRkVUQ0gocmVz
b2x2ZWQpOiBzdGF0dXMgPSAyMDAKK1JVTihzaG91bGRSZXNvbHZlKG1lZGlhRWxlbWVudC5wbGF5
KCkpLnRoZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxldGUpKQorUHJvbWlzZSByZXNvbHZlZCBP
SworCisqKiBnZXN0dXJlIC0+ICJsb25nIiBGZXRjaCAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxk
IGZhaWwKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorZmV0Y2hpbmcsIGRlbGF5ID0gMzAwCitGRVRD
SChyZXNvbHZlZCk6IHN0YXR1cyA9IDIwMAorUlVOKHNob3VsZFJlamVjdChtZWRpYUVsZW1lbnQu
cGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1Byb21pc2UgcmVqZWN0
ZWQgY29ycmVjdGx5IE9LCisKKyoqIG5vIGdlc3R1cmUgLT4gZmV0Y2ggLT4gdmlkZW8gcGxheWJh
Y2s6IHNob3VsZCBmYWlsCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK2ZldGNoaW5nLCBkZWxheSA9
IDEwMAorRkVUQ0gocmVzb2x2ZWQpOiBzdGF0dXMgPSAyMDAKK1JVTihzaG91bGRSZWplY3QobWVk
aWFFbGVtZW50LnBsYXkoKSkudGhlbih0ZXN0Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCitQcm9t
aXNlIHJlamVjdGVkIGNvcnJlY3RseSBPSworCisqKiBnZXN0dXJlIC0+IGZldGNoIC0+IGJsb2Ig
LT4gd2luZG93Lm9wZW46IHNob3VsZCBmYWlsIGJlY2F1c2UgRmV0Y2ggb25seSBwcm9wYWdhdGVz
IHVzZXIgZ2VzdHVyZSBmb3IgbWVkaWEKK2ZldGNoaW5nIGJsb2IsIGRlbGF5ID0gMTAwCitGRVRD
SChyZXNvbHZlZCk6IHN0YXR1cyA9IDIwMAorRkVUQ0gocmVzcG9uc2UgcmVzb2x2ZWQpCitFWFBF
Q1RFRCAod2luZG93Lm9wZW4oImFib3V0OmJsYW5rIikgPT0gJ251bGwnKSBPSworCisqKiBnZXN0
dXJlIC0+IGZldGNoIC0+IGJsb2IgLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBzdWNjZWVkCitF
VkVOVChjYW5wbGF5dGhyb3VnaCkKK2ZldGNoaW5nIGJsb2IsIGRlbGF5ID0gMTAwCitGRVRDSChy
ZXNvbHZlZCk6IHN0YXR1cyA9IDIwMAorRkVUQ0gocmVzcG9uc2UgcmVzb2x2ZWQpCitSVU4oc2hv
dWxkUmVzb2x2ZShtZWRpYUVsZW1lbnQucGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwgdGVzdENv
bXBsZXRlKSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sKKworKiogZ2VzdHVyZSAtPiBmZXRjaCAtPiAi
bG9uZyIgYmxvYiAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIGZhaWwKK0VWRU5UKGNhbnBsYXl0
aHJvdWdoKQorZmV0Y2hpbmcgYmxvYiwgZGVsYXkgPSAzMDAKK0ZFVENIKHJlc29sdmVkKTogc3Rh
dHVzID0gMjAwCitGRVRDSChyZXNwb25zZSByZXNvbHZlZCkKK1JVTihzaG91bGRSZWplY3QobWVk
aWFFbGVtZW50LnBsYXkoKSkudGhlbih0ZXN0Q29tcGxldGUsIHRlc3RDb21wbGV0ZSkpCitQcm9t
aXNlIHJlamVjdGVkIGNvcnJlY3RseSBPSworCisqKiBubyBnZXN0dXJlIC0+IGZldGNoIC0+IGJs
b2IgLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsCitFVkVOVChjYW5wbGF5dGhyb3VnaCkK
K2ZldGNoaW5nIGJsb2IsIGRlbGF5ID0gMTAwCitGRVRDSChyZXNvbHZlZCk6IHN0YXR1cyA9IDIw
MAorRkVUQ0gocmVzcG9uc2UgcmVzb2x2ZWQpCitSVU4oc2hvdWxkUmVqZWN0KG1lZGlhRWxlbWVu
dC5wbGF5KCkpLnRoZW4odGVzdENvbXBsZXRlLCB0ZXN0Q29tcGxldGUpKQorUHJvbWlzZSByZWpl
Y3RlZCBjb3JyZWN0bHkgT0sKKworKiogbm8gZ2VzdHVyZSAtPiBwcm9taXNlIC0+IHZpZGVvIHBs
YXliYWNrOiBzaG91bGQgZmFpbAorRVZFTlQoY2FucGxheXRocm91Z2gpCitwcm9taXNlCitQUk9N
SVNFKHJlc29sdmVkKQorUlVOKHNob3VsZFJlamVjdChtZWRpYUVsZW1lbnQucGxheSgpKS50aGVu
KHRlc3RDb21wbGV0ZSwgdGVzdENvbXBsZXRlKSkKK1Byb21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5
IE9LCisKKyoqIGdlc3R1cmUgLT4gcHJvbWlzZSAtPiB2aWRlbyBwbGF5YmFjazogc2hvdWxkIGZh
aWwgYmVjYXVzZSBwcm9taXNlIG9ubHkgcHJvcGFnYXRlcyB1c2VyIGdlc3R1cmUgcHJvcGFnYXRl
ZCB0aHJvdWdoIEZldGNoCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK3Byb21pc2UKK1BST01JU0Uo
cmVzb2x2ZWQpCitSVU4oc2hvdWxkUmVqZWN0KG1lZGlhRWxlbWVudC5wbGF5KCkpLnRoZW4odGVz
dENvbXBsZXRlLCB0ZXN0Q29tcGxldGUpKQorUHJvbWlzZSByZWplY3RlZCBjb3JyZWN0bHkgT0sK
KworKiogZ2VzdHVyZSAtPiBmZXRjaCAtPiBwcm9taXNlIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91
bGQgc3VjY2VlZAorRVZFTlQoY2FucGxheXRocm91Z2gpCitmZXRjaCB0aGVuIHByb21pc2UKK0ZF
VENIKHJlc29sdmVkKTogc3RhdHVzID0gMjAwCitQUk9NSVNFKHJlc29sdmVkKQorUlVOKHNob3Vs
ZFJlc29sdmUobWVkaWFFbGVtZW50LnBsYXkoKSkudGhlbih0ZXN0Q29tcGxldGUsIHRlc3RDb21w
bGV0ZSkpCitQcm9taXNlIHJlc29sdmVkIE9LCisKKyoqIGdlc3R1cmUgLT4gZmV0Y2ggLT4gY3J5
cHRvIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCBzaW5jZSB0aGUgdXNlciBnZXN0dXJl
IHdpbGwgbm90IGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCBvdGhlciBBUEkgZXZlbiB0aG91Z2ggaXQg
cmV0dXJucyBwcm9taXNlcworRVZFTlQoY2FucGxheXRocm91Z2gpCitmZXRjaCB0aGVuIGNyeXB0
bworRkVUQ0gocmVzb2x2ZWQpOiBzdGF0dXMgPSAyMDAKK0NSWVBUTyhrZXkgZ2VuZXJhdGVkKQor
UlVOKHNob3VsZFJlamVjdChtZWRpYUVsZW1lbnQucGxheSgpKS50aGVuKHRlc3RDb21wbGV0ZSwg
dGVzdENvbXBsZXRlKSkKK1Byb21pc2UgcmVqZWN0ZWQgY29ycmVjdGx5IE9LCisKIEVORCBPRiBU
RVNUCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWVkaWEvdXNlci1nZXN0
dXJlLXByZXNlcnZlZC1hY3Jvc3MteG1saHR0cHJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWVkaWEvdXNlci1nZXN0dXJlLXByZXNlcnZlZC1hY3Jvc3MteG1saHR0cHJlcXVl
c3QuaHRtbAppbmRleCA4MmEyZTliYTlhMjZkMzgzNzJkYmUzOGI5N2MwMWIyM2E4NjZmNzViLi4y
MzVhMTU5NDJjOTJkMzUzOTQ0NGYxYWMwNmUyNjMxMzc4MWY5OTQ1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21lZGlhL3VzZXItZ2VzdHVyZS1wcmVzZXJ2ZWQtYWNyb3NzLXht
bGh0dHByZXF1ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9tZWRpYS91c2Vy
LWdlc3R1cmUtcHJlc2VydmVkLWFjcm9zcy14bWxodHRwcmVxdWVzdC5odG1sCkBAIC0xOSw3ICsx
OSw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVl
c3QoKTsKICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0WEhSTWF4aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3
YXJkaW5nKHhociwgdGltZW91dCk7CisgICAgICAgICAgICAgICAgd2luZG93LmludGVybmFscy5z
ZXRNYXhpbXVtSW50ZXJ2YWxGb3JVc2VyR2VzdHVyZUZvcndhcmRpbmdGb3JGZXRjaCh0aW1lb3V0
KTsKIAogICAgICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIGAveG1saHR0cHJlcXVlc3QvcmVzb3Vy
Y2VzL2Rvd25sb2FkLXdpdGgtZGVsYXkucGhwP2l0ZXJhdGlvbj0xJmRlbGF5PSR7ZGVsYXl9YCwg
dHJ1ZSk7CiAKQEAgLTQxLDYgKzQxLDcwIEBACiAgICAgICAgICAgICB4aHIuc2VuZChudWxsKTsK
ICAgICAgICAgfQogCisgICAgICAgIGZ1bmN0aW9uIGRvRmV0Y2goZGVsYXksIHRpbWVvdXQsIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldE1heGltdW1JbnRlcnZh
bEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoKHRpbWVvdXQpOworCisgICAgICAgICAg
ICBmZXRjaChgL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9kb3dubG9hZC1oZWFkZXItd2l0aC1k
ZWxheS5waHA/ZGVsYXk9JHtkZWxheX1gLCB7IG1ldGhvZDogJ0dFVCcsIGNhY2hlOiAibm8tY2Fj
aGUiIH0pLnRoZW4ocmVzcG9uc2UgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShg
RkVUQ0gocmVzb2x2ZWQpOiBzdGF0dXMgPSAke3Jlc3BvbnNlLnN0YXR1c31gKTsKKyAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgfSwgZXJyb3IgPT4gewor
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRkVUQ0gocmVqZWN0ZWQpOiBleGNlcHRpb24g
Y29kZSA9ICR7ZXJyb3IuY29kZX1gKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gZG9GZXRjaEJsb2IoZGVsYXksIHRpbWVvdXQsIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICB7CisgICAgICAgICAgICBmZXRjaChgL3htbGh0dHByZXF1ZXN0L3Jlc291
cmNlcy9kb3dubG9hZC13aXRoLWRlbGF5LnBocD9pdGVyYXRpb249MSZkZWxheT0ke2RlbGF5fWAs
IHsgbWV0aG9kOiAnR0VUJywgY2FjaGU6ICJuby1jYWNoZSIgfSkudGhlbihyZXNwb25zZSA9PiB7
CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBGRVRDSChyZXNvbHZlZCk6IHN0YXR1cyA9
ICR7cmVzcG9uc2Uuc3RhdHVzfWApOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldE1heGltdW1JbnRl
cnZhbEZvclVzZXJHZXN0dXJlRm9yd2FyZGluZ0ZvckZldGNoKHRpbWVvdXQpOworICAgICAgICAg
ICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCk7CisgICAgICAgICAgICB9LCBlcnJvciA9PiB7
CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBGRVRDSChyZWplY3RlZCk6IGV4Y2VwdGlv
biBjb2RlID0gJHtlcnJvci5jb2RlfWApOworICAgICAgICAgICAgfSkudGhlbihyZXNwb25zZSA9
PiB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBGRVRDSChyZXNwb25zZSByZXNvbHZl
ZClgKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAg
fSwgZXJyb3IgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgRkVUQ0gocmVzcG9u
c2UgcmVqZWN0ZWQpOiBleGNlcHRpb24gY29kZSA9ICR7ZXJyb3IuY29kZX1gKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZG9Qcm9taXNlKGNvbXBsZXRp
b25IYW5kbGVyKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFBy
b21pc2UoIChyZXNvbHV0aW9uRnVuYykgPT4geworICAgICAgICAgICAgICAgIHJlc29sdXRpb25G
dW5jKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgcHJvbWlzZS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYFBST01JU0UocmVzb2x2ZWQpYCk7Cisg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKQorICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBkb0ZldGNoVGhlblByb21pc2UoY29tcGxldGlvbkhh
bmRsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZldGNoKGAveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL2Rvd25sb2FkLXdpdGgtZGVsYXkucGhwP2l0ZXJhdGlvbj0xYCwgeyBtZXRob2Q6ICdH
RVQnLCBjYWNoZTogIm5vLWNhY2hlIiB9KS50aGVuKHJlc3BvbnNlID0+IHsKKyAgICAgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoYEZFVENIKHJlc29sdmVkKTogc3RhdHVzID0gJHtyZXNwb25zZS5z
dGF0dXN9YCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKCAocmVzb2x1dGlv
bkZ1bmMpID0+IHJlc29sdXRpb25GdW5jKCkgKTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShgUFJPTUlTRShyZXNvbHZlZClgKTsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpCisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRvRmV0Y2hUaGVuQ3J5cHRvKGNvbXBsZXRpb25IYW5k
bGVyKQorICAgICAgICB7CisgICAgICAgICAgICBmZXRjaChgL3htbGh0dHByZXF1ZXN0L3Jlc291
cmNlcy9kb3dubG9hZC13aXRoLWRlbGF5LnBocD9pdGVyYXRpb249MWAsIHsgbWV0aG9kOiAnR0VU
JywgY2FjaGU6ICJuby1jYWNoZSIgfSkudGhlbihyZXNwb25zZSA9PiB7CisgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKGBGRVRDSChyZXNvbHZlZCk6IHN0YXR1cyA9ICR7cmVzcG9uc2Uuc3Rh
dHVzfWApOworICAgICAgICAgICAgICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5
KHtuYW1lOiAiUlNBLU9BRVAiLCBtb2R1bHVzTGVuZ3RoOiAyMDQ4LCBwdWJsaWNFeHBvbmVudDog
bmV3IFVpbnQ4QXJyYXkoWzB4MDEsIDB4MDAsIDB4MDFdKSwgaGFzaDogInNoYS0xIn0sIGZhbHNl
LCBbImRlY3J5cHQiLCAiZW5jcnlwdCIsICJ3cmFwS2V5IiwgInVud3JhcEtleSJdKTsKKyAgICAg
ICAgICAgIH0pLnRoZW4oa2V5ID0+IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYENS
WVBUTyhrZXkgZ2VuZXJhdGVkKWApOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCkKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKICAgICAgICAgZnVuY3Rpb24gdGVzdENv
bXBsZXRlKCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGF1dG9SdW4pCkBAIC04MSw4ICsx
NDUsMjcgQEAKICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYHNldHRpbmcgdGltZW91dCwg
ZGVsYXkgPSAke2RlbGF5fWApOwogICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBy
dW5UZXN0KHRlc3QpOyB9LCBkZWxheSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlICdmZXRjaCc6CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGBmZXRjaGlu
ZywgZGVsYXkgPSAke2RlbGF5fWApOworICAgICAgICAgICAgICAgIGRvRmV0Y2goZGVsYXksIHRl
c3QudGltZW91dCB8fCAwLjYsICgpID0+IHJ1blRlc3QodGVzdCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAnZmV0Y2hibG9iJzoKKyAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoYGZldGNoaW5nIGJsb2IsIGRlbGF5ID0gJHtkZWxheX1gKTsKKyAgICAgICAg
ICAgICAgICBkb0ZldGNoQmxvYihkZWxheSwgdGVzdC50aW1lb3V0IHx8IDAuNiwgKCkgPT4gcnVu
VGVzdCh0ZXN0KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdw
cm9taXNlJzoKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoYHByb21pc2VgKTsKKyAgICAg
ICAgICAgICAgICBkb1Byb21pc2UoKCkgPT4gcnVuVGVzdCh0ZXN0KSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdmZXRjaHRoZW5wcm9taXNlJzoKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoYGZldGNoIHRoZW4gcHJvbWlzZWApOworICAgICAgICAgICAg
ICAgIGRvRmV0Y2hUaGVuUHJvbWlzZSgoKSA9PiBydW5UZXN0KHRlc3QpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2ZldGNodGhlbmNyeXB0byc6CisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKGBmZXRjaCB0aGVuIGNyeXB0b2ApOworICAgICAgICAgICAg
ICAgIGRvRmV0Y2hUaGVuQ3J5cHRvKCgpID0+IHJ1blRlc3QodGVzdCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQotCiAgICAgICAgIH0KIAogICAgICAgICBsZXQgdGVz
dHMgPSBbCkBAIC0xMDIsMTQgKzE4NSw1MSBAQAogICAgICAgICAgICAgICAgIGFjdGlvbiA6ICdw
bGF5JywgIHdpdGhrZXkgOiBmYWxzZSwgIHN1Y2Nlc3MgOiBmYWxzZSwgIHNlcXVlbmNlIDogWycx
MDAgWEhSJywgJzEwMCB0aW1lb3V0J10gfSwKIAogICAgICAgICAgICAgeyB0aXRsZSA6ICdnZXN0
dXJlIC0+ICJsb25nIiBYSFIgLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsJywKLSAgICAg
ICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3aXRoa2V5IDogZmFsc2UsICBzdWNjZXNzIDog
ZmFsc2UsICB0aW1lb3V0IDogMC4xLCBzZXF1ZW5jZSA6IFsnMzAwIFhIUiddIH0sCisgICAgICAg
ICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDogZmFs
c2UsICB0aW1lb3V0IDogMC4xLCBzZXF1ZW5jZSA6IFsnMzAwIFhIUiddIH0sCisKKyAgICAgICAg
ICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiBmZXRjaCAtPiB3aW5kb3cub3Blbjogc2hvdWxkIGZh
aWwgYmVjYXVzZSBGZXRjaCBvbmx5IHByb3BhZ2F0ZXMgdXNlciBnZXN0dXJlIGZvciBtZWRpYScs
CisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BvcHVwJywgd2l0aGtleSA6IHRydWUsICBzdWNj
ZXNzIDogZmFsc2UsICBzZXF1ZW5jZSA6IFsnMTAwIEZldGNoJ10gfSwKKworICAgICAgICAgICAg
eyB0aXRsZSA6ICdnZXN0dXJlIC0+IGZldGNoIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgc3Vj
Y2VlZCcsCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IHRydWUs
ICBzdWNjZXNzIDogdHJ1ZSwgIHNlcXVlbmNlIDogWycxMDAgRmV0Y2gnXSB9LAorCisgICAgICAg
ICAgICB7IHRpdGxlIDogJ2dlc3R1cmUgLT4gImxvbmciIEZldGNoIC0+IHZpZGVvIHBsYXliYWNr
OiBzaG91bGQgZmFpbCcsCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtl
eSA6IHRydWUsICBzdWNjZXNzIDogZmFsc2UsICB0aW1lb3V0IDogMC4xLCBzZXF1ZW5jZSA6IFsn
MzAwIEZldGNoJ10gfSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdubyBnZXN0dXJlIC0+IGZl
dGNoIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgZmFpbCcsCisgICAgICAgICAgICAgICAgYWN0
aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IGZhbHNlLCAgc3VjY2VzcyA6IGZhbHNlLCAgc2VxdWVu
Y2UgOiBbJzEwMCBGZXRjaCddIH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAt
PiBmZXRjaCAtPiBibG9iIC0+IHdpbmRvdy5vcGVuOiBzaG91bGQgZmFpbCBiZWNhdXNlIEZldGNo
IG9ubHkgcHJvcGFnYXRlcyB1c2VyIGdlc3R1cmUgZm9yIG1lZGlhJywKKyAgICAgICAgICAgICAg
ICBhY3Rpb24gOiAncG9wdXAnLCB3aXRoa2V5IDogdHJ1ZSwgIHN1Y2Nlc3MgOiBmYWxzZSwgIHNl
cXVlbmNlIDogWycxMDAgRmV0Y2hCbG9iJ10gfSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdn
ZXN0dXJlIC0+IGZldGNoIC0+IGJsb2IgLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBzdWNjZWVk
JywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3aXRoa2V5IDogdHJ1ZSwgIHN1
Y2Nlc3MgOiB0cnVlLCAgc2VxdWVuY2UgOiBbJzEwMCBGZXRjaEJsb2InXSB9LAorCisgICAgICAg
ICAgICB7IHRpdGxlIDogJ2dlc3R1cmUgLT4gZmV0Y2ggLT4gImxvbmciIGJsb2IgLT4gdmlkZW8g
cGxheWJhY2s6IHNob3VsZCBmYWlsJywKKyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScs
ICB3aXRoa2V5IDogdHJ1ZSwgIHN1Y2Nlc3MgOiBmYWxzZSwgIHRpbWVvdXQgOiAwLjEsIHNlcXVl
bmNlIDogWyczMDAgRmV0Y2hCbG9iJ10gfSwKKworICAgICAgICAgICAgeyB0aXRsZSA6ICdubyBn
ZXN0dXJlIC0+IGZldGNoIC0+IGJsb2IgLT4gdmlkZW8gcGxheWJhY2s6IHNob3VsZCBmYWlsJywK
KyAgICAgICAgICAgICAgICBhY3Rpb24gOiAncGxheScsICB3aXRoa2V5IDogZmFsc2UsICBzdWNj
ZXNzIDogZmFsc2UsICBzZXF1ZW5jZSA6IFsnMTAwIEZldGNoQmxvYiddIH0sCisKKyAgICAgICAg
ICAgIHsgdGl0bGUgOiAnbm8gZ2VzdHVyZSAtPiBwcm9taXNlIC0+IHZpZGVvIHBsYXliYWNrOiBz
aG91bGQgZmFpbCcsCisgICAgICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6
IGZhbHNlLCAgc3VjY2VzcyA6IGZhbHNlLCAgc2VxdWVuY2UgOiBbJzAgcHJvbWlzZSddIH0sCisK
KyAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiBwcm9taXNlIC0+IHZpZGVvIHBsYXli
YWNrOiBzaG91bGQgZmFpbCBiZWNhdXNlIHByb21pc2Ugb25seSBwcm9wYWdhdGVzIHVzZXIgZ2Vz
dHVyZSBwcm9wYWdhdGVkIHRocm91Z2ggRmV0Y2gnLAorICAgICAgICAgICAgICAgIGFjdGlvbiA6
ICdwbGF5JywgIHdpdGhrZXkgOiB0cnVlLCAgc3VjY2VzcyA6IGZhbHNlLCAgc2VxdWVuY2UgOiBb
JzAgcHJvbWlzZSddIH0sCisKKyAgICAgICAgICAgIHsgdGl0bGUgOiAnZ2VzdHVyZSAtPiBmZXRj
aCAtPiBwcm9taXNlIC0+IHZpZGVvIHBsYXliYWNrOiBzaG91bGQgc3VjY2VlZCcsCisgICAgICAg
ICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDogdHJ1
ZSwgIHNlcXVlbmNlIDogWycwIEZldGNoVGhlblByb21pc2UnXSB9LAorCisgICAgICAgICAgICB7
IHRpdGxlIDogJ2dlc3R1cmUgLT4gZmV0Y2ggLT4gY3J5cHRvIC0+IHZpZGVvIHBsYXliYWNrOiBz
aG91bGQgZmFpbCBzaW5jZSB0aGUgdXNlciBnZXN0dXJlIHdpbGwgbm90IGJlIHByb3BhZ2F0ZWQg
dGhyb3VnaCBvdGhlciBBUEkgZXZlbiB0aG91Z2ggaXQgcmV0dXJucyBwcm9taXNlcycsCisgICAg
ICAgICAgICAgICAgYWN0aW9uIDogJ3BsYXknLCAgd2l0aGtleSA6IHRydWUsICBzdWNjZXNzIDog
ZmFsc2UsICBzZXF1ZW5jZSA6IFsnMCBGZXRjaFRoZW5DcnlwdG8nXSB9LAorCiAgICAgICAgIF07
CiAKICAgICAgICAgZnVuY3Rpb24gbmV4dFRlc3QoKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIXRlc3RzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnJyk7Ci0g
ICAgICAgICAgICAgICAgZW5kVGVzdCgpCisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZG93bmxvYWQtaGVhZGVy
LXdpdGgtZGVsYXkucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9y
ZXNvdXJjZXMvZG93bmxvYWQtaGVhZGVyLXdpdGgtZGVsYXkucGhwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2MGI1
NzhlNDlmYTQ2YmY2MTI0NTk4NTA5YmZhOGU5MmZlMDNhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9kb3dubG9hZC1o
ZWFkZXItd2l0aC1kZWxheS5waHAKQEAgLTAsMCArMSwxNCBAQAorPD9waHAKKyRkZWxheSA9ICRf
R0VUWydkZWxheSddOwordXNsZWVwKCRkZWxheSAqIDEwMDApOworCitoZWFkZXIoIkV4cGlyZXM6
IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6MDAgR01UIik7CitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6
IG5vLWNhY2hlLCBuby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlIik7CitoZWFkZXIoIlByYWdtYTog
bm8tY2FjaGUiKTsKK2hlYWRlcigiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LW5vLWJ1ZmZl
cmluZy1wbGVhc2UiKTsKKworZWNobyAiJGRlbGF5XG4iOworZWNobyAiZm9vYmFyXG4iOworb2Jf
Zmx1c2goKTsKK2ZsdXNoKCk7Cis/Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>