<?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>144790</bug_id>
          
          <creation_ts>2015-05-08 01:00:54 -0700</creation_ts>
          <short_desc>[Streams API] Implement ReadableStreamReader read method in closed and errored state</short_desc>
          <delta_ts>2015-06-02 12:28:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>138967</blocked>
    
    <blocked>145210</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1093110</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-08 01:00:54 -0700</bug_when>
    <thetext>We should implement https://streams.spec.whatwg.org/#reader-read, in particular the resolution/rejection of read promises when the stream is (or is getting) closed or errored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093169</commentid>
    <comment_count>1</comment_count>
      <attachid>252719</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-08 07:36:31 -0700</bug_when>
    <thetext>Created attachment 252719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093171</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-08 07:38:58 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created attachment 252719 [details]
&gt; Patch

Clean-up of read callbacks should be aligned with https://bugs.webkit.org/show_bug.cgi?id=144799
This may be done at landing/rebasing time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093187</commentid>
    <comment_count>3</comment_count>
      <attachid>252719</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-08 08:40:14 -0700</bug_when>
    <thetext>Comment on attachment 252719
Patch

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

&gt; Source/WebCore/Modules/streams/ReadableStreamReader.cpp:141
&gt; +    m_readRequests.clear();

Plan is to do cleaning in releaseStream once bug 144799 is landed.

&gt; LayoutTests/streams/reference-implementation/bad-underlying-sources.html:64
&gt; +var test3 = async_test(&apos;Underlying source: throwing pull getter (second pull)&apos;, { timeout: 50 });

Putting timeout to 50 now as test is timeouting.
Plan is to remove this timeout once test is passing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093593</commentid>
    <comment_count>4</comment_count>
      <attachid>252719</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-10 14:54:27 -0700</bug_when>
    <thetext>Comment on attachment 252719
Patch

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

&gt; Source/JavaScriptCore/runtime/IteratorOperations.h:40
&gt; +JS_EXPORT_PRIVATE JSObject* createIterResultObject(ExecState*, JSValue, bool done);

If we are going to export this, I suggest we make it more like the functions above:

1) give the JSValue argument the name &quot;iterator&quot;
2) use &quot;iterator&quot;, not &quot;iter&quot;, in the function name

&gt; Source/WebCore/ForwardingHeaders/runtime/IteratorOperations.h:5
&gt; +

No need for this extra blank line

&gt; Source/WebCore/Modules/streams/ReadableStream.h:39
&gt; +#include &lt;runtime/JSCJSValue.h&gt;

This isn’t needed. A file can define a function returning a class type with only a forward declaration of that type, so we should forward-declare JSValue here, not include the header.

&gt; Source/WebCore/Modules/streams/ReadableStreamReader.cpp:39
&gt; +using namespace JSC;

We normally don’t use this in new code for short names like these.

&gt; Source/WebCore/Modules/streams/ReadableStreamReader.cpp:118
&gt; +    size_t readRequestCount = m_readRequests.size();
&gt; +    for (size_t i = 0; i &lt; readRequestCount; ++i) {
&gt; +        ReadSuccessCallback successCallback = WTF::move(m_readRequests[i].first);
&gt; +        successCallback(jsUndefined(), true);
&gt; +    }

No need to move these callbacks into locals as we call them.

Is there something that protects us from getting called re-entrantly that thus prevents m_readRequests from being modified from underneath us? If so, this should be written much more tightly like this:

    for (auto&amp; request : m_readRequests)
        request.first(jsUndefined(), true);   

But also, this points out that the use of a pair for the request object is not good for clarity. We should instead just use a simple struct so the two functions have names instead of being named first and last.

If there is nothing that prevents the reentrant calls, then we have a problem either way.

&gt; Source/WebCore/Modules/streams/ReadableStreamReader.cpp:140
&gt; +    size_t readRequestCount = m_readRequests.size();
&gt; +    for (size_t i = 0; i &lt; readRequestCount; ++i) {
&gt; +        ReadErrorCallback errorCallback = WTF::move(m_readRequests[i].second);
&gt; +        errorCallback();
&gt; +    }

As above, should be done much more simply:

    for (auto&amp; request : m_readRequests)
        request.second();

&gt; Source/WebCore/Modules/streams/ReadableStreamReader.cpp:160
&gt; +    m_readRequests.append(std::make_pair(WTF::move(successCallback), WTF::move(errorCallback)));

Might also try this more terse syntax (if it works):

    m_readRequests.append({ WTF::move(successCallback), WTF::move(errorCallback) });

&gt; Source/WebCore/bindings/js/JSReadableStreamReaderCustom.cpp:51
&gt; +    auto successCallback = [wrapper, this](const JSValue&amp; chunk, bool done) mutable {

What prevents the lambda from outliving the JSReadableStreamReader object in &quot;this&quot;? I don’t think this is safe or correct. Instead of capturing &quot;this&quot;, I think we need to do something else. We should change DeferredWrapper to add a function that returns ExecState&amp; for the globalExec we need.

&gt; Source/WebCore/bindings/js/JSReadableStreamReaderCustom.cpp:53
&gt; +        JSValue result = createIterResultObject(globalObject()-&gt;globalExec(), chunk, done);
&gt; +        wrapper.resolve(result);

No need for the local variable here. Reads better without it, I think.

&gt; Source/WebCore/bindings/js/JSReadableStreamReaderCustom.cpp:55
&gt; +    auto failureCallback = [wrapper, this]() mutable {

What prevents the lambda from outliving the JSReadableStreamReader object in &quot;this&quot;? I don’t think this is safe or correct. JSReadableStreamReader::closed seems to have the same mistake. Instead of capturing &quot;this&quot;, I think we need to capture a reference to the implementation so we don’t need to call impl() inside the lambda. I believe the lifetime of the reader is guaranteed. Or to make it even clearer we could add a ReadableStreamReader&amp; argument to the ReadableStreamReader callback function types and use that.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:189
&gt; +    return JSValue();

This is dangerous. The JavaScript engine doesn’t deal well with these. Better to return jsUndefined().

&gt; Source/WebCore/bindings/js/ReadableJSStream.h:87
&gt; +    virtual bool hasValue() override;
&gt; +    virtual JSC::JSValue read() override;

Can these overrides be private please? Any reason to call them non-polymorphically?

Can this class be marked final?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093752</commentid>
    <comment_count>5</comment_count>
      <attachid>252719</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-11 07:55:26 -0700</bug_when>
    <thetext>Comment on attachment 252719
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSReadableStreamReaderCustom.cpp:55
&gt;&gt; +    auto failureCallback = [wrapper, this]() mutable {
&gt; 
&gt; What prevents the lambda from outliving the JSReadableStreamReader object in &quot;this&quot;? I don’t think this is safe or correct. JSReadableStreamReader::closed seems to have the same mistake. Instead of capturing &quot;this&quot;, I think we need to capture a reference to the implementation so we don’t need to call impl() inside the lambda. I believe the lifetime of the reader is guaranteed. Or to make it even clearer we could add a ReadableStreamReader&amp; argument to the ReadableStreamReader callback function types and use that.

Very good catch.
The first &quot;ref&quot; approach should work.
The second &quot;argument&quot; probably not, as the reader would be disposed when its js counterpart is disposed.
This would lead to releasing the stream and the closed promise callback to never been called when the stream gets closed (hence I believe no crash in the current implementation).

I filed 144869 for that purpose and will file a quick fix for it.

I wonder though whether we should go further than that.
Maybe we could reuse the same reader/stream link  as for controller/stream (reader lifetime controlled by stream, reader delegating ref counting to the stream).
This would remove the need for ReadableStream::release/releaseButKeepLocked/lock as well as removing the need to keep a ref of the reader within the lambdas.

One downside is that we may need specialized stream-independent readers to cover the case of closed/errored streams.
Major difference would be that these stream-independent readers would need to refcount themselves.

Any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093773</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-11 09:18:05 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Any thoughts?

That sounds like a promising direction. Fewer separate reference counted objects is likely better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094129</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-12 04:56:50 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 252719 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252719&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/bindings/js/JSReadableStreamReaderCustom.cpp:55
&gt; &gt;&gt; +    auto failureCallback = [wrapper, this]() mutable {
&gt; &gt; 
&gt; &gt; What prevents the lambda from outliving the JSReadableStreamReader object in &quot;this&quot;? I don’t think this is safe or correct. JSReadableStreamReader::closed seems to have the same mistake. Instead of capturing &quot;this&quot;, I think we need to capture a reference to the implementation so we don’t need to call impl() inside the lambda. I believe the lifetime of the reader is guaranteed. Or to make it even clearer we could add a ReadableStreamReader&amp; argument to the ReadableStreamReader callback function types and use that.
&gt; 
&gt; Very good catch.
&gt; The first &quot;ref&quot; approach should work.
&gt; The second &quot;argument&quot; probably not, as the reader would be disposed when its
&gt; js counterpart is disposed.
&gt; This would lead to releasing the stream and the closed promise callback to
&gt; never been called when the stream gets closed (hence I believe no crash in
&gt; the current implementation).
&gt; 
&gt; I filed 144869 for that purpose and will file a quick fix for it.
&gt; 
&gt; I wonder though whether we should go further than that.
&gt; Maybe we could reuse the same reader/stream link  as for controller/stream
&gt; (reader lifetime controlled by stream, reader delegating ref counting to the
&gt; stream).
&gt; This would remove the need for
&gt; ReadableStream::release/releaseButKeepLocked/lock as well as removing the
&gt; need to keep a ref of the reader within the lambdas.

Filed bug 144907 for that purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095609</commentid>
    <comment_count>8</comment_count>
      <attachid>253325</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-18 05:22:53 -0700</bug_when>
    <thetext>Created attachment 253325
Version matching bug 145110 and 145116 patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095952</commentid>
    <comment_count>9</comment_count>
      <attachid>253325</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-19 08:53:50 -0700</bug_when>
    <thetext>Comment on attachment 253325
Version matching bug 145110 and 145116 patches

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

&gt; Source/WebCore/Modules/streams/ReadableStream.h:78
&gt; +    typedef std::function&lt;void(const JSC::JSValue&amp;)&gt; FailureCallback;

Should not be const&amp;, just JSC::JSValue.

&gt; Source/WebCore/Modules/streams/ReadableStream.h:83
&gt; +    typedef std::function&lt;void(const JSC::JSValue&amp;)&gt; ReadSuccessCallback;

Should not be const&amp;, just JSC::JSValue.

&gt; Source/WebCore/Modules/streams/ReadableStream.h:112
&gt; +    class ReadCallbacks {
&gt; +    public:
&gt; +        ReadCallbacks(ReadSuccessCallback&amp;&amp; successCallback, FailureCallback&amp;&amp; failureCallback)
&gt; +            : m_successCallback(successCallback)
&gt; +            , m_failureCallback(failureCallback) { }
&gt; +        ReadSuccessCallback m_successCallback;
&gt; +        FailureCallback m_failureCallback;
&gt; +    };

Should use a struct, not as class, and not use the m_ prefixes and not use a constructor, just use struct construction syntax.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096015</commentid>
    <comment_count>10</comment_count>
      <attachid>253392</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-19 13:25:32 -0700</bug_when>
    <thetext>Created attachment 253392
Rebasing patch, removing const JSValue&amp; and using struct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096026</commentid>
    <comment_count>11</comment_count>
      <attachid>253392</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-19 13:47:23 -0700</bug_when>
    <thetext>Comment on attachment 253392
Rebasing patch, removing const JSValue&amp; and using struct

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

&gt; Source/WebCore/Modules/streams/ReadableStream.cpp:151
&gt; +    ReadCallbacks callbacks = { WTF::move(successCallback), WTF::move(failureCallback) };
&gt; +    m_readRequests.append(callbacks);

Can also write this as a one-liner if you prefer:

    m_readRequests.append(ReadCallbacks { WTF::move(successCallback), WTF::move(failureCallback) });

I wish you could write this; I don’t know precisely why it doesn’t work or if Vector could be changed to make it work:

    m_readRequests.append({ WTF::move(successCallback), WTF::move(failureCallback) });

&gt; Source/WebCore/bindings/js/ReadableJSStream.h:76
&gt; +

Unneeded extra blank line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096219</commentid>
    <comment_count>12</comment_count>
      <attachid>253436</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-20 03:18:10 -0700</bug_when>
    <thetext>Created attachment 253436
Updating according review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096258</commentid>
    <comment_count>13</comment_count>
      <attachid>253442</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-20 09:30:46 -0700</bug_when>
    <thetext>Created attachment 253442
Using JSValue() to convey done=true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096260</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-20 09:35:25 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created attachment 253442 [details]
&gt; Using JSValue() to convey done=true

Compared to previous last two patches, the only behavorial change is to use JSValue() to convey the case of an iterator with no value and done being true.

It might be possible to actually enqueue an undefined value using the controller enqueue method.

This also raises the question of the controller error method, for which we create a default error if there is none passed to it. We should check whether we want to support undefined as possible error value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097247</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-25 10:23:07 -0700</bug_when>
    <thetext>Ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097252</commentid>
    <comment_count>16</comment_count>
      <attachid>253442</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-05-25 11:07:43 -0700</bug_when>
    <thetext>Comment on attachment 253442
Using JSValue() to convey done=true

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

I still need to check this more thoroughly, but changing those tests seems wrong.

&gt; LayoutTests/streams/reference-implementation/bad-underlying-sources.html:34
&gt; -        get pull() {
&gt; +        pull: function() {

If you remove this, the test is useless and duplicated. The intention here is to test the getter.

&gt; LayoutTests/streams/reference-implementation/bad-underlying-sources.html:69
&gt; -        get pull() {
&gt; +        pull: function() {

Ditto.

&gt; LayoutTests/streams/reference-implementation/bad-underlying-sources.html:122
&gt; -        get cancel() {
&gt; +        cancel: function() {

Ditto.

&gt; LayoutTests/streams/reference-implementation/bad-underlying-sources.html:162
&gt; -        get strategy() {
&gt; +        strategy: function() {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097260</commentid>
    <comment_count>17</comment_count>
      <attachid>253442</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-25 12:47:27 -0700</bug_when>
    <thetext>Comment on attachment 253442
Using JSValue() to convey done=true

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

&gt;&gt; LayoutTests/streams/reference-implementation/bad-underlying-sources.html:34
&gt;&gt; +        pull: function() {
&gt; 
&gt; If you remove this, the test is useless and duplicated. The intention here is to test the getter.

I see. Will fix that, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097631</commentid>
    <comment_count>18</comment_count>
      <attachid>253790</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-05-27 07:23:25 -0700</bug_when>
    <thetext>Created attachment 253790
Patch

Fixed some style issues and readded the getters at bad-underlying-tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097648</commentid>
    <comment_count>19</comment_count>
      <attachid>253790</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-27 10:08:10 -0700</bug_when>
    <thetext>Comment on attachment 253790
Patch

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

Thanks for the improvements.

&gt; LayoutTests/streams/reference-implementation/readable-stream-templated.html:618
&gt; +// FIXME: Activate these tests once Promise handling is supported in start function.

Just some background why we need to disable these tests.
Some of these tests are passing, some are timeouting.
If we set timeout: 50 to handle timeouting tests, the other passing templated tests might become flaky.
Since, we do not support promise as returned value within start yet, it is ok to comment out these tests anyway.

Maybe we could add this explanation to the LayoutTests changelog?

As a side note, I think the way WebKit produces output from testharness tests is not optimal.
I filed bug 145313 for handling good test outputs for timeouting testharness tests.

In short, testharness.js should timeout before WebKit test runner timeouts so as to produce PASS/FAIL/TIMEOUT for each individual test.
Once done, we will be able to remove timeout: 50 for all of our tests.
This may require adding to the test runner a timeout() method to get WKR timeout() from testharness.js and set testharness.js timeout to a value a bit smaller.
Patch in bug 145313 is much simpler than that as a first try.

It may also be the case that output for erroneous/badly formatted tests could be improved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098079</commentid>
    <comment_count>20</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-28 22:24:18 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Comment on attachment 253392 [details]
&gt; Rebasing patch, removing const JSValue&amp; and using struct
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=253392&amp;action=review
&gt; 
&gt; I wish you could write this; I don’t know precisely why it doesn’t work or
&gt; if Vector could be changed to make it work:
&gt; 
&gt;     m_readRequests.append({ WTF::move(successCallback),
&gt; WTF::move(failureCallback) });

I believe it is not possible without changing Vector.
IIUC, append is a templated method, and the method template type cannot be retrieved from &quot;{ ... }&quot;.

To solve this, we could add a regular append method, something like:
   void append(ValueType&amp;&amp; value) { append&lt;ValueType&gt;(std::forward&lt;ValueType&gt;(value)); }

I think this can be done as a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098413</commentid>
    <comment_count>21</comment_count>
      <attachid>253790</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-31 09:17:54 -0700</bug_when>
    <thetext>Comment on attachment 253790
Patch

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

&gt; Source/WebCore/Modules/streams/ReadableStream.h:84
&gt; +    void read(ReadSuccessCallback, FailureCallback);

A small improvement might be to pass callbacks as &amp;&amp; for read() and closed() methods of ReadableStream and ReadableStreamReader.
This might be done when landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098512</commentid>
    <comment_count>22</comment_count>
      <attachid>253790</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-01 09:54:27 -0700</bug_when>
    <thetext>Comment on attachment 253790
Patch

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

&gt;&gt; Source/WebCore/Modules/streams/ReadableStream.h:84
&gt;&gt; +    void read(ReadSuccessCallback, FailureCallback);
&gt; 
&gt; A small improvement might be to pass callbacks as &amp;&amp; for read() and closed() methods of ReadableStream and ReadableStreamReader.
&gt; This might be done when landing this patch.

For move-only objects like std::function, std::unique_ptr, and many others, there is no reason to pass as &amp;&amp;. Doesn’t improve clarity or efficiency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098529</commentid>
    <comment_count>23</comment_count>
      <attachid>253790</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-01 10:28:50 -0700</bug_when>
    <thetext>Comment on attachment 253790
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/streams/ReadableStream.h:84
&gt;&gt;&gt; +    void read(ReadSuccessCallback, FailureCallback);
&gt;&gt; 
&gt;&gt; A small improvement might be to pass callbacks as &amp;&amp; for read() and closed() methods of ReadableStream and ReadableStreamReader.
&gt;&gt; This might be done when landing this patch.
&gt; 
&gt; For move-only objects like std::function, std::unique_ptr, and many others, there is no reason to pass as &amp;&amp;. Doesn’t improve clarity or efficiency.

Oops, I was wrong. std::function is not move-only. Please disregard my comment.

&gt; Source/WebCore/Modules/streams/ReadableStreamReader.cpp:51
&gt; +        successCallback(JSC::JSValue());

This use of a JSValue() is extremely unpleasant; this is not how you are supposed to use JSValue. Can we come up with a cleaner way of doing this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098530</commentid>
    <comment_count>24</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-06-01 10:42:12 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; This use of a JSValue() is extremely unpleasant; this is not how you are
&gt; supposed to use JSValue. Can we come up with a cleaner way of doing this?

Could you please be more specific?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098532</commentid>
    <comment_count>25</comment_count>
      <attachid>253790</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-01 10:47:20 -0700</bug_when>
    <thetext>Comment on attachment 253790
Patch

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

&gt;&gt; Source/WebCore/Modules/streams/ReadableStreamReader.cpp:51
&gt;&gt; +        successCallback(JSC::JSValue());
&gt; 
&gt; This use of a JSValue() is extremely unpleasant; this is not how you are supposed to use JSValue. Can we come up with a cleaner way of doing this?

The fact that a special null JSValue() exists that is distinct from the JavaScript “null” is an implementation detail that we won‘t keep like this forever. We should avoid this with one of these:

1) A separate callback for the case without a value.
2) A separate boolean that indicates the special case of no value.
3) Optional&lt;JSValue&gt; instead of using the special JSValue null that is different from JavaScript null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098601</commentid>
    <comment_count>26</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-01 15:17:00 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Comment on attachment 253790 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=253790&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/streams/ReadableStreamReader.cpp:51
&gt; &gt;&gt; +        successCallback(JSC::JSValue());
&gt; &gt; 
&gt; &gt; This use of a JSValue() is extremely unpleasant; this is not how you are supposed to use JSValue. Can we come up with a cleaner way of doing this?
&gt; 
&gt; The fact that a special null JSValue() exists that is distinct from the
&gt; JavaScript “null” is an implementation detail that we won‘t keep like this
&gt; forever. We should avoid this with one of these:
&gt; 
&gt; 1) A separate callback for the case without a value.
&gt; 2) A separate boolean that indicates the special case of no value.
&gt; 3) Optional&lt;JSValue&gt; instead of using the special JSValue null that is
&gt; different from JavaScript null.

In a previous version of the patch, 2 was implemented but it looked not that good: when the boolean was true, the JSValue was disregarded.
1 and 2 are not consistent with the one value callback that could be used for default binding code. I am not sure of 3.

Imho, the best thing would be to stop using callbacks and directly call specific DeferredWrapper routines, dedicated to iterator and end-iterator in that case.

This would simplify life of native stream sources that know about strings, array buffers or other type values but nothing about JSValue. DeferredWrapper would nicely handle the conversions.

Currently DeferredWrapper is only used in binding code, hence my hesitation to follow that path...

Note this discussion is related to bug 145223.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098754</commentid>
    <comment_count>27</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-02 01:28:17 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Comment on attachment 253790 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=253790&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/streams/ReadableStreamReader.cpp:51
&gt; &gt;&gt; +        successCallback(JSC::JSValue());
&gt; &gt; 
&gt; &gt; This use of a JSValue() is extremely unpleasant; this is not how you are supposed to use JSValue. Can we come up with a cleaner way of doing this?
&gt; 
&gt; The fact that a special null JSValue() exists that is distinct from the
&gt; JavaScript “null” is an implementation detail that we won‘t keep like this
&gt; forever. We should avoid this with one of these:
&gt; 
&gt; 1) A separate callback for the case without a value.
&gt; 2) A separate boolean that indicates the special case of no value.
&gt; 3) Optional&lt;JSValue&gt; instead of using the special JSValue null that is
&gt; different from JavaScript null.

I will prepare a patch with option 1, including the additional improvements described in messages above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098757</commentid>
    <comment_count>28</comment_count>
      <attachid>254060</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-02 02:02:48 -0700</bug_when>
    <thetext>Created attachment 254060
Option 1, adding Vector::append method and removing unnecessary callback copies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098831</commentid>
    <comment_count>29</comment_count>
      <attachid>254060</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-02 12:28:35 -0700</bug_when>
    <thetext>Comment on attachment 254060
Option 1, adding Vector::append method and removing unnecessary callback copies

Clearing flags on attachment: 254060

Committed r185114: &lt;http://trac.webkit.org/changeset/185114&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098832</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-02 12:28:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252719</attachid>
            <date>2015-05-08 07:36:31 -0700</date>
            <delta_ts>2015-05-18 05:22:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144790-20150508163508.patch</filename>
            <type>text/plain</type>
            <size>43839</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MDhlYmVlNDU3MWQ1N2E4YTU5ZmY3MmNlNTY0YWI5MTE1ZDRlOWNhLi5hNDc5NDhjMWE4OGFjNjA5
ZmIxODYzYWMxZTM0M2MzMjg5NzcwMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNS0wNS0wOSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJp
c0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgcmVhZCBtZXRob2QgaW4gY2xvc2VkIGFuZCBlcnJvcmVkIHN0YXRlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ3OTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvSXRlcmF0b3JPcGVy
YXRpb25zLmg6CisKIDIwMTUtMDUtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIE9wdGltaXplIHNlcmlhbGl6YXRpb24gb2YgcXVvdGVkIEpTT04gc3RyaW5n
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA4M2E2ZDJlOTJlNmQwMmYwNmJhNjczODAxZTcwZWRiNTAzNjY4ZDYy
Li5mMmEwYTllMWJlYmQzNjQwZjRmNTA5MWI0ZjRhZjMxZDM2YmM4OGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTUtMDUtMDkgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2Fs
dmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5mYWJsZXRAY3JmLmNh
bm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IFJlYWRhYmxlU3RyZWFt
UmVhZGVyIHJlYWQgbWV0aG9kIGluIGNsb3NlZCBhbmQgZXJyb3JlZCBzdGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzkwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmluZyBvZiByZWFkZXIg
cmVhZCgpIHByb21pc2UgY2FsbGJhY2tzIGFzIGEgVmVjdG9yLgorICAgICAgICBBZGRlZCByZXNv
bHV0aW9uL3JlamVjdGlvbiBvZiByZWFkKCkgcHJvbWlzZXMgaW4gY2FzZSBvZiBlcnJvcmVkL2Ns
b3NlZCBzdHJlYW1zLgorCisgICAgICAgIFRlc3Q6IHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJl
YWRlci1yZWFkLmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSXRl
cmF0b3JPcGVyYXRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJl
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2hhbmdl
U3RhdGVUb0Nsb3NlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y2hhbmdlU3RhdGVUb0Vycm9yZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1S
ZWFkZXI6OnJlYWQpOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJl
YWRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6cmVhZCk6
CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpoYXNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkYWJsZUpTU3RyZWFtOjpyZWFkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmg6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oOgorCiAy
MDE1LTA1LTA4ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+
IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAg
ICBbU3RyZWFtcyBBUEldIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHN0YXJ0IGZ1bmN0aW9u
IHNob3VsZCBiZSBhYmxlIHRvIGVycm9yIHRoZSBzdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmgKaW5kZXggNGJlZjM4ODM1YWFl
ZWVmYWVjMTJjODBhOTVlYjEzM2I3OGRhZGQyNC4uMDhjMjlhODk0MmQzYWNlYmRkY2U4Y2FkZTA5
ZmJkMTlkNmZmZTg2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SXRlcmF0b3JPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SXRlcmF0b3JPcGVyYXRpb25zLmgKQEAgLTM3LDcgKzM3LDcgQEAgSlNWYWx1ZSBpdGVyYXRvclZh
bHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgaXRlclJlc3VsdCk7CiBib29sIGl0ZXJhdG9yQ29tcGxl
dGUoRXhlY1N0YXRlKiwgSlNWYWx1ZSBpdGVyUmVzdWx0KTsKIEpTVmFsdWUgaXRlcmF0b3JTdGVw
KEV4ZWNTdGF0ZSosIEpTVmFsdWUgaXRlcmF0b3IpOwogdm9pZCBpdGVyYXRvckNsb3NlKEV4ZWNT
dGF0ZSosIEpTVmFsdWUgaXRlcmF0b3IpOwotSlNPYmplY3QqIGNyZWF0ZUl0ZXJSZXN1bHRPYmpl
Y3QoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgYm9vbCBkb25lKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGJvb2wg
ZG9uZSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JmZTEw
MTUwNjI5MWY1ZWI4YmRlNzcyNjk0MGFhODE4OTc4ZDM0MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25z
LmgKQEAgLTAsMCArMSw1IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0l0ZXJhdG9yT3BlcmF0aW9u
c19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0l0ZXJhdG9yT3BlcmF0aW9uc19oCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSXRlcmF0b3JPcGVyYXRpb25zLmg+CisjZW5kaWYKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAppbmRleCAwMGFjOTZj
ODFlOGQ4OTM0ZmE1ZDhkMmQwOWJkYjBjOTA0NTA3YzEwLi5lODY4ZDRjZDUwYzMzN2Y4N2U5ZmNm
ZDQ0ZGQ4ZjkzYjEwOWM3MDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW0uaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlYWRhYmxl
U3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDcgKzU5LDEwIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5SZWFkYWJsZVN0cmVhbSgpOwogCiAgICAgUmVhZGFibGVTdHJlYW1S
ZWFkZXIqIHJlYWRlcigpIHsgcmV0dXJuIG1fcmVhZGVyOyB9CisKICAgICB2aXJ0dWFsIFJlZjxS
ZWFkYWJsZVN0cmVhbVJlYWRlcj4gY3JlYXRlUmVhZGVyKCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBoYXNWYWx1ZSgpID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSByZWFkKCkgPSAwOwog
CiAgICAgYm9vbCBpc0xvY2tlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNMb2NrZWQ7IH0KICAgICB2
b2lkIGxvY2soUmVhZGFibGVTdHJlYW1SZWFkZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCmluZGV4IDA2NWY1
ZDdmYWI4ZGEzMzI1NjFkYzk4YjMzMWRjMTg4MzEzNDdiMDQuLmJmMGI5MWE2NWE4MjUyNjVkOWEz
NmM4MWVjMjY5NmZmYjJjNGEzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcApAQCAtMzMsOCArMzMsMTEgQEAK
ICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgor
I2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZExlYWtDb3VudGVyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExl
YWtDb3VudGVyLCByZWFkYWJsZVN0cmVhbVJlYWRlckNvdW50ZXIsICgiUmVhZGFibGVTdHJlYW1S
ZWFkZXIiKSk7CkBAIC0xMDgsNyArMTExLDEyIEBAIHZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6
OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQogICAgIEFTU0VSVCghbV9jbG9zZWRTdWNjZXNzQ2FsbGJh
Y2spOwogICAgIG1fY2xvc2VkRXJyb3JDYWxsYmFjayA9IG51bGxwdHI7CiAKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHJlYWQgcHJvbWlzZSBmdWxmaWxsaW5nLgorICAgIHNpemVfdCByZWFkUmVx
dWVzdENvdW50ID0gbV9yZWFkUmVxdWVzdHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmVhZFJlcXVlc3RDb3VudDsgKytpKSB7CisgICAgICAgIFJlYWRTdWNjZXNzQ2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrID0gV1RGOjptb3ZlKG1fcmVhZFJlcXVlc3RzW2ldLmZpcnN0KTsK
KyAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKGpzVW5kZWZpbmVkKCksIHRydWUpOworICAgIH0KKyAg
ICBtX3JlYWRSZXF1ZXN0cy5jbGVhcigpOwogCiAgICAgcmVsZWFzZVN0cmVhbSgpOwogfQpAQCAt
MTI1LDExICsxMzMsMzQgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2hhbmdlU3RhdGVU
b0Vycm9yZWQoKQogICAgIEFTU0VSVCghbV9jbG9zZWRFcnJvckNhbGxiYWNrKTsKICAgICBtX2Ns
b3NlZFN1Y2Nlc3NDYWxsYmFjayA9IG51bGxwdHI7CiAKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHJlYWQgcHJvbWlzZSByZWplY3Rpb24uCisgICAgc2l6ZV90IHJlYWRSZXF1ZXN0Q291bnQgPSBt
X3JlYWRSZXF1ZXN0cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWFkUmVx
dWVzdENvdW50OyArK2kpIHsKKyAgICAgICAgUmVhZEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFj
ayA9IFdURjo6bW92ZShtX3JlYWRSZXF1ZXN0c1tpXS5zZWNvbmQpOworICAgICAgICBlcnJvckNh
bGxiYWNrKCk7CisgICAgfQorICAgIG1fcmVhZFJlcXVlc3RzLmNsZWFyKCk7CiAKICAgICByZWxl
YXNlU3RyZWFtKCk7CiB9CiAKK3ZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OnJlYWQoUmVhZFN1
Y2Nlc3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIFJlYWRFcnJvckNhbGxiYWNrIGVycm9yQ2Fs
bGJhY2spCit7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkgeworICAgICAgICBz
dWNjZXNzQ2FsbGJhY2soanNVbmRlZmluZWQoKSwgdHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQpIHsKKyAgICAgICAgZXJyb3JD
YWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX3N0cmVhbS0+aGFz
VmFsdWUoKSkgeworICAgICAgICBzdWNjZXNzQ2FsbGJhY2sobV9zdHJlYW0tPnJlYWQoKSwgZmFs
c2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVhZFJlcXVlc3RzLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGOjptb3ZlKGVycm9y
Q2FsbGJhY2spKSk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gcHVsbCB0aGUgc3Ry
ZWFtLgorfQorCiBjb25zdCBjaGFyKiBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6YWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICJSZWFkYWJsZVN0cmVhbVJlYWRlciI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1S
ZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJl
YWRlci5oCmluZGV4IDdkZGFmMDIzMjNlOTgyMThmNGZiOGM0N2E5MzEyMGM2M2NjZjU5MjguLjEy
ZjdkMjdjZjY0ZDE3MzNkYWUzYTA2MWY5NGNmZGU1ZTU1ZWY5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYxLDYgKzYyLDEwIEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBDbG9zZWRFcnJvckNhbGxiYWNr
OwogICAgIHZvaWQgY2xvc2VkKENsb3NlZFN1Y2Nlc3NDYWxsYmFjaywgQ2xvc2VkRXJyb3JDYWxs
YmFjayk7CiAKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBKU0M6OkpTVmFs
dWUmLCBib29sKT4gUmVhZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBSZWFkRXJyb3JDYWxsYmFjazsKKyAgICB2b2lkIHJlYWQoUmVhZFN1Y2Nlc3ND
YWxsYmFjaywgUmVhZEVycm9yQ2FsbGJhY2spOworCiAgICAgdm9pZCBjaGFuZ2VTdGF0ZVRvQ2xv
c2VkKCk7CiAgICAgdm9pZCBjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOwogCkBAIC04Miw2ICs4Nyw4
IEBAIHByaXZhdGU6CiAKICAgICBDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgbV9jbG9zZWRTdWNjZXNz
Q2FsbGJhY2s7CiAgICAgQ2xvc2VkRXJyb3JDYWxsYmFjayBtX2Nsb3NlZEVycm9yQ2FsbGJhY2s7
CisKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJlYWRTdWNjZXNzQ2FsbGJhY2ssIFJlYWRFcnJvckNh
bGxiYWNrPj4gbV9yZWFkUmVxdWVzdHM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCmlu
ZGV4IGQzMWQ4ODViMDFhMTRmNjkwZDZkYjJmMzQ1Y2NiMmZiM2Q2NTk4NTEuLmU0ZDZkNWNhMGE5
ZjRiMWZhYzMzYTQzNDk0ZGM1NGUzZTRlZGNhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUg
IlJlYWRhYmxlSlNTdHJlYW0uaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVk
ZSA8cnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTQ1LDggKzQ2LDE5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIGVycm9yID0gY3JlYXRlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJyZWFkIGlzIG5vdCBpbXBsZW1lbnRlZCIpKTsKLSAgICByZXR1cm4gZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7CisgICAgSlNQcm9taXNlRGVmZXJy
ZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xv
YmFsT2JqZWN0KCkpOworICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKGV4ZWMsIGdsb2JhbE9i
amVjdCgpLCBwcm9taXNlRGVmZXJyZWQpOworICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNrID0gW3dy
YXBwZXIsIHRoaXNdKGNvbnN0IEpTVmFsdWUmIGNodW5rLCBib29sIGRvbmUpIG11dGFibGUgewor
ICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QoZ2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSwgY2h1bmssIGRvbmUpOworICAgICAgICB3cmFwcGVyLnJlc29s
dmUocmVzdWx0KTsKKyAgICB9OworICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBwZXIs
IHRoaXNdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KGltcGwoKS5lcnJvcigp
KTsKKyAgICB9OworCisgICAgaW1wbCgpLnJlYWQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayks
IFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKKworICAgIHJldHVybiB3cmFwcGVyLnByb21p
c2UoKTsKIH0KIAogc3RhdGljIEpTUHJvbWlzZURlZmVycmVkKiBnZXRPckNyZWF0ZVByb21pc2VE
ZWZlcnJlZEZyb21PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHRoaXNPYmplY3QsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByaXZhdGVOYW1lICZuYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAppbmRleCAwYTkxMzAw
YjFiM2VmNGU5MTg3ODA5NDc4Y2ZmNmZlYTk5YTQzYzNlLi5iYTg5Nzc5ODNkNTNiMGZlYTQxNDM0
MjI0YmU5Njg5M2ZiNzg3ZWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9SZWFkYWJsZUpTU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9S
ZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAtMTc3LDYgKzE3NywxOCBAQCB2b2lkIFJlYWRhYmxlSlNT
dHJlYW06OnN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIGV4ZWMpCiAgICAgY2hhbmdlU3RhdGVU
b0Vycm9yZWQoKTsKIH0KIAorYm9vbCBSZWFkYWJsZUpTU3RyZWFtOjpoYXNWYWx1ZSgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTVmFsdWUgUmVh
ZGFibGVKU1N0cmVhbTo6cmVhZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gSlNWYWx1ZSgpOworfQorCiBSZWY8UmVhZGFibGVKU1N0cmVhbTo6UmVhZGVyPiBSZWFkYWJs
ZUpTU3RyZWFtOjpSZWFkZXI6OmNyZWF0ZShSZWFkYWJsZUpTU3RyZWFtJiBzdHJlYW0pCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVhZGVyKHN0cmVhbSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCmluZGV4IDkwMGFlZDZlY2ZmODQ1ODVk
OWFjZGFjMWI1YmY0MjAzODEwOTExYTUuLjk2ODMwODMzMDY3ODFkMTRkOGE0MTYxMmZmYzI1YWM0
N2Y1YzdlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
SlNTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3Ry
ZWFtLmgKQEAgLTgzLDYgKzgzLDkgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSYpOwogICAgIEpTQzo6SlNWYWx1ZSBlcnJvcigpIHsgcmV0dXJuIG1fZXJyb3Iu
Z2V0KCk7IH0KIAorICAgIHZpcnR1YWwgYm9vbCBoYXNWYWx1ZSgpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgSlNDOjpKU1ZhbHVlIHJlYWQoKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBSZWFk
YWJsZUpTU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8UmVhZGFibGVKU1N0cmVh
bTo6U291cmNlPiYmKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhiYWYzMTBiMTkzOTc2YWMzZTBlYTJhZjYwN2YzZDlm
NzE4ODk0ODUuLmFjMDEzOGVjMDkwNzk0NzQ0NDYzNmQ1ZWIxZTQyNWQ1MmExZTljZGQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMCBAQAorMjAxNS0wNS0wOSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxj
YWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxldEBjcmYu
Y2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgUmVhZGFibGVTdHJl
YW1SZWFkZXIgcmVhZCBtZXRob2QgaW4gY2xvc2VkIGFuZCBlcnJvcmVkIHN0YXRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ3OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWJhc2luZyByZWZlcmVu
Y2UgdGVzdCBleHBlY3RhdGlvbnMsIGFkZGluZyBzcGVjaWZjIHRlc3RzLgorICAgICAgICBFbnN1
cmUgdGhhdCBzb21lIHRpbWVvdXRpbmcgcmVmZXJlbmNlIHRlc3RzIGRvIG5vdCB0aW1lb3V0IHRo
ZSB3aG9sZSB0ZXN0IGZpbGUuCisKKyAgICAgICAgRml4aW5nIHRpbWVvdXQgaXNzdWVzIGluIHJl
YWRhYmxlLXN0cmVhbS5odG1sLgorICAgICAgICBBZnRlciB0aGF0LCBpdHMgcGFzcy9mYWlsIHRl
c3QgZXhwZWN0YXRpb24gc2hvdWxkIGJlIHJlbW92ZWQuCisKKyAgICAgICAgKiBzdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJj
ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5n
LXN0cmF0ZWd5Lmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tcmVhZGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWw6CisgICAgICAgICogc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVh
ZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sOgorCiAyMDE1LTA1LTA4ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbU3RyZWFtcyBBUEld
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHN0YXJ0IGZ1bmN0aW9uIHNob3VsZCBiZSBhYmxl
IHRvIGVycm9yIHRoZSBzdHJlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
YWY0M2UxY2U2MjY2MjQ4YjNlNGY3NDhiMThlMDRlYzBkMmNkY2QwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJlYWQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0g
dGhhdCBnZXRzIGNsb3NlZCAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0g
CitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0gCitQQVNTIFJlYWRpbmcg
dHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQgCitQQVNTIFJlYWRpbmcgd2l0aGlu
IGEgcmVhZCBwcm9taXNlIHJlc29sdmUgY2FsbGJhY2sgb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNs
b3NlZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLXJlYWQuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJl
YWRlci1yZWFkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZlNTQxNGQ1Nzk5YzdkNGQ5YmQ1MjM0Y2NjN2Qz
YTVlOTExZmFlNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0bWwKQEAgLTAsMCArMSwxNjQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3Njcmlw
dD4KKzxzY3JpcHQ+CisKK3ZhciB0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgdHdpY2Ugb24gYSBz
dHJlYW0gdGhhdCBnZXRzIGNsb3NlZCcpOwordDEuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIg
Y29udHJvbGxlcjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBz
dGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAg
IH0KKyAgICB9KTsKKyAgICB2YXIgY291bnRlciA9IDA7CisgICAgdmFyIHJlYWRlciA9IHJzLmdl
dFJlYWRlcigpOworCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHQxLnN0ZXBfZnVuYyhmdW5jdGlv
bihyZXN1bHQpIHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNs
b3NlJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMSk7CisgICAgICAgIGNvdW50
ZXIrKzsKKyAgICB9KSk7CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHQxLnN0ZXBfZnVuYyhmdW5j
dGlvbihyZXN1bHQpIHsKKyAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZh
bHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRo
IGNsb3NlJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMik7CisgICAgICAgIGNv
dW50ZXIrKzsKKyAgICAgICAgdDEuZG9uZSgpOworICAgIH0pKTsKKyAgICByZWFkZXIuY2xvc2Vk
LnRoZW4odDEuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGNv
dW50ZXIsIDApOworICAgICAgICBjb3VudGVyKys7CisgICAgfSkpOworCisgICAgY29udHJvbGxl
ci5jbG9zZSgpOworfSk7CisKK3ZhciB0MiA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgdHdpY2Ugb24g
YSBjbG9zZWQgc3RyZWFtJyk7Cit0Mi5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb250cm9s
bGVyOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBm
dW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfQorICAg
IH0pOworICAgIAorICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKyAgICAKKyAgICB2YXIgY291bnRl
ciA9IDA7CisgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgICAgcmVhZGVyLnJl
YWQoKS50aGVuKHQyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgYXNzZXJ0
X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSwg
J3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlJyk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoY291bnRlciwgMCk7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICB9KSk7CisgICAgcmVhZGVy
LnJlYWQoKS50aGVuKHQyLnN0ZXBfZnVuYyhmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgYXNz
ZXJ0X29iamVjdF9lcXVhbHMocmVzdWx0LCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSwgJ3JlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIGNsb3NlJyk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoY291bnRlciwgMSk7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICB9KSk7CisgICAgcmVh
ZGVyLmNsb3NlZC50aGVuKHQyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhjb3VudGVyLCAyKTsKKyAgICAgICAgY291bnRlcisrOworICAgICAgICB0Mi5kb25l
KCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0MyA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgdHdpY2Ug
b24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKK3QzLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNv
bnRyb2xsZXI7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9
CisgICAgfSk7CisgIAorICAgIHZhciBteUVycm9yID0geyBwb3RhdG86ICJtYXNoZWQiIH07IAor
ICAgIGNvbnRyb2xsZXIuZXJyb3IobXlFcnJvcik7CisgICAgCisgICAgdmFyIGNvdW50ZXIgPSAw
OworICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICAgIHJlYWRlci5yZWFkKCku
dGhlbih0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
J3JlYWQoKSBzaG91bGQgcmVqZWN0IG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7CisgICAgfSksIHQz
LnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhteUVycm9y
LCBlcnIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDApOworICAgICAgICBjb3Vu
dGVyKys7CisgICAgfSkpOworICAgIHJlYWRlci5yZWFkKCkudGhlbih0My5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgcmVqZWN0
IG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7CisgICAgfSksIHQzLnN0ZXBfZnVuYyhmdW5jdGlvbihl
cnIpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhteUVycm9yLCBlcnIpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKGNvdW50ZXIsIDEpOworICAgICAgICBjb3VudGVyKys7CisgICAgfSkpOworICAg
IHJlYWRlci5jbG9zZWQudGhlbih0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFz
c2VydF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgcmVqZWN0IG9uIGFuIGVycm9yZWQgc3RyZWFt
Jyk7CisgICAgfSksIHQzLnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhteUVycm9yLCBlcnIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDIp
OworICAgICAgICBjb3VudGVyKys7CisgICAgICAgIHQzLmRvbmUoKTsKKyAgICB9KSk7Cit9KTsK
KwordmFyIHQ0ID0gYXN5bmNfdGVzdCgnUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdl
dHMgZXJyb3JlZCcpOwordDQuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJvbGxlcjsK
KyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rp
b24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9KTsK
KyAgIAorICAgIHZhciBjb3VudGVyID0gMDsKKyAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KCk7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odDQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewor
ICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIHJlamVjdCBvbiBhbiBlcnJv
cmVkIHN0cmVhbScpOworICAgIH0pLCB0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAg
ICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhj
b3VudGVyLCAxKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFkZXIucmVh
ZCgpLnRoZW4odDQuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFj
aGVkKCdyZWFkKCkgc2hvdWxkIHJlamVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworICAgIH0p
LCB0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobXlF
cnJvciwgZXJyKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAyKTsKKyAgICAgICAg
Y291bnRlcisrOworICAgICAgICB0NC5kb25lKCk7CisgICAgfSkpOworICAgIHJlYWRlci5jbG9z
ZWQudGhlbih0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF91bnJlYWNo
ZWQoJ3JlYWQoKSBzaG91bGQgcmVqZWN0IG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7CisgICAgfSks
IHQ0LnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhteUVy
cm9yLCBlcnIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDApOworICAgICAgICBj
b3VudGVyKys7CisgICAgfSkpOworCisgICAgdmFyIG15RXJyb3IgPSB7IHBvdGF0bzogJ21hc2hl
ZCcgfTsgCisgICAgY29udHJvbGxlci5lcnJvcihteUVycm9yKTsKKyB9KTsKKwordmFyIHQ1ID0g
YXN5bmNfdGVzdCgnUmVhZGluZyB3aXRoaW4gYSByZWFkIHByb21pc2UgcmVzb2x2ZSBjYWxsYmFj
ayBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkJyk7Cit0NS5zdGVwKGZ1bmN0aW9uKCkgewor
ICAgIHZhciBjb250cm9sbGVyOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Cisg
ICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOwor
CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHQ1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAg
ICAgcmVhZGVyLnJlYWQoKS50aGVuKHQ1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHQ1LmRvbmUoKTsKKyAgICAgICAgfSkpOworICAgIH0pKTsKKyAgICBjb250cm9sbGVyLmNs
b3NlKCk7Cit9KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11
bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0CmluZGV4IDE5Y2EzNTU1OTU3NGUzMTMwOTlm
YzQ4ODJjYWRkMTQxMmE5YTIyODAuLmI3NTU4MWIxZDk1YzA0MTcwOGU1MTNkZTliZWMxMjg1YTMx
NzE0OTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJj
ZXMtZXhwZWN0ZWQudHh0CkBAIC01LDggKzUsOCBAQCBGQUlMIFVuZGVybHlpbmcgc291cmNlIHN0
YXJ0OiB0aHJvd2luZyBnZXR0ZXIgYXNzZXJ0X3Rocm93czogY29uc3RydWN0aW5nIHRoZSBzdAog
UEFTUyBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgbWV0aG9kIAogVElNRU9VVCBV
bmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKGluaXRpYWwgcHVsbCkgVGVz
dCB0aW1lZCBvdXQKIFRJTUVPVVQgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0
aG9kIChpbml0aWFsIHB1bGwpIFRlc3QgdGltZWQgb3V0Ci1GQUlMIFVuZGVybHlpbmcgc291cmNl
OiB0aHJvd2luZyBwdWxsIGdldHRlciAoc2Vjb25kIHB1bGwpIHJlYWQgaXMgbm90IGltcGxlbWVu
dGVkCi1GQUlMIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoc2Vjb25k
IHB1bGwpIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitUSU1FT1VUIFVuZGVybHlpbmcgc291cmNl
OiB0aHJvd2luZyBwdWxsIGdldHRlciAoc2Vjb25kIHB1bGwpIFRlc3QgdGltZWQgb3V0CitUSU1F
T1VUIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoc2Vjb25kIHB1bGwp
IFRlc3QgdGltZWQgb3V0CiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBjYW5jZWwg
Z2V0dGVyIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6
IHRocm93aW5nIGNhbmNlbCBtZXRob2QgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBV
bmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgc3RyYXRlZ3kgZ2V0dGVyIGFzc2VydF90aHJvd3M6
IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBj
LmVucXVldWUoJ2EnKTsgfSIgZGlkIG5vdCB0aHJvdwpAQCAtMTgsNyArMTgsNyBAQCBGQUlMIFVu
ZGVybHlpbmcgc291cmNlOiBzdHJhdGVneS5zaXplIHJldHVybmluZyBOYU4gYXNzZXJ0X3VucmVh
Y2hlZDogZW5xdWV1ZSBkaQogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogc3RyYXRlZ3kuc2l6ZSBy
ZXR1cm5pbmcgLUluZmluaXR5IGFzc2VydF91bnJlYWNoZWQ6IGVucXVldWUgZGlkbid0IHRocm93
IFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogc3RyYXRl
Z3kuc2l6ZSByZXR1cm5pbmcgK0luZmluaXR5IGFzc2VydF91bnJlYWNoZWQ6IGVucXVldWUgZGlk
bid0IHRocm93IFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQogUEFTUyBVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhbiBlbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRo
ZSBzZWNvbmQgdGltZSAKLUZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdp
Y2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgcmVh
ZCBpcyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2UgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRp
bWUgYXNzZXJ0X29iamVjdF9lcXVhbHM6IHJlYWQoKSBzaG91bGQgcmVhZCB0aGUgZW5xdWV1ZWQg
Y2h1bmsgcHJvcGVydHkgImRvbmUiIGV4cGVjdGVkIG9iamVjdCAiW29iamVjdCBPYmplY3RdIiBn
b3Qgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGNsb3NlIG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IGNh
bmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcg
Y2xvc2Ugb24gYSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgY2Fu
Y2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBj
bG9zZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5k
ZXJseWluZy1zb3VyY2VzLmh0bWwKaW5kZXggMmIzNjZiODEyZGY1OGRhYWViYzAzNTMzMjJhZmEx
ZjQ1NGYxZmYyNS4uZGZkNDk3MmIxOGI4NGI1NzJmMTc1MjNjZjNjMTE0NzRhYmE3Zjc4YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFk
LXVuZGVybHlpbmctc291cmNlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbApAQCAtMzEsNyAr
MzEsNyBAQCB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dp
bmcgcHVsbCBnZXR0ZXIgKGluaXRpYWwgcHVsbCknLAogdGVzdDEuc3RlcChmdW5jdGlvbigpIHsK
ICAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwogICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIGdldCBwdWxsKCkgeworICAgICAg
ICBwdWxsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwogICAgICAg
ICB9CiAgICAgfSk7CkBAIC02MSwxMiArNjEsMTIgQEAgdGVzdDIuc3RlcChmdW5jdGlvbigpIHsK
ICAgICAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcg
c291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoc2Vjb25kIHB1bGwpJyk7Cit2YXIgdGVzdDMg
PSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIgKHNl
Y29uZCBwdWxsKScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewog
ICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CiAgICAgdmFy
IGNvdW50ZXIgPSAwOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAg
IGdldCBwdWxsKCkgeworICAgICAgICBwdWxsOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICsr
Y291bnRlcjsKICAgICAgICAgICAgIGlmIChjb3VudGVyID09PSAxKSB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRlc3QzLnN0ZXBfZnVuYyhmdW5jdGlvbihjKSB7IGMuZW5xdWV1ZSgnYScpOyB9
KQpAQCAtODksNyArODksNyBAQCB0ZXN0My5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB9KSk7
CiB9KTsKIAotdmFyIHRlc3Q0ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IHRocm93
aW5nIHB1bGwgbWV0aG9kIChzZWNvbmQgcHVsbCknKTsKK3ZhciB0ZXN0NCA9IGFzeW5jX3Rlc3Qo
J1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoc2Vjb25kIHB1bGwpJywg
eyB0aW1lb3V0OiA1MCB9KTsKIHRlc3Q0LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVy
cm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKICAgICB2YXIgY291bnRlciA9IDA7
CkBAIC0xMTksNyArMTE5LDcgQEAgdmFyIHRlc3Q1ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBz
b3VyY2U6IHRocm93aW5nIGNhbmNlbCBnZXR0ZXInKTsKIHRlc3Q1LnN0ZXAoZnVuY3Rpb24oKSB7
CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKICAgICB2
YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBnZXQgY2FuY2VsKCkgeworICAg
ICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CiAg
ICAgICAgIH0KICAgICB9KTsKQEAgLTE1OSw3ICsxNTksNyBAQCB0ZXN0Ny5zdGVwKGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgc3RhcnRlZCA9IHRydWU7CiAgICAgICAgICAgICBhc3NlcnRfdGhy
b3dzKHRoZUVycm9yLCBmdW5jdGlvbigpIHsgYy5lbnF1ZXVlKCdhJyk7IH0sICdlbnF1ZXVlIHNo
b3VsZCB0aHJvdyB0aGUgZXJyb3InKTsKICAgICAgICAgfSwKLSAgICAgICAgZ2V0IHN0cmF0ZWd5
KCkgeworICAgICAgICBzdHJhdGVneTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB0aHJvdyB0
aGVFcnJvcjsKICAgICAgICAgfQogICAgIH0pOwpAQCAtNDg1LDQgKzQ4NSw1IEBAIHRlc3QyMS5z
dGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB0ZXN0MjEuZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxm
aWxsJyk7CiAgICAgfSkpOwogfSk7CisKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVn
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dAppbmRleCA3YmRmM2RlYzZk
NTk0M2ZmZTUyY2Y5Zjg1YWI0ZDRlMDU3NzViNWYwLi5kN2NiYjc1ZjM3MjM2OTIyZWVlNWFjODAy
YjExNmI4M2YwMTI1YmUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAKIFBBU1MgQ2FuIGNvbnN0
cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsg
CiBQQVNTIEdpdmVzIGEgUmFuZ2VFcnJvciB3aGVuIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUgCiBQ
QVNTIENhbiBjb25zdHJ1Y3QgYSByZWFkYWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENvdW50UXVl
dWluZ1N0cmF0ZWd5IAotRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9m
IGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAwKSByZWFkIGlzIG5v
dCBpbXBsZW1lbnRlZAorVElNRU9VVCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVl
IG9mIGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAwKSBUZXN0IHRp
bWVkIG91dAogRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVh
ZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAxKSBhc3NlcnRfZXF1YWxzOiBB
ZnRlciAwIHJlYWRzLCAxc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgKHF1ZXVlIG5vdyBj
b250YWlucyAxIGNodW5rKSBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKIEZBSUwgQ29ycmVj
dGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1
ZSBmdW5jdGlvbiAoSFdNID0gNCkgYXNzZXJ0X2VxdWFsczogQWZ0ZXIgMCByZWFkcywgMXN0IGVu
cXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVuaykgZXhw
ZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbCBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVp
bmctc3RyYXRlZ3kuaHRtbAppbmRleCAzYjk2NDViNGY5OTM3ZTRhZTk0NWQ3NWQ0Mjc2YmI1YWE4
YjNkYWNlLi44MmMzODdkZGJiNTcxNThiYTBmN2Y5MmViZGM2NDFhMjBlM2FkZDAzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCkBAIC0xNyw3ICsxNyw3
IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RyYXRlZ3k6
IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7ICJoaWdoV2F0ZXJNYXJrIjogNCB9KSB9KTsKIH0s
ICdDYW4gY29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVp
bmdTdHJhdGVneScpOwogCi12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdDb3JyZWN0bHkgZ292ZXJu
cyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW1cJ3MgZW5xdWV1ZSBmdW5jdGlv
biAoSFdNID0gMCknKTsKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ0NvcnJlY3RseSBnb3Zlcm5z
IHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJsZVN0cmVhbVwncyBlbnF1ZXVlIGZ1bmN0aW9u
IChIV00gPSAwKScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewog
ICAgIHZhciBlbnF1ZXVlOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwtZXhwZWN0ZWQudHh0
CmluZGV4IGVkZjkwMTc0MzhkYzc0OWFmNjEwOTlmZTJkYzFhZTZlODI4YzQ5ODAuLjliNzU1NDI4
NThkNTU1M2JiZTM1M2JkYTUyOGYwNDRhMGUwMmNjNTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBA
QAogCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24gdGVzdCBv
biBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291cmNlIHJl
YWQgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
aW50ZWdyYXRpb24gdGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFu
ZG9tIHB1c2ggc291cmNlIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgUmVhZGFibGVT
dHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRo
ZSBnaXZlbiByZWFzb24gdG8gdGhlIHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCBpcyBub3QgaW1w
bGVtZW50ZWQKIEZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwoKSBvbiBh
IGxvY2tlZCBzdHJlYW0gc2hvdWxkIGZhaWwgYW5kIG5vdCBjYWxsIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZSBjYW5jZWwgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291
cmNlJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0
aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIGNhbmNlbCBpcyBub3Qg
aW1wbGVtZW50ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQu
dHh0CmluZGV4IGU5ZDg0OTVjNmMxNDZhNjJlNjY3ZmFkOTNiOGU5OTM4NDYzOGM2MDMuLjg5YWU0
OWRlNmNkZDdiNDcwYTVmMTJkM2ExNGZiNWFlNjc2NWMxOTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dApAQCAtNSwyMiArNSwyMiBAQCBQQVNTIFJl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0aW9uIHN0
YXJ0IGFyZ3VtZW50cwogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGlu
aXRpYWwgZ2FyYmFnZSBhcyBjYW5jZWwgYXJndW1lbnQgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNv
bnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHB1bGwgYXJndW1lbnQgCiBQQVNT
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHN0
cmF0ZWd5IGFyZ3VtZW50IAotRkFJTCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJs
ZSB0byByZXR1cm4gYSBwcm9taXNlIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitUSU1FT1VUIFJl
YWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgVGVz
dCB0aW1lZCBvdXQKIFRJTUVPVVQgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUg
dG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0IFRlc3QgdGltZWQgb3V0Ci1GQUlMIFJl
YWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMu
IHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBh
YmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuIGFzc2VydF9vYmplY3RfZXF1YWxzOiB2
YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkIHByb3BlcnR5ICJkb25lIiBleHBl
Y3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290IG9iamVjdCAiW29iamVjdCBPYmplY3Rd
IgogUEFTUyBSZWFkYWJsZVN0cmVhbTogaWYgc3RhcnQgdGhyb3dzIGFuIGVycm9yLCBpdCBzaG91
bGQgYmUgcmUtdGhyb3duIAotRkFJTCBSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBp
dCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1
bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwg
UmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBz
dHJlYW0gaXMgbm93IGNsb3NlZCByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorVElNRU9VVCBSZWFk
YWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBU
ZXN0IHRpbWVkIG91dAorVElNRU9VVCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1
bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgVGVzdCB0
aW1lZCBvdXQKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVy
IHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCAKIEZBSUwgUmVhZGFibGVTdHJlYW06
IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBwdWxsICh3aXRo
IG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3MgYXNzZXJ0X2VxdWFsczogcHVs
bCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGltZXMgZXhwZWN0ZWQgNCBidXQgZ290
IDAKIFRJTUVPVVQgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBh
IHN0cmVhbS4gVGVzdCB0aW1lZCBvdXQKIEZBSUwgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hv
dWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJsZSBidXQgZHJhaW5pbmcgYXNzZXJ0
X2VxdWFsczogdGhlIGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIHRy
dWUgYnV0IGdvdCBmYWxzZQogRkFJTCBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhy
b3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVlIGFmdGVy
IGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBj
LmVucXVldWUoJ2EnKTsgfSIgZGlkIG5vdCB0aHJvdwogRkFJTCBSZWFkYWJsZVN0cmVhbTogZW5x
dWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVuIHRoZSBzdHJlYW0gaXMgZXJy
b3JlZCBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyB0aGF0
IGVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IGMuZW5xdWV1ZSgnYScpOyB9IiBkaWQgbm90
IHRocm93Ci1GQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJj
ZSBtZXRob2RzIGFzIG1ldGhvZHMgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQgUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0
aG9kcyBUZXN0IHRpbWVkIG91dAogRkFJTCBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUg
ZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBhbGwgYnV0IHRoZSBmaXJz
dCBlbnF1ZXVlIGNhbGwgYXNzZXJ0X2VxdWFsczogZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJu
IHRydWUgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiBGQUlMIFJlYWRhYmxlU3RyZWFtIHN0
cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSByZXR1cm5pbmcg
dHJ1ZSBmcm9tIGVucXVldWUgaWYgdGhlIGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseSBhc3Nl
cnRfZXF1YWxzOiBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCB0cnVl
IGJ1dCBnb3QgZmFsc2UKLUZBSUwgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRh
cHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwg
UmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSBzeW5jIHB1bGwgc291
cmNlIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGludGVncmF0
aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlIHJlYWQgaXMgbm90IGltcGxl
bWVudGVkCitUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5n
IGEgcmFuZG9tIHB1c2ggc291cmNlIFRlc3QgdGltZWQgb3V0CitUSU1FT1VUIFJlYWRhYmxlU3Ry
ZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSBUZXN0IHRp
bWVkIG91dAorVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGlu
ZyBhbiBhc3luYyBwdWxsIHNvdXJjZSBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CmluZGV4IDc1OWYx
M2MzMGU4ZTZiYmNmMmE1Yzk3ZDk0MWYzZWMwYzdiNTQ0YzIuLjA3YzVkNzQwOGJmZDY2MmM5NGNm
ZWZkOTA4MDg0NWFiYWRiYzY3YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CkBAIC05LDEwICs5LDEwIEBAIFBBU1MgQ29u
c3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYg
dGhlIHN0cmVhbSBpcyBhCiBQQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEg
Z2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZp
YSBkaXJlY3QgZ2V0UmVhZGVyKSAKIFBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAogUEFT
UyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUg
T0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkIAotRkFJTCBSZWFkaW5nIGZyb20gYSByZWFkZXIg
Zm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUg
cmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZv
ciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIFRl
c3QgdGltZWQgb3V0CiBGQUlMIGNhbmNlbCgpIG9uIGEgcmVhZGVyIHJlbGVhc2VzIHRoZSByZWFk
ZXIgYmVmb3JlIGNhbGxpbmcgdGhyb3VnaCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBQQVNT
IGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9z
ZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAogRkFJTCBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZp
bGxlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxlIHN0cmVhbSBsb2Nr
cykgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIENhbm5vdCB1c2UgYW4gYWxy
ZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWluIHJlbGVhc2VMb2Nr
IGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBl
cnJvcmluZyB0aGUgc3RyZWFtIHNob3VsZCBzdWNjZWVkIHJlYWQgaXMgbm90IGltcGxlbWVudGVk
CitQQVNTIEdldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0g
c2hvdWxkIHN1Y2NlZWQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXIuaHRtbAppbmRleCA2ZjM5ZjY5NzVkZGRjMGM2MWE5NzQxYTU4ZjYwZTg1MzZhMzE5ZTAzLi40
YzVkMjczYzhjNTFkNzU0MzUzZTRlOTliMzE0NmEyNDhlNGNmZGNiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCkBAIC0xMDcsNyArMTA3LDcgQEAgdGVz
dChmdW5jdGlvbigpIHsKICAgICBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25z
dHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIG5vdCB0aHJvdy4KIH0sICdDb25zdHJ1Y3RpbmcgYSBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBp
cyBlcnJvcmVkJyk7CiAKLXZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgZnJvbSBhIHJl
YWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWls
YWJsZScpOwordmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZv
ciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlJywg
eyB0aW1lb3V0OiA1MCB9KTsKIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNvbnRy
b2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQKaW5k
ZXggMjM4YjBmN2ZiNzUwODJiN2I5NmE4M2JhNGQxOWQ4ZjRhMWQ4ZWY3Yi4uM2U4YzJjMWVmZWJk
ZDFkMTc4MjhmYzUwZDc5YzViZTY5YjI3N2Q5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3
IEBAIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVt
cHR5KQogUEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0
aWVzIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0
cmVhbSAoZW1wdHkpIHJlYWRlciAKIFBBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0
aG9kcyBhbmQgcHJvcGVydGllcyAKLUZBSUwgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3Qg
cHJvbWlzZXMgZWFjaCB0aW1lIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitQQVNTIHJlYWQoKSBz
aG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAKIFBBU1MgZ2V0UmVhZGVy
KCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKIEZBSUwgcmVsZWFzaW5nIHRoZSBs
b2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZXNvbHZlIGFzIGlmIHRo
ZSBzdHJlYW0gaXMgY2xvc2VkIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBy
ZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byBmdWxmaWxsIHJlbGVhc2VM
b2NrIGlzIG5vdCBpbXBsZW1lbnRlZApAQCAtMTQsNyArMTQsNyBAQCBGQUlMIGNhbmNlbCgpIHNo
b3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2Vs
IGlzIG5vdAogUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCiBQQVNTIHNob3VsZCBiZSBh
YmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycywgc2luY2UgdGhleSBhcmUgYWxsIGF1dG8t
cmVsZWFzZWQgCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFk
YWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KSByZWFkZXIgCi1GQUlMIHJlYWQo
KSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IHJl
YWQgaXMgbm90IGltcGxlbWVudGVkCitQQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsg
dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAogUEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB1bmRlZmluZWQgCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBS
ZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpIAogRkFJTCBjYW5jZWwoKSBzaG91bGQg
cmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBu
b3QgaW1wbGVtZW50ZWQKQEAgLTI0LDI2ICsyNCwyMSBAQCBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVk
UlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpIHJl
YQogRkFJTCByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRv
bmU6IHRydWUgfSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIGNsb3NlZCBzaG91bGQg
ZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlh
IGNhbGwgaW4gc3RhcnQpIAotRkFJTCBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVy
IHRoYXQgYWN0cyBlcnJvcmVkIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitQQVNTIGdldFJlYWRl
cigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCiBQQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3Jl
ZCB2aWEgY2FsbCBpbiBzdGFydCkgCiBGQUlMIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0
aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVk
CiBGQUlMIHJlYWRlciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQg
cHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBzaG91bGQg
YmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMsIHNpbmNlIHRoZXkgYXJlIGFsbCBh
dXRvLXJlbGVhc2VkIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRh
YmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0
YXJ0KSAKLUZBSUwgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMg
ZXJyb3JlZCByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJT
RXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcg
YSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXIgCi1USU1FT1VUIGNsb3NlZCBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIFRlc3QgdGltZWQgb3V0Ci1GQUlMIHJlYWQoKSBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0g
KHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlciAKLUZBSUwgY2FsbGluZyBy
ZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1
bmtzIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdp
dGggd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyByZWFkIGlzIG5vdCBp
bXBsZW1lbnRlZAotRkFJTCByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBl
YWNoIHRpbWUgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgY2FuY2VsKCkgYWZ0ZXIgYSBy
ZWFkKCkgc2hvdWxkIHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgcmVhZCBpcyBu
b3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0
aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIFRlc3QgdGltZWQgb3V0CitUSU1F
T1VUIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGggd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2
ZSBib3RoIGNodW5rcyBUZXN0IHRpbWVkIG91dAorUEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBk
aXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCitGQUlMIGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgp
IHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IGNhbmNlbCBpcyBub3Qg
aW1wbGVtZW50ZWQKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkg
cmVhZGVyIAotRkFJTCB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQK
LUZBSUwgdGhpcmQgcmVhZCwgd2l0aCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBkcmFpbmlu
ZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2VkIHBy
b21pc2UgdG8gZnVsZmlsbCByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCByZWxlYXNpbmcg
dGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGRvIG5vdGhpbmcgcmVh
ZCBpcyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcs
IHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IGFzc2VydF9vYmpl
Y3RfZXF1YWxzOiBmaXJzdCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QgcHJvcGVydHkgImRvbmUi
IGV4cGVjdGVkIG9iamVjdCAiW29iamVjdCBPYmplY3RdIiBnb3Qgb2JqZWN0ICJbb2JqZWN0IE9i
amVjdF0iCitGQUlMIHRoaXJkIHJlYWQsIHdpdGggd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1
ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gYXNzZXJ0X29iamVjdF9lcXVhbHM6IGZpcnN0IHJl
c3VsdCBzaG91bGQgYmUgY29ycmVjdCBwcm9wZXJ0eSAiZG9uZSIgZXhwZWN0ZWQgb2JqZWN0ICJb
b2JqZWN0IE9iamVjdF0iIGdvdCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIKK1BBU1MgZHJhaW5p
bmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBw
cm9taXNlIHRvIGZ1bGZpbGwgCitGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3Ry
ZWFtIGlzIGNsb3NlZCBzaG91bGQgZG8gbm90aGluZyByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVt
ZW50ZWQKIEZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSByZWFkKCkgdG8gYWN0
IGFzIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRl
ZAotRkFJTCByZWFkZXIncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUg
cHJvbWlzZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCByZWFkZXIncyBjbG9zZWQgcHJv
cGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgcHJvbWlzZSByZWxlYXNlTG9jayBpcyBub3Qg
aW1wbGVtZW50ZWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBs
YXRlZC5odG1sCmluZGV4IDhjMWJmNTg3ZTFlNDcyZGUyNTMxMTRjOTU3MDNkZGYxNWE1NWJjOTIu
LmM3MmNhYTA2NmQxZTcwNWZmYTQ3NzI2MWRhNWM0MjA4ZTNiYTZkYzYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS10ZW1wbGF0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWwKQEAgLTM2OSw3ICszNjks
NyBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIobGFiZWwsIGZhY3Rv
cnksIGNodW5rcykgewogICAgIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgfSwgJ1J1bm5pbmcgdGVt
cGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyIHdpdGggJyArIGxhYmVsKTsKIAotICAgIHZhciB0
ZXN0MSA9IGFzeW5jX3Rlc3QoJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3
aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcycpOworICAgIHZhciB0ZXN0MSA9IGFzeW5j
X3Rlc3QoJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFs
bHkgZ2l2ZSBib3RoIGNodW5rcycsIHsgdGltZW91dDogNTAgfSk7CiAgICAgdGVzdDEuc3RlcChm
dW5jdGlvbigpIHsKICAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CiAgICAgICAg
IHZhciBwcm9taXNlQ291bnQgPSAwOwpAQCAtMzg1LDcgKzM4NSw3IEBAIGZ1bmN0aW9uIHRlbXBs
YXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlcihsYWJlbCwgZmFjdG9yeSwgY2h1bmtzKSB7CiAgICAg
ICAgIH0pKTsKICAgICB9KTsKIAotICAgIHZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ2NhbGxpbmcg
cmVhZCgpIHR3aWNlIHdpdGggd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5r
cycpOworICAgIHZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdp
dGggd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcycsIHsgdGltZW91dDog
NTAgfSk7CiAgICAgdGVzdDIuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIHsgcmVhZGVy
IH0gPSBmYWN0b3J5KCk7CiAKQEAgLTYxNCw3ICs2MTQsOCBAQCB0ZW1wbGF0ZWRSU0Vycm9yZWRT
eW5jT25seSgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpJywgZnVu
Y3RpbwogICAgIH0pfSwKICAgICB0aGVFcnJvcgogKTsKLQorLy8gRklYTUU6IEFjdGl2YXRlIHRo
ZXNlIHRlc3RzIG9uY2UgUHJvbWlzZSBoYW5kbGluZyBpcyBzdXBwb3J0ZWQgaW4gc3RhcnQgZnVu
Y3Rpb24uCisvKgogdGVtcGxhdGVkUlNFcnJvcmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2
aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCknLCBmdW5jdGlvbigpIHsK
ICAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KCkgewpAQCAtNjMyLDYgKzYzMyw3IEBAIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcignUmVhZGFi
bGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pCiAgICAgfSkp
fSwKICAgICB0aGVFcnJvcgogKTsKKyovCiAKIHZhciBjaHVua3MgPSBbJ2EnLCAnYiddOwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0uaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCmluZGV4IGQwNzI1ZTQ0MjY2MWE3MmUyNmZl
YjYzM2Y4MzM2YzIwOGU5NTRlNjEuLjE2Y2U4YzRhZTQ0OTMzMTdkMzI3Y2Y5MThiNGNmNDkwOTYx
NThkNTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCkBAIC01Myw3ICs1Myw3
IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RyYXRlZ3k6
IDIgfSk7IC8vIENvbnN0cnVjdG9yIHNob3VsZCBub3QgdGhyb3cgd2hlbiBzdHJhdGVneSBpcyBu
b3QgYW4gb2JqZWN0LgogfSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5p
dGlhbCBnYXJiYWdlIGFzIHN0cmF0ZWd5IGFyZ3VtZW50Jyk7CiAKLXZhciB0ZXN0MSA9IGFzeW5j
X3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHBy
b21pc2UnKTsKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNo
b3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UnLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVz
dDEuc3RlcChmdW5jdGlvbigpCiB7CiAgICAgdmFyIHJlYWRDYWxsZWQgPSBmYWxzZTsKQEAgLTE0
Niw3ICsxNDYsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGFzc2VydF90aHJvd3MoZXJyb3Is
IGZ1bmN0aW9uKCkgeyBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFydCgpIHsgdGhyb3cgZXJyb3I7
IH0gfSkgfSwgJ2Vycm9yIHNob3VsZCBiZSByZS10aHJvd24nKTsKIH0sICdSZWFkYWJsZVN0cmVh
bTogaWYgc3RhcnQgdGhyb3dzIGFuIGVycm9yLCBpdCBzaG91bGQgYmUgcmUtdGhyb3duJyk7CiAK
LXZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMs
IGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtJyk7Cit2YXIgdGVzdDQgPSBhc3luY190ZXN0KCdS
ZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVh
bScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBl
cnJvciA9IG5ldyBFcnJvcigncHVsbCBmYWlsdXJlJyk7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKQEAgLTM2OCw3ICszNjgsNyBAQCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewog
Ly8gICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwogLy8gfSk7CiAKLXZhciB0ZXN0MTEgPSBhc3lu
Y190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHBy
ZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7Cit2YXIgdGVzdDExID0gYXN5
bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBw
cmV2aW91cyBwdWxsIGNhbGxcJ3MgcHJvbWlzZSBmdWxmaWxscycsIHsgdGltZW91dDogNTAgfSk7
CiB0ZXN0MTEuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcmVzb2x2ZTsKICAgICB2YXIgcmV0
dXJuZWRQcm9taXNlOwpAQCAtNTY1LDcgKzU2NSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAg
fSk7CiB9LCAnUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQg
ZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQnKTsKIAotdmFyIHRlc3QxNiA9IGFzeW5j
X3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRo
b2RzIGFzIG1ldGhvZHMnKTsKK3ZhciB0ZXN0MTYgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzJywgeyB0
aW1lb3V0OiA1MCB9KTsKIHRlc3QxNi5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBzdGFydENh
bGxlZCA9IDA7CiAgICAgdmFyIHB1bGxDYWxsZWQgPSAwOwpAQCAtNjU4LDcgKzY1OCw3IEBAIHRl
c3QxNy5zdGVwKGZ1bmN0aW9uKCkgewogICAgIH0pKS5jYXRjaCh0ZXN0MTcuc3RlcF9mdW5jKGZ1
bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSApKTsKIH0pOwogCi12YXIgdGVzdDE4
ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcg
YSByYW5kb20gcHVzaCBzb3VyY2UnKTsKK3ZhciB0ZXN0MTggPSBhc3luY190ZXN0KCdSZWFkYWJs
ZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZScs
IHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MTguc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcHVs
bENoZWNrZWQgPSBmYWxzZTsKICAgICB2YXIgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hT
b3VyY2UoOCk7CkBAIC03MDIsNyArNzAyLDcgQEAgdGVzdDE4LnN0ZXAoZnVuY3Rpb24oKSB7CiAg
ICAgfSksIHRlc3QxOC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfcmVhY2hlZChlKTsg
fSkpOwogfSk7CiAKLXZhciB0ZXN0MTkgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRl
Z3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UnKTsKK3ZhciB0ZXN0MTkg
PSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBh
IHN5bmMgcHVsbCBzb3VyY2UnLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDE5LnN0ZXAoZnVuY3Rp
b24oKSB7CiAgICAgdmFyIHJzID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwKTsKIApAQCAt
NzE0LDcgKzcxNCw3IEBAIHRlc3QxOS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIH0pKTsKIH0pOwog
Ci12YXIgdGVzdDIwID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVz
dDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UnKTsKK3ZhciB0ZXN0MjAgPSBhc3luY190
ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBw
dWxsIHNvdXJjZScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MjAuc3RlcChmdW5jdGlvbigpIHsK
ICAgICB2YXIgcnMgPSBzZXF1ZW50aWFsUmVhZGFibGVTdHJlYW0oMTAsIHsgYXN5bmM6IHRydWUg
fSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253325</attachid>
            <date>2015-05-18 05:22:53 -0700</date>
            <delta_ts>2015-05-19 13:25:22 -0700</delta_ts>
            <desc>Version matching bug 145110 and 145116 patches</desc>
            <filename>bug-144790-20150518142250.patch</filename>
            <type>text/plain</type>
            <size>45421</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWM0Nzk1ZWVjNTBlZmUw
ZGE5MGJkNzAxYTBmZWQyYzZiNTc2ZTk4ZC4uN2Q4ZjliNjkxNWM3YjFjZWVlOTdhOTc0MTU3NGRj
NDJiOWNjYWI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE1LTA1LTE3ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IEltcGxlbWVudCBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFkIG1ldGhvZCBpbiBjbG9zZWQgYW5k
IGVycm9yZWQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NDc5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlYWRlciBkZWxlZ2F0ZXMgcmVhZCgpIHByb21pc2UgaGFuZGxpbmcgdG8gaXRzIHN0
cmVhbSBleGNlcHQgaWYgcmVhZGVyIGlzIG5vIGxvbmdlciBsb2NraW5nIHRoZSBzdHJlYW0gYW5k
IHN0cmVhbSBpcyByZWFkYWJsZS4KKyAgICAgICAgU3RvcmluZyBvZiByZWFkZXIgcmVhZCgpIHBy
b21pc2UgY2FsbGJhY2tzIGFzIGEgVmVjdG9yIGluIFJlYWRhYmxlU3RyZWFtLgorICAgICAgICBB
ZGRlZCByZXNvbHV0aW9uL3JlamVjdGlvbiBvZiByZWFkKCkgcHJvbWlzZXMgaW4gY2FzZSBvZiBl
cnJvcmVkL2Nsb3NlZCBzdHJlYW1zLgorCisgICAgICAgIFRlc3Q6IHN0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLXJlYWRlci1yZWFkLmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVh
bTo6Y2xlYW5DYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNo
YW5nZVN0YXRlVG9DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNo
YW5nZVN0YXRlVG9FcnJvcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpj
bG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnJlYWQpOgorICAgICAg
ICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW06OlJlYWRDYWxsYmFja3M6OlJlYWRDYWxsYmFja3MpOgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1SZWFkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVTdHJlYW1S
ZWFkZXI6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y2xvc2VkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06Omhhc1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OnJlYWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Jl
YWRhYmxlSlNTdHJlYW0uaDoKKwogMjAxNS0wNS0xNyAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAg
PHJlZ29AaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBBZGQgc2Nyb2xs
YmFyIHdpZHRoIGluIGludHJpbnNpYyBsb2dpY2FsIHdpZHRocyBjb21wdXRhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JdGVyYXRvck9w
ZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSXRl
cmF0b3JPcGVyYXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNlMDZhMTdlZTY2ODg0M2Q2ZDk4NDMzMWNi
OWYwY2U1NDhiY2RkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRp
bmdIZWFkZXJzL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmgKQEAgLTAsMCArMSw0IEBACisj
aWZuZGVmIFdlYkNvcmVfRldEX0l0ZXJhdG9yT3BlcmF0aW9uc19oCisjZGVmaW5lIFdlYkNvcmVf
RldEX0l0ZXJhdG9yT3BlcmF0aW9uc19oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSXRlcmF0
b3JPcGVyYXRpb25zLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCmluZGV4IGYyMmExMmFjNTY3ODVlY2VlNzI1OTc2NDk4
ZTk0YjEzYTVmMGQ4MGQuLjI0ZGM1OGVmZjgzMWM1MzVmZmYyNGE3MTQ2NGRhODA1NmM0ZTVjNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
LmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNp
bmNsdWRlICJSZWFkYWJsZVN0cmVhbVJlYWRlci5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNW
YWx1ZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTYyLDYgKzYyLDggQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xlYW5DYWxsYmFja3MoKQogewog
ICAgIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrID0gbnVsbHB0cjsKICAgICBtX2Nsb3NlZEZhaWx1
cmVDYWxsYmFjayA9IG51bGxwdHI7CisKKyAgICBtX3JlYWRSZXF1ZXN0cy5jbGVhcigpOwogfQog
CiB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvQ2xvc2VkKCkKQEAgLTcxLDkgKzcz
LDEyIEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQogICAgIG1f
c3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOwogICAgIG1fcmVsZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6
Om1vdmUobV9yZWFkZXIpKTsKIAotICAgIGlmICghbV9jbG9zZWRTdWNjZXNzQ2FsbGJhY2spCi0g
ICAgICAgIHJldHVybjsKLSAgICBtX2Nsb3NlZFN1Y2Nlc3NDYWxsYmFjaygpOworICAgIGlmICht
X2Nsb3NlZFN1Y2Nlc3NDYWxsYmFjaykKKyAgICAgICAgbV9jbG9zZWRTdWNjZXNzQ2FsbGJhY2so
KTsKKworICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fcmVhZFJlcXVlc3RzKQorICAgICAgICBy
ZXF1ZXN0Lm1fc3VjY2Vzc0NhbGxiYWNrKEpTQzo6anNVbmRlZmluZWQoKSk7CisKICAgICBjbGVh
bkNhbGxiYWNrcygpOwogfQogCkBAIC04NCw5ICs4OSwxMiBAQCB2b2lkIFJlYWRhYmxlU3RyZWFt
OjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpFcnJvcmVkOwog
ICAgIG1fcmVsZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6Om1vdmUobV9yZWFkZXIpKTsKIAotICAg
IGlmICghbV9jbG9zZWRGYWlsdXJlQ2FsbGJhY2spCi0gICAgICAgIHJldHVybjsKLSAgICBtX2Ns
b3NlZEZhaWx1cmVDYWxsYmFjayhlcnJvcigpKTsKKyAgICBpZiAobV9jbG9zZWRGYWlsdXJlQ2Fs
bGJhY2spCisgICAgICAgIG1fY2xvc2VkRmFpbHVyZUNhbGxiYWNrKGVycm9yKCkpOworCisgICAg
Zm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZWFkUmVxdWVzdHMpCisgICAgICAgIHJlcXVlc3QubV9m
YWlsdXJlQ2FsbGJhY2soZXJyb3IoKSk7CisKICAgICBjbGVhbkNhbGxiYWNrcygpOwogfQogCkBA
IC0xMDYsNyArMTE0LDcgQEAgUmVhZGFibGVTdHJlYW1SZWFkZXImIFJlYWRhYmxlU3RyZWFtOjpn
ZXRSZWFkZXIoKQogICAgIHJldHVybiByZWFkZXI7CiB9CiAKLXZvaWQgUmVhZGFibGVTdHJlYW06
OmNsb3NlZChDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBDbG9zZWRGYWls
dXJlQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQordm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xvc2Vk
KENsb3NlZFN1Y2Nlc3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIEZhaWx1cmVDYWxsYmFjayBm
YWlsdXJlQ2FsbGJhY2spCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkgewog
ICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKQEAgLTEyMCw2ICsxMjgsMjQgQEAgdm9pZCBSZWFk
YWJsZVN0cmVhbTo6Y2xvc2VkKENsb3NlZFN1Y2Nlc3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ss
IENsb3NlZEZhaWx1cmUKICAgICBtX2Nsb3NlZEZhaWx1cmVDYWxsYmFjayA9IFdURjo6bW92ZShm
YWlsdXJlQ2FsbGJhY2spOwogfQogCit2b2lkIFJlYWRhYmxlU3RyZWFtOjpyZWFkKFJlYWRTdWNj
ZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBGYWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNhbGxi
YWNrKQoreworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpIHsKKyAgICAgICAgc3Vj
Y2Vzc0NhbGxiYWNrKEpTQzo6anNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQpIHsKKyAgICAgICAgZmFpbHVyZUNh
bGxiYWNrKGVycm9yKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChoYXNWYWx1
ZSgpKSB7CisgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhyZWFkKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIG1fcmVhZFJlcXVlc3RzLmFwcGVuZChSZWFkQ2FsbGJhY2tzKFdURjo6bW92
ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSkpOworICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIHB1bGwuCit9CisKIHZvaWQgUmVhZGFibGVTdHJlYW06
OnN0YXJ0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAppbmRleCBhMjUwN2JiZTQ3YzFhMmViNzQ1
ZjI1NTJlMTU5MjI3OGY5YTgxYmJhLi4zZDcxZjNmYmQ4MjQwMjRiMTgzZjQ3MDk5ODJkMWUzZDk2
ZGMzMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW0uaApAQCAtNzUsOSArNzUsMTMgQEAgcHVibGljOgogCiAgICAgUmVhZGFibGVTdHJlYW1T
b3VyY2UmIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9CiAKKyAgICB0eXBlZGVm
IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBKU0M6OkpTVmFsdWUmKT4gRmFpbHVyZUNhbGxiYWNr
OworCiAgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gQ2xvc2VkU3VjY2Vzc0NhbGxi
YWNrOwotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKEpTQzo6SlNWYWx1ZSk+IENsb3Nl
ZEZhaWx1cmVDYWxsYmFjazsKLSAgICB2b2lkIGNsb3NlZChDbG9zZWRTdWNjZXNzQ2FsbGJhY2ss
IENsb3NlZEZhaWx1cmVDYWxsYmFjayk7CisgICAgdm9pZCBjbG9zZWQoQ2xvc2VkU3VjY2Vzc0Nh
bGxiYWNrLCBGYWlsdXJlQ2FsbGJhY2spOworCisgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZv
aWQoY29uc3QgSlNDOjpKU1ZhbHVlJik+IFJlYWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgdm9pZCBy
ZWFkKFJlYWRTdWNjZXNzQ2FsbGJhY2ssIEZhaWx1cmVDYWxsYmFjayk7CiAKIHByb3RlY3RlZDoK
ICAgICBSZWFkYWJsZVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPFJlYWRhYmxl
U3RyZWFtU291cmNlPiYmKTsKQEAgLTg5LDExICs5MywyNCBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBjbGVhbkNhbGxiYWNrcygpOwogCisgICAgdmlydHVhbCBib29sIGhhc1ZhbHVlKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIHJlYWQoKSA9IDA7CisKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVhZGFibGVTdHJlYW1SZWFkZXI+IG1fcmVhZGVyOwogICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8UmVhZGFibGVTdHJlYW1SZWFkZXI+PiBtX3JlbGVhc2VkUmVhZGVyczsKIAog
ICAgIENsb3NlZFN1Y2Nlc3NDYWxsYmFjayBtX2Nsb3NlZFN1Y2Nlc3NDYWxsYmFjazsKLSAgICBD
bG9zZWRGYWlsdXJlQ2FsbGJhY2sgbV9jbG9zZWRGYWlsdXJlQ2FsbGJhY2s7CisgICAgRmFpbHVy
ZUNhbGxiYWNrIG1fY2xvc2VkRmFpbHVyZUNhbGxiYWNrOworCisgICAgY2xhc3MgUmVhZENhbGxi
YWNrcyB7CisgICAgcHVibGljOgorICAgICAgICBSZWFkQ2FsbGJhY2tzKFJlYWRTdWNjZXNzQ2Fs
bGJhY2smJiBzdWNjZXNzQ2FsbGJhY2ssIEZhaWx1cmVDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aykKKyAgICAgICAgICAgIDogbV9zdWNjZXNzQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrKQorICAg
ICAgICAgICAgLCBtX2ZhaWx1cmVDYWxsYmFjayhmYWlsdXJlQ2FsbGJhY2spIHsgfQorICAgICAg
ICBSZWFkU3VjY2Vzc0NhbGxiYWNrIG1fc3VjY2Vzc0NhbGxiYWNrOworICAgICAgICBGYWlsdXJl
Q2FsbGJhY2sgbV9mYWlsdXJlQ2FsbGJhY2s7CisgICAgfTsKKyAgICBWZWN0b3I8UmVhZENhbGxi
YWNrcz4gbV9yZWFkUmVxdWVzdHM7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJlYWRh
YmxlIH07CiAgICAgUmVmPFJlYWRhYmxlU3RyZWFtU291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIu
Y3BwCmluZGV4IDEzOWE4ODY1ODdhM2Q3NDA4MTNiNjcwMGVhMmE0YzFlMmI2Yjk4MmYuLjkyZTEz
ZjI5NzgzMmZhNGRjZmM0NDFhN2Q3YjgwZTRjYjZjMWRjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcApAQCAt
MzAsMTEgKzMwLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVT
dHJlYW1SZWFkZXIuaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4K
KwogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lk
IFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoUmVhZGFibGVTdHJlYW06OkNsb3NlZFN1Y2Nl
c3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRGYWlsdXJl
Q2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQordm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xv
c2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNr
LCBSZWFkYWJsZVN0cmVhbTo6RmFpbHVyZUNhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaykKIHsKICAg
ICBpZiAobV9zdHJlYW0uaXNSZWFkYWJsZSgpICYmIG1fc3RyZWFtLnJlYWRlcigpICAhPSB0aGlz
KSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpOwpAQCAtNDMsNiArNDUsMTUgQEAgdm9pZCBS
ZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRTdWNjZXNz
Q2FsbGJhY2sgc3VjY2Vzc0MKICAgICBtX3N0cmVhbS5jbG9zZWQoV1RGOjptb3ZlKHN1Y2Nlc3ND
YWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAordm9pZCBSZWFkYWJs
ZVN0cmVhbVJlYWRlcjo6cmVhZChSZWFkYWJsZVN0cmVhbTo6UmVhZFN1Y2Nlc3NDYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpGYWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNh
bGxiYWNrKQoreworICAgIGlmIChtX3N0cmVhbS5pc1JlYWRhYmxlKCkgJiYgbV9zdHJlYW0ucmVh
ZGVyKCkgICE9IHRoaXMpIHsKKyAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKEpTQzo6anNVbmRlZmlu
ZWQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9zdHJlYW0ucmVhZChXVEY6Om1v
dmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjaykpOworfQorCiB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1SZWFkZXIuaAppbmRleCA5N2Y4NGNkYWE3ZTc4NjFiMzZhZWRkMGVjZjZlZGYy
MzZiYTM0Nzg3Li45ZTE5ZjJiZTQzMjU3NDZlNGI5ZjljZjE3NWM4MDZmNWU0YzQxNTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1S
ZWFkZXIuaApAQCAtNTEsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgUmVhZGFibGVTdHJlYW1SZWFk
ZXIoUmVhZGFibGVTdHJlYW0mIHN0cmVhbSkKICAgICAgICAgOiBtX3N0cmVhbShzdHJlYW0pIHsg
fTsKIAotICAgIHZvaWQgY2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRTdWNjZXNzQ2FsbGJh
Y2ssIFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRGYWlsdXJlQ2FsbGJhY2spOworICAgIHZvaWQgY2xv
c2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRTdWNjZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFt
OjpGYWlsdXJlQ2FsbGJhY2spOworICAgIHZvaWQgcmVhZChSZWFkYWJsZVN0cmVhbTo6UmVhZFN1
Y2Nlc3NDYWxsYmFjaywgUmVhZGFibGVTdHJlYW06OkZhaWx1cmVDYWxsYmFjayk7CiAKICAgICB2
b2lkIHJlZigpIHsgbV9zdHJlYW0ucmVmKCk7IH0KICAgICB2b2lkIGRlcmVmKCkgeyBtX3N0cmVh
bS5kZXJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCmluZGV4IDljM2MxZGVkODA1NzMyZGZj
NGRmOWViNGVkOTkzODMxNjVlNDczZGYuLjc0NWU1YmQ2NzY4ODhmZmFkMmI3MGQ4OTRiMjBkZWJl
NTE4YWEwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFi
bGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIlJlYWRhYmxlSlNTdHJlYW0uaCIK
ICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8cnVudGltZS9JdGVyYXRvck9w
ZXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKQEAgLTQ1LDggKzQ2LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNW
YWx1ZSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAg
ICBKU1ZhbHVlIGVycm9yID0gY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJyZWFkIGlz
IG5vdCBpbXBsZW1lbnRlZCIpKTsKLSAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBlcnJvcik7CisgICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9
IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KCkpOworICAgIERl
ZmVycmVkV3JhcHBlciB3cmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJy
ZWQpOworICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKGNvbnN0IEpTVmFsdWUm
IHZhbHVlKSBtdXRhYmxlIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjcmVhdGVJdGVyYXRv
clJlc3VsdE9iamVjdCh3cmFwcGVyLnByb21pc2UoKS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKSwgdmFsdWUsIHZhbHVlLmlzVW5kZWZpbmVkKCkpOworICAgICAgICB3cmFwcGVyLnJlc29s
dmUocmVzdWx0KTsKKyAgICB9OworICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBwZXJd
KGNvbnN0IEpTVmFsdWUmIHZhbHVlKSBtdXRhYmxlIHsKKyAgICAgICAgd3JhcHBlci5yZWplY3Qo
dmFsdWUpOworICAgIH07CisKKyAgICBpbXBsKCkucmVhZChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxi
YWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjaykpOworCisgICAgcmV0dXJuIHdyYXBwZXIu
cHJvbWlzZSgpOwogfQogCiBzdGF0aWMgSlNQcm9taXNlRGVmZXJyZWQqIGdldE9yQ3JlYXRlUHJv
bWlzZURlZmVycmVkRnJvbU9iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc09iamVj
dCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJpdmF0ZU5hbWUgJm5hbWUpCkBAIC03
NSw3ICs4Nyw3IEBAIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKICAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFwcGVyXSgp
IG11dGFibGUgewogICAgICAgICB3cmFwcGVyLnJlc29sdmUoanNVbmRlZmluZWQoKSk7CiAgICAg
fTsKLSAgICBhdXRvIGZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyXShKU1ZhbHVlIHZhbHVlKSBt
dXRhYmxlIHsKKyAgICBhdXRvIGZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyXShjb25zdCBKU1Zh
bHVlJiB2YWx1ZSkgbXV0YWJsZSB7CiAgICAgICAgIHdyYXBwZXIucmVqZWN0KHZhbHVlKTsKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0u
Y3BwCmluZGV4IGFkMWVjNzkyMWViZDEyZDc5ZmNjYmUxNDUwZGUyNDFlZGYzYTc2MzguLmJiMzc0
NWM0Njg0OGVlYzc1NTljZGVlNGIwMmU1MzdlNmE3ZTM4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCkBAIC0xNjYsNiArMTY2LDE4IEBA
IHZvaWQgUmVhZGFibGVKU1N0cmVhbTo6c3RvcmVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgZXhlYykK
ICAgICBjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOwogfQogCitib29sIFJlYWRhYmxlSlNTdHJlYW06
Omhhc1ZhbHVlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworSlNWYWx1ZSBSZWFkYWJsZUpTU3RyZWFtOjpyZWFkKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVKU1N0cmVhbS5oCmluZGV4IDRkNTFkMDFiZmY4NGZjY2Y3MWRlYzQ2NjJjNThmNjc3MmZh
NzhmMjMuLjlmNThiODYwZDBkNGQ4NWRhZTUxODc1YjhjMGU3ZTEwMDU1OWZkN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKQEAgLTczLDYgKzcz
LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgUmVmPFJlYWRhYmxlSlNTdHJlYW06OlNvdXJjZT4mJik7CiAKKworICAg
IHZpcnR1YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgSlND
OjpKU1ZhbHVlIHJlYWQoKSBvdmVycmlkZTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKICAgICBKU0M6OlN0cm9uZzxKU0M6OlVu
a25vd24+IG1fZXJyb3I7CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY2NTUzYjYyMDI4MzE3YmFlNTZkODZmNjc4ZjUy
NWQyZDJmYjc2MjcuLmJjNmUyODAwZjQ4N2EzNjgzZDhiYjBmZmQ4N2M0YWI4MjJkNjVkMDggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNS0wNS0xNyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIg
IDxjYWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxldEBj
cmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgUmVhZGFibGVT
dHJlYW1SZWFkZXIgcmVhZCBtZXRob2QgaW4gY2xvc2VkIGFuZCBlcnJvcmVkIHN0YXRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ3OTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgbmV3IHRl
c3QuIFJlYmFzaW5nIG9mIHJlZmVyZW5jZSB0ZXN0cyAoZXhwZWN0YXRpb25zIGFuZCB0aW1lb3V0
aW5nL3VudGltZW91dGluZyB0ZXN0cykuCisKKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS1yZWFkZXItcmVhZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11
bmRlcmx5aW5nLXNvdXJjZXMuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5
Lmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFi
bGUtc3RyZWFtLWNhbmNlbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVy
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3Ry
ZWFtLXRlbXBsYXRlZC5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sOgorCiAyMDE1LTA1LTE3ICBCZW5qYW1pbiBQb3Vs
YWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbSlNDXSBNYWtlIFN0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIgZmFzdGVyIGluIHRoZSBzaW1wbGUgY2FzZXMgd2l0aG91dCBhbnkgcmVj
dXJzaW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1y
ZWFkZXItcmVhZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS1yZWFkZXItcmVhZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FmNDNlMWNlNjI2NjI0
OGIzZTRmNzQ4YjE4ZTA0ZWMwZDJjZGNkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDcgQEAKKworUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9z
ZWQgCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQgc3RyZWFtIAorUEFTUyBSZWFkaW5n
IHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3Ry
ZWFtIHRoYXQgZ2V0cyBlcnJvcmVkIAorUEFTUyBSZWFkaW5nIHdpdGhpbiBhIHJlYWQgcHJvbWlz
ZSByZXNvbHZlIGNhbGxiYWNrIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQgCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmZTU0MTRkNTc5OWM3ZDRkOWJkNTIzNGNjYzdkM2E1ZTkxMWZhZTcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXItcmVhZC5odG1sCkBAIC0wLDAgKzEsMTY0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQg
c3JjPScuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
Cit2YXIgdDEgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0
cyBjbG9zZWQnKTsKK3QxLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvbnRyb2xsZXI7Cisg
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KGMpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgfSk7Cisg
ICAgdmFyIGNvdW50ZXIgPSAwOworICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKwor
ICAgIHJlYWRlci5yZWFkKCkudGhlbih0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7Cisg
ICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZScpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDEpOworICAgICAgICBjb3VudGVyKys7CisgICAgfSkp
OworICAgIHJlYWRlci5yZWFkKCkudGhlbih0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7
CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZScpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDIpOworICAgICAgICBjb3VudGVyKys7CisgICAg
ICAgIHQxLmRvbmUoKTsKKyAgICB9KSk7CisgICAgcmVhZGVyLmNsb3NlZC50aGVuKHQxLnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsKKyAg
ICAgICAgY291bnRlcisrOworICAgIH0pKTsKKworICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKK30p
OworCit2YXIgdDIgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVh
bScpOwordDIuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJvbGxlcjsKKyAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewor
ICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICAKKyAg
ICBjb250cm9sbGVyLmNsb3NlKCk7CisgICAgCisgICAgdmFyIGNvdW50ZXIgPSAwOworICAgIHZh
ciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICAgIHJlYWRlci5yZWFkKCkudGhlbih0Mi5z
dGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxz
KHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxk
IGZ1bGZpbGwgd2l0aCBjbG9zZScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDAp
OworICAgICAgICBjb3VudGVyKys7CisgICAgfSkpOworICAgIHJlYWRlci5yZWFkKCkudGhlbih0
Mi5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hv
dWxkIGZ1bGZpbGwgd2l0aCBjbG9zZScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIs
IDEpOworICAgICAgICBjb3VudGVyKys7CisgICAgfSkpOworICAgIHJlYWRlci5jbG9zZWQudGhl
bih0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRl
ciwgMik7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgdDIuZG9uZSgpOworICAgIH0pKTsK
K30pOworCit2YXIgdDMgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQg
c3RyZWFtJyk7Cit0My5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb250cm9sbGVyOworICAg
IHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihj
KSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfQorICAgIH0pOworICAK
KyAgICB2YXIgbXlFcnJvciA9IHsgcG90YXRvOiAibWFzaGVkIiB9OyAKKyAgICBjb250cm9sbGVy
LmVycm9yKG15RXJyb3IpOworICAgIAorICAgIHZhciBjb3VudGVyID0gMDsKKyAgICB2YXIgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odDMuc3RlcF9m
dW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxk
IHJlamVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworICAgIH0pLCB0My5zdGVwX2Z1bmMoZnVu
Y3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0p
KTsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAg
ICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIHJlamVjdCBvbiBhbiBlcnJvcmVk
IHN0cmVhbScpOworICAgIH0pLCB0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAg
IGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3Vu
dGVyLCAxKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFkZXIuY2xvc2Vk
LnRoZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVk
KCdyZWFkKCkgc2hvdWxkIHJlamVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworICAgIH0pLCB0
My5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJv
ciwgZXJyKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAyKTsKKyAgICAgICAgY291
bnRlcisrOworICAgICAgICB0My5kb25lKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0NCA9IGFz
eW5jX3Rlc3QoJ1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQnKTsK
K3Q0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFyIHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAg
ICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgfSk7CisgICAKKyAgICB2YXIg
Y291bnRlciA9IDA7CisgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgICAgcmVh
ZGVyLnJlYWQoKS50aGVuKHQ0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0
X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsK
KyAgICB9KSwgdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1
YWxzKG15RXJyb3IsIGVycik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMSk7Cisg
ICAgICAgIGNvdW50ZXIrKzsKKyAgICB9KSk7CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHQ0LnN0
ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNo
b3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKyAgICB9KSwgdDQuc3RlcF9mdW5j
KGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVycik7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMik7CisgICAgICAgIGNvdW50ZXIrKzsKKyAg
ICAgICAgdDQuZG9uZSgpOworICAgIH0pKTsKKyAgICByZWFkZXIuY2xvc2VkLnRoZW4odDQuc3Rl
cF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hv
dWxkIHJlamVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworICAgIH0pLCB0NC5zdGVwX2Z1bmMo
ZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsKKyAgICAgICAgY291bnRlcisrOworICAg
IH0pKTsKKworICAgIHZhciBteUVycm9yID0geyBwb3RhdG86ICdtYXNoZWQnIH07IAorICAgIGNv
bnRyb2xsZXIuZXJyb3IobXlFcnJvcik7CisgfSk7CisKK3ZhciB0NSA9IGFzeW5jX3Rlc3QoJ1Jl
YWRpbmcgd2l0aGluIGEgcmVhZCBwcm9taXNlIHJlc29sdmUgY2FsbGJhY2sgb24gYSBzdHJlYW0g
dGhhdCBnZXRzIGNsb3NlZCcpOwordDUuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJv
bGxlcjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDog
ZnVuY3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICAgIHJlYWRlci5y
ZWFkKCkudGhlbih0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHJlYWRlci5yZWFk
KCkudGhlbih0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0NS5kb25lKCk7
CisgICAgICAgIH0pKTsKKyAgICB9KSk7CisgICAgY29udHJvbGxlci5jbG9zZSgpOworfSk7CisK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3Vy
Y2VzLWV4cGVjdGVkLnR4dAppbmRleCAxOWNhMzU1NTk1NzRlMzEzMDk5ZmM0ODgyY2FkZDE0MTJh
OWEyMjgwLi5iNzU1ODFiMWQ5NWMwNDE3MDhlNTEzZGU5YmVjMTI4NWEzMTcxNDk1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5k
ZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4
dApAQCAtNSw4ICs1LDggQEAgRkFJTCBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcg
Z2V0dGVyIGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdGluZyB0aGUgc3QKIFBBU1MgVW5kZXJseWlu
ZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIG1ldGhvZCAKIFRJTUVPVVQgVW5kZXJseWluZyBzb3Vy
Y2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1bGwpIFRlc3QgdGltZWQgb3V0CiBU
SU1FT1VUIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5pdGlhbCBw
dWxsKSBUZXN0IHRpbWVkIG91dAotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVs
bCBnZXR0ZXIgKHNlY29uZCBwdWxsKSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBVbmRl
cmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKHNlY29uZCBwdWxsKSByZWFkIGlz
IG5vdCBpbXBsZW1lbnRlZAorVElNRU9VVCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVs
bCBnZXR0ZXIgKHNlY29uZCBwdWxsKSBUZXN0IHRpbWVkIG91dAorVElNRU9VVCBVbmRlcmx5aW5n
IHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKHNlY29uZCBwdWxsKSBUZXN0IHRpbWVkIG91
dAogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgY2FuY2VsIGdldHRlciBjYW5jZWwg
aXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBjYW5j
ZWwgbWV0aG9kIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgVW5kZXJseWluZyBzb3Vy
Y2U6IHRocm93aW5nIHN0cmF0ZWd5IGdldHRlciBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVlIHNob3Vs
ZCB0aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7
IH0iIGRpZCBub3QgdGhyb3cKQEAgLTE4LDcgKzE4LDcgQEAgRkFJTCBVbmRlcmx5aW5nIHNvdXJj
ZTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcgTmFOIGFzc2VydF91bnJlYWNoZWQ6IGVucXVldWUg
ZGkKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nIC1JbmZp
bml0eSBhc3NlcnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpZG4ndCB0aHJvdyBSZWFjaGVkIHVucmVh
Y2hhYmxlIGNvZGUKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJu
aW5nICtJbmZpbml0eSBhc3NlcnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpZG4ndCB0aHJvdyBSZWFj
aGVkIHVucmVhY2hhYmxlIGNvZGUKIFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUg
Ci1GQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVt
cHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIHJlYWQgaXMgbm90IGltcGxl
bWVudGVkCitGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEg
bm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIGFzc2VydF9vYmpl
Y3RfZXF1YWxzOiByZWFkKCkgc2hvdWxkIHJlYWQgdGhlIGVucXVldWVkIGNodW5rIHByb3BlcnR5
ICJkb25lIiBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290IG9iamVjdCAiW29i
amVjdCBPYmplY3RdIgogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBh
biBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyBjYW5jZWwgaXMgbm90IGlt
cGxlbWVudGVkCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9u
LWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IGNhbmNlbCBpcyBub3QgaW1w
bGVtZW50ZWQKIFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJy
b3Igc2hvdWxkIHRocm93IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNl
cy5odG1sCmluZGV4IGJjNDE3MDkyNGI3YjFhYjkzMzIzNmM0MmI0MWVjOWY4ZTVkY2JjZGYuLjY4
NmQ4ODRkN2U0ODk5NDY1N2ViYWJkMmE2ZDE5ZWQ5M2M2NmI4NGIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNv
dXJjZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWwKQEAgLTMxLDcgKzMxLDcgQEAgdmFyIHRl
c3QxID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVy
IChpbml0aWFsIHB1bGwpJywKIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVy
cm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKICAgICB2YXIgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgICAgICBnZXQgcHVsbCgpIHsKKyAgICAgICAgcHVsbDogZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKICAgICAgICAgfQogICAgIH0pOwpA
QCAtNjEsMTIgKzYxLDEyIEBAIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIH0pKTsK
IH0pOwogCi12YXIgdGVzdDMgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dp
bmcgcHVsbCBnZXR0ZXIgKHNlY29uZCBwdWxsKScpOwordmFyIHRlc3QzID0gYXN5bmNfdGVzdCgn
VW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChzZWNvbmQgcHVsbCknLCB7
IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDMuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgdGhlRXJy
b3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwogICAgIHZhciBjb3VudGVyID0gMDsK
ICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBnZXQgcHVsbCgpIHsK
KyAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICArK2NvdW50ZXI7CiAgICAg
ICAgICAgICBpZiAoY291bnRlciA9PT0gMSkgewogICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0
My5zdGVwX2Z1bmMoZnVuY3Rpb24oYykgeyBjLmVucXVldWUoJ2EnKTsgfSkKQEAgLTg5LDcgKzg5
LDcgQEAgdGVzdDMuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgfSkpOwogfSk7CiAKLXZhciB0
ZXN0NCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhv
ZCAoc2Vjb25kIHB1bGwpJyk7Cit2YXIgdGVzdDQgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNv
dXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKHNlY29uZCBwdWxsKScsIHsgdGltZW91dDogNTAg
fSk7CiB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJv
cignYSB1bmlxdWUgc3RyaW5nJyk7CiAgICAgdmFyIGNvdW50ZXIgPSAwOwpAQCAtMTE5LDcgKzEx
OSw3IEBAIHZhciB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2lu
ZyBjYW5jZWwgZ2V0dGVyJyk7CiB0ZXN0NS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVF
cnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CiAgICAgdmFyIHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKLSAgICAgICAgZ2V0IGNhbmNlbCgpIHsKKyAgICAgICAgY2FuY2VsOiBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwogICAgICAgICB9CiAgICAg
fSk7CkBAIC0xNTksNyArMTU5LDcgQEAgdGVzdDcuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgIHN0YXJ0ZWQgPSB0cnVlOwogICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwg
ZnVuY3Rpb24oKSB7IGMuZW5xdWV1ZSgnYScpOyB9LCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhl
IGVycm9yJyk7CiAgICAgICAgIH0sCi0gICAgICAgIGdldCBzdHJhdGVneSgpIHsKKyAgICAgICAg
c3RyYXRlZ3k6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CiAgICAg
ICAgIH0KICAgICB9KTsKQEAgLTQ4NSw0ICs0ODUsNSBAQCB0ZXN0MjEuc3RlcChmdW5jdGlvbigp
IHsKICAgICAgICAgdGVzdDIxLmRvbmUoJ2Nsb3NlZCBzaG91bGQgZnVsZmlsbCcpOwogICAgIH0p
KTsKIH0pOworCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVl
dWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKaW5kZXggN2JkZjNkZWM2ZDU5NDNmZmU1MmNmOWY4
NWFiNGQ0ZTA1Nzc1YjVmMC4uZDdjYmI3NWYzNzIzNjkyMmVlZTVhYzgwMmIxMTZiODNmMDEyNWJl
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1l
eHBlY3RlZC50eHQKQEAgLTIsNyArMiw3IEBACiBQQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1
ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBtYXJrIAogUEFTUyBHaXZlcyBh
IFJhbmdlRXJyb3Igd2hlbiB0aGUgbnVtYmVyIGlzIG5lZ2F0aXZlIAogUEFTUyBDYW4gY29uc3Ry
dWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAK
LUZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3Ry
ZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCkgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQK
K1RJTUVPVVQgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxl
U3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCkgVGVzdCB0aW1lZCBvdXQKIEZBSUwg
Q29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3Mg
ZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMSkgYXNzZXJ0X2VxdWFsczogQWZ0ZXIgMCByZWFkcywg
MXN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVu
aykgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiBGQUlMIENvcnJlY3RseSBnb3Zlcm5zIHRo
ZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJsZVN0cmVhbSdzIGVucXVldWUgZnVuY3Rpb24gKEhX
TSA9IDQpIGFzc2VydF9lcXVhbHM6IEFmdGVyIDAgcmVhZHMsIDFzdCBlbnF1ZXVlIHNob3VsZCBy
ZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmspIGV4cGVjdGVkIHRydWUgYnV0
IGdvdCBmYWxzZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0
bWwKaW5kZXggM2I5NjQ1YjRmOTkzN2U0YWU5NDVkNzVkNDI3NmJiNWFhOGIzZGFjZS4uODJjMzg3
ZGRiYjU3MTU4YmEwZjdmOTJlYmRjNjQxYTIwZTNhZGQwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVn
eS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApAQCAtMTcsNyArMTcsNyBAQCB0ZXN0KGZ1bmN0
aW9uKCkgewogICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0cmF0ZWd5OiBuZXcgQ291bnRRdWV1
aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFyayI6IDQgfSkgfSk7CiB9LCAnQ2FuIGNvbnN0cnVj
dCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3knKTsK
IAotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2
YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtXCdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDApJyk7
Cit2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZh
bHVlIG9mIGEgUmVhZGFibGVTdHJlYW1cJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCknLCB7
IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDEuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgZW5xdWV1
ZTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNh
bmNlbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVkLnR4dAppbmRleCBlZGY5MDE3
NDM4ZGM3NDlhZjYxMDk5ZmUyZGMxYWU2ZTgyOGM0OTgwLi45Yjc1NTQyODU4ZDU1NTNiYmUzNTNi
ZGE1MjhmMDQ0YTBlMDJjYzUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJs
ZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJTCBSZWFk
YWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUg
c3RyZWFtIGRlcml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJjZSByZWFkIGlzIG5vdCBpbXBs
ZW1lbnRlZAorRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGludGVncmF0aW9uIHRl
c3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJj
ZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxh
dGlvbjogY2FuY2VsKHJlYXNvbikgc2hvdWxkIHBhc3MgdGhyb3VnaCB0aGUgZ2l2ZW4gcmVhc29u
IHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlM
IFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFt
IHNob3VsZCBmYWlsIGFuZCBub3QgY2FsbCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIGNh
bmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9u
OiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBz
aG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0
dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCBlOWQ4
NDk1YzZjMTQ2YTYyZTY2N2ZhZDkzYjhlOTkzODQ2MzhjNjAzLi44OWFlNDlkZTZjZGQ3YjQ3MGE1
ZjEyZDNhMTRmYjVhZTY3NjVjMTk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0
cmVhbS1leHBlY3RlZC50eHQKQEAgLTUsMjIgKzUsMjIgQEAgUEFTUyBSZWFkYWJsZVN0cmVhbSBj
b25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMK
IFBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2Ug
YXMgY2FuY2VsIGFyZ3VtZW50IAogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4g
Z2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFyZ3VtZW50IAogUEFTUyBSZWFkYWJsZVN0cmVh
bSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBzdHJhdGVneSBhcmd1bWVu
dCAKLUZBSUwgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEg
cHJvbWlzZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBz
dGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlIFRlc3QgdGltZWQgb3V0CiBU
SU1FT1VUIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHBy
b21pc2UgYW5kIHJlamVjdCBpdCBUZXN0IHRpbWVkIG91dAotRkFJTCBSZWFkYWJsZVN0cmVhbSBz
aG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLiByZWFkIGlzIG5vdCBp
bXBsZW1lbnRlZAorRkFJTCBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVl
IGRpZmZlcmVudCBvYmplY3RzLiBhc3NlcnRfb2JqZWN0X2VxdWFsczogdmFsdWUgcmVhZCBzaG91
bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCBwcm9wZXJ0eSAiZG9uZSIgZXhwZWN0ZWQgb2JqZWN0ICJb
b2JqZWN0IE9iamVjdF0iIGdvdCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIKIFBBU1MgUmVhZGFi
bGVTdHJlYW06IGlmIHN0YXJ0IHRocm93cyBhbiBlcnJvciwgaXQgc2hvdWxkIGJlIHJlLXRocm93
biAKLUZBSUwgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9y
IHRoZSBzdHJlYW0gcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgUmVhZGFibGVTdHJlYW06
IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGwncyBwcm9t
aXNlIGZ1bGZpbGxzIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIFJlYWRhYmxlU3RyZWFt
OiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBj
bG9zZWQgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQgUmVhZGFibGVTdHJlYW06IGlm
IHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gVGVzdCB0aW1lZCBvdXQK
K1RJTUVPVVQgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBw
cmV2aW91cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIFRlc3QgdGltZWQgb3V0CitQQVNT
IFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUg
c3RyZWFtIGlzIG5vdyBjbG9zZWQgCiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBw
dWxsIGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVl
c3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dzIGFzc2VydF9lcXVhbHM6IHB1bGwoKSBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCBmb3VyIHRpbWVzIGV4cGVjdGVkIDQgYnV0IGdvdCAwCiBUSU1FT1VUIFJl
YWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uIFRlc3Qg
dGltZWQgb3V0CiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVu
IHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nIGFzc2VydF9lcXVhbHM6IHRoZSBm
aXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFs
c2UKIEZBSUwgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0
cmVhbSBpcyBjbG9zZWQgYXNzZXJ0X3Rocm93czogZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQg
dGhyb3cgYSBUeXBlRXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7
IH0iIGRpZCBub3QgdGhyb3cKIEZBSUwgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRo
cm93IHRoZSBzdG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQgYXNzZXJ0X3Ro
cm93czogZW5xdWV1ZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cgdGhhdCBlcnJvciBmdW5jdGlv
biAiZnVuY3Rpb24gKCkgeyBjLmVucXVldWUoJ2EnKTsgfSIgZGlkIG5vdCB0aHJvdwotRkFJTCBS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBt
ZXRob2RzIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitUSU1FT1VUIFJlYWRhYmxlU3RyZWFtOiBz
aG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgVGVzdCB0aW1l
ZCBvdXQKIEZBSUwgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRl
Z3kgc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgYWxsIGJ1dCB0aGUgZmlyc3QgZW5xdWV1ZSBjYWxs
IGFzc2VydF9lcXVhbHM6IGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVk
IHRydWUgYnV0IGdvdCBmYWxzZQogRkFJTCBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUg
ZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUgcmV0dXJuaW5nIHRydWUgZnJvbSBlbnF1
ZXVlIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRlbHkgYXNzZXJ0X2VxdWFsczogZmly
c3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNl
Ci1GQUlMIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9t
IHB1c2ggc291cmNlIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIFJlYWRhYmxlU3RyZWFt
IGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSByZWFkIGlzIG5v
dCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFw
dGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorVElNRU9V
VCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNo
IHNvdXJjZSBUZXN0IHRpbWVkIG91dAorVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlv
biB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgVGVzdCB0aW1lZCBvdXQKK1RJTUVP
VVQgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVs
bCBzb3VyY2UgVGVzdCB0aW1lZCBvdXQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCA3NTlmMTNjMzBlOGU2YmJjZjJh
NWM5N2Q5NDFmM2VjMGM3YjU0NGMyLi4wN2M1ZDc0MDhiZmQ2NjJjOTRjZmVmZDkwODA4NDVhYmFk
YmM2N2E5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVh
ZGVyLWV4cGVjdGVkLnR4dApAQCAtOSwxMCArOSwxMCBAQCBQQVNTIENvbnN0cnVjdGluZyBhIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMg
YQogUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91
bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGdldFJl
YWRlcikgCiBQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5
IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAKIFBBU1MgQ29uc3RydWN0aW5n
IGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJl
YW0gaXMgZXJyb3JlZCAKLUZBSUwgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBz
dHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIHJlYWQgaXMgbm90IGlt
cGxlbWVudGVkCitUSU1FT1VUIFJlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3Ry
ZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZSBUZXN0IHRpbWVkIG91dAog
RkFJTCBjYW5jZWwoKSBvbiBhIHJlYWRlciByZWxlYXNlcyB0aGUgcmVhZGVyIGJlZm9yZSBjYWxs
aW5nIHRocm91Z2ggY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBjbG9zZWQgc2hvdWxk
IGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2VkICguY2xvc2VkIGFjY2VzcyBiZWZv
cmUgYWNxdWlyaW5nKSAKIEZBSUwgY2xvc2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgcmVh
ZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0gbG9ja3MpIHJlbGVhc2VMb2Nr
IGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQg
cmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbiByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVt
ZW50ZWQKLUZBSUwgR2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0
cmVhbSBzaG91bGQgc3VjY2VlZCByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorUEFTUyBHZXR0aW5n
IGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3RyZWFtIHNob3VsZCBzdWNjZWVk
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKaW5kZXgg
MzU4MzQzYWU0MjliNDYwZGI1ZDJhZjgzMWIxYzM2ZGE3YWY3Y2U4OS4uODEzZTAxZWQ0NWE1ZWFk
NTFlOWFkMTgxNzE1ZWY4NGZhNDFiYmUwNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS1yZWFkZXIuaHRtbApAQCAtMTA3LDcgKzEwNyw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7
CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVj
dGx5IHNob3VsZCBub3QgdGhyb3cuCiB9LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwog
Ci12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVt
cHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUnKTsKK3ZhciB0
ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3Ry
ZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZScsIHsgdGltZW91dDogNTAg
fSk7CiB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBjb250cm9sbGVyOwogICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CmluZGV4IDIzOGIwZjdmYjc1
MDgyYjdiOTZhODNiYTRkMTlkOGY0YTFkOGVmN2IuLjNlOGMyYzFlZmViZGQxZDE3ODI4ZmM1MGQ3
OWM1YmU2OWIyNzdkOWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBQQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlbXB0eSkKIFBBU1MgaW5z
dGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJvcGVydGllcyAKIFBBU1MgUnVu
bmluZyB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSBy
ZWFkZXIgCiBQQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3Bl
cnRpZXMgCi1GQUlMIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2gg
dGltZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorUEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBk
aXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCiBQQVNTIGdldFJlYWRlcigpIGFnYWluIG9uIHRo
ZSBzdHJlYW0gc2hvdWxkIGZhaWwgCiBGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1
c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVzb2x2ZSBhcyBpZiB0aGUgc3RyZWFtIGlzIGNs
b3NlZCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgcmVsZWFzaW5nIHRoZSBs
b2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gZnVsZmlsbCByZWxlYXNlTG9jayBpcyBub3QgaW1w
bGVtZW50ZWQKQEAgLTE0LDcgKzE0LDcgQEAgRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEg
ZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QKIFBBU1Mg
Z2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAogUEFTUyBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJl
IG11bHRpcGxlIHJlYWRlcnMsIHNpbmNlIHRoZXkgYXJlIGFsbCBhdXRvLXJlbGVhc2VkIAogUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGNs
b3NlZCB2aWEgY2FsbCBpbiBzdGFydCkgcmVhZGVyIAotRkFJTCByZWFkKCkgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSByZWFkIGlzIG5vdCBpbXBs
ZW1lbnRlZAorUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSAKIFBBU1MgY2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZp
bmVkIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0g
KGNsb3NlZCB2aWEgY2FuY2VsKSAKIEZBSUwgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3Rp
bmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVk
CkBAIC0yNCwyNiArMjQsMjEgQEAgUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVy
IHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKSByZWEKIEZBSUwgcmVhZCgp
IHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gY2Fu
Y2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1
bmRlZmluZWQgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRl
ZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0
KSAKLUZBSUwgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJy
b3JlZCByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgcmV0
dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJT
RXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4g
c3RhcnQpIAogRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQg
cHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCByZWFkZXIg
Y2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0
aW1lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1Mgc2hvdWxkIGJlIGFibGUgdG8gYWNx
dWlyZSBtdWx0aXBsZSByZWFkZXJzLCBzaW5jZSB0aGV5IGFyZSBhbGwgYXV0by1yZWxlYXNlZCAK
LVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgCi1GQUlMIGdl
dFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgcmVhZCBp
cyBub3QgaW1wbGVtZW50ZWQKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIg
d2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJv
bWlzZSBpbiBzdGFydCkgcmVhZGVyIAotVElNRU9VVCBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRo
IHRoZSBlcnJvciBUZXN0IHRpbWVkIG91dAotRkFJTCByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRo
IHRoZSBlcnJvciByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRl
ZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVu
cXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXIgCi1GQUlMIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdp
dGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyByZWFkIGlzIG5v
dCBpbXBsZW1lbnRlZAotRkFJTCBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcgd2ls
bCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZB
SUwgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIHJlYWQg
aXMgbm90IGltcGxlbWVudGVkCi1GQUlMIGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgpIHNob3VsZCBz
dGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IHJlYWQgaXMgbm90IGltcGxlbWVudGVk
CitUSU1FT1VUIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50
dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyBUZXN0IHRpbWVkIG91dAorVElNRU9VVCBjYWxsaW5nIHJl
YWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3Mg
VGVzdCB0aW1lZCBvdXQKK1BBU1MgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlz
ZXMgZWFjaCB0aW1lIAorRkFJTCBjYW5jZWwoKSBhZnRlciBhIHJlYWQoKSBzaG91bGQgc3RpbGwg
Z2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBQ
QVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJs
ZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlciAKLUZBSUwg
dGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9IHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIHRoaXJkIHJl
YWQsIHdpdGggd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0
cnVlIH0gcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgZHJhaW5pbmcgdGhlIHN0cmVhbSB2
aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZp
bGwgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVy
IHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBkbyBub3RoaW5nIHJlYWQgaXMgbm90IGltcGxl
bWVudGVkCitGQUlMIHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7
IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSBhc3NlcnRfb2JqZWN0X2VxdWFsczogZmly
c3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0IHByb3BlcnR5ICJkb25lIiBleHBlY3RlZCBvYmpl
Y3QgIltvYmplY3QgT2JqZWN0XSIgZ290IG9iamVjdCAiW29iamVjdCBPYmplY3RdIgorRkFJTCB0
aGlyZCByZWFkLCB3aXRoIHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwg
ZG9uZTogdHJ1ZSB9IGFzc2VydF9vYmplY3RfZXF1YWxzOiBmaXJzdCByZXN1bHQgc2hvdWxkIGJl
IGNvcnJlY3QgcHJvcGVydHkgImRvbmUiIGV4cGVjdGVkIG9iamVjdCAiW29iamVjdCBPYmplY3Rd
IiBnb3Qgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iCitQQVNTIGRyYWluaW5nIHRoZSBzdHJlYW0g
dmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciBjbG9zZWQgcHJvbWlzZSB0byBmdWxm
aWxsIAorRkFJTCByZWxlYXNpbmcgdGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQg
c2hvdWxkIGRvIG5vdGhpbmcgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIHJl
bGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgcmVhZCgpIHRvIGFjdCBhcyBpZiB0aGUgc3Ry
ZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgcmVhZGVy
J3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21pc2UgcmVhZCBp
cyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwgcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyBy
ZXR1cm5zIHRoZSBzYW1lIHByb21pc2UgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbAppbmRl
eCA4YzFiZjU4N2UxZTQ3MmRlMjUzMTE0Yzk1NzAzZGRmMTVhNTViYzkyLi5jNzJjYWEwNjZkMWU3
MDVmZmE0NzcyNjFkYTVjNDIwOGUzYmE2ZGM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVh
ZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sCkBAIC0zNjksNyArMzY5LDcgQEAgZnVuY3Rpb24g
dGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyKGxhYmVsLCBmYWN0b3J5LCBjaHVua3MpIHsK
ICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIH0sICdSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1
bmtzT3BlblJlYWRlciB3aXRoICcgKyBsYWJlbCk7CiAKLSAgICB2YXIgdGVzdDEgPSBhc3luY190
ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5
IGdpdmUgYm90aCBjaHVua3MnKTsKKyAgICB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdjYWxsaW5n
IHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBj
aHVua3MnLCB7IHRpbWVvdXQ6IDUwIH0pOwogICAgIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAg
ICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwogICAgICAgICB2YXIgcHJvbWlzZUNv
dW50ID0gMDsKQEAgLTM4NSw3ICszODUsNyBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU1R3b0NodW5r
c09wZW5SZWFkZXIobGFiZWwsIGZhY3RvcnksIGNodW5rcykgewogICAgICAgICB9KSk7CiAgICAg
fSk7CiAKLSAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3
aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MnKTsKKyAgICB2YXIg
dGVzdDIgPSBhc3luY190ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcgd2ls
bCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MnLCB7IHRpbWVvdXQ6IDUwIH0pOwogICAgIHRl
c3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgp
OwogCkBAIC02MTQsNyArNjE0LDggQEAgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkoJ1JlYWRh
YmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KScsIGZ1bmN0aW8KICAgICB9KX0s
CiAgICAgdGhlRXJyb3IKICk7Ci0KKy8vIEZJWE1FOiBBY3RpdmF0ZSB0aGVzZSB0ZXN0cyBvbmNl
IFByb21pc2UgaGFuZGxpbmcgaXMgc3VwcG9ydGVkIGluIHN0YXJ0IGZ1bmN0aW9uLgorLyoKIHRl
bXBsYXRlZFJTRXJyb3JlZCgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBh
IHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpJywgZnVuY3Rpb24oKSB7CiAgICAgcmV0dXJuIG5l
dyBSZWFkYWJsZVN0cmVhbSh7CiAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHsKQEAgLTYzMiw2
ICs2MzMsNyBAQCB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIChlcnJv
cmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taQogICAgIH0pKX0sCiAgICAgdGhlRXJy
b3IKICk7CisqLwogCiB2YXIgY2h1bmtzID0gWydhJywgJ2InXTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFt
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0uaHRtbAppbmRleCBkMDcyNWU0NDI2NjFhNzJlMjZmZWI2MzNmODMzNmMyMDhl
OTU0ZTYxLi4xNmNlOGM0YWU0NDkzMzE3ZDMyN2NmOTE4YjRjZjQ5MDk2MTU4ZDU4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJs
ZS1zdHJlYW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbApAQCAtNTMsNyArNTMsNyBAQCB0ZXN0KGZ1bmN0
aW9uKCkgewogICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0cmF0ZWd5OiAyIH0pOyAvLyBDb25z
dHJ1Y3RvciBzaG91bGQgbm90IHRocm93IHdoZW4gc3RyYXRlZ3kgaXMgbm90IGFuIG9iamVjdC4K
IH0sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBh
cyBzdHJhdGVneSBhcmd1bWVudCcpOwogCi12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkYWJs
ZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlJyk7Cit2YXIg
dGVzdDEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0
byByZXR1cm4gYSBwcm9taXNlJywgeyB0aW1lb3V0OiA1MCB9KTsKIHRlc3QxLnN0ZXAoZnVuY3Rp
b24oKQogewogICAgIHZhciByZWFkQ2FsbGVkID0gZmFsc2U7CkBAIC0xNDYsNyArMTQ2LDcgQEAg
dGVzdChmdW5jdGlvbigpIHsKICAgICBhc3NlcnRfdGhyb3dzKGVycm9yLCBmdW5jdGlvbigpIHsg
bmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RhcnQoKSB7IHRocm93IGVycm9yOyB9IH0pIH0sICdlcnJv
ciBzaG91bGQgYmUgcmUtdGhyb3duJyk7CiB9LCAnUmVhZGFibGVTdHJlYW06IGlmIHN0YXJ0IHRo
cm93cyBhbiBlcnJvciwgaXQgc2hvdWxkIGJlIHJlLXRocm93bicpOwogCi12YXIgdGVzdDQgPSBh
c3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJy
b3IgdGhlIHN0cmVhbScpOwordmFyIHRlc3Q0ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06
IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0nLCB7IHRpbWVvdXQ6
IDUwIH0pOwogdGVzdDQuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgZXJyb3IgPSBuZXcgRXJy
b3IoJ3B1bGwgZmFpbHVyZScpOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CkBA
IC0zNjgsNyArMzY4LDcgQEAgdGVzdDQuc3RlcChmdW5jdGlvbigpIHsKIC8vICAgICB9KSwgc3Rh
bmRhcmRUaW1lb3V0KTsKIC8vIH0pOwogCi12YXIgdGVzdDExID0gYXN5bmNfdGVzdCgnUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNh
bGxcJ3MgcHJvbWlzZSBmdWxmaWxscycpOwordmFyIHRlc3QxMSA9IGFzeW5jX3Rlc3QoJ1JlYWRh
YmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBj
YWxsXCdzIHByb21pc2UgZnVsZmlsbHMnLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDExLnN0ZXAo
ZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJlc29sdmU7CiAgICAgdmFyIHJldHVybmVkUHJvbWlzZTsK
QEAgLTU2NSw3ICs1NjUsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIH0pOwogfSwgJ1JlYWRh
YmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhl
IHN0cmVhbSBpcyBlcnJvcmVkJyk7CiAKLXZhciB0ZXN0MTYgPSBhc3luY190ZXN0KCdSZWFkYWJs
ZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2Rz
Jyk7Cit2YXIgdGVzdDE2ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxs
IHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0aG9kcycsIHsgdGltZW91dDogNTAgfSk7
CiB0ZXN0MTYuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgc3RhcnRDYWxsZWQgPSAwOwogICAg
IHZhciBwdWxsQ2FsbGVkID0gMDsKQEAgLTY1OCw3ICs2NTgsNyBAQCB0ZXN0MTcuc3RlcChmdW5j
dGlvbigpIHsKICAgICB9KSkuY2F0Y2godGVzdDE3LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFz
c2VydF91bnJlYWNoZWQoZSk7IH0gKSk7CiB9KTsKIAotdmFyIHRlc3QxOCA9IGFzeW5jX3Rlc3Qo
J1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2gg
c291cmNlJyk7Cit2YXIgdGVzdDE4ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gaW50ZWdy
YXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UnLCB7IHRpbWVvdXQ6IDUw
IH0pOwogdGVzdDE4LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHB1bGxDaGVja2VkID0gZmFs
c2U7CiAgICAgdmFyIHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5kb21QdXNoU291cmNlKDgpOwpAQCAt
NzAyLDcgKzcwMiw3IEBAIHRlc3QxOC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIH0pLCB0ZXN0MTgu
c3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3JlYWNoZWQoZSk7IH0pKTsKIH0pOwogCi12
YXIgdGVzdDE5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDog
YWRhcHRpbmcgYSBzeW5jIHB1bGwgc291cmNlJyk7Cit2YXIgdGVzdDE5ID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSBzeW5jIHB1bGwgc291
cmNlJywgeyB0aW1lb3V0OiA1MCB9KTsKIHRlc3QxOS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZh
ciBycyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCk7CiAKQEAgLTcxNCw3ICs3MTQsNyBA
QCB0ZXN0MTkuc3RlcChmdW5jdGlvbigpIHsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QyMCA9
IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFu
IGFzeW5jIHB1bGwgc291cmNlJyk7Cit2YXIgdGVzdDIwID0gYXN5bmNfdGVzdCgnUmVhZGFibGVT
dHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UnLCB7
IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDIwLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJzID0g
c2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwLCB7IGFzeW5jOiB0cnVlIH0pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253392</attachid>
            <date>2015-05-19 13:25:32 -0700</date>
            <delta_ts>2015-05-20 03:18:02 -0700</delta_ts>
            <desc>Rebasing patch, removing const JSValue&amp; and using struct</desc>
            <filename>bug-144790-20150519222527.patch</filename>
            <type>text/plain</type>
            <size>44801</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI3MDExZDlkNDU2YzUy
ZDdhYzhlZWY4OWQ4MGRkMjg1MzNmNDdkZi4uZTExODE5MDZmZDA4YjEzN2JjNmIwMWUzMThmNDAy
ZDkxYjcyYTFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDE1LTA1LTE5ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAorICAgICAgICBbU3RyZWFtcyBBUEld
IEltcGxlbWVudCBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFkIG1ldGhvZCBpbiBjbG9zZWQgYW5k
IGVycm9yZWQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NDc5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlYWRlciBkZWxlZ2F0ZXMgcmVhZCgpIHByb21pc2UgaGFuZGxpbmcgdG8gaXRzIHN0
cmVhbSBleGNlcHQgaWYgcmVhZGVyIGlzIG5vIGxvbmdlciBsb2NraW5nIHRoZSBzdHJlYW0gYW5k
IHN0cmVhbSBpcyByZWFkYWJsZS4KKyAgICAgICAgU3RvcmluZyBvZiByZWFkZXIgcmVhZCgpIHBy
b21pc2UgY2FsbGJhY2tzIGFzIGEgVmVjdG9yIGluIFJlYWRhYmxlU3RyZWFtLgorICAgICAgICBB
ZGRlZCByZXNvbHV0aW9uL3JlamVjdGlvbiBvZiByZWFkKCkgcHJvbWlzZXMgaW4gY2FzZSBvZiBl
cnJvcmVkL2Nsb3NlZCBzdHJlYW1zLgorCisgICAgICAgIFRlc3Q6IHN0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLXJlYWRlci1yZWFkLmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVh
bTo6Y2xlYW5DYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNo
YW5nZVN0YXRlVG9DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNo
YW5nZVN0YXRlVG9FcnJvcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpj
bG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnJlYWQpOgorICAgICAg
ICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW06OlJlYWRDYWxsYmFja3M6OlJlYWRDYWxsYmFja3MpOgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1SZWFkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVTdHJlYW1S
ZWFkZXI6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y2xvc2VkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06Omhhc1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OnJlYWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Jl
YWRhYmxlSlNTdHJlYW0uaDoKKworMjAxNS0wNS0xOSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIg
IDxjYWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxldEBj
cmYuY2Fub24uZnI+CisKICAgICAgICAgW1N0cmVhbXMgQVBJXSBNaWdyYXRlIGNsb3NlZCBwcm9t
aXNlIGhhbmRsaW5nIGZyb20gUmVhZGFibGVTdHJlYW1SZWFkZXIgdG8gUmVhZGFibGVTdHJlYW0K
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTExMAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0l0
ZXJhdG9yT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVu
dGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2UwNmExN2VlNjY4ODQzZDZk
OTg0MzMxY2I5ZjBjZTU0OGJjZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Rm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaApAQCAtMCwwICsx
LDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfSXRlcmF0b3JPcGVyYXRpb25zX2gKKyNkZWZpbmUg
V2ViQ29yZV9GV0RfSXRlcmF0b3JPcGVyYXRpb25zX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JdGVyYXRvck9wZXJhdGlvbnMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggYmVjM2QzMDA3NzA2NTU0ZTNi
OGRhYTljMGE2MmFhYjJjZjg4NDcyMy4uMDg1NmI5OWU0MDQ5ZjFjNjFhZTg1MmJhY2Y5MDVmNjFl
YTcwZDdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCi0jaW5jbHVkZSA8cnVudGlt
ZS9KU0NKU1ZhbHVlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNjIsNiArNjIsOCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjbGVhckNhbGxiYWNr
cygpCiB7CiAgICAgbV9jbG9zZWRTdWNjZXNzQ2FsbGJhY2sgPSBudWxscHRyOwogICAgIG1fY2xv
c2VkRmFpbHVyZUNhbGxiYWNrID0gbnVsbHB0cjsKKworICAgIG1fcmVhZFJlcXVlc3RzLmNsZWFy
KCk7CiB9CiAKIHZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQpAQCAt
NzYsNiArNzgsOSBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvQ2xvc2VkKCkK
ICAgICBpZiAobV9jbG9zZWRTdWNjZXNzQ2FsbGJhY2spCiAgICAgICAgIG1fY2xvc2VkU3VjY2Vz
c0NhbGxiYWNrKCk7CiAKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlYWRSZXF1ZXN0cykK
KyAgICAgICAgcmVxdWVzdC5zdWNjZXNzQ2FsbGJhY2soSlNDOjpqc1VuZGVmaW5lZCgpKTsKKwog
ICAgIGNsZWFyQ2FsbGJhY2tzKCk7CiB9CiAKQEAgLTg4LDggKzkzLDEyIEBAIHZvaWQgUmVhZGFi
bGVTdHJlYW06OmNoYW5nZVN0YXRlVG9FcnJvcmVkKCkKICAgICBpZiAobV9yZWFkZXIpCiAgICAg
ICAgIG1fcmVsZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6Om1vdmUobV9yZWFkZXIpKTsKIAorICAg
IEpTQzo6SlNWYWx1ZSBlcnJvciA9IHRoaXMtPmVycm9yKCk7CiAgICAgaWYgKG1fY2xvc2VkRmFp
bHVyZUNhbGxiYWNrKQotICAgICAgICBtX2Nsb3NlZEZhaWx1cmVDYWxsYmFjayhlcnJvcigpKTsK
KyAgICAgICAgbV9jbG9zZWRGYWlsdXJlQ2FsbGJhY2soZXJyb3IpOworCisgICAgZm9yIChhdXRv
JiByZXF1ZXN0IDogbV9yZWFkUmVxdWVzdHMpCisgICAgICAgIHJlcXVlc3QuZmFpbHVyZUNhbGxi
YWNrKGVycm9yKTsKIAogICAgIGNsZWFyQ2FsbGJhY2tzKCk7CiB9CkBAIC0xMTAsNyArMTE5LDcg
QEAgUmVhZGFibGVTdHJlYW1SZWFkZXImIFJlYWRhYmxlU3RyZWFtOjpnZXRSZWFkZXIoKQogICAg
IHJldHVybiByZWFkZXI7CiB9CiAKLXZvaWQgUmVhZGFibGVTdHJlYW06OmNsb3NlZChDbG9zZWRT
dWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBDbG9zZWRGYWlsdXJlQ2FsbGJhY2sgZmFp
bHVyZUNhbGxiYWNrKQordm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKENsb3NlZFN1Y2Nlc3ND
YWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIEZhaWx1cmVDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2sp
CiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkgewogICAgICAgICBzdWNjZXNz
Q2FsbGJhY2soKTsKQEAgLTEyNCw2ICsxMzMsMjUgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xv
c2VkKENsb3NlZFN1Y2Nlc3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIENsb3NlZEZhaWx1cmUK
ICAgICBtX2Nsb3NlZEZhaWx1cmVDYWxsYmFjayA9IFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2sp
OwogfQogCit2b2lkIFJlYWRhYmxlU3RyZWFtOjpyZWFkKFJlYWRTdWNjZXNzQ2FsbGJhY2sgc3Vj
Y2Vzc0NhbGxiYWNrLCBGYWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQoreworICAgIGlm
IChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpIHsKKyAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKEpT
Qzo6anNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkVycm9yZWQpIHsKKyAgICAgICAgZmFpbHVyZUNhbGxiYWNrKGVycm9yKCkp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChoYXNWYWx1ZSgpKSB7CisgICAgICAg
IHN1Y2Nlc3NDYWxsYmFjayhyZWFkKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJl
YWRDYWxsYmFja3MgY2FsbGJhY2tzID0geyBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RG
Ojptb3ZlKGZhaWx1cmVDYWxsYmFjaykgfTsKKyAgICBtX3JlYWRSZXF1ZXN0cy5hcHBlbmQoY2Fs
bGJhY2tzKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBwdWxsLgorfQorCiB2b2lk
IFJlYWRhYmxlU3RyZWFtOjpzdGFydCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKaW5kZXggYzg3
NDM2NTc1YzM0ZWNmYTdjMGFhMDY5MzNiNjRjMzljMWY1ZDA5MS4uNzE4MmY5YTYzMDc2NDQ4M2Jm
NDlkMDA0NDAxMDY4NmUxMjI0Y2ExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKQEAgLTc1LDkgKzc1LDEzIEBAIHB1YmxpYzoKIAogICAg
IFJlYWRhYmxlU3RyZWFtU291cmNlJiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJjZS5nZXQoKTsg
fQogCisgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoSlNDOjpKU1ZhbHVlKT4gRmFpbHVy
ZUNhbGxiYWNrOworCiAgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gQ2xvc2VkU3Vj
Y2Vzc0NhbGxiYWNrOwotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKEpTQzo6SlNWYWx1
ZSk+IENsb3NlZEZhaWx1cmVDYWxsYmFjazsKLSAgICB2b2lkIGNsb3NlZChDbG9zZWRTdWNjZXNz
Q2FsbGJhY2ssIENsb3NlZEZhaWx1cmVDYWxsYmFjayk7CisgICAgdm9pZCBjbG9zZWQoQ2xvc2Vk
U3VjY2Vzc0NhbGxiYWNrLCBGYWlsdXJlQ2FsbGJhY2spOworCisgICAgdHlwZWRlZiBzdGQ6OmZ1
bmN0aW9uPHZvaWQoSlNDOjpKU1ZhbHVlKT4gUmVhZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICB2b2lk
IHJlYWQoUmVhZFN1Y2Nlc3NDYWxsYmFjaywgRmFpbHVyZUNhbGxiYWNrKTsKIAogcHJvdGVjdGVk
OgogICAgIFJlYWRhYmxlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8UmVhZGFi
bGVTdHJlYW1Tb3VyY2U+JiYpOwpAQCAtODksMTEgKzkzLDIwIEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGNsZWFyQ2FsbGJhY2tzKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpID0gMDsKKwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4gbV9yZWFkZXI7CiAgICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4+IG1fcmVsZWFzZWRSZWFkZXJzOwog
CiAgICAgQ2xvc2VkU3VjY2Vzc0NhbGxiYWNrIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrOwotICAg
IENsb3NlZEZhaWx1cmVDYWxsYmFjayBtX2Nsb3NlZEZhaWx1cmVDYWxsYmFjazsKKyAgICBGYWls
dXJlQ2FsbGJhY2sgbV9jbG9zZWRGYWlsdXJlQ2FsbGJhY2s7CisKKyAgICBzdHJ1Y3QgUmVhZENh
bGxiYWNrcyB7CisgICAgICAgIFJlYWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOwor
ICAgICAgICBGYWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrOworICAgIH07CisgICAgVmVj
dG9yPFJlYWRDYWxsYmFja3M+IG1fcmVhZFJlcXVlc3RzOwogCiAgICAgU3RhdGUgbV9zdGF0ZSB7
IFN0YXRlOjpSZWFkYWJsZSB9OwogICAgIFJlZjxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gbV9zb3Vy
Y2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1SZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmNwcAppbmRleCA0NDI4ZGFiNGQ3NTI5MWFjY2U0ODZiYjFlYzhmNWM0YmEw
ZGVjODU5Li42MjhkYTZiMmRmOWMxMzI4MGVkYTdmNWUxNjM5Njc4ODFjZWMwMDAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJl
YWRlci5jcHAKQEAgLTMwLDExICszMCwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCiAKKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmg+CisKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKFJlYWRhYmxlU3RyZWFt
OjpDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBSZWFkYWJsZVN0cmVhbTo6
Q2xvc2VkRmFpbHVyZUNhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaykKK3ZvaWQgUmVhZGFibGVTdHJl
YW1SZWFkZXI6OmNsb3NlZChSZWFkYWJsZVN0cmVhbTo6Q2xvc2VkU3VjY2Vzc0NhbGxiYWNrIHN1
Y2Nlc3NDYWxsYmFjaywgUmVhZGFibGVTdHJlYW06OkZhaWx1cmVDYWxsYmFjayBmYWlsdXJlQ2Fs
bGJhY2spCiB7CiAgICAgaWYgKG1fc3RyZWFtLmlzUmVhZGFibGUoKSAmJiBtX3N0cmVhbS5yZWFk
ZXIoKSAhPSB0aGlzKSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpOwpAQCAtNDMsNiArNDUs
MTUgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpD
bG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0MKICAgICBtX3N0cmVhbS5jbG9zZWQoV1RGOjpt
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAor
dm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6cmVhZChSZWFkYWJsZVN0cmVhbTo6UmVhZFN1Y2Nl
c3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpGYWlsdXJlQ2FsbGJh
Y2sgZmFpbHVyZUNhbGxiYWNrKQoreworICAgIGlmIChtX3N0cmVhbS5pc1JlYWRhYmxlKCkgJiYg
bV9zdHJlYW0ucmVhZGVyKCkgICE9IHRoaXMpIHsKKyAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKEpT
Qzo6anNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9zdHJlYW0u
cmVhZChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFj
aykpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaAppbmRleCBmMjI3ODAwNmFlODVjYWU4NjY0
YjAxZGFlYzY2ZDNiMGY2Zjg2MDE3Li5jMzMwYzdjZDUyZDQxZjc5M2MxZTNhOTY4YTc2NWExZmQ2
Nzg1MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1SZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1SZWFkZXIuaApAQCAtNTAsNyArNTAsOCBAQCBjbGFzcyBSZWFkYWJsZVN0cmVh
bVJlYWRlciB7CiBwdWJsaWM6CiAgICAgUmVhZGFibGVTdHJlYW1SZWFkZXIoUmVhZGFibGVTdHJl
YW0mIHN0cmVhbSkgOiBtX3N0cmVhbShzdHJlYW0pIHsgfTsKIAotICAgIHZvaWQgY2xvc2VkKFJl
YWRhYmxlU3RyZWFtOjpDbG9zZWRTdWNjZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpDbG9z
ZWRGYWlsdXJlQ2FsbGJhY2spOworICAgIHZvaWQgY2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9z
ZWRTdWNjZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpGYWlsdXJlQ2FsbGJhY2spOworICAg
IHZvaWQgcmVhZChSZWFkYWJsZVN0cmVhbTo6UmVhZFN1Y2Nlc3NDYWxsYmFjaywgUmVhZGFibGVT
dHJlYW06OkZhaWx1cmVDYWxsYmFjayk7CiAKICAgICB2b2lkIHJlZigpIHsgbV9zdHJlYW0ucmVm
KCk7IH0KICAgICB2b2lkIGRlcmVmKCkgeyBtX3N0cmVhbS5kZXJlZigpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJD
dXN0b20uY3BwCmluZGV4IGQ2ZWNhYzI0MTIwNmUxMjJjOGNkYmQyOWM4YzQ5ZGFhNTcxZGE2ZDcu
LmU3MzMwYTQ0N2VjNGI4ZmJmZjA2MmExMDM0ZDdiMWUwMmY2YTA5NzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJD
dXN0b20uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5o
IgogI2luY2x1ZGUgIlJlYWRhYmxlSlNTdHJlYW0uaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9y
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTQ1LDggKzQ2
LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtUmVh
ZGVyOjpyZWFkKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIGVycm9yID0gY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJyZWFkIGlzIG5vdCBpbXBsZW1lbnRlZCIpKTsKLSAg
ICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7CisgICAgSlNQ
cm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVh
dGUoZXhlYywgZ2xvYmFsT2JqZWN0KCkpOworICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKGV4
ZWMsIGdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQpOworICAgIGF1dG8gc3VjY2Vzc0Nh
bGxiYWNrID0gW3dyYXBwZXJdKEpTVmFsdWUgdmFsdWUpIG11dGFibGUgeworICAgICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KHdyYXBwZXIucHJvbWlzZSgp
LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCB2YWx1ZSwgdmFsdWUuaXNVbmRlZmluZWQo
KSk7CisgICAgICAgIHdyYXBwZXIucmVzb2x2ZShyZXN1bHQpOworICAgIH07CisgICAgYXV0byBm
YWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oSlNWYWx1ZSB2YWx1ZSkgbXV0YWJsZSB7CisgICAg
ICAgIHdyYXBwZXIucmVqZWN0KHZhbHVlKTsKKyAgICB9OworCisgICAgaW1wbCgpLnJlYWQoV1RG
Ojptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKKwor
ICAgIHJldHVybiB3cmFwcGVyLnByb21pc2UoKTsKIH0KIAogc3RhdGljIEpTUHJvbWlzZURlZmVy
cmVkKiBnZXRPckNyZWF0ZVByb21pc2VEZWZlcnJlZEZyb21PYmplY3QoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHRoaXNPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByaXZh
dGVOYW1lICZuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmNwcAppbmRleCBhZDFlYzc5MjFlYmQxMmQ3OWZjY2JlMTQ1MGRlMjQxZWRmM2E3NjM4
Li5iYjM3NDVjNDY4NDhlZWM3NTU5Y2RlZTRiMDJlNTM3ZTZhN2UzODZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAtMTY2LDYgKzE2
NiwxOCBAQCB2b2lkIFJlYWRhYmxlSlNTdHJlYW06OnN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUm
IGV4ZWMpCiAgICAgY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKIH0KIAorYm9vbCBSZWFkYWJsZUpT
U3RyZWFtOjpoYXNWYWx1ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK0pTVmFsdWUgUmVhZGFibGVKU1N0cmVhbTo6cmVhZCgpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlSlNTdHJlYW0uaAppbmRleCA0ZDUxZDAxYmZmODRmY2NmNzFkZWM0NjYyYzU4
ZjY3NzJmYTc4ZjIzLi45ZjU4Yjg2MGQwZDRkODVkYWU1MTg3NWI4YzBlN2UxMDA1NTlmZDdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCkBAIC03
Myw2ICs3MywxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJlYWRhYmxlSlNTdHJlYW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxSZWFkYWJsZUpTU3RyZWFtOjpTb3VyY2U+JiYpOwog
CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIEpTQzo6SlNWYWx1ZSByZWFkKCkgb3ZlcnJpZGU7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CiAgICAgSlNDOjpTdHJvbmc8
SlNDOjpVbmtub3duPiBtX2Vycm9yOwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNjU1M2I2MjAyODMxN2JhZTU2ZDg2
ZjY3OGY1MjVkMmQyZmI3NjI3Li4yMjk2OTZmMWViNmI0NTlkMDRmNWI4MjNhZmUyOGFiZWM0OWJm
YTY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUtMDUtMTkgIFhhYmllciBSb2RyaWd1ZXog
Q2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5m
YWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IFJl
YWRhYmxlU3RyZWFtUmVhZGVyIHJlYWQgbWV0aG9kIGluIGNsb3NlZCBhbmQgZXJyb3JlZCBzdGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0Nzkw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5n
IG5ldyB0ZXN0LiBSZWJhc2luZyBvZiByZWZlcmVuY2UgdGVzdHMgKGV4cGVjdGF0aW9ucyBhbmQg
dGltZW91dGluZy91bnRpbWVvdXRpbmcgdGVzdHMpLgorCisgICAgICAgICogc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW0tcmVhZGVyLXJlYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2Vz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1z
dHJhdGVneS5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFt
LXJlYWRlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sOgorICAgICAgICAqIHN0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbDoKKwogMjAxNS0wNS0xNyAgQmVuamFt
aW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0pTQ10gTWFrZSBT
dHJpbmdSZWN1cnNpb25DaGVja2VyIGZhc3RlciBpbiB0aGUgc2ltcGxlIGNhc2VzIHdpdGhvdXQg
YW55IHJlY3Vyc2lvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0tcmVhZGVyLXJlYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW0tcmVhZGVyLXJlYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZjQzZTFj
ZTYyNjYyNDhiM2U0Zjc0OGIxOGUwNGVjMGQyY2RjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw3IEBACisKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdl
dHMgY2xvc2VkIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbSAKK1BBU1Mg
UmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKK1BBU1MgUmVhZGluZyB0d2ljZSBv
biBhIHN0cmVhbSB0aGF0IGdldHMgZXJyb3JlZCAKK1BBU1MgUmVhZGluZyB3aXRoaW4gYSByZWFk
IHByb21pc2UgcmVzb2x2ZSBjYWxsYmFjayBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkIAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIt
cmVhZC5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJl
YWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZmU1NDE0ZDU3OTljN2Q0ZDliZDUyMzRjY2M3ZDNhNWU5MTFm
YWU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW0tcmVhZGVyLXJlYWQuaHRtbApAQCAtMCwwICsxLDE2NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPScuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgorPHNj
cmlwdD4KKwordmFyIHQxID0gYXN5bmNfdGVzdCgnUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0
aGF0IGdldHMgY2xvc2VkJyk7Cit0MS5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb250cm9s
bGVyOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBm
dW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfQorICAg
IH0pOworICAgIHZhciBjb3VudGVyID0gMDsKKyAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVy
KCk7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3Vs
dCkgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVm
aW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UnKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAxKTsKKyAgICAgICAgY291bnRlcisrOwor
ICAgIH0pKTsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJl
c3VsdCkgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVu
ZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2Un
KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAyKTsKKyAgICAgICAgY291bnRlcisr
OworICAgICAgICB0MS5kb25lKCk7CisgICAgfSkpOworICAgIHJlYWRlci5jbG9zZWQudGhlbih0
MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwg
MCk7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICB9KSk7CisKKyAgICBjb250cm9sbGVyLmNsb3Nl
KCk7Cit9KTsKKwordmFyIHQyID0gYXN5bmNfdGVzdCgnUmVhZGluZyB0d2ljZSBvbiBhIGNsb3Nl
ZCBzdHJlYW0nKTsKK3QyLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvbnRyb2xsZXI7Cisg
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KGMpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgfSk7Cisg
ICAgCisgICAgY29udHJvbGxlci5jbG9zZSgpOworICAgIAorICAgIHZhciBjb3VudGVyID0gMDsK
KyAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICByZWFkZXIucmVhZCgpLnRo
ZW4odDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgp
IHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3Vu
dGVyLCAwKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFkZXIucmVhZCgp
LnRoZW4odDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBhc3NlcnRfb2Jq
ZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVh
ZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhj
b3VudGVyLCAxKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFkZXIuY2xv
c2VkLnRoZW4odDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxz
KGNvdW50ZXIsIDIpOworICAgICAgICBjb3VudGVyKys7CisgICAgICAgIHQyLmRvbmUoKTsKKyAg
ICB9KSk7Cit9KTsKKwordmFyIHQzID0gYXN5bmNfdGVzdCgnUmVhZGluZyB0d2ljZSBvbiBhbiBl
cnJvcmVkIHN0cmVhbScpOwordDMuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJvbGxl
cjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVu
Y3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9
KTsKKyAgCisgICAgdmFyIG15RXJyb3IgPSB7IHBvdGF0bzogIm1hc2hlZCIgfTsgCisgICAgY29u
dHJvbGxlci5lcnJvcihteUVycm9yKTsKKyAgICAKKyAgICB2YXIgY291bnRlciA9IDA7CisgICAg
dmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHQz
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgp
IHNob3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKyAgICB9KSwgdDMuc3RlcF9m
dW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVycik7
CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMCk7CisgICAgICAgIGNvdW50ZXIrKzsK
KyAgICB9KSk7CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHQzLnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCByZWplY3Qgb24gYW4g
ZXJyb3JlZCBzdHJlYW0nKTsKKyAgICB9KSwgdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgewor
ICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVycik7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoY291bnRlciwgMSk7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICB9KSk7CisgICAgcmVhZGVy
LmNsb3NlZC50aGVuKHQzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Vu
cmVhY2hlZCgncmVhZCgpIHNob3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKyAg
ICB9KSwgdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxz
KG15RXJyb3IsIGVycik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMik7CisgICAg
ICAgIGNvdW50ZXIrKzsKKyAgICAgICAgdDMuZG9uZSgpOworICAgIH0pKTsKK30pOworCit2YXIg
dDQgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBlcnJv
cmVkJyk7Cit0NC5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb250cm9sbGVyOworICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7
CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfQorICAgIH0pOworICAgCisg
ICAgdmFyIGNvdW50ZXIgPSAwOworICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKwor
ICAgIHJlYWRlci5yZWFkKCkudGhlbih0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAg
IGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQgcmVqZWN0IG9uIGFuIGVycm9yZWQgc3Ry
ZWFtJyk7CisgICAgfSksIHQ0LnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhteUVycm9yLCBlcnIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIs
IDEpOworICAgICAgICBjb3VudGVyKys7CisgICAgfSkpOworICAgIHJlYWRlci5yZWFkKCkudGhl
bih0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3Jl
YWQoKSBzaG91bGQgcmVqZWN0IG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7CisgICAgfSksIHQ0LnN0
ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhteUVycm9yLCBl
cnIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDIpOworICAgICAgICBjb3VudGVy
Kys7CisgICAgICAgIHQ0LmRvbmUoKTsKKyAgICB9KSk7CisgICAgcmVhZGVyLmNsb3NlZC50aGVu
KHQ0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVh
ZCgpIHNob3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKyAgICB9KSwgdDQuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVy
cik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMCk7CisgICAgICAgIGNvdW50ZXIr
KzsKKyAgICB9KSk7CisKKyAgICB2YXIgbXlFcnJvciA9IHsgcG90YXRvOiAnbWFzaGVkJyB9OyAK
KyAgICBjb250cm9sbGVyLmVycm9yKG15RXJyb3IpOworIH0pOworCit2YXIgdDUgPSBhc3luY190
ZXN0KCdSZWFkaW5nIHdpdGhpbiBhIHJlYWQgcHJvbWlzZSByZXNvbHZlIGNhbGxiYWNrIG9uIGEg
c3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQnKTsKK3Q1LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFy
IGNvbnRyb2xsZXI7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAg
c3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICBy
ZWFkZXIucmVhZCgpLnRoZW4odDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICByZWFk
ZXIucmVhZCgpLnRoZW4odDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdDUu
ZG9uZSgpOworICAgICAgICB9KSk7CisgICAgfSkpOworICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsK
K30pOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlp
bmctc291cmNlcy1leHBlY3RlZC50eHQKaW5kZXggMTljYTM1NTU5NTc0ZTMxMzA5OWZjNDg4MmNh
ZGQxNDEyYTlhMjI4MC4uYjc1NTgxYjFkOTVjMDQxNzA4ZTUxM2RlOWJlYzEyODVhMzE3MTQ5NSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
YmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBl
Y3RlZC50eHQKQEAgLTUsOCArNSw4IEBAIEZBSUwgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRo
cm93aW5nIGdldHRlciBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3RpbmcgdGhlIHN0CiBQQVNTIFVu
ZGVybHlpbmcgc291cmNlIHN0YXJ0OiB0aHJvd2luZyBtZXRob2QgCiBUSU1FT1VUIFVuZGVybHlp
bmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoaW5pdGlhbCBwdWxsKSBUZXN0IHRpbWVk
IG91dAogVElNRU9VVCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKGlu
aXRpYWwgcHVsbCkgVGVzdCB0aW1lZCBvdXQKLUZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHRocm93
aW5nIHB1bGwgZ2V0dGVyIChzZWNvbmQgcHVsbCkgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZB
SUwgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChzZWNvbmQgcHVsbCkg
cmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQgVW5kZXJseWluZyBzb3VyY2U6IHRocm93
aW5nIHB1bGwgZ2V0dGVyIChzZWNvbmQgcHVsbCkgVGVzdCB0aW1lZCBvdXQKK1RJTUVPVVQgVW5k
ZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChzZWNvbmQgcHVsbCkgVGVzdCB0
aW1lZCBvdXQKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIGNhbmNlbCBnZXR0ZXIg
Y2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dp
bmcgY2FuY2VsIG1ldGhvZCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFVuZGVybHlp
bmcgc291cmNlOiB0aHJvd2luZyBzdHJhdGVneSBnZXR0ZXIgYXNzZXJ0X3Rocm93czogZW5xdWV1
ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IGMuZW5xdWV1
ZSgnYScpOyB9IiBkaWQgbm90IHRocm93CkBAIC0xOCw3ICsxOCw3IEBAIEZBSUwgVW5kZXJseWlu
ZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nIE5hTiBhc3NlcnRfdW5yZWFjaGVkOiBl
bnF1ZXVlIGRpCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBzdHJhdGVneS5zaXplIHJldHVybmlu
ZyAtSW5maW5pdHkgYXNzZXJ0X3VucmVhY2hlZDogZW5xdWV1ZSBkaWRuJ3QgdGhyb3cgUmVhY2hl
ZCB1bnJlYWNoYWJsZSBjb2RlCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBzdHJhdGVneS5zaXpl
IHJldHVybmluZyArSW5maW5pdHkgYXNzZXJ0X3VucmVhY2hlZDogZW5xdWV1ZSBkaWRuJ3QgdGhy
b3cgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiBQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxs
aW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29u
ZCB0aW1lIAotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBh
IG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSByZWFkIGlzIG5v
dCBpbXBsZW1lbnRlZAorRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2lj
ZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSBhc3Nl
cnRfb2JqZWN0X2VxdWFsczogcmVhZCgpIHNob3VsZCByZWFkIHRoZSBlbnF1ZXVlZCBjaHVuayBw
cm9wZXJ0eSAiZG9uZSIgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iIGdvdCBvYmpl
Y3QgIltvYmplY3QgT2JqZWN0XSIKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgY2FuY2VsIGlz
IG5vdCBpbXBsZW1lbnRlZAogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBv
biBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyBjYW5jZWwgaXMg
bm90IGltcGxlbWVudGVkCiBQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFm
dGVyIGVycm9yIHNob3VsZCB0aHJvdyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbCBiL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5n
LXNvdXJjZXMuaHRtbAppbmRleCBiYzQxNzA5MjRiN2IxYWI5MzMyMzZjNDJiNDFlYzlmOGU1ZGNi
Y2RmLi42ODZkODg0ZDdlNDg5OTQ2NTdlYmFiZDJhNmQxOWVkOTNjNjZiODRiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJs
eWluZy1zb3VyY2VzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sCkBAIC0zMSw3ICszMSw3IEBA
IHZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxs
IGdldHRlciAoaW5pdGlhbCBwdWxsKScsCiB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZh
ciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CiAgICAgdmFyIHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgZ2V0IHB1bGwoKSB7CisgICAgICAgIHB1bGw6
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CiAgICAgICAgIH0KICAg
ICB9KTsKQEAgLTYxLDEyICs2MSwxMiBAQCB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAg
ICB9KSk7CiB9KTsKIAotdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6
IHRocm93aW5nIHB1bGwgZ2V0dGVyIChzZWNvbmQgcHVsbCknKTsKK3ZhciB0ZXN0MyA9IGFzeW5j
X3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoc2Vjb25kIHB1
bGwpJywgeyB0aW1lb3V0OiA1MCB9KTsKIHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFy
IHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKICAgICB2YXIgY291bnRl
ciA9IDA7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgZ2V0IHB1
bGwoKSB7CisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgKytjb3VudGVy
OwogICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT09IDEpIHsKICAgICAgICAgICAgICAgICByZXR1
cm4gdGVzdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGMpIHsgYy5lbnF1ZXVlKCdhJyk7IH0pCkBAIC04
OSw3ICs4OSw3IEBAIHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIH0pKTsKIH0pOwog
Ci12YXIgdGVzdDQgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVs
bCBtZXRob2QgKHNlY29uZCBwdWxsKScpOwordmFyIHRlc3Q0ID0gYXN5bmNfdGVzdCgnVW5kZXJs
eWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChzZWNvbmQgcHVsbCknLCB7IHRpbWVv
dXQ6IDUwIH0pOwogdGVzdDQuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgdGhlRXJyb3IgPSBu
ZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwogICAgIHZhciBjb3VudGVyID0gMDsKQEAgLTEx
OSw3ICsxMTksNyBAQCB2YXIgdGVzdDUgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTog
dGhyb3dpbmcgY2FuY2VsIGdldHRlcicpOwogdGVzdDUuc3RlcChmdW5jdGlvbigpIHsKICAgICB2
YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwogICAgIHZhciBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7Ci0gICAgICAgIGdldCBjYW5jZWwoKSB7CisgICAgICAgIGNh
bmNlbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKICAgICAgICAg
fQogICAgIH0pOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHRlc3Q3LnN0ZXAoZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICBzdGFydGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGFzc2VydF90aHJvd3ModGhl
RXJyb3IsIGZ1bmN0aW9uKCkgeyBjLmVucXVldWUoJ2EnKTsgfSwgJ2VucXVldWUgc2hvdWxkIHRo
cm93IHRoZSBlcnJvcicpOwogICAgICAgICB9LAotICAgICAgICBnZXQgc3RyYXRlZ3koKSB7Cisg
ICAgICAgIHN0cmF0ZWd5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHRocm93IHRoZUVycm9y
OwogICAgICAgICB9CiAgICAgfSk7CkBAIC00ODUsNCArNDg1LDUgQEAgdGVzdDIxLnN0ZXAoZnVu
Y3Rpb24oKSB7CiAgICAgICAgIHRlc3QyMS5kb25lKCdjbG9zZWQgc2hvdWxkIGZ1bGZpbGwnKTsK
ICAgICB9KSk7CiB9KTsKKwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CmluZGV4IDdiZGYzZGVjNmQ1OTQzZmZl
NTJjZjlmODVhYjRkNGUwNTc3NWI1ZjAuLmQ3Y2JiNzVmMzcyMzY5MjJlZWU1YWM4MDJiMTE2Yjgz
ZjAxMjViZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIsNyBAQAogUEFTUyBDYW4gY29uc3RydWN0IGEg
Q291bnRRdWV1aW5nU3RyYXRlZ3kgd2l0aCBhIHZhbGlkIGhpZ2ggd2F0ZXIgbWFyayAKIFBBU1Mg
R2l2ZXMgYSBSYW5nZUVycm9yIHdoZW4gdGhlIG51bWJlciBpcyBuZWdhdGl2ZSAKIFBBU1MgQ2Fu
IGNvbnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRRdWV1aW5nU3Ry
YXRlZ3kgCi1GQUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFk
YWJsZVN0cmVhbSdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDApIHJlYWQgaXMgbm90IGltcGxl
bWVudGVkCitUSU1FT1VUIENvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBS
ZWFkYWJsZVN0cmVhbSdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDApIFRlc3QgdGltZWQgb3V0
CiBGQUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJsZVN0
cmVhbSdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDEpIGFzc2VydF9lcXVhbHM6IEFmdGVyIDAg
cmVhZHMsIDFzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5z
IDEgY2h1bmspIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogRkFJTCBDb3JyZWN0bHkgZ292
ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0
aW9uIChIV00gPSA0KSBhc3NlcnRfZXF1YWxzOiBBZnRlciAwIHJlYWRzLCAxc3QgZW5xdWV1ZSBz
aG91bGQgcmV0dXJuIHRydWUgKHF1ZXVlIG5vdyBjb250YWlucyAxIGNodW5rKSBleHBlY3RlZCB0
cnVlIGJ1dCBnb3QgZmFsc2UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJh
dGVneS5odG1sCmluZGV4IDNiOTY0NWI0Zjk5MzdlNGFlOTQ1ZDc1ZDQyNzZiYjVhYThiM2RhY2Uu
LjgyYzM4N2RkYmI1NzE1OGJhMGY3ZjkyZWJkYzY0MWEyMGUzYWRkMDMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmct
c3RyYXRlZ3kuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAgdGVz
dChmdW5jdGlvbigpIHsKICAgICBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdHJhdGVneTogbmV3IENv
dW50UXVldWluZ1N0cmF0ZWd5KHsgImhpZ2hXYXRlck1hcmsiOiA0IH0pIH0pOwogfSwgJ0NhbiBj
b25zdHJ1Y3QgYSByZWFkYWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENvdW50UXVldWluZ1N0cmF0
ZWd5Jyk7CiAKLXZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ0NvcnJlY3RseSBnb3Zlcm5zIHRoZSBy
ZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJsZVN0cmVhbVwncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00g
PSAwKScpOwordmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJl
dHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtXCdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9
IDApJywgeyB0aW1lb3V0OiA1MCB9KTsKIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFy
IGVucXVldWU7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0
cmVhbS1jYW5jZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC1leHBlY3RlZC50eHQKaW5kZXgg
ZWRmOTAxNzQzOGRjNzQ5YWY2MTA5OWZlMmRjMWFlNmU4MjhjNDk4MC4uOWI3NTU0Mjg1OGQ1NTUz
YmJlMzUzYmRhNTI4ZjA0NGEwZTAyY2M1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLWNhbmNlbC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiAKLUZB
SUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRlZ3JhdGlvbiB0ZXN0IG9uIGFuIGlu
ZmluaXRlIHN0cmVhbSBkZXJpdmVkIGZyb20gYSByYW5kb20gcHVzaCBzb3VyY2UgcmVhZCBpcyBu
b3QgaW1wbGVtZW50ZWQKK0ZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBpbnRlZ3Jh
dGlvbiB0ZXN0IG9uIGFuIGluZmluaXRlIHN0cmVhbSBkZXJpdmVkIGZyb20gYSByYW5kb20gcHVz
aCBzb3VyY2UgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBSZWFkYWJsZVN0cmVhbSBj
YW5jZWxsYXRpb246IGNhbmNlbChyZWFzb24pIHNob3VsZCBwYXNzIHRocm91Z2ggdGhlIGdpdmVu
IHJlYXNvbiB0byB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRl
ZAogRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGNhbmNlbCgpIG9uIGEgbG9ja2Vk
IHN0cmVhbSBzaG91bGQgZmFpbCBhbmQgbm90IGNhbGwgdGhlIHVuZGVybHlpbmcgc291cmNlIGNh
bmNlbCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNl
bGxhdGlvbjogcmV0dXJuaW5nIGEgdmFsdWUgZnJvbSB0aGUgdW5kZXJseWluZyBzb3VyY2UncyBj
YW5jZWwgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIGZ1bGZpbGxtZW50IHZhbHVlIG9mIHRoZSBwcm9t
aXNlIHJldHVybmVkIGJ5IHRoZSBzdHJlYW0ncyBjYW5jZWwgY2FuY2VsIGlzIG5vdCBpbXBsZW1l
bnRlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKaW5k
ZXggZTlkODQ5NWM2YzE0NmE2MmU2NjdmYWQ5M2I4ZTk5Mzg0NjM4YzYwMy4uODlhZTQ5ZGU2Y2Rk
N2I0NzBhNWYxMmQzYTE0ZmI1YWU2NzY1YzE5OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CkBAIC01LDIyICs1LDIyIEBAIFBBU1MgUmVhZGFibGVT
dHJlYW0gY29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJn
dW1lbnRzCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBn
YXJiYWdlIGFzIGNhbmNlbCBhcmd1bWVudCAKIFBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0
b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCAKIFBBU1MgUmVhZGFi
bGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgc3RyYXRlZ3kg
YXJndW1lbnQgCi1GQUlMIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJl
dHVybiBhIHByb21pc2UgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQgUmVhZGFibGVT
dHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBUZXN0IHRpbWVk
IG91dAogVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1
cm4gYSBwcm9taXNlIGFuZCByZWplY3QgaXQgVGVzdCB0aW1lZCBvdXQKLUZBSUwgUmVhZGFibGVT
dHJlYW0gc2hvdWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4gcmVhZCBp
cyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJlIGFibGUgdG8g
ZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4gYXNzZXJ0X29iamVjdF9lcXVhbHM6IHZhbHVlIHJl
YWQgc2hvdWxkIGJlIHRoZSBvbmUgZW5xdWV1ZWQgcHJvcGVydHkgImRvbmUiIGV4cGVjdGVkIG9i
amVjdCAiW29iamVjdCBPYmplY3RdIiBnb3Qgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iCiBQQVNT
IFJlYWRhYmxlU3RyZWFtOiBpZiBzdGFydCB0aHJvd3MgYW4gZXJyb3IsIGl0IHNob3VsZCBiZSBy
ZS10aHJvd24gCi1GQUlMIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3Vs
ZCBlcnJvciB0aGUgc3RyZWFtIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIFJlYWRhYmxl
U3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMgcHVsbCBjYWxs
J3MgcHJvbWlzZSBmdWxmaWxscyByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJs
ZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQgaWYgdGhlIHN0cmVhbSBp
cyBub3cgY2xvc2VkIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitUSU1FT1VUIFJlYWRhYmxlU3Ry
ZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtIFRlc3QgdGlt
ZWQgb3V0CitUSU1FT1VUIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRp
bCB0aGUgcHJldmlvdXMgcHVsbCBjYWxsJ3MgcHJvbWlzZSBmdWxmaWxscyBUZXN0IHRpbWVkIG91
dAorUEFTUyBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgYWZ0ZXIgc3RhcnQg
aWYgdGhlIHN0cmVhbSBpcyBub3cgY2xvc2VkIAogRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IGNhbGwgcHVsbCBhZnRlciBlbnF1ZXVlaW5nIGZyb20gaW5zaWRlIHB1bGwgKHdpdGggbm8gcmVh
ZCByZXF1ZXN0cyksIGlmIHN0cmF0ZWd5IGFsbG93cyBhc3NlcnRfZXF1YWxzOiBwdWxsKCkgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgZm91ciB0aW1lcyBleHBlY3RlZCA0IGJ1dCBnb3QgMAogVElN
RU9VVCBSZWFkYWJsZVN0cmVhbSBwdWxsIHNob3VsZCBiZSBhYmxlIHRvIGNsb3NlIGEgc3RyZWFt
LiBUZXN0IHRpbWVkIG91dAogRkFJTCBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhy
b3cgd2hlbiB0aGUgc3RyZWFtIGlzIHJlYWRhYmxlIGJ1dCBkcmFpbmluZyBhc3NlcnRfZXF1YWxz
OiB0aGUgZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQgdHJ1ZSBidXQg
Z290IGZhbHNlCiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVu
IHRoZSBzdHJlYW0gaXMgY2xvc2VkIGFzc2VydF90aHJvd3M6IGVucXVldWUgYWZ0ZXIgY2xvc2Ug
c2hvdWxkIHRocm93IGEgVHlwZUVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IGMuZW5xdWV1
ZSgnYScpOyB9IiBkaWQgbm90IHRocm93CiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNo
b3VsZCB0aHJvdyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhlIHN0cmVhbSBpcyBlcnJvcmVkIGFz
c2VydF90aHJvd3M6IGVucXVldWUgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93IHRoYXQgZXJyb3Ig
ZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBub3QgdGhyb3cK
LUZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhv
ZHMgYXMgbWV0aG9kcyByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorVElNRU9VVCBSZWFkYWJsZVN0
cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIFRl
c3QgdGltZWQgb3V0CiBGQUlMIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0
IHN0cmF0ZWd5IHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIGFsbCBidXQgdGhlIGZpcnN0IGVucXVl
dWUgY2FsbCBhc3NlcnRfZXF1YWxzOiBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBl
eHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKIEZBSUwgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2ll
czogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIHJldHVybmluZyB0cnVlIGZy
b20gZW5xdWV1ZSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5IGFzc2VydF9lcXVh
bHM6IGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIHRydWUgYnV0IGdv
dCBmYWxzZQotRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBh
IHJhbmRvbSBwdXNoIHNvdXJjZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJs
ZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgcmVh
ZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVz
dDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQK
K1RJTUVPVVQgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5k
b20gcHVzaCBzb3VyY2UgVGVzdCB0aW1lZCBvdXQKK1RJTUVPVVQgUmVhZGFibGVTdHJlYW0gaW50
ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSBzeW5jIHB1bGwgc291cmNlIFRlc3QgdGltZWQgb3V0
CitUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFz
eW5jIHB1bGwgc291cmNlIFRlc3QgdGltZWQgb3V0CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQKaW5kZXggNzU5ZjEzYzMwZThl
NmJiY2YyYTVjOTdkOTQxZjNlYzBjN2I1NDRjMi4uMDdjNWQ3NDA4YmZkNjYyYzk0Y2ZlZmQ5MDgw
ODQ1YWJhZGJjNjdhOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3Ry
ZWFtLXJlYWRlci1leHBlY3RlZC50eHQKQEAgLTksMTAgKzksMTAgQEAgUEFTUyBDb25zdHJ1Y3Rp
bmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgZmFpbCBpZiB0aGUgc3Ry
ZWFtIGlzIGEKIFBBU1MgR2V0dGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHZpYSBnZXRSZWFk
ZXIgc2hvdWxkIGZhaWwgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGxvY2tlZCAodmlhIGRpcmVj
dCBnZXRSZWFkZXIpIAogUEFTUyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBk
aXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQgCiBQQVNTIENvbnN0
cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0
aGUgc3RyZWFtIGlzIGVycm9yZWQgCi1GQUlMIFJlYWRpbmcgZnJvbSBhIHJlYWRlciBmb3IgYW4g
ZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJsZSByZWFkIGlz
IG5vdCBpbXBsZW1lbnRlZAorVElNRU9VVCBSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVt
cHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUgVGVzdCB0aW1l
ZCBvdXQKIEZBSUwgY2FuY2VsKCkgb24gYSByZWFkZXIgcmVsZWFzZXMgdGhlIHJlYWRlciBiZWZv
cmUgY2FsbGluZyB0aHJvdWdoIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgY2xvc2Vk
IHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgc3RyZWFtIGlzIGNsb3NlZCAoLmNsb3NlZCBhY2Nl
c3MgYmVmb3JlIGFjcXVpcmluZykgCiBGQUlMIGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFm
dGVyIHJlYWRlciByZWxlYXNlcyBpdHMgbG9jayAobXVsdGlwbGUgc3RyZWFtIGxvY2tzKSByZWxl
YXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgQ2Fubm90IHVzZSBhbiBhbHJlYWR5LXJl
bGVhc2VkIHJlYWRlciB0byB1bmxvY2sgYSBzdHJlYW0gYWdhaW4gcmVsZWFzZUxvY2sgaXMgbm90
IGltcGxlbWVudGVkCi1GQUlMIEdldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5n
IHRoZSBzdHJlYW0gc2hvdWxkIHN1Y2NlZWQgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1BBU1Mg
R2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBzaG91bGQg
c3VjY2VlZCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sIGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1s
CmluZGV4IDM1ODM0M2FlNDI5YjQ2MGRiNWQyYWY4MzFiMWMzNmRhN2FmN2NlODkuLjgxM2UwMWVk
NDVhNWVhZDUxZTlhZDE4MTcxNWVmODRmYTQxYmJlMDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKQEAgLTEwNyw3ICsxMDcsNyBAQCB0ZXN0KGZ1bmN0
aW9uKCkgewogICAgIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcihycyk7IC8vIENvbnN0cnVjdGlu
ZyBkaXJlY3RseSBzaG91bGQgbm90IHRocm93LgogfSwgJ0NvbnN0cnVjdGluZyBhIFJlYWRhYmxl
U3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGVycm9y
ZWQnKTsKIAotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZv
ciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlJyk7
Cit2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVt
cHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUnLCB7IHRpbWVv
dXQ6IDUwIH0pOwogdGVzdDEuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgY29udHJvbGxlcjsK
ICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBs
YXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dAppbmRleCAyMzhi
MGY3ZmI3NTA4MmI3Yjk2YTgzYmE0ZDE5ZDhmNGExZDhlZjdiLi4zZThjMmMxZWZlYmRkMWQxNzgy
OGZjNTBkNzljNWJlNjliMjc3ZDllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTRW1wdHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZW1wdHkpCiBQ
QVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCiBQ
QVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eVJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChl
bXB0eSkgcmVhZGVyIAogUEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFu
ZCBwcm9wZXJ0aWVzIAotRkFJTCByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNl
cyBlYWNoIHRpbWUgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1BBU1MgcmVhZCgpIHNob3VsZCBy
ZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAogUEFTUyBnZXRSZWFkZXIoKSBhZ2Fp
biBvbiB0aGUgc3RyZWFtIHNob3VsZCBmYWlsIAogRkFJTCByZWxlYXNpbmcgdGhlIGxvY2sgc2hv
dWxkIGNhdXNlIGZ1cnRoZXIgcmVhZCgpIGNhbGxzIHRvIHJlc29sdmUgYXMgaWYgdGhlIHN0cmVh
bSBpcyBjbG9zZWQgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIHJlbGVhc2lu
ZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgY2xvc2VkIHRvIGZ1bGZpbGwgcmVsZWFzZUxvY2sgaXMg
bm90IGltcGxlbWVudGVkCkBAIC0xNCw3ICsxNCw3IEBAIEZBSUwgY2FuY2VsKCkgc2hvdWxkIHJl
dHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90
CiBQQVNTIGdldFJlYWRlcigpIHNob3VsZCBiZSBPSyAKIFBBU1Mgc2hvdWxkIGJlIGFibGUgdG8g
YWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzLCBzaW5jZSB0aGV5IGFyZSBhbGwgYXV0by1yZWxlYXNl
ZCAKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIChjbG9zZWQgdmlhIGNhbGwgaW4gc3RhcnQpIHJlYWRlciAKLUZBSUwgcmVhZCgpIHNob3Vs
ZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gcmVhZCBpcyBu
b3QgaW1wbGVtZW50ZWQKK1BBU1MgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTog
dW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gCiBQQVNTIGNsb3NlZCBzaG91bGQgZnVsZmlsbCB3aXRo
IHVuZGVmaW5lZCAKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3NlZCB3aXRoIFJlYWRhYmxl
U3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgCiBGQUlMIGNhbmNlbCgpIHNob3VsZCByZXR1cm4g
YSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBs
ZW1lbnRlZApAQCAtMjQsMjYgKzI0LDIxIEBAIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Nsb3Nl
ZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChjbG9zZWQgdmlhIGNhbmNlbCkgcmVhCiBGQUlM
IHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1
ZSB9IGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgY2xvc2VkIHNob3VsZCBmdWxmaWxs
IHdpdGggdW5kZWZpbmVkIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBp
biBzdGFydCkgCi1GQUlMIGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBh
Y3RzIGVycm9yZWQgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1BBU1MgZ2V0UmVhZGVyKCkgc2hv
dWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCAKIFBBU1MgUnVubmluZyB0ZW1w
bGF0ZWRSU0Vycm9yZWRTeW5jT25seSB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBj
YWxsIGluIHN0YXJ0KSAKIEZBSUwgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJl
amVjdGVkIHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwg
cmVhZGVyIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNl
IGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIHNob3VsZCBiZSBhYmxl
IHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycywgc2luY2UgdGhleSBhcmUgYWxsIGF1dG8tcmVs
ZWFzZWQgCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJl
YW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIAot
RkFJTCBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVk
IHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1QQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVk
UmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVj
dGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlciAKLVRJTUVPVVQgY2xvc2VkIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZXJyb3IgVGVzdCB0aW1lZCBvdXQKLUZBSUwgcmVhZCgpIHNob3VsZCByZWpl
Y3Qgd2l0aCB0aGUgZXJyb3IgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNo
dW5rcyBlbnF1ZXVlZCwgc3RpbGwgb3BlbikgcmVhZGVyIAotRkFJTCBjYWxsaW5nIHJlYWQoKSB0
d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgcmVh
ZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aCB3YWl0
aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIHJlYWQgaXMgbm90IGltcGxlbWVu
dGVkCi1GQUlMIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGlt
ZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBjYW5jZWwoKSBhZnRlciBhIHJlYWQoKSBz
aG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCByZWFkIGlzIG5vdCBpbXBs
ZW1lbnRlZAorVElNRU9VVCBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2ls
bCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgVGVzdCB0aW1lZCBvdXQKK1RJTUVPVVQgY2Fs
bGluZyByZWFkKCkgdHdpY2Ugd2l0aCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGgg
Y2h1bmtzIFRlc3QgdGltZWQgb3V0CitQQVNTIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3RpbmN0
IHByb21pc2VzIGVhY2ggdGltZSAKK0ZBSUwgY2FuY2VsKCkgYWZ0ZXIgYSByZWFkKCkgc2hvdWxk
IHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgY2FuY2VsIGlzIG5vdCBpbXBsZW1l
bnRlZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzQ2xvc2VkUmVhZGVyIHdpdGgg
UmVhZGFibGVTdHJlYW0gKHR3byBjaHVua3MgZW5xdWV1ZWQsIHRoZW4gY2xvc2VkKSByZWFkZXIg
Ci1GQUlMIHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVl
OiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCB0
aGlyZCByZWFkLCB3aXRoIHdhaXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwg
ZG9uZTogdHJ1ZSB9IHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIGRyYWluaW5nIHRoZSBz
dHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciBjbG9zZWQgcHJvbWlzZSB0
byBmdWxmaWxsIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIHJlbGVhc2luZyB0aGUgbG9j
ayBhZnRlciB0aGUgc3RyZWFtIGlzIGNsb3NlZCBzaG91bGQgZG8gbm90aGluZyByZWFkIGlzIG5v
dCBpbXBsZW1lbnRlZAorRkFJTCB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxk
IGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gYXNzZXJ0X29iamVjdF9lcXVh
bHM6IGZpcnN0IHJlc3VsdCBzaG91bGQgYmUgY29ycmVjdCBwcm9wZXJ0eSAiZG9uZSIgZXhwZWN0
ZWQgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iIGdvdCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIK
K0ZBSUwgdGhpcmQgcmVhZCwgd2l0aCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSBhc3NlcnRfb2JqZWN0X2VxdWFsczogZmlyc3QgcmVzdWx0IHNo
b3VsZCBiZSBjb3JyZWN0IHByb3BlcnR5ICJkb25lIiBleHBlY3RlZCBvYmplY3QgIltvYmplY3Qg
T2JqZWN0XSIgZ290IG9iamVjdCAiW29iamVjdCBPYmplY3RdIgorUEFTUyBkcmFpbmluZyB0aGUg
c3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2VkIHByb21pc2Ug
dG8gZnVsZmlsbCAKK0ZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMg
Y2xvc2VkIHNob3VsZCBkbyBub3RoaW5nIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAog
RkFJTCByZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIHJlYWQoKSB0byBhY3QgYXMgaWYg
dGhlIHN0cmVhbSBpcyBjbG9zZWQgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCi1GQUlM
IHJlYWRlcidzIGNsb3NlZCBwcm9wZXJ0eSBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSBwcm9taXNl
IHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIHJlYWRlcidzIGNsb3NlZCBwcm9wZXJ0eSBh
bHdheXMgcmV0dXJucyB0aGUgc2FtZSBwcm9taXNlIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1l
bnRlZAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0
bWwKaW5kZXggOGMxYmY1ODdlMWU0NzJkZTI1MzExNGM5NTcwM2RkZjE1YTU1YmM5Mi4uYzcyY2Fh
MDY2ZDFlNzA1ZmZhNDc3MjYxZGE1YzQyMDhlM2JhNmRjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBs
YXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbApAQCAtMzY5LDcgKzM2OSw3IEBAIGZ1
bmN0aW9uIHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlcihsYWJlbCwgZmFjdG9yeSwgY2h1
bmtzKSB7CiAgICAgdGVzdChmdW5jdGlvbigpIHsKICAgICB9LCAnUnVubmluZyB0ZW1wbGF0ZWRS
U1R3b0NodW5rc09wZW5SZWFkZXIgd2l0aCAnICsgbGFiZWwpOwogCi0gICAgdmFyIHRlc3QxID0g
YXN5bmNfdGVzdCgnY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZl
bnR1YWxseSBnaXZlIGJvdGggY2h1bmtzJyk7CisgICAgdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgn
Y2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZl
IGJvdGggY2h1bmtzJywgeyB0aW1lb3V0OiA1MCB9KTsKICAgICB0ZXN0MS5zdGVwKGZ1bmN0aW9u
KCkgewogICAgICAgICB2YXIgeyByZWFkZXIgfSA9IGZhY3RvcnkoKTsKICAgICAgICAgdmFyIHBy
b21pc2VDb3VudCA9IDA7CkBAIC0zODUsNyArMzg1LDcgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNU
d29DaHVua3NPcGVuUmVhZGVyKGxhYmVsLCBmYWN0b3J5LCBjaHVua3MpIHsKICAgICAgICAgfSkp
OwogICAgIH0pOwogCi0gICAgdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnY2FsbGluZyByZWFkKCkg
dHdpY2Ugd2l0aCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzJyk7Cisg
ICAgdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aCB3YWl0
aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzJywgeyB0aW1lb3V0OiA1MCB9KTsK
ICAgICB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIgeyByZWFkZXIgfSA9IGZh
Y3RvcnkoKTsKIApAQCAtNjE0LDcgKzYxNCw4IEBAIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5
KCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCknLCBmdW5jdGlvCiAg
ICAgfSl9LAogICAgIHRoZUVycm9yCiApOwotCisvLyBGSVhNRTogQWN0aXZhdGUgdGhlc2UgdGVz
dHMgb25jZSBQcm9taXNlIGhhbmRsaW5nIGlzIHN1cHBvcnRlZCBpbiBzdGFydCBmdW5jdGlvbi4K
Ky8qCiB0ZW1wbGF0ZWRSU0Vycm9yZWQoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1
cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KScsIGZ1bmN0aW9uKCkgewogICAgIHJl
dHVybiBuZXcgUmVhZGFibGVTdHJlYW0oewogICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7CkBA
IC02MzIsNiArNjMzLDcgQEAgdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdSZWFkYWJsZVN0cmVh
bSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWkKICAgICB9KSl9LAogICAg
IHRoZUVycm9yCiApOworKi8KIAogdmFyIGNodW5rcyA9IFsnYScsICdiJ107CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLmh0bWwKaW5kZXggZDA3MjVlNDQyNjYxYTcyZTI2ZmViNjMzZjgz
MzZjMjA4ZTk1NGU2MS4uMTZjZThjNGFlNDQ5MzMxN2QzMjdjZjkxOGI0Y2Y0OTA5NjE1OGQ1OCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWwKQEAgLTUzLDcgKzUzLDcgQEAgdGVz
dChmdW5jdGlvbigpIHsKICAgICBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdHJhdGVneTogMiB9KTsg
Ly8gQ29uc3RydWN0b3Igc2hvdWxkIG5vdCB0aHJvdyB3aGVuIHN0cmF0ZWd5IGlzIG5vdCBhbiBv
YmplY3QuCiB9LCAnUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdh
cmJhZ2UgYXMgc3RyYXRlZ3kgYXJndW1lbnQnKTsKIAotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZScp
OwordmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJl
IGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MS5zdGVw
KGZ1bmN0aW9uKCkKIHsKICAgICB2YXIgcmVhZENhbGxlZCA9IGZhbHNlOwpAQCAtMTQ2LDcgKzE0
Niw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgYXNzZXJ0X3Rocm93cyhlcnJvciwgZnVuY3Rp
b24oKSB7IG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0YXJ0KCkgeyB0aHJvdyBlcnJvcjsgfSB9KSB9
LCAnZXJyb3Igc2hvdWxkIGJlIHJlLXRocm93bicpOwogfSwgJ1JlYWRhYmxlU3RyZWFtOiBpZiBz
dGFydCB0aHJvd3MgYW4gZXJyb3IsIGl0IHNob3VsZCBiZSByZS10aHJvd24nKTsKIAotdmFyIHRl
c3Q0ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hv
dWxkIGVycm9yIHRoZSBzdHJlYW0nKTsKK3ZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxl
U3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtJywgeyB0
aW1lb3V0OiA1MCB9KTsKIHRlc3Q0LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGVycm9yID0g
bmV3IEVycm9yKCdwdWxsIGZhaWx1cmUnKTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewpAQCAtMzY4LDcgKzM2OCw3IEBAIHRlc3Q0LnN0ZXAoZnVuY3Rpb24oKSB7CiAvLyAgICAg
fSksIHN0YW5kYXJkVGltZW91dCk7CiAvLyB9KTsKIAotdmFyIHRlc3QxMSA9IGFzeW5jX3Rlc3Qo
J1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0aGUgcHJldmlvdXMg
cHVsbCBjYWxsXCdzIHByb21pc2UgZnVsZmlsbHMnKTsKK3ZhciB0ZXN0MTEgPSBhc3luY190ZXN0
KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3Vz
IHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJywgeyB0aW1lb3V0OiA1MCB9KTsKIHRlc3Qx
MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciByZXNvbHZlOwogICAgIHZhciByZXR1cm5lZFBy
b21pc2U7CkBAIC01NjUsNyArNTY1LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICB9KTsKIH0s
ICdSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3
aGVuIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwogCi12YXIgdGVzdDE2ID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMg
bWV0aG9kcycpOwordmFyIHRlc3QxNiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91
bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMnLCB7IHRpbWVvdXQ6
IDUwIH0pOwogdGVzdDE2LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHN0YXJ0Q2FsbGVkID0g
MDsKICAgICB2YXIgcHVsbENhbGxlZCA9IDA7CkBAIC02NTgsNyArNjU4LDcgQEAgdGVzdDE3LnN0
ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSkpLmNhdGNoKHRlc3QxNy5zdGVwX2Z1bmMoZnVuY3Rpb24o
ZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9ICkpOwogfSk7CiAKLXZhciB0ZXN0MTggPSBhc3lu
Y190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRv
bSBwdXNoIHNvdXJjZScpOwordmFyIHRlc3QxOCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFt
IGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlJywgeyB0aW1l
b3V0OiA1MCB9KTsKIHRlc3QxOC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBwdWxsQ2hlY2tl
ZCA9IGZhbHNlOwogICAgIHZhciByYW5kb21Tb3VyY2UgPSBuZXcgUmFuZG9tUHVzaFNvdXJjZSg4
KTsKQEAgLTcwMiw3ICs3MDIsNyBAQCB0ZXN0MTguc3RlcChmdW5jdGlvbigpIHsKICAgICB9KSwg
dGVzdDE4LnN0ZXBfZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF9yZWFjaGVkKGUpOyB9KSk7CiB9
KTsKIAotdmFyIHRlc3QxOSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9u
IHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZScpOwordmFyIHRlc3QxOSA9IGFzeW5j
X3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBw
dWxsIHNvdXJjZScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MTkuc3RlcChmdW5jdGlvbigpIHsK
ICAgICB2YXIgcnMgPSBzZXF1ZW50aWFsUmVhZGFibGVTdHJlYW0oMTApOwogCkBAIC03MTQsNyAr
NzE0LDcgQEAgdGVzdDE5LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSkpOwogfSk7CiAKLXZhciB0
ZXN0MjAgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFw
dGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZScpOwordmFyIHRlc3QyMCA9IGFzeW5jX3Rlc3QoJ1Jl
YWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291
cmNlJywgeyB0aW1lb3V0OiA1MCB9KTsKIHRlc3QyMC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZh
ciBycyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCwgeyBhc3luYzogdHJ1ZSB9KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253436</attachid>
            <date>2015-05-20 03:18:10 -0700</date>
            <delta_ts>2015-05-20 09:30:38 -0700</delta_ts>
            <desc>Updating according review</desc>
            <filename>bug-144790-20150520121804.patch</filename>
            <type>text/plain</type>
            <size>45549</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI0MDQ1ZTEyYzhjNzJj
ODMxMDE4MTRiMmM4OWExODcxOGE2M2RhNi4uODZiMWU2OWVmMWUwODQ1M2ZiMDE1ZDNiNzJmYTVj
YjJiNDU1MmE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE1LTA1LTIwICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IEltcGxlbWVudCBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFkIG1ldGhvZCBpbiBjbG9zZWQgYW5k
IGVycm9yZWQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NDc5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlYWRlciBkZWxlZ2F0ZXMgcmVhZCgpIHByb21pc2UgaGFuZGxpbmcgdG8gaXRzIHN0
cmVhbSBleGNlcHQgaWYgcmVhZGVyIGlzIG5vIGxvbmdlciBsb2NraW5nIHRoZSBzdHJlYW0gYW5k
IHN0cmVhbSBpcyByZWFkYWJsZS4KKyAgICAgICAgU3RvcmluZyBvZiByZWFkZXIgcmVhZCgpIHBy
b21pc2UgY2FsbGJhY2tzIGFzIGEgVmVjdG9yIGluIFJlYWRhYmxlU3RyZWFtLgorICAgICAgICBB
ZGRlZCByZXNvbHV0aW9uL3JlamVjdGlvbiBvZiByZWFkKCkgcHJvbWlzZXMgaW4gY2FzZSBvZiBl
cnJvcmVkL2Nsb3NlZCBzdHJlYW1zLgorCisgICAgICAgIFRlc3Q6IHN0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLXJlYWRlci1yZWFkLmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVh
bTo6Y2xlYW5DYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNo
YW5nZVN0YXRlVG9DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNo
YW5nZVN0YXRlVG9FcnJvcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpj
bG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnJlYWQpOgorICAgICAg
ICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW06OlJlYWRDYWxsYmFja3M6OlJlYWRDYWxsYmFja3MpOgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1SZWFkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVTdHJlYW1S
ZWFkZXI6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y2xvc2VkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06Omhhc1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OnJlYWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Jl
YWRhYmxlSlNTdHJlYW0uaDoKKwogMjAxNS0wNS0xNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIE9yZ2FuaXplIGV2ZW50IGhhbmRsZXJzIGEgYml0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0
aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JdGVyYXRv
ck9wZXJhdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2UwNmExN2VlNjY4ODQzZDZkOTg0MzMxY2I5ZjBj
ZTU0OGJjZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5k
ZWYgV2ViQ29yZV9GV0RfSXRlcmF0b3JPcGVyYXRpb25zX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
SXRlcmF0b3JPcGVyYXRpb25zX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JdGVyYXRvck9w
ZXJhdGlvbnMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggYmVjM2QzMDA3NzA2NTU0ZTNiOGRhYTljMGE2MmFh
YjJjZjg4NDcyMy4uNzgwMDk4ZWMzMzA4M2QwMWIyMDdlOTU0NGM2NDk1MzY4MTg2OTMzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVl
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjIs
NiArNjIsOCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjbGVhckNhbGxiYWNrcygpCiB7CiAgICAg
bV9jbG9zZWRTdWNjZXNzQ2FsbGJhY2sgPSBudWxscHRyOwogICAgIG1fY2xvc2VkRmFpbHVyZUNh
bGxiYWNrID0gbnVsbHB0cjsKKworICAgIG1fcmVhZFJlcXVlc3RzLmNsZWFyKCk7CiB9CiAKIHZv
aWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQpAQCAtNzYsNiArNzgsOSBA
QCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvQ2xvc2VkKCkKICAgICBpZiAobV9j
bG9zZWRTdWNjZXNzQ2FsbGJhY2spCiAgICAgICAgIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrKCk7
CiAKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlYWRSZXF1ZXN0cykKKyAgICAgICAgcmVx
dWVzdC5zdWNjZXNzQ2FsbGJhY2soSlNDOjpqc1VuZGVmaW5lZCgpKTsKKwogICAgIGNsZWFyQ2Fs
bGJhY2tzKCk7CiB9CiAKQEAgLTg4LDggKzkzLDEyIEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OmNo
YW5nZVN0YXRlVG9FcnJvcmVkKCkKICAgICBpZiAobV9yZWFkZXIpCiAgICAgICAgIG1fcmVsZWFz
ZWRSZWFkZXJzLmFwcGVuZChXVEY6Om1vdmUobV9yZWFkZXIpKTsKIAorICAgIEpTQzo6SlNWYWx1
ZSBlcnJvciA9IHRoaXMtPmVycm9yKCk7CiAgICAgaWYgKG1fY2xvc2VkRmFpbHVyZUNhbGxiYWNr
KQotICAgICAgICBtX2Nsb3NlZEZhaWx1cmVDYWxsYmFjayhlcnJvcigpKTsKKyAgICAgICAgbV9j
bG9zZWRGYWlsdXJlQ2FsbGJhY2soZXJyb3IpOworCisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDog
bV9yZWFkUmVxdWVzdHMpCisgICAgICAgIHJlcXVlc3QuZmFpbHVyZUNhbGxiYWNrKGVycm9yKTsK
IAogICAgIGNsZWFyQ2FsbGJhY2tzKCk7CiB9CkBAIC0xMTAsNyArMTE5LDcgQEAgUmVhZGFibGVT
dHJlYW1SZWFkZXImIFJlYWRhYmxlU3RyZWFtOjpnZXRSZWFkZXIoKQogICAgIHJldHVybiByZWFk
ZXI7CiB9CiAKLXZvaWQgUmVhZGFibGVTdHJlYW06OmNsb3NlZChDbG9zZWRTdWNjZXNzQ2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrLCBDbG9zZWRGYWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNr
KQordm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKENsb3NlZFN1Y2Nlc3NDYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2ssIEZhaWx1cmVDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2spCiB7CiAgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkgewogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsK
QEAgLTEyNCw2ICsxMzMsMjQgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKENsb3NlZFN1
Y2Nlc3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIENsb3NlZEZhaWx1cmUKICAgICBtX2Nsb3Nl
ZEZhaWx1cmVDYWxsYmFjayA9IFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spOwogfQogCit2b2lk
IFJlYWRhYmxlU3RyZWFtOjpyZWFkKFJlYWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNr
LCBGYWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQoreworICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpDbG9zZWQpIHsKKyAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKEpTQzo6anNVbmRlZmlu
ZWQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkVycm9yZWQpIHsKKyAgICAgICAgZmFpbHVyZUNhbGxiYWNrKGVycm9yKCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChoYXNWYWx1ZSgpKSB7CisgICAgICAgIHN1Y2Nlc3NDYWxs
YmFjayhyZWFkKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVhZFJlcXVlc3Rz
LmFwcGVuZChSZWFkQ2FsbGJhY2tzIHsgV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6
bW92ZShmYWlsdXJlQ2FsbGJhY2spIH0pOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRv
IHB1bGwuCit9CisKIHZvaWQgUmVhZGFibGVTdHJlYW06OnN0YXJ0KCkKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW0uaAppbmRleCBjODc0MzY1NzVjMzRlY2ZhN2MwYWEwNjkzM2I2NGMzOWMxZjVkMDkxLi43
MTgyZjlhNjMwNzY0NDgzYmY0OWQwMDQ0MDEwNjg2ZTEyMjRjYTE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaApAQCAtNzUsOSArNzUsMTMg
QEAgcHVibGljOgogCiAgICAgUmVhZGFibGVTdHJlYW1Tb3VyY2UmIHNvdXJjZSgpIHsgcmV0dXJu
IG1fc291cmNlLmdldCgpOyB9CiAKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChKU0M6
OkpTVmFsdWUpPiBGYWlsdXJlQ2FsbGJhY2s7CisKICAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBDbG9zZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9u
PHZvaWQoSlNDOjpKU1ZhbHVlKT4gQ2xvc2VkRmFpbHVyZUNhbGxiYWNrOwotICAgIHZvaWQgY2xv
c2VkKENsb3NlZFN1Y2Nlc3NDYWxsYmFjaywgQ2xvc2VkRmFpbHVyZUNhbGxiYWNrKTsKKyAgICB2
b2lkIGNsb3NlZChDbG9zZWRTdWNjZXNzQ2FsbGJhY2ssIEZhaWx1cmVDYWxsYmFjayk7CisKKyAg
ICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChKU0M6OkpTVmFsdWUpPiBSZWFkU3VjY2Vzc0Nh
bGxiYWNrOworICAgIHZvaWQgcmVhZChSZWFkU3VjY2Vzc0NhbGxiYWNrLCBGYWlsdXJlQ2FsbGJh
Y2spOwogCiBwcm90ZWN0ZWQ6CiAgICAgUmVhZGFibGVTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFJlZjxSZWFkYWJsZVN0cmVhbVNvdXJjZT4mJik7CkBAIC04OSwxMSArOTMsMjAgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJDYWxsYmFja3MoKTsKIAorICAgIHZpcnR1YWwgYm9v
bCBoYXNWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSByZWFkKCkg
PSAwOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRhYmxlU3RyZWFtUmVhZGVyPiBtX3JlYWRl
cjsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJlYWRhYmxlU3RyZWFtUmVhZGVyPj4gbV9y
ZWxlYXNlZFJlYWRlcnM7CiAKICAgICBDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgbV9jbG9zZWRTdWNj
ZXNzQ2FsbGJhY2s7Ci0gICAgQ2xvc2VkRmFpbHVyZUNhbGxiYWNrIG1fY2xvc2VkRmFpbHVyZUNh
bGxiYWNrOworICAgIEZhaWx1cmVDYWxsYmFjayBtX2Nsb3NlZEZhaWx1cmVDYWxsYmFjazsKKwor
ICAgIHN0cnVjdCBSZWFkQ2FsbGJhY2tzIHsKKyAgICAgICAgUmVhZFN1Y2Nlc3NDYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2s7CisgICAgICAgIEZhaWx1cmVDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2s7
CisgICAgfTsKKyAgICBWZWN0b3I8UmVhZENhbGxiYWNrcz4gbV9yZWFkUmVxdWVzdHM7CiAKICAg
ICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJlYWRhYmxlIH07CiAgICAgUmVmPFJlYWRhYmxlU3Ry
ZWFtU291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCmluZGV4IDQ0MjhkYWI0ZDc1MjkxYWNj
ZTQ4NmJiMWVjOGY1YzRiYTBkZWM4NTkuLjNkNzZkODY1OTYxOWEzZmM3NDMzMGNjZWUzMmVlZDY4
MTc5ODdlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcApAQCAtMzAsMTEgKzMwLDEzIEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKIAorI2luY2x1ZGUg
PHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKwogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9z
ZWQoUmVhZGFibGVTdHJlYW06OkNsb3NlZFN1Y2Nlc3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ss
IFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRGYWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQor
dm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRT
dWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBSZWFkYWJsZVN0cmVhbTo6RmFpbHVyZUNh
bGxiYWNrIGZhaWx1cmVDYWxsYmFjaykKIHsKICAgICBpZiAobV9zdHJlYW0uaXNSZWFkYWJsZSgp
ICYmIG1fc3RyZWFtLnJlYWRlcigpICE9IHRoaXMpIHsKICAgICAgICAgc3VjY2Vzc0NhbGxiYWNr
KCk7CkBAIC00Myw2ICs0NSwxNSBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQo
UmVhZGFibGVTdHJlYW06OkNsb3NlZFN1Y2Nlc3NDYWxsYmFjayBzdWNjZXNzQwogICAgIG1fc3Ry
ZWFtLmNsb3NlZChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVD
YWxsYmFjaykpOwogfQogCit2b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKFJlYWRhYmxl
U3RyZWFtOjpSZWFkU3VjY2Vzc0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgUmVhZGFibGVTdHJl
YW06OkZhaWx1cmVDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2spCit7CisgICAgaWYgKG1fc3RyZWFt
LmlzUmVhZGFibGUoKSAmJiBtX3N0cmVhbS5yZWFkZXIoKSAhPSB0aGlzKSB7CisgICAgICAgIHN1
Y2Nlc3NDYWxsYmFjayhKU0M6OmpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1fc3RyZWFtLnJlYWQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92
ZShmYWlsdXJlQ2FsbGJhY2spKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKaW5kZXggNGZm
NDJkMjE0MWIzYjVjY2JkZGQ1M2NkYzNhZDU1M2IyYTgyNjdlMC4uOTJjZTE4OTU1NzY1MjJmMmYw
YmExYjE4MWY1NTBiYWY1ZTczMjUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKQEAgLTUxLDcgKzUxLDggQEAgcHVi
bGljOgogICAgIFJlYWRhYmxlU3RyZWFtUmVhZGVyKFJlYWRhYmxlU3RyZWFtJiBzdHJlYW0pCiAg
ICAgICAgIDogbV9zdHJlYW0oc3RyZWFtKSB7IH0KIAotICAgIHZvaWQgY2xvc2VkKFJlYWRhYmxl
U3RyZWFtOjpDbG9zZWRTdWNjZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRGYWls
dXJlQ2FsbGJhY2spOworICAgIHZvaWQgY2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRTdWNj
ZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpGYWlsdXJlQ2FsbGJhY2spOworICAgIHZvaWQg
cmVhZChSZWFkYWJsZVN0cmVhbTo6UmVhZFN1Y2Nlc3NDYWxsYmFjaywgUmVhZGFibGVTdHJlYW06
OkZhaWx1cmVDYWxsYmFjayk7CiAKICAgICB2b2lkIHJlZigpIHsgbV9zdHJlYW0ucmVmKCk7IH0K
ICAgICB2b2lkIGRlcmVmKCkgeyBtX3N0cmVhbS5kZXJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20u
Y3BwCmluZGV4IGQ2ZWNhYzI0MTIwNmUxMjJjOGNkYmQyOWM4YzQ5ZGFhNTcxZGE2ZDcuLmU3MzMw
YTQ0N2VjNGI4ZmJmZjA2MmExMDM0ZDdiMWUwMmY2YTA5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20u
Y3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgogI2lu
Y2x1ZGUgIlJlYWRhYmxlSlNTdHJlYW0uaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Cisj
aW5jbHVkZSA8cnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTQ1LDggKzQ2LDE5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpy
ZWFkKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIGVycm9yID0gY3JlYXRlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJyZWFkIGlzIG5vdCBpbXBsZW1lbnRlZCIpKTsKLSAgICByZXR1
cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7CisgICAgSlNQcm9taXNl
RGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhl
YywgZ2xvYmFsT2JqZWN0KCkpOworICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKGV4ZWMsIGds
b2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQpOworICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNr
ID0gW3dyYXBwZXJdKEpTVmFsdWUgdmFsdWUpIG11dGFibGUgeworICAgICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGNyZWF0ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KHdyYXBwZXIucHJvbWlzZSgpLT5nbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCB2YWx1ZSwgdmFsdWUuaXNVbmRlZmluZWQoKSk7Cisg
ICAgICAgIHdyYXBwZXIucmVzb2x2ZShyZXN1bHQpOworICAgIH07CisgICAgYXV0byBmYWlsdXJl
Q2FsbGJhY2sgPSBbd3JhcHBlcl0oSlNWYWx1ZSB2YWx1ZSkgbXV0YWJsZSB7CisgICAgICAgIHdy
YXBwZXIucmVqZWN0KHZhbHVlKTsKKyAgICB9OworCisgICAgaW1wbCgpLnJlYWQoV1RGOjptb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKKworICAgIHJl
dHVybiB3cmFwcGVyLnByb21pc2UoKTsKIH0KIAogc3RhdGljIEpTUHJvbWlzZURlZmVycmVkKiBn
ZXRPckNyZWF0ZVByb21pc2VEZWZlcnJlZEZyb21PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHRoaXNPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByaXZhdGVOYW1l
ICZuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVK
U1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFt
LmNwcAppbmRleCBhZDFlYzc5MjFlYmQxMmQ3OWZjY2JlMTQ1MGRlMjQxZWRmM2E3NjM4Li5iYjM3
NDVjNDY4NDhlZWM3NTU5Y2RlZTRiMDJlNTM3ZTZhN2UzODZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAtMTY2LDYgKzE2NiwxOCBA
QCB2b2lkIFJlYWRhYmxlSlNTdHJlYW06OnN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIGV4ZWMp
CiAgICAgY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKIH0KIAorYm9vbCBSZWFkYWJsZUpTU3RyZWFt
OjpoYXNWYWx1ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK0pTVmFsdWUgUmVhZGFibGVKU1N0cmVhbTo6cmVhZCgpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Jl
YWRhYmxlSlNTdHJlYW0uaAppbmRleCA0ZDUxZDAxYmZmODRmY2NmNzFkZWM0NjYyYzU4ZjY3NzJm
YTc4ZjIzLi42NGE2MzNiNzgwOTAzNjA2MDE4ODBhYTZlMDk0ZDRhNDk0N2E4Yzg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCkBAIC03Myw2ICs3
Myw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgUmVmPFJlYWRhYmxlSlNTdHJlYW06OlNvdXJjZT4mJik7CiAKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEpTQzo6
SlNWYWx1ZSByZWFkKCkgb3ZlcnJpZGU7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZGFibGVT
dHJlYW1Db250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPiBtX2Vycm9yOwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxYmY3NjkxNjIyZDMxNzc5YWNlMGNjOGRkMmQ3YTNi
M2NmMzMyNDBhLi4yNmQ5NmRlMWEzNDZjOTc0NjM5NjYxNzViODRmYmFhODAzNWYwYWI3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUtMDUtMjAgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8
Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIHJlYWQgbWV0aG9kIGluIGNsb3NlZCBhbmQgZXJyb3JlZCBzdGF0ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzkwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIG5ldyB0ZXN0
LiBSZWJhc2luZyBvZiByZWZlcmVuY2UgdGVzdHMgKGV4cGVjdGF0aW9ucyBhbmQgdGltZW91dGlu
Zy91bnRpbWVvdXRpbmcgdGVzdHMpLgorCisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1zdHJl
YW0tcmVhZGVyLXJlYWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlYW1zL3Jl
YWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5k
ZXJseWluZy1zb3VyY2VzLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS5o
dG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS1jYW5jZWwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS10ZW1wbGF0ZWQuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbDoKKwogMjAxNS0wNS0xNyAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIE9yZ2FuaXplIGV2ZW50IGhhbmRsZXJzIGEgYml0CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVh
ZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXItcmVhZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FmNDNlMWNlNjI2NjI0OGIzZTRmNzQ4
YjE4ZTA0ZWMwZDJjZGNkMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAK
KworUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQgCitQQVNT
IFJlYWRpbmcgdHdpY2Ugb24gYSBjbG9zZWQgc3RyZWFtIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9u
IGFuIGVycm9yZWQgc3RyZWFtIAorUEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQg
Z2V0cyBlcnJvcmVkIAorUEFTUyBSZWFkaW5nIHdpdGhpbiBhIHJlYWQgcHJvbWlzZSByZXNvbHZl
IGNhbGxiYWNrIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQgCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdmZTU0MTRkNTc5OWM3ZDRkOWJkNTIzNGNjYzdkM2E1ZTkxMWZhZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC5o
dG1sCkBAIC0wLDAgKzEsMTY0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPScuLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCit2YXIgdDEg
PSBhc3luY190ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQn
KTsKK3QxLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFyIHJz
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAg
ICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgfSk7CisgICAgdmFyIGNv
dW50ZXIgPSAwOworICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICAgIHJlYWRl
ci5yZWFkKCkudGhlbih0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGFz
c2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVl
IH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZScpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGNvdW50ZXIsIDEpOworICAgICAgICBjb3VudGVyKys7CisgICAgfSkpOworICAgIHJl
YWRlci5yZWFkKCkudGhlbih0MS5zdGVwX2Z1bmMoZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0
cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9zZScpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKGNvdW50ZXIsIDIpOworICAgICAgICBjb3VudGVyKys7CisgICAgICAgIHQxLmRv
bmUoKTsKKyAgICB9KSk7CisgICAgcmVhZGVyLmNsb3NlZC50aGVuKHQxLnN0ZXBfZnVuYyhmdW5j
dGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsKKyAgICAgICAgY291
bnRlcisrOworICAgIH0pKTsKKworICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKK30pOworCit2YXIg
dDIgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbScpOwordDIu
c3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJvbGxlcjsKKyAgICB2YXIgcnMgPSBuZXcg
UmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAg
ICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICAKKyAgICBjb250cm9s
bGVyLmNsb3NlKCk7CisgICAgCisgICAgdmFyIGNvdW50ZXIgPSAwOworICAgIHZhciByZWFkZXIg
PSBycy5nZXRSZWFkZXIoKTsKKworICAgIHJlYWRlci5yZWFkKCkudGhlbih0Mi5zdGVwX2Z1bmMo
ZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwg
d2l0aCBjbG9zZScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDApOworICAgICAg
ICBjb3VudGVyKys7CisgICAgfSkpOworICAgIHJlYWRlci5yZWFkKCkudGhlbih0Mi5zdGVwX2Z1
bmMoZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3Vs
dCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZp
bGwgd2l0aCBjbG9zZScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDEpOworICAg
ICAgICBjb3VudGVyKys7CisgICAgfSkpOworICAgIHJlYWRlci5jbG9zZWQudGhlbih0Mi5zdGVw
X2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMik7Cisg
ICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgdDIuZG9uZSgpOworICAgIH0pKTsKK30pOworCit2
YXIgdDMgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7
Cit0My5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb250cm9sbGVyOworICAgIHZhciBycyA9
IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAg
ICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfQorICAgIH0pOworICAKKyAgICB2YXIg
bXlFcnJvciA9IHsgcG90YXRvOiAibWFzaGVkIiB9OyAKKyAgICBjb250cm9sbGVyLmVycm9yKG15
RXJyb3IpOworICAgIAorICAgIHZhciBjb3VudGVyID0gMDsKKyAgICB2YXIgcmVhZGVyID0gcnMu
Z2V0UmVhZGVyKCk7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odDMuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIHJlamVjdCBv
biBhbiBlcnJvcmVkIHN0cmVhbScpOworICAgIH0pLCB0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJy
KSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKKyAgICAgICAgYXNzZXJ0
X2VxdWFscyhjb3VudGVyLCAwKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICBy
ZWFkZXIucmVhZCgpLnRoZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3Nl
cnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIHJlamVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScp
OworICAgIH0pLCB0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9l
cXVhbHMobXlFcnJvciwgZXJyKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAxKTsK
KyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFkZXIuY2xvc2VkLnRoZW4odDMu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkg
c2hvdWxkIHJlamVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworICAgIH0pLCB0My5zdGVwX2Z1
bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAyKTsKKyAgICAgICAgY291bnRlcisrOwor
ICAgICAgICB0My5kb25lKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0NCA9IGFzeW5jX3Rlc3Qo
J1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQnKTsKK3Q0LnN0ZXAo
ZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFyIHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGNv
bnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgfSk7CisgICAKKyAgICB2YXIgY291bnRlciA9
IDA7CisgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgICAgcmVhZGVyLnJlYWQo
KS50aGVuKHQ0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgncmVhZCgpIHNob3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKyAgICB9KSwg
dDQuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJy
b3IsIGVycik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMSk7CisgICAgICAgIGNv
dW50ZXIrKzsKKyAgICB9KSk7CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHQ0LnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCByZWpl
Y3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKyAgICB9KSwgdDQuc3RlcF9mdW5jKGZ1bmN0aW9u
KGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVycik7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoY291bnRlciwgMik7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgdDQu
ZG9uZSgpOworICAgIH0pKTsKKyAgICByZWFkZXIuY2xvc2VkLnRoZW4odDQuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIHJlamVj
dCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworICAgIH0pLCB0NC5zdGVwX2Z1bmMoZnVuY3Rpb24o
ZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKwor
ICAgIHZhciBteUVycm9yID0geyBwb3RhdG86ICdtYXNoZWQnIH07IAorICAgIGNvbnRyb2xsZXIu
ZXJyb3IobXlFcnJvcik7CisgfSk7CisKK3ZhciB0NSA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgd2l0
aGluIGEgcmVhZCBwcm9taXNlIHJlc29sdmUgY2FsbGJhY2sgb24gYSBzdHJlYW0gdGhhdCBnZXRz
IGNsb3NlZCcpOwordDUuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJvbGxlcjsKKyAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24o
YykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9KTsKKwor
ICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICAgIHJlYWRlci5yZWFkKCkudGhl
bih0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHJlYWRlci5yZWFkKCkudGhlbih0
NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0NS5kb25lKCk7CisgICAgICAg
IH0pKTsKKyAgICB9KSk7CisgICAgY29udHJvbGxlci5jbG9zZSgpOworfSk7CisKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVj
dGVkLnR4dAppbmRleCAxOWNhMzU1NTk1NzRlMzEzMDk5ZmM0ODgyY2FkZDE0MTJhOWEyMjgwLi5i
NzU1ODFiMWQ5NWMwNDE3MDhlNTEzZGU5YmVjMTI4NWEzMTcxNDk1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1z
b3VyY2VzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dApAQCAtNSw4
ICs1LDggQEAgRkFJTCBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgZ2V0dGVyIGFz
c2VydF90aHJvd3M6IGNvbnN0cnVjdGluZyB0aGUgc3QKIFBBU1MgVW5kZXJseWluZyBzb3VyY2Ug
c3RhcnQ6IHRocm93aW5nIG1ldGhvZCAKIFRJTUVPVVQgVW5kZXJseWluZyBzb3VyY2U6IHRocm93
aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1bGwpIFRlc3QgdGltZWQgb3V0CiBUSU1FT1VUIFVu
ZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5pdGlhbCBwdWxsKSBUZXN0
IHRpbWVkIG91dAotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIg
KHNlY29uZCBwdWxsKSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBVbmRlcmx5aW5nIHNv
dXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKHNlY29uZCBwdWxsKSByZWFkIGlzIG5vdCBpbXBs
ZW1lbnRlZAorVElNRU9VVCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIg
KHNlY29uZCBwdWxsKSBUZXN0IHRpbWVkIG91dAorVElNRU9VVCBVbmRlcmx5aW5nIHNvdXJjZTog
dGhyb3dpbmcgcHVsbCBtZXRob2QgKHNlY29uZCBwdWxsKSBUZXN0IHRpbWVkIG91dAogRkFJTCBV
bmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgY2FuY2VsIGdldHRlciBjYW5jZWwgaXMgbm90IGlt
cGxlbWVudGVkCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBjYW5jZWwgbWV0aG9k
IGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHRocm93
aW5nIHN0cmF0ZWd5IGdldHRlciBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0
aGUgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBu
b3QgdGhyb3cKQEAgLTE4LDcgKzE4LDcgQEAgRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogc3RyYXRl
Z3kuc2l6ZSByZXR1cm5pbmcgTmFOIGFzc2VydF91bnJlYWNoZWQ6IGVucXVldWUgZGkKIEZBSUwg
VW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nIC1JbmZpbml0eSBhc3Nl
cnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpZG4ndCB0aHJvdyBSZWFjaGVkIHVucmVhY2hhYmxlIGNv
ZGUKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nICtJbmZp
bml0eSBhc3NlcnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpZG4ndCB0aHJvdyBSZWFjaGVkIHVucmVh
Y2hhYmxlIGNvZGUKIFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ug
b24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCi1GQUlMIFVu
ZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVh
bSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitG
QUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVtcHR5
IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIGFzc2VydF9vYmplY3RfZXF1YWxz
OiByZWFkKCkgc2hvdWxkIHJlYWQgdGhlIGVucXVldWVkIGNodW5rIHByb3BlcnR5ICJkb25lIiBl
eHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290IG9iamVjdCAiW29iamVjdCBPYmpl
Y3RdIgogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBj
YW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVk
CiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNh
bmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQK
IFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxk
IHRocm93IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sCmlu
ZGV4IGJjNDE3MDkyNGI3YjFhYjkzMzIzNmM0MmI0MWVjOWY4ZTVkY2JjZGYuLjdiN2YxYjAxZWZi
MWZkMzgyZmE0MDY1ZWM4ZjgxNGUxMjQ1M2Q0YmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQt
dW5kZXJseWluZy1zb3VyY2VzLmh0bWwKQEAgLTMxLDcgKzMxLDcgQEAgdmFyIHRlc3QxID0gYXN5
bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFs
IHB1bGwpJywKIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3
IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgICAgICBnZXQgcHVsbCgpIHsKKyAgICAgICAgcHVsbDogZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKICAgICAgICAgfQogICAgIH0pOwpAQCAtNjEsMTIg
KzYxLDEyIEBAIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIH0pKTsKIH0pOwogCi12
YXIgdGVzdDMgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBn
ZXR0ZXIgKHNlY29uZCBwdWxsKScpOwordmFyIHRlc3QzID0gYXN5bmNfdGVzdCgnVW5kZXJseWlu
ZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChzZWNvbmQgcHVsbCknLCB7IHRpbWVvdXQ6
IDUwIH0pOwogdGVzdDMuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgdGhlRXJyb3IgPSBuZXcg
RXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwogICAgIHZhciBjb3VudGVyID0gMDsKICAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewotICAgICAgICBnZXQgcHVsbCgpIHsKKyAgICAgICAg
cHVsbDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICArK2NvdW50ZXI7CiAgICAgICAgICAgICBp
ZiAoY291bnRlciA9PT0gMSkgewogICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0My5zdGVwX2Z1
bmMoZnVuY3Rpb24oYykgeyBjLmVucXVldWUoJ2EnKTsgfSkKQEAgLTg5LDcgKzg5LDcgQEAgdGVz
dDMuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0NCA9IGFz
eW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoc2Vjb25k
IHB1bGwpJyk7Cit2YXIgdGVzdDQgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhy
b3dpbmcgcHVsbCBtZXRob2QgKHNlY29uZCBwdWxsKScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0
NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlx
dWUgc3RyaW5nJyk7CiAgICAgdmFyIGNvdW50ZXIgPSAwOwpAQCAtMTE5LDcgKzExOSw3IEBAIHZh
ciB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBjYW5jZWwg
Z2V0dGVyJyk7CiB0ZXN0NS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVFcnJvciA9IG5l
dyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKLSAgICAgICAgZ2V0IGNhbmNlbCgpIHsKKyAgICAgICAgY2FuY2VsOiBmdW5jdGlvbigp
IHsKICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwogICAgICAgICB9CiAgICAgfSk7CkBAIC0x
NTksNyArMTU5LDcgQEAgdGVzdDcuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHN0YXJ0
ZWQgPSB0cnVlOwogICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyh0aGVFcnJvciwgZnVuY3Rpb24o
KSB7IGMuZW5xdWV1ZSgnYScpOyB9LCAnZW5xdWV1ZSBzaG91bGQgdGhyb3cgdGhlIGVycm9yJyk7
CiAgICAgICAgIH0sCi0gICAgICAgIGdldCBzdHJhdGVneSgpIHsKKyAgICAgICAgc3RyYXRlZ3k6
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CiAgICAgICAgIH0KICAg
ICB9KTsKQEAgLTQzNyw3ICs0MzcsNyBAQCB0ZXN0MTguc3RlcChmdW5jdGlvbigpIHsKICAgICB9
KSk7CiB9KTsKIAotdmFyIHRlc3QxOSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdycsIHsgdGltZW91dDogNTAgfSk7
Cit2YXIgdGVzdDE5ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93Jyk7CiB0ZXN0MTkuc3RlcChmdW5jdGlvbigpIHsK
ICAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2JvbycpOwogICAgIHZhciBzdGFydENhbGxl
ZCA9IGZhbHNlOwpAQCAtNDU0LDcgKzQ1NCw3IEBAIHRlc3QxOS5zdGVwKGZ1bmN0aW9uKCkgewog
ICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDIwID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZScsIHsg
dGltZW91dDogNTAgfSk7Cit2YXIgdGVzdDIwID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZScpOwog
dGVzdDIwLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdi
b28nKTsKICAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKQEAgLTQ3MSw3ICs0NzEsNyBAQCB0
ZXN0MjAuc3RlcChmdW5jdGlvbigpIHsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QyMSA9IGFz
eW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNsb3NlIHNo
b3VsZCB0aHJvdycsIHsgdGltZW91dDogNTAgfSk7Cit2YXIgdGVzdDIxID0gYXN5bmNfdGVzdCgn
VW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIHRocm93
Jyk7CiB0ZXN0MjEuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxz
ZTsKICAgICBuZXcgUmVhZGFibGVTdHJlYW0oewpAQCAtNDg1LDQgKzQ4NSw1IEBAIHRlc3QyMS5z
dGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB0ZXN0MjEuZG9uZSgnY2xvc2VkIHNob3VsZCBmdWxm
aWxsJyk7CiAgICAgfSkpOwogfSk7CisKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVn
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dAppbmRleCA3YmRmM2RlYzZk
NTk0M2ZmZTUyY2Y5Zjg1YWI0ZDRlMDU3NzViNWYwLi5kN2NiYjc1ZjM3MjM2OTIyZWVlNWFjODAy
YjExNmI4M2YwMTI1YmUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAKIFBBU1MgQ2FuIGNvbnN0
cnVjdCBhIENvdW50UXVldWluZ1N0cmF0ZWd5IHdpdGggYSB2YWxpZCBoaWdoIHdhdGVyIG1hcmsg
CiBQQVNTIEdpdmVzIGEgUmFuZ2VFcnJvciB3aGVuIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUgCiBQ
QVNTIENhbiBjb25zdHJ1Y3QgYSByZWFkYWJsZSBzdHJlYW0gd2l0aCBhIHZhbGlkIENvdW50UXVl
dWluZ1N0cmF0ZWd5IAotRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9m
IGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAwKSByZWFkIGlzIG5v
dCBpbXBsZW1lbnRlZAorVElNRU9VVCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVl
IG9mIGEgUmVhZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAwKSBUZXN0IHRp
bWVkIG91dAogRkFJTCBDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVh
ZGFibGVTdHJlYW0ncyBlbnF1ZXVlIGZ1bmN0aW9uIChIV00gPSAxKSBhc3NlcnRfZXF1YWxzOiBB
ZnRlciAwIHJlYWRzLCAxc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgKHF1ZXVlIG5vdyBj
b250YWlucyAxIGNodW5rKSBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKIEZBSUwgQ29ycmVj
dGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1
ZSBmdW5jdGlvbiAoSFdNID0gNCkgYXNzZXJ0X2VxdWFsczogQWZ0ZXIgMCByZWFkcywgMXN0IGVu
cXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVuaykgZXhw
ZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbCBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVp
bmctc3RyYXRlZ3kuaHRtbAppbmRleCAzYjk2NDViNGY5OTM3ZTRhZTk0NWQ3NWQ0Mjc2YmI1YWE4
YjNkYWNlLi44MmMzODdkZGJiNTcxNThiYTBmN2Y5MmViZGM2NDFhMjBlM2FkZDAzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCkBAIC0xNyw3ICsxNyw3
IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RyYXRlZ3k6
IG5ldyBDb3VudFF1ZXVpbmdTdHJhdGVneSh7ICJoaWdoV2F0ZXJNYXJrIjogNCB9KSB9KTsKIH0s
ICdDYW4gY29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3VudFF1ZXVp
bmdTdHJhdGVneScpOwogCi12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdDb3JyZWN0bHkgZ292ZXJu
cyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW1cJ3MgZW5xdWV1ZSBmdW5jdGlv
biAoSFdNID0gMCknKTsKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ0NvcnJlY3RseSBnb3Zlcm5z
IHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJsZVN0cmVhbVwncyBlbnF1ZXVlIGZ1bmN0aW9u
IChIV00gPSAwKScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewog
ICAgIHZhciBlbnF1ZXVlOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwtZXhwZWN0ZWQudHh0
CmluZGV4IGVkZjkwMTc0MzhkYzc0OWFmNjEwOTlmZTJkYzFhZTZlODI4YzQ5ODAuLjliNzU1NDI4
NThkNTU1M2JiZTM1M2JkYTUyOGYwNDRhMGUwMmNjNTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1jYW5jZWwtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBA
QAogCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogaW50ZWdyYXRpb24gdGVzdCBv
biBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFuZG9tIHB1c2ggc291cmNlIHJl
YWQgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjog
aW50ZWdyYXRpb24gdGVzdCBvbiBhbiBpbmZpbml0ZSBzdHJlYW0gZGVyaXZlZCBmcm9tIGEgcmFu
ZG9tIHB1c2ggc291cmNlIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgUmVhZGFibGVT
dHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwocmVhc29uKSBzaG91bGQgcGFzcyB0aHJvdWdoIHRo
ZSBnaXZlbiByZWFzb24gdG8gdGhlIHVuZGVybHlpbmcgc291cmNlIGNhbmNlbCBpcyBub3QgaW1w
bGVtZW50ZWQKIEZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiBjYW5jZWwoKSBvbiBh
IGxvY2tlZCBzdHJlYW0gc2hvdWxkIGZhaWwgYW5kIG5vdCBjYWxsIHRoZSB1bmRlcmx5aW5nIHNv
dXJjZSBjYW5jZWwgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBSZWFkYWJsZVN0cmVh
bSBjYW5jZWxsYXRpb246IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHVuZGVybHlpbmcgc291
cmNlJ3MgY2FuY2VsIHNob3VsZCBub3QgYWZmZWN0IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSBvZiB0
aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgc3RyZWFtJ3MgY2FuY2VsIGNhbmNlbCBpcyBub3Qg
aW1wbGVtZW50ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQu
dHh0CmluZGV4IGU5ZDg0OTVjNmMxNDZhNjJlNjY3ZmFkOTNiOGU5OTM4NDYzOGM2MDMuLjg5YWU0
OWRlNmNkZDdiNDcwYTVmMTJkM2ExNGZiNWFlNjc2NWMxOTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dApAQCAtNSwyMiArNSwyMiBAQCBQQVNTIFJl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0aW9uIHN0
YXJ0IGFyZ3VtZW50cwogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGlu
aXRpYWwgZ2FyYmFnZSBhcyBjYW5jZWwgYXJndW1lbnQgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNv
bnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHB1bGwgYXJndW1lbnQgCiBQQVNT
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHN0
cmF0ZWd5IGFyZ3VtZW50IAotRkFJTCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJs
ZSB0byByZXR1cm4gYSBwcm9taXNlIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitUSU1FT1VUIFJl
YWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgVGVz
dCB0aW1lZCBvdXQKIFRJTUVPVVQgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUg
dG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0IFRlc3QgdGltZWQgb3V0Ci1GQUlMIFJl
YWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMu
IHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBh
YmxlIHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuIGFzc2VydF9vYmplY3RfZXF1YWxzOiB2
YWx1ZSByZWFkIHNob3VsZCBiZSB0aGUgb25lIGVucXVldWVkIHByb3BlcnR5ICJkb25lIiBleHBl
Y3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290IG9iamVjdCAiW29iamVjdCBPYmplY3Rd
IgogUEFTUyBSZWFkYWJsZVN0cmVhbTogaWYgc3RhcnQgdGhyb3dzIGFuIGVycm9yLCBpdCBzaG91
bGQgYmUgcmUtdGhyb3duIAotRkFJTCBSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBp
dCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBS
ZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1
bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwg
UmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVyIHN0YXJ0IGlmIHRoZSBz
dHJlYW0gaXMgbm93IGNsb3NlZCByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorVElNRU9VVCBSZWFk
YWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbSBU
ZXN0IHRpbWVkIG91dAorVElNRU9VVCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1
bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbCdzIHByb21pc2UgZnVsZmlsbHMgVGVzdCB0
aW1lZCBvdXQKK1BBU1MgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIGFmdGVy
IHN0YXJ0IGlmIHRoZSBzdHJlYW0gaXMgbm93IGNsb3NlZCAKIEZBSUwgUmVhZGFibGVTdHJlYW06
IHNob3VsZCBjYWxsIHB1bGwgYWZ0ZXIgZW5xdWV1ZWluZyBmcm9tIGluc2lkZSBwdWxsICh3aXRo
IG5vIHJlYWQgcmVxdWVzdHMpLCBpZiBzdHJhdGVneSBhbGxvd3MgYXNzZXJ0X2VxdWFsczogcHVs
bCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIGZvdXIgdGltZXMgZXhwZWN0ZWQgNCBidXQgZ290
IDAKIFRJTUVPVVQgUmVhZGFibGVTdHJlYW0gcHVsbCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSBh
IHN0cmVhbS4gVGVzdCB0aW1lZCBvdXQKIEZBSUwgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hv
dWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyByZWFkYWJsZSBidXQgZHJhaW5pbmcgYXNzZXJ0
X2VxdWFsczogdGhlIGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIHRy
dWUgYnV0IGdvdCBmYWxzZQogRkFJTCBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQgdGhy
b3cgd2hlbiB0aGUgc3RyZWFtIGlzIGNsb3NlZCBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVlIGFmdGVy
IGNsb3NlIHNob3VsZCB0aHJvdyBhIFR5cGVFcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBj
LmVucXVldWUoJ2EnKTsgfSIgZGlkIG5vdCB0aHJvdwogRkFJTCBSZWFkYWJsZVN0cmVhbTogZW5x
dWV1ZSBzaG91bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVuIHRoZSBzdHJlYW0gaXMgZXJy
b3JlZCBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyB0aGF0
IGVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IGMuZW5xdWV1ZSgnYScpOyB9IiBkaWQgbm90
IHRocm93Ci1GQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJj
ZSBtZXRob2RzIGFzIG1ldGhvZHMgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQgUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0
aG9kcyBUZXN0IHRpbWVkIG91dAogRkFJTCBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUg
ZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBhbGwgYnV0IHRoZSBmaXJz
dCBlbnF1ZXVlIGNhbGwgYXNzZXJ0X2VxdWFsczogZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJu
IHRydWUgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiBGQUlMIFJlYWRhYmxlU3RyZWFtIHN0
cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSByZXR1cm5pbmcg
dHJ1ZSBmcm9tIGVucXVldWUgaWYgdGhlIGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseSBhc3Nl
cnRfZXF1YWxzOiBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCB0cnVl
IGJ1dCBnb3QgZmFsc2UKLUZBSUwgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRh
cHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwg
UmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSBzeW5jIHB1bGwgc291
cmNlIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGludGVncmF0
aW9uIHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlIHJlYWQgaXMgbm90IGltcGxl
bWVudGVkCitUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5n
IGEgcmFuZG9tIHB1c2ggc291cmNlIFRlc3QgdGltZWQgb3V0CitUSU1FT1VUIFJlYWRhYmxlU3Ry
ZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSBUZXN0IHRp
bWVkIG91dAorVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGlu
ZyBhbiBhc3luYyBwdWxsIHNvdXJjZSBUZXN0IHRpbWVkIG91dAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CmluZGV4IDc1OWYx
M2MzMGU4ZTZiYmNmMmE1Yzk3ZDk0MWYzZWMwYzdiNTQ0YzIuLjA3YzVkNzQwOGJmZDY2MmM5NGNm
ZWZkOTA4MDg0NWFiYWRiYzY3YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQudHh0CkBAIC05LDEwICs5LDEwIEBAIFBBU1MgQ29u
c3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGZhaWwgaWYg
dGhlIHN0cmVhbSBpcyBhCiBQQVNTIEdldHRpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciB2aWEg
Z2V0UmVhZGVyIHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBsb2NrZWQgKHZp
YSBkaXJlY3QgZ2V0UmVhZGVyKSAKIFBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIAogUEFT
UyBDb25zdHJ1Y3RpbmcgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUg
T0sgaWYgdGhlIHN0cmVhbSBpcyBlcnJvcmVkIAotRkFJTCBSZWFkaW5nIGZyb20gYSByZWFkZXIg
Zm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBhdmFpbGFibGUg
cmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQgUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZv
ciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlIFRl
c3QgdGltZWQgb3V0CiBGQUlMIGNhbmNlbCgpIG9uIGEgcmVhZGVyIHJlbGVhc2VzIHRoZSByZWFk
ZXIgYmVmb3JlIGNhbGxpbmcgdGhyb3VnaCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBQQVNT
IGNsb3NlZCBzaG91bGQgYmUgZnVsZmlsbGVkIGFmdGVyIHN0cmVhbSBpcyBjbG9zZWQgKC5jbG9z
ZWQgYWNjZXNzIGJlZm9yZSBhY3F1aXJpbmcpIAogRkFJTCBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZp
bGxlZCBhZnRlciByZWFkZXIgcmVsZWFzZXMgaXRzIGxvY2sgKG11bHRpcGxlIHN0cmVhbSBsb2Nr
cykgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIENhbm5vdCB1c2UgYW4gYWxy
ZWFkeS1yZWxlYXNlZCByZWFkZXIgdG8gdW5sb2NrIGEgc3RyZWFtIGFnYWluIHJlbGVhc2VMb2Nr
IGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBl
cnJvcmluZyB0aGUgc3RyZWFtIHNob3VsZCBzdWNjZWVkIHJlYWQgaXMgbm90IGltcGxlbWVudGVk
CitQQVNTIEdldHRpbmcgYSBzZWNvbmQgcmVhZGVyIGFmdGVyIGVycm9yaW5nIHRoZSBzdHJlYW0g
c2hvdWxkIHN1Y2NlZWQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXIuaHRtbAppbmRleCAzNTgzNDNhZTQyOWI0NjBkYjVkMmFmODMxYjFjMzZkYTdhZjdjZTg5Li44
MTNlMDFlZDQ1YTVlYWQ1MWU5YWQxODE3MTVlZjg0ZmE0MWJiZTA0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCkBAIC0xMDcsNyArMTA3LDcgQEAgdGVz
dChmdW5jdGlvbigpIHsKICAgICBuZXcgUmVhZGFibGVTdHJlYW1SZWFkZXIocnMpOyAvLyBDb25z
dHJ1Y3RpbmcgZGlyZWN0bHkgc2hvdWxkIG5vdCB0aHJvdy4KIH0sICdDb25zdHJ1Y3RpbmcgYSBS
ZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseSBzaG91bGQgYmUgT0sgaWYgdGhlIHN0cmVhbSBp
cyBlcnJvcmVkJyk7CiAKLXZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgZnJvbSBhIHJl
YWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWls
YWJsZScpOwordmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnUmVhZGluZyBmcm9tIGEgcmVhZGVyIGZv
ciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxhYmxlJywg
eyB0aW1lb3V0OiA1MCB9KTsKIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGNvbnRy
b2xsZXI7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQKaW5k
ZXggMjM4YjBmN2ZiNzUwODJiN2I5NmE4M2JhNGQxOWQ4ZjRhMWQ4ZWY3Yi4uM2U4YzJjMWVmZWJk
ZDFkMTc4MjhmYzUwZDc5YzViZTY5YjI3N2Q5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3
IEBAIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVt
cHR5KQogUEFTUyBpbnN0YW5jZXMgaGF2ZSB0aGUgY29ycmVjdCBtZXRob2RzIGFuZCBwcm9wZXJ0
aWVzIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRW1wdHlSZWFkZXIgd2l0aCBSZWFkYWJsZVN0
cmVhbSAoZW1wdHkpIHJlYWRlciAKIFBBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0
aG9kcyBhbmQgcHJvcGVydGllcyAKLUZBSUwgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3Qg
cHJvbWlzZXMgZWFjaCB0aW1lIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitQQVNTIHJlYWQoKSBz
aG91bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSAKIFBBU1MgZ2V0UmVhZGVy
KCkgYWdhaW4gb24gdGhlIHN0cmVhbSBzaG91bGQgZmFpbCAKIEZBSUwgcmVsZWFzaW5nIHRoZSBs
b2NrIHNob3VsZCBjYXVzZSBmdXJ0aGVyIHJlYWQoKSBjYWxscyB0byByZXNvbHZlIGFzIGlmIHRo
ZSBzdHJlYW0gaXMgY2xvc2VkIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBy
ZWxlYXNpbmcgdGhlIGxvY2sgc2hvdWxkIGNhdXNlIGNsb3NlZCB0byBmdWxmaWxsIHJlbGVhc2VM
b2NrIGlzIG5vdCBpbXBsZW1lbnRlZApAQCAtMTQsNyArMTQsNyBAQCBGQUlMIGNhbmNlbCgpIHNo
b3VsZCByZXR1cm4gYSBkaXN0aW5jdCBmdWxmaWxsZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2Vs
IGlzIG5vdAogUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgYmUgT0sgCiBQQVNTIHNob3VsZCBiZSBh
YmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycywgc2luY2UgdGhleSBhcmUgYWxsIGF1dG8t
cmVsZWFzZWQgCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFk
YWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYWxsIGluIHN0YXJ0KSByZWFkZXIgCi1GQUlMIHJlYWQo
KSBzaG91bGQgZnVsZmlsbCB3aXRoIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IHJl
YWQgaXMgbm90IGltcGxlbWVudGVkCitQQVNTIHJlYWQoKSBzaG91bGQgZnVsZmlsbCB3aXRoIHsg
dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IAogUEFTUyBjbG9zZWQgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB1bmRlZmluZWQgCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNDbG9zZWQgd2l0aCBS
ZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpIAogRkFJTCBjYW5jZWwoKSBzaG91bGQg
cmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBu
b3QgaW1wbGVtZW50ZWQKQEAgLTI0LDI2ICsyNCwyMSBAQCBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVk
UlNDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoY2xvc2VkIHZpYSBjYW5jZWwpIHJl
YQogRkFJTCByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRv
bmU6IHRydWUgfSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIGNsb3NlZCBzaG91bGQg
ZnVsZmlsbCB3aXRoIHVuZGVmaW5lZCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlh
IGNhbGwgaW4gc3RhcnQpIAotRkFJTCBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVy
IHRoYXQgYWN0cyBlcnJvcmVkIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitQQVNTIGdldFJlYWRl
cigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgCiBQQVNTIFJ1bm5p
bmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3Jl
ZCB2aWEgY2FsbCBpbiBzdGFydCkgCiBGQUlMIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0
aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVk
CiBGQUlMIHJlYWRlciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQg
cHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBzaG91bGQg
YmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMsIHNpbmNlIHRoZXkgYXJlIGFsbCBh
dXRvLXJlbGVhc2VkIAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRh
YmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0
YXJ0KSAKLUZBSUwgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMg
ZXJyb3JlZCByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJT
RXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcg
YSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXIgCi1USU1FT1VUIGNsb3NlZCBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIFRlc3QgdGltZWQgb3V0Ci1GQUlMIHJlYWQoKSBzaG91
bGQgcmVqZWN0IHdpdGggdGhlIGVycm9yIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIFJ1
bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0g
KHR3byBjaHVua3MgZW5xdWV1ZWQsIHN0aWxsIG9wZW4pIHJlYWRlciAKLUZBSUwgY2FsbGluZyBy
ZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1
bmtzIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdp
dGggd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyByZWFkIGlzIG5vdCBp
bXBsZW1lbnRlZAotRkFJTCByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBl
YWNoIHRpbWUgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgY2FuY2VsKCkgYWZ0ZXIgYSBy
ZWFkKCkgc2hvdWxkIHN0aWxsIGdpdmUgdGhhdCBzaW5nbGUgcmVhZCByZXN1bHQgcmVhZCBpcyBu
b3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQgY2FsbGluZyByZWFkKCkgdHdpY2Ugd2l0aG91dCB3YWl0
aW5nIHdpbGwgZXZlbnR1YWxseSBnaXZlIGJvdGggY2h1bmtzIFRlc3QgdGltZWQgb3V0CitUSU1F
T1VUIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGggd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2
ZSBib3RoIGNodW5rcyBUZXN0IHRpbWVkIG91dAorUEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBk
aXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCitGQUlMIGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgp
IHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IGNhbmNlbCBpcyBub3Qg
aW1wbGVtZW50ZWQKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU1R3b0NodW5rc0Nsb3NlZFJlYWRl
ciB3aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCB0aGVuIGNsb3NlZCkg
cmVhZGVyIAotRkFJTCB0aGlyZCByZWFkKCksIHdpdGhvdXQgd2FpdGluZywgc2hvdWxkIGdpdmUg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQK
LUZBSUwgdGhpcmQgcmVhZCwgd2l0aCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRl
ZmluZWQsIGRvbmU6IHRydWUgfSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBkcmFpbmlu
ZyB0aGUgc3RyZWFtIHZpYSByZWFkKCkgc2hvdWxkIGNhdXNlIHRoZSByZWFkZXIgY2xvc2VkIHBy
b21pc2UgdG8gZnVsZmlsbCByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCByZWxlYXNpbmcg
dGhlIGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGRvIG5vdGhpbmcgcmVh
ZCBpcyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcs
IHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IGFzc2VydF9vYmpl
Y3RfZXF1YWxzOiBmaXJzdCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QgcHJvcGVydHkgImRvbmUi
IGV4cGVjdGVkIG9iamVjdCAiW29iamVjdCBPYmplY3RdIiBnb3Qgb2JqZWN0ICJbb2JqZWN0IE9i
amVjdF0iCitGQUlMIHRoaXJkIHJlYWQsIHdpdGggd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1
ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gYXNzZXJ0X29iamVjdF9lcXVhbHM6IGZpcnN0IHJl
c3VsdCBzaG91bGQgYmUgY29ycmVjdCBwcm9wZXJ0eSAiZG9uZSIgZXhwZWN0ZWQgb2JqZWN0ICJb
b2JqZWN0IE9iamVjdF0iIGdvdCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIKK1BBU1MgZHJhaW5p
bmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3NlZCBw
cm9taXNlIHRvIGZ1bGZpbGwgCitGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBhZnRlciB0aGUgc3Ry
ZWFtIGlzIGNsb3NlZCBzaG91bGQgZG8gbm90aGluZyByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVt
ZW50ZWQKIEZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSByZWFkKCkgdG8gYWN0
IGFzIGlmIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRl
ZAotRkFJTCByZWFkZXIncyBjbG9zZWQgcHJvcGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUg
cHJvbWlzZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCByZWFkZXIncyBjbG9zZWQgcHJv
cGVydHkgYWx3YXlzIHJldHVybnMgdGhlIHNhbWUgcHJvbWlzZSByZWxlYXNlTG9jayBpcyBub3Qg
aW1wbGVtZW50ZWQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBs
YXRlZC5odG1sCmluZGV4IDhjMWJmNTg3ZTFlNDcyZGUyNTMxMTRjOTU3MDNkZGYxNWE1NWJjOTIu
LmM3MmNhYTA2NmQxZTcwNWZmYTQ3NzI2MWRhNWM0MjA4ZTNiYTZkYzYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS10ZW1wbGF0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWwKQEAgLTM2OSw3ICszNjks
NyBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIobGFiZWwsIGZhY3Rv
cnksIGNodW5rcykgewogICAgIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgfSwgJ1J1bm5pbmcgdGVt
cGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyIHdpdGggJyArIGxhYmVsKTsKIAotICAgIHZhciB0
ZXN0MSA9IGFzeW5jX3Rlc3QoJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3
aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcycpOworICAgIHZhciB0ZXN0MSA9IGFzeW5j
X3Rlc3QoJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFs
bHkgZ2l2ZSBib3RoIGNodW5rcycsIHsgdGltZW91dDogNTAgfSk7CiAgICAgdGVzdDEuc3RlcChm
dW5jdGlvbigpIHsKICAgICAgICAgdmFyIHsgcmVhZGVyIH0gPSBmYWN0b3J5KCk7CiAgICAgICAg
IHZhciBwcm9taXNlQ291bnQgPSAwOwpAQCAtMzg1LDcgKzM4NSw3IEBAIGZ1bmN0aW9uIHRlbXBs
YXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlcihsYWJlbCwgZmFjdG9yeSwgY2h1bmtzKSB7CiAgICAg
ICAgIH0pKTsKICAgICB9KTsKIAotICAgIHZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ2NhbGxpbmcg
cmVhZCgpIHR3aWNlIHdpdGggd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5r
cycpOworICAgIHZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ2NhbGxpbmcgcmVhZCgpIHR3aWNlIHdp
dGggd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcycsIHsgdGltZW91dDog
NTAgfSk7CiAgICAgdGVzdDIuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIHsgcmVhZGVy
IH0gPSBmYWN0b3J5KCk7CiAKQEAgLTYxNCw3ICs2MTQsOCBAQCB0ZW1wbGF0ZWRSU0Vycm9yZWRT
eW5jT25seSgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpJywgZnVu
Y3RpbwogICAgIH0pfSwKICAgICB0aGVFcnJvcgogKTsKLQorLy8gRklYTUU6IEFjdGl2YXRlIHRo
ZXNlIHRlc3RzIG9uY2UgUHJvbWlzZSBoYW5kbGluZyBpcyBzdXBwb3J0ZWQgaW4gc3RhcnQgZnVu
Y3Rpb24uCisvKgogdGVtcGxhdGVkUlNFcnJvcmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2
aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCknLCBmdW5jdGlvbigpIHsK
ICAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHsKICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9u
KCkgewpAQCAtNjMyLDYgKzYzMyw3IEBAIHRlbXBsYXRlZFJTRXJyb3JlZFJlYWRlcignUmVhZGFi
bGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pCiAgICAgfSkp
fSwKICAgICB0aGVFcnJvcgogKTsKKyovCiAKIHZhciBjaHVua3MgPSBbJ2EnLCAnYiddOwogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0uaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCmluZGV4IGQwNzI1ZTQ0MjY2MWE3MmUyNmZl
YjYzM2Y4MzM2YzIwOGU5NTRlNjEuLjE2Y2U4YzRhZTQ0OTMzMTdkMzI3Y2Y5MThiNGNmNDkwOTYx
NThkNTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCkBAIC01Myw3ICs1Myw3
IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RyYXRlZ3k6
IDIgfSk7IC8vIENvbnN0cnVjdG9yIHNob3VsZCBub3QgdGhyb3cgd2hlbiBzdHJhdGVneSBpcyBu
b3QgYW4gb2JqZWN0LgogfSwgJ1JlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5p
dGlhbCBnYXJiYWdlIGFzIHN0cmF0ZWd5IGFyZ3VtZW50Jyk7CiAKLXZhciB0ZXN0MSA9IGFzeW5j
X3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHBy
b21pc2UnKTsKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNo
b3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UnLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVz
dDEuc3RlcChmdW5jdGlvbigpCiB7CiAgICAgdmFyIHJlYWRDYWxsZWQgPSBmYWxzZTsKQEAgLTE0
Niw3ICsxNDYsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIGFzc2VydF90aHJvd3MoZXJyb3Is
IGZ1bmN0aW9uKCkgeyBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdGFydCgpIHsgdGhyb3cgZXJyb3I7
IH0gfSkgfSwgJ2Vycm9yIHNob3VsZCBiZSByZS10aHJvd24nKTsKIH0sICdSZWFkYWJsZVN0cmVh
bTogaWYgc3RhcnQgdGhyb3dzIGFuIGVycm9yLCBpdCBzaG91bGQgYmUgcmUtdGhyb3duJyk7CiAK
LXZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMs
IGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtJyk7Cit2YXIgdGVzdDQgPSBhc3luY190ZXN0KCdS
ZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVh
bScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBl
cnJvciA9IG5ldyBFcnJvcigncHVsbCBmYWlsdXJlJyk7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRh
YmxlU3RyZWFtKHsKQEAgLTM2OCw3ICszNjgsNyBAQCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewog
Ly8gICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwogLy8gfSk7CiAKLXZhciB0ZXN0MTEgPSBhc3lu
Y190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHBy
ZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1bGZpbGxzJyk7Cit2YXIgdGVzdDExID0gYXN5
bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBw
cmV2aW91cyBwdWxsIGNhbGxcJ3MgcHJvbWlzZSBmdWxmaWxscycsIHsgdGltZW91dDogNTAgfSk7
CiB0ZXN0MTEuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcmVzb2x2ZTsKICAgICB2YXIgcmV0
dXJuZWRQcm9taXNlOwpAQCAtNTY1LDcgKzU2NSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAg
fSk7CiB9LCAnUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQg
ZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9yZWQnKTsKIAotdmFyIHRlc3QxNiA9IGFzeW5j
X3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRo
b2RzIGFzIG1ldGhvZHMnKTsKK3ZhciB0ZXN0MTYgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzJywgeyB0
aW1lb3V0OiA1MCB9KTsKIHRlc3QxNi5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBzdGFydENh
bGxlZCA9IDA7CiAgICAgdmFyIHB1bGxDYWxsZWQgPSAwOwpAQCAtNjU4LDcgKzY1OCw3IEBAIHRl
c3QxNy5zdGVwKGZ1bmN0aW9uKCkgewogICAgIH0pKS5jYXRjaCh0ZXN0MTcuc3RlcF9mdW5jKGZ1
bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChlKTsgfSApKTsKIH0pOwogCi12YXIgdGVzdDE4
ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcg
YSByYW5kb20gcHVzaCBzb3VyY2UnKTsKK3ZhciB0ZXN0MTggPSBhc3luY190ZXN0KCdSZWFkYWJs
ZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZScs
IHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MTguc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcHVs
bENoZWNrZWQgPSBmYWxzZTsKICAgICB2YXIgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hT
b3VyY2UoOCk7CkBAIC03MDIsNyArNzAyLDcgQEAgdGVzdDE4LnN0ZXAoZnVuY3Rpb24oKSB7CiAg
ICAgfSksIHRlc3QxOC5zdGVwX2Z1bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfcmVhY2hlZChlKTsg
fSkpOwogfSk7CiAKLXZhciB0ZXN0MTkgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRl
Z3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UnKTsKK3ZhciB0ZXN0MTkg
PSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBh
IHN5bmMgcHVsbCBzb3VyY2UnLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDE5LnN0ZXAoZnVuY3Rp
b24oKSB7CiAgICAgdmFyIHJzID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwKTsKIApAQCAt
NzE0LDcgKzcxNCw3IEBAIHRlc3QxOS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIH0pKTsKIH0pOwog
Ci12YXIgdGVzdDIwID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVz
dDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UnKTsKK3ZhciB0ZXN0MjAgPSBhc3luY190
ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBw
dWxsIHNvdXJjZScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MjAuc3RlcChmdW5jdGlvbigpIHsK
ICAgICB2YXIgcnMgPSBzZXF1ZW50aWFsUmVhZGFibGVTdHJlYW0oMTAsIHsgYXN5bmM6IHRydWUg
fSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253442</attachid>
            <date>2015-05-20 09:30:46 -0700</date>
            <delta_ts>2015-05-27 07:23:17 -0700</delta_ts>
            <desc>Using JSValue() to convey done=true</desc>
            <filename>bug-144790-20150520183040.patch</filename>
            <type>text/plain</type>
            <size>45553</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDI0MDQ1ZTEyYzhjNzJj
ODMxMDE4MTRiMmM4OWExODcxOGE2M2RhNi4uODZiMWU2OWVmMWUwODQ1M2ZiMDE1ZDNiNzJmYTVj
YjJiNDU1MmE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE1LTA1LTIwICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IEltcGxlbWVudCBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFkIG1ldGhvZCBpbiBjbG9zZWQgYW5k
IGVycm9yZWQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NDc5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlYWRlciBkZWxlZ2F0ZXMgcmVhZCgpIHByb21pc2UgaGFuZGxpbmcgdG8gaXRzIHN0
cmVhbSBleGNlcHQgaWYgcmVhZGVyIGlzIG5vIGxvbmdlciBsb2NraW5nIHRoZSBzdHJlYW0gYW5k
IHN0cmVhbSBpcyByZWFkYWJsZS4KKyAgICAgICAgU3RvcmluZyBvZiByZWFkZXIgcmVhZCgpIHBy
b21pc2UgY2FsbGJhY2tzIGFzIGEgVmVjdG9yIGluIFJlYWRhYmxlU3RyZWFtLgorICAgICAgICBB
ZGRlZCByZXNvbHV0aW9uL3JlamVjdGlvbiBvZiByZWFkKCkgcHJvbWlzZXMgaW4gY2FzZSBvZiBl
cnJvcmVkL2Nsb3NlZCBzdHJlYW1zLgorCisgICAgICAgIFRlc3Q6IHN0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLXJlYWRlci1yZWFkLmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVh
bTo6Y2xlYW5DYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNo
YW5nZVN0YXRlVG9DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNo
YW5nZVN0YXRlVG9FcnJvcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpj
bG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnJlYWQpOgorICAgICAg
ICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVTdHJlYW06OlJlYWRDYWxsYmFja3M6OlJlYWRDYWxsYmFja3MpOgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
YWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1SZWFkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVTdHJlYW1S
ZWFkZXI6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y2xvc2VkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06Omhhc1ZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OnJlYWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Jl
YWRhYmxlSlNTdHJlYW0uaDoKKwogMjAxNS0wNS0xNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIE9yZ2FuaXplIGV2ZW50IGhhbmRsZXJzIGEgYml0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0
aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcnVudGltZS9JdGVyYXRv
ck9wZXJhdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2UwNmExN2VlNjY4ODQzZDZkOTg0MzMxY2I5ZjBj
ZTU0OGJjZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaApAQCAtMCwwICsxLDQgQEAKKyNpZm5k
ZWYgV2ViQ29yZV9GV0RfSXRlcmF0b3JPcGVyYXRpb25zX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
SXRlcmF0b3JPcGVyYXRpb25zX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JdGVyYXRvck9w
ZXJhdGlvbnMuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggYmVjM2QzMDA3NzA2NTU0ZTNiOGRhYTljMGE2MmFh
YjJjZjg4NDcyMy4uMjczYjczY2UzYWIxOTVlY2M1ZjNmMzJhODhkMjkxZmEyZjMwZWIzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1
ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVl
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjIs
NiArNjIsOCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjbGVhckNhbGxiYWNrcygpCiB7CiAgICAg
bV9jbG9zZWRTdWNjZXNzQ2FsbGJhY2sgPSBudWxscHRyOwogICAgIG1fY2xvc2VkRmFpbHVyZUNh
bGxiYWNrID0gbnVsbHB0cjsKKworICAgIG1fcmVhZFJlcXVlc3RzLmNsZWFyKCk7CiB9CiAKIHZv
aWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQpAQCAtNzYsNiArNzgsOSBA
QCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvQ2xvc2VkKCkKICAgICBpZiAobV9j
bG9zZWRTdWNjZXNzQ2FsbGJhY2spCiAgICAgICAgIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrKCk7
CiAKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlYWRSZXF1ZXN0cykKKyAgICAgICAgcmVx
dWVzdC5zdWNjZXNzQ2FsbGJhY2soSlNDOjpKU1ZhbHVlKCkpOworCiAgICAgY2xlYXJDYWxsYmFj
a3MoKTsKIH0KIApAQCAtODgsOCArOTMsMTIgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdl
U3RhdGVUb0Vycm9yZWQoKQogICAgIGlmIChtX3JlYWRlcikKICAgICAgICAgbV9yZWxlYXNlZFJl
YWRlcnMuYXBwZW5kKFdURjo6bW92ZShtX3JlYWRlcikpOwogCisgICAgSlNDOjpKU1ZhbHVlIGVy
cm9yID0gdGhpcy0+ZXJyb3IoKTsKICAgICBpZiAobV9jbG9zZWRGYWlsdXJlQ2FsbGJhY2spCi0g
ICAgICAgIG1fY2xvc2VkRmFpbHVyZUNhbGxiYWNrKGVycm9yKCkpOworICAgICAgICBtX2Nsb3Nl
ZEZhaWx1cmVDYWxsYmFjayhlcnJvcik7CisKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3Jl
YWRSZXF1ZXN0cykKKyAgICAgICAgcmVxdWVzdC5mYWlsdXJlQ2FsbGJhY2soZXJyb3IpOwogCiAg
ICAgY2xlYXJDYWxsYmFja3MoKTsKIH0KQEAgLTExMCw3ICsxMTksNyBAQCBSZWFkYWJsZVN0cmVh
bVJlYWRlciYgUmVhZGFibGVTdHJlYW06OmdldFJlYWRlcigpCiAgICAgcmV0dXJuIHJlYWRlcjsK
IH0KIAotdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKENsb3NlZFN1Y2Nlc3NDYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2ssIENsb3NlZEZhaWx1cmVDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2spCit2
b2lkIFJlYWRhYmxlU3RyZWFtOjpjbG9zZWQoQ2xvc2VkU3VjY2Vzc0NhbGxiYWNrIHN1Y2Nlc3ND
YWxsYmFjaywgRmFpbHVyZUNhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaykKIHsKICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpOwpAQCAt
MTI0LDYgKzEzMywyNCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjbG9zZWQoQ2xvc2VkU3VjY2Vz
c0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgQ2xvc2VkRmFpbHVyZQogICAgIG1fY2xvc2VkRmFp
bHVyZUNhbGxiYWNrID0gV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjayk7CiB9CiAKK3ZvaWQgUmVh
ZGFibGVTdHJlYW06OnJlYWQoUmVhZFN1Y2Nlc3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIEZh
aWx1cmVDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2spCit7CisgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkNsb3NlZCkgeworICAgICAgICBzdWNjZXNzQ2FsbGJhY2soSlNDOjpKU1ZhbHVlKCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFcnJvcmVk
KSB7CisgICAgICAgIGZhaWx1cmVDYWxsYmFjayhlcnJvcigpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBpZiAoaGFzVmFsdWUoKSkgeworICAgICAgICBzdWNjZXNzQ2FsbGJhY2socmVh
ZCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3JlYWRSZXF1ZXN0cy5hcHBlbmQo
UmVhZENhbGxiYWNrcyB7IFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUoZmFp
bHVyZUNhbGxiYWNrKSB9KTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBwdWxsLgor
fQorCiB2b2lkIFJlYWRhYmxlU3RyZWFtOjpzdGFydCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgK
aW5kZXggYzg3NDM2NTc1YzM0ZWNmYTdjMGFhMDY5MzNiNjRjMzljMWY1ZDA5MS4uNzE4MmY5YTYz
MDc2NDQ4M2JmNDlkMDA0NDAxMDY4NmUxMjI0Y2ExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKQEAgLTc1LDkgKzc1LDEzIEBAIHB1Ymxp
YzoKIAogICAgIFJlYWRhYmxlU3RyZWFtU291cmNlJiBzb3VyY2UoKSB7IHJldHVybiBtX3NvdXJj
ZS5nZXQoKTsgfQogCisgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoSlNDOjpKU1ZhbHVl
KT4gRmFpbHVyZUNhbGxiYWNrOworCiAgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
Q2xvc2VkU3VjY2Vzc0NhbGxiYWNrOwotICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKEpT
Qzo6SlNWYWx1ZSk+IENsb3NlZEZhaWx1cmVDYWxsYmFjazsKLSAgICB2b2lkIGNsb3NlZChDbG9z
ZWRTdWNjZXNzQ2FsbGJhY2ssIENsb3NlZEZhaWx1cmVDYWxsYmFjayk7CisgICAgdm9pZCBjbG9z
ZWQoQ2xvc2VkU3VjY2Vzc0NhbGxiYWNrLCBGYWlsdXJlQ2FsbGJhY2spOworCisgICAgdHlwZWRl
ZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoSlNDOjpKU1ZhbHVlKT4gUmVhZFN1Y2Nlc3NDYWxsYmFjazsK
KyAgICB2b2lkIHJlYWQoUmVhZFN1Y2Nlc3NDYWxsYmFjaywgRmFpbHVyZUNhbGxiYWNrKTsKIAog
cHJvdGVjdGVkOgogICAgIFJlYWRhYmxlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBS
ZWY8UmVhZGFibGVTdHJlYW1Tb3VyY2U+JiYpOwpAQCAtODksMTEgKzkzLDIwIEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGNsZWFyQ2FsbGJhY2tzKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmFs
dWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpID0gMDsKKwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4gbV9yZWFkZXI7CiAgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4+IG1fcmVsZWFzZWRS
ZWFkZXJzOwogCiAgICAgQ2xvc2VkU3VjY2Vzc0NhbGxiYWNrIG1fY2xvc2VkU3VjY2Vzc0NhbGxi
YWNrOwotICAgIENsb3NlZEZhaWx1cmVDYWxsYmFjayBtX2Nsb3NlZEZhaWx1cmVDYWxsYmFjazsK
KyAgICBGYWlsdXJlQ2FsbGJhY2sgbV9jbG9zZWRGYWlsdXJlQ2FsbGJhY2s7CisKKyAgICBzdHJ1
Y3QgUmVhZENhbGxiYWNrcyB7CisgICAgICAgIFJlYWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0Nh
bGxiYWNrOworICAgICAgICBGYWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrOworICAgIH07
CisgICAgVmVjdG9yPFJlYWRDYWxsYmFja3M+IG1fcmVhZFJlcXVlc3RzOwogCiAgICAgU3RhdGUg
bV9zdGF0ZSB7IFN0YXRlOjpSZWFkYWJsZSB9OwogICAgIFJlZjxSZWFkYWJsZVN0cmVhbVNvdXJj
ZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcAppbmRleCA0NDI4ZGFiNGQ3NTI5MWFjY2U0ODZiYjFl
YzhmNWM0YmEwZGVjODU5Li42YTQ0Njg5ZmJjNjQzNjJhN2Y5OWY1NjcxZmVhNzY4ZDc1MTViN2Ji
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1SZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbVJlYWRlci5jcHAKQEAgLTMwLDExICszMCwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCiAKKyNpbmNsdWRlIDxydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmg+CisKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKFJlYWRh
YmxlU3RyZWFtOjpDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBSZWFkYWJs
ZVN0cmVhbTo6Q2xvc2VkRmFpbHVyZUNhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaykKK3ZvaWQgUmVh
ZGFibGVTdHJlYW1SZWFkZXI6OmNsb3NlZChSZWFkYWJsZVN0cmVhbTo6Q2xvc2VkU3VjY2Vzc0Nh
bGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgUmVhZGFibGVTdHJlYW06OkZhaWx1cmVDYWxsYmFjayBm
YWlsdXJlQ2FsbGJhY2spCiB7CiAgICAgaWYgKG1fc3RyZWFtLmlzUmVhZGFibGUoKSAmJiBtX3N0
cmVhbS5yZWFkZXIoKSAhPSB0aGlzKSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpOwpAQCAt
NDMsNiArNDUsMTUgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKFJlYWRhYmxl
U3RyZWFtOjpDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0MKICAgICBtX3N0cmVhbS5jbG9z
ZWQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2sp
KTsKIH0KIAordm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6cmVhZChSZWFkYWJsZVN0cmVhbTo6
UmVhZFN1Y2Nlc3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpGYWls
dXJlQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQoreworICAgIGlmIChtX3N0cmVhbS5pc1JlYWRh
YmxlKCkgJiYgbV9zdHJlYW0ucmVhZGVyKCkgIT0gdGhpcykgeworICAgICAgICBzdWNjZXNzQ2Fs
bGJhY2soSlNDOjpKU1ZhbHVlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fc3Ry
ZWFtLnJlYWQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2Fs
bGJhY2spKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKaW5kZXggNGZmNDJkMjE0MWIzYjVj
Y2JkZGQ1M2NkYzNhZDU1M2IyYTgyNjdlMC4uOTJjZTE4OTU1NzY1MjJmMmYwYmExYjE4MWY1NTBi
YWY1ZTczMjUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKQEAgLTUxLDcgKzUxLDggQEAgcHVibGljOgogICAgIFJl
YWRhYmxlU3RyZWFtUmVhZGVyKFJlYWRhYmxlU3RyZWFtJiBzdHJlYW0pCiAgICAgICAgIDogbV9z
dHJlYW0oc3RyZWFtKSB7IH0KIAotICAgIHZvaWQgY2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9z
ZWRTdWNjZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRGYWlsdXJlQ2FsbGJhY2sp
OworICAgIHZvaWQgY2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRTdWNjZXNzQ2FsbGJhY2ss
IFJlYWRhYmxlU3RyZWFtOjpGYWlsdXJlQ2FsbGJhY2spOworICAgIHZvaWQgcmVhZChSZWFkYWJs
ZVN0cmVhbTo6UmVhZFN1Y2Nlc3NDYWxsYmFjaywgUmVhZGFibGVTdHJlYW06OkZhaWx1cmVDYWxs
YmFjayk7CiAKICAgICB2b2lkIHJlZigpIHsgbV9zdHJlYW0ucmVmKCk7IH0KICAgICB2b2lkIGRl
cmVmKCkgeyBtX3N0cmVhbS5kZXJlZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCmluZGV4IGQ2
ZWNhYzI0MTIwNmUxMjJjOGNkYmQyOWM4YzQ5ZGFhNTcxZGE2ZDcuLjAyNTk3ZGM5YWRlYTQ2ZWNl
ZWUwNmMxMmQzZDhhOTBkZjY1NWNhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIlJlYWRh
YmxlSlNTdHJlYW0uaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8cnVu
dGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTQ1LDggKzQ2LDE5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKEV4ZWNTdGF0
ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIGVycm9yID0gY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJyZWFkIGlzIG5vdCBpbXBsZW1lbnRlZCIpKTsKLSAgICByZXR1cm4gZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7CisgICAgSlNQcm9taXNlRGVmZXJyZWQqIHBy
b21pc2VEZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2Jq
ZWN0KCkpOworICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCgp
LCBwcm9taXNlRGVmZXJyZWQpOworICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJd
KEpTVmFsdWUgdmFsdWUpIG11dGFibGUgeworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNyZWF0
ZUl0ZXJhdG9yUmVzdWx0T2JqZWN0KHdyYXBwZXIucHJvbWlzZSgpLT5nbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRXhlYygpLCB2YWx1ZSA/IHZhbHVlIDogSlNDOjpqc1VuZGVmaW5lZCgpLCAhdmFsdWUp
OworICAgICAgICB3cmFwcGVyLnJlc29sdmUocmVzdWx0KTsKKyAgICB9OworICAgIGF1dG8gZmFp
bHVyZUNhbGxiYWNrID0gW3dyYXBwZXJdKEpTVmFsdWUgdmFsdWUpIG11dGFibGUgeworICAgICAg
ICB3cmFwcGVyLnJlamVjdCh2YWx1ZSk7CisgICAgfTsKKworICAgIGltcGwoKS5yZWFkKFdURjo6
bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CisKKyAg
ICByZXR1cm4gd3JhcHBlci5wcm9taXNlKCk7CiB9CiAKIHN0YXRpYyBKU1Byb21pc2VEZWZlcnJl
ZCogZ2V0T3JDcmVhdGVQcm9taXNlRGVmZXJyZWRGcm9tT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB0aGlzT2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcml2YXRl
TmFtZSAmbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlSlNTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0
cmVhbS5jcHAKaW5kZXggYWQxZWM3OTIxZWJkMTJkNzlmY2NiZTE0NTBkZTI0MWVkZjNhNzYzOC4u
YmIzNzQ1YzQ2ODQ4ZWVjNzU1OWNkZWU0YjAyZTUzN2U2YTdlMzg2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKQEAgLTE2Niw2ICsxNjYs
MTggQEAgdm9pZCBSZWFkYWJsZUpTU3RyZWFtOjpzdG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBl
eGVjKQogICAgIGNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7CiB9CiAKK2Jvb2wgUmVhZGFibGVKU1N0
cmVhbTo6aGFzVmFsdWUoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitKU1ZhbHVlIFJlYWRhYmxlSlNTdHJlYW06OnJlYWQoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9SZWFkYWJsZUpTU3RyZWFtLmgKaW5kZXggNGQ1MWQwMWJmZjg0ZmNjZjcxZGVjNDY2MmM1OGY2
NzcyZmE3OGYyMy4uNjRhNjMzYjc4MDkwMzYwNjAxODgwYWE2ZTA5NGQ0YTQ5NDdhOGM4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaApAQCAtNzMs
NiArNzMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJlYWRhYmxlSlNTdHJlYW0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxSZWFkYWJsZUpTU3RyZWFtOjpTb3VyY2U+JiYpOwogCisg
ICAgdmlydHVhbCBib29sIGhhc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBK
U0M6OkpTVmFsdWUgcmVhZCgpIG92ZXJyaWRlOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6
VW5rbm93bj4gbV9lcnJvcjsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWJmNzY5MTYyMmQzMTc3OWFjZTBjYzhkZDJk
N2EzYjNjZjMzMjQwYS4uMjZkOTZkZTFhMzQ2Yzk3NDYzOTY2MTc1Yjg0ZmJhYTgwMzVmMGFiNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTIwICBYYWJpZXIgUm9kcmlndWV6IENhbHZh
ciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0
QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEldIEltcGxlbWVudCBSZWFkYWJs
ZVN0cmVhbVJlYWRlciByZWFkIG1ldGhvZCBpbiBjbG9zZWQgYW5kIGVycm9yZWQgc3RhdGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDc5MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGluZyBuZXcg
dGVzdC4gUmViYXNpbmcgb2YgcmVmZXJlbmNlIHRlc3RzIChleHBlY3RhdGlvbnMgYW5kIHRpbWVv
dXRpbmcvdW50aW1lb3V0aW5nIHRlc3RzKS4KKworICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLXJlYWRlci1yZWFkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RyZWFt
cy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJlYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFk
LXVuZGVybHlpbmctc291cmNlcy5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRl
Z3kuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFk
ZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1z
dHJlYW0tdGVtcGxhdGVkLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWw6CisKIDIwMTUtMDUtMTcgIFNhbSBXZWluaWcg
IDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBPcmdhbml6ZSBldmVudCBoYW5kbGVycyBhIGJp
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVy
LXJlYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLXJlYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhZjQzZTFjZTYyNjYyNDhiM2U0
Zjc0OGIxOGUwNGVjMGQyY2RjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3
IEBACisKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkIAor
UEFTUyBSZWFkaW5nIHR3aWNlIG9uIGEgY2xvc2VkIHN0cmVhbSAKK1BBU1MgUmVhZGluZyB0d2lj
ZSBvbiBhbiBlcnJvcmVkIHN0cmVhbSAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0
aGF0IGdldHMgZXJyb3JlZCAKK1BBU1MgUmVhZGluZyB3aXRoaW4gYSByZWFkIHByb21pc2UgcmVz
b2x2ZSBjYWxsYmFjayBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xvc2VkIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVhZC5odG1sIGIv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJlYWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZmU1NDE0ZDU3OTljN2Q0ZDliZDUyMzRjY2M3ZDNhNWU5MTFmYWU3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJl
YWQuaHRtbApAQCAtMCwwICsxLDE2NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0n
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgorPHNjcmlwdD4KKwordmFy
IHQxID0gYXN5bmNfdGVzdCgnUmVhZGluZyB0d2ljZSBvbiBhIHN0cmVhbSB0aGF0IGdldHMgY2xv
c2VkJyk7Cit0MS5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb250cm9sbGVyOworICAgIHZh
ciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7
CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfQorICAgIH0pOworICAgIHZh
ciBjb3VudGVyID0gMDsKKyAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICBy
ZWFkZXIucmVhZCgpLnRoZW4odDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAg
ICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTog
dHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UnKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhjb3VudGVyLCAxKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAg
ICByZWFkZXIucmVhZCgpLnRoZW4odDEuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAg
ICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9u
ZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UnKTsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhjb3VudGVyLCAyKTsKKyAgICAgICAgY291bnRlcisrOworICAgICAgICB0
MS5kb25lKCk7CisgICAgfSkpOworICAgIHJlYWRlci5jbG9zZWQudGhlbih0MS5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMCk7CisgICAgICAg
IGNvdW50ZXIrKzsKKyAgICB9KSk7CisKKyAgICBjb250cm9sbGVyLmNsb3NlKCk7Cit9KTsKKwor
dmFyIHQyID0gYXN5bmNfdGVzdCgnUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0nKTsK
K3QyLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFyIHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAg
ICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgfSk7CisgICAgCisgICAgY29u
dHJvbGxlci5jbG9zZSgpOworICAgIAorICAgIHZhciBjb3VudGVyID0gMDsKKyAgICB2YXIgcmVh
ZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odDIuc3RlcF9m
dW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhyZXN1
bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBmdWxm
aWxsIHdpdGggY2xvc2UnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsKKyAg
ICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odDIuc3Rl
cF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2VxdWFscyhy
ZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNob3VsZCBm
dWxmaWxsIHdpdGggY2xvc2UnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAxKTsK
KyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFkZXIuY2xvc2VkLnRoZW4odDIu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDIp
OworICAgICAgICBjb3VudGVyKys7CisgICAgICAgIHQyLmRvbmUoKTsKKyAgICB9KSk7Cit9KTsK
KwordmFyIHQzID0gYXN5bmNfdGVzdCgnUmVhZGluZyB0d2ljZSBvbiBhbiBlcnJvcmVkIHN0cmVh
bScpOwordDMuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJvbGxlcjsKKyAgICB2YXIg
cnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgewor
ICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9KTsKKyAgCisgICAg
dmFyIG15RXJyb3IgPSB7IHBvdGF0bzogIm1hc2hlZCIgfTsgCisgICAgY29udHJvbGxlci5lcnJv
cihteUVycm9yKTsKKyAgICAKKyAgICB2YXIgY291bnRlciA9IDA7CisgICAgdmFyIHJlYWRlciA9
IHJzLmdldFJlYWRlcigpOworCisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHQzLnN0ZXBfZnVuYyhm
dW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCByZWpl
Y3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKyAgICB9KSwgdDMuc3RlcF9mdW5jKGZ1bmN0aW9u
KGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVycik7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoY291bnRlciwgMCk7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICB9KSk7Cisg
ICAgcmVhZGVyLnJlYWQoKS50aGVuKHQzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAg
YXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJl
YW0nKTsKKyAgICB9KSwgdDMuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3Nl
cnRfZXF1YWxzKG15RXJyb3IsIGVycik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwg
MSk7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICB9KSk7CisgICAgcmVhZGVyLmNsb3NlZC50aGVu
KHQzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVh
ZCgpIHNob3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKyAgICB9KSwgdDMuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVy
cik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMik7CisgICAgICAgIGNvdW50ZXIr
KzsKKyAgICAgICAgdDMuZG9uZSgpOworICAgIH0pKTsKK30pOworCit2YXIgdDQgPSBhc3luY190
ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBlcnJvcmVkJyk7Cit0NC5z
dGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb250cm9sbGVyOworICAgIHZhciBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAg
ICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfQorICAgIH0pOworICAgCisgICAgdmFyIGNvdW50
ZXIgPSAwOworICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKworICAgIHJlYWRlci5y
ZWFkKCkudGhlbih0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF91bnJl
YWNoZWQoJ3JlYWQoKSBzaG91bGQgcmVqZWN0IG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7CisgICAg
fSksIHQ0LnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyht
eUVycm9yLCBlcnIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDEpOworICAgICAg
ICBjb3VudGVyKys7CisgICAgfSkpOworICAgIHJlYWRlci5yZWFkKCkudGhlbih0NC5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ3JlYWQoKSBzaG91bGQg
cmVqZWN0IG9uIGFuIGVycm9yZWQgc3RyZWFtJyk7CisgICAgfSksIHQ0LnN0ZXBfZnVuYyhmdW5j
dGlvbihlcnIpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhteUVycm9yLCBlcnIpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDIpOworICAgICAgICBjb3VudGVyKys7CisgICAgICAg
IHQ0LmRvbmUoKTsKKyAgICB9KSk7CisgICAgcmVhZGVyLmNsb3NlZC50aGVuKHQ0LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCBy
ZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKyAgICB9KSwgdDQuc3RlcF9mdW5jKGZ1bmN0
aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVycik7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoY291bnRlciwgMCk7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICB9KSk7
CisKKyAgICB2YXIgbXlFcnJvciA9IHsgcG90YXRvOiAnbWFzaGVkJyB9OyAKKyAgICBjb250cm9s
bGVyLmVycm9yKG15RXJyb3IpOworIH0pOworCit2YXIgdDUgPSBhc3luY190ZXN0KCdSZWFkaW5n
IHdpdGhpbiBhIHJlYWQgcHJvbWlzZSByZXNvbHZlIGNhbGxiYWNrIG9uIGEgc3RyZWFtIHRoYXQg
Z2V0cyBjbG9zZWQnKTsKK3Q1LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvbnRyb2xsZXI7
CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0
aW9uKGMpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICByZWFkZXIucmVhZCgp
LnRoZW4odDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICByZWFkZXIucmVhZCgpLnRo
ZW4odDUuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdDUuZG9uZSgpOworICAg
ICAgICB9KSk7CisgICAgfSkpOworICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKK30pOworCis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1l
eHBlY3RlZC50eHQKaW5kZXggMTljYTM1NTU5NTc0ZTMxMzA5OWZjNDg4MmNhZGQxNDEyYTlhMjI4
MC4uYjc1NTgxYjFkOTVjMDQxNzA4ZTUxM2RlOWJlYzEyODVhMzE3MTQ5NSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlp
bmctc291cmNlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKQEAg
LTUsOCArNSw4IEBAIEZBSUwgVW5kZXJseWluZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIGdldHRl
ciBhc3NlcnRfdGhyb3dzOiBjb25zdHJ1Y3RpbmcgdGhlIHN0CiBQQVNTIFVuZGVybHlpbmcgc291
cmNlIHN0YXJ0OiB0aHJvd2luZyBtZXRob2QgCiBUSU1FT1VUIFVuZGVybHlpbmcgc291cmNlOiB0
aHJvd2luZyBwdWxsIGdldHRlciAoaW5pdGlhbCBwdWxsKSBUZXN0IHRpbWVkIG91dAogVElNRU9V
VCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKGluaXRpYWwgcHVsbCkg
VGVzdCB0aW1lZCBvdXQKLUZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0
dGVyIChzZWNvbmQgcHVsbCkgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgVW5kZXJseWlu
ZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChzZWNvbmQgcHVsbCkgcmVhZCBpcyBub3Qg
aW1wbGVtZW50ZWQKK1RJTUVPVVQgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgZ2V0
dGVyIChzZWNvbmQgcHVsbCkgVGVzdCB0aW1lZCBvdXQKK1RJTUVPVVQgVW5kZXJseWluZyBzb3Vy
Y2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChzZWNvbmQgcHVsbCkgVGVzdCB0aW1lZCBvdXQKIEZB
SUwgVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIGNhbmNlbCBnZXR0ZXIgY2FuY2VsIGlzIG5v
dCBpbXBsZW1lbnRlZAogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgY2FuY2VsIG1l
dGhvZCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiB0
aHJvd2luZyBzdHJhdGVneSBnZXR0ZXIgYXNzZXJ0X3Rocm93czogZW5xdWV1ZSBzaG91bGQgdGhy
b3cgdGhlIGVycm9yIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IGMuZW5xdWV1ZSgnYScpOyB9IiBk
aWQgbm90IHRocm93CkBAIC0xOCw3ICsxOCw3IEBAIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHN0
cmF0ZWd5LnNpemUgcmV0dXJuaW5nIE5hTiBhc3NlcnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpCiBG
QUlMIFVuZGVybHlpbmcgc291cmNlOiBzdHJhdGVneS5zaXplIHJldHVybmluZyAtSW5maW5pdHkg
YXNzZXJ0X3VucmVhY2hlZDogZW5xdWV1ZSBkaWRuJ3QgdGhyb3cgUmVhY2hlZCB1bnJlYWNoYWJs
ZSBjb2RlCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBzdHJhdGVneS5zaXplIHJldHVybmluZyAr
SW5maW5pdHkgYXNzZXJ0X3VucmVhY2hlZDogZW5xdWV1ZSBkaWRuJ3QgdGhyb3cgUmVhY2hlZCB1
bnJlYWNoYWJsZSBjb2RlCiBQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3
aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIAotRkFJ
TCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBz
dHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRl
ZAorRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1l
bXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGltZSBhc3NlcnRfb2JqZWN0X2Vx
dWFsczogcmVhZCgpIHNob3VsZCByZWFkIHRoZSBlbnF1ZXVlZCBjaHVuayBwcm9wZXJ0eSAiZG9u
ZSIgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iIGdvdCBvYmplY3QgIltvYmplY3Qg
T2JqZWN0XSIKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1w
dHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgY2FuY2VsIGlzIG5vdCBpbXBsZW1l
bnRlZAogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhIG5vbi1lbXB0
eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyBjYW5jZWwgaXMgbm90IGltcGxlbWVu
dGVkCiBQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNo
b3VsZCB0aHJvdyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRt
bAppbmRleCBiYzQxNzA5MjRiN2IxYWI5MzMyMzZjNDJiNDFlYzlmOGU1ZGNiY2RmLi43YjdmMWIw
MWVmYjFmZDM4MmZhNDA2NWVjOGY4MTRlMTI0NTNkNGJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2Vz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
YmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sCkBAIC0zMSw3ICszMSw3IEBAIHZhciB0ZXN0MSA9
IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoaW5p
dGlhbCBwdWxsKScsCiB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVFcnJvciA9
IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxl
U3RyZWFtKHsKLSAgICAgICAgZ2V0IHB1bGwoKSB7CisgICAgICAgIHB1bGw6IGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgdGhyb3cgdGhlRXJyb3I7CiAgICAgICAgIH0KICAgICB9KTsKQEAgLTYx
LDEyICs2MSwxMiBAQCB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB9KSk7CiB9KTsK
IAotdmFyIHRlc3QzID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1
bGwgZ2V0dGVyIChzZWNvbmQgcHVsbCknKTsKK3ZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1VuZGVy
bHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoc2Vjb25kIHB1bGwpJywgeyB0aW1l
b3V0OiA1MCB9KTsKIHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0g
bmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsKICAgICB2YXIgY291bnRlciA9IDA7CiAgICAg
dmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKLSAgICAgICAgZ2V0IHB1bGwoKSB7CisgICAg
ICAgIHB1bGw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgKytjb3VudGVyOwogICAgICAgICAg
ICAgaWYgKGNvdW50ZXIgPT09IDEpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdDMuc3Rl
cF9mdW5jKGZ1bmN0aW9uKGMpIHsgYy5lbnF1ZXVlKCdhJyk7IH0pCkBAIC04OSw3ICs4OSw3IEBA
IHRlc3QzLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDQg
PSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKHNl
Y29uZCBwdWxsKScpOwordmFyIHRlc3Q0ID0gYXN5bmNfdGVzdCgnVW5kZXJseWluZyBzb3VyY2U6
IHRocm93aW5nIHB1bGwgbWV0aG9kIChzZWNvbmQgcHVsbCknLCB7IHRpbWVvdXQ6IDUwIH0pOwog
dGVzdDQuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJyb3IoJ2Eg
dW5pcXVlIHN0cmluZycpOwogICAgIHZhciBjb3VudGVyID0gMDsKQEAgLTExOSw3ICsxMTksNyBA
QCB2YXIgdGVzdDUgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgY2Fu
Y2VsIGdldHRlcicpOwogdGVzdDUuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgdGhlRXJyb3Ig
PSBuZXcgRXJyb3IoJ2EgdW5pcXVlIHN0cmluZycpOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7Ci0gICAgICAgIGdldCBjYW5jZWwoKSB7CisgICAgICAgIGNhbmNlbDogZnVuY3Rp
b24oKSB7CiAgICAgICAgICAgICB0aHJvdyB0aGVFcnJvcjsKICAgICAgICAgfQogICAgIH0pOwpA
QCAtMTU5LDcgKzE1OSw3IEBAIHRlc3Q3LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICBz
dGFydGVkID0gdHJ1ZTsKICAgICAgICAgICAgIGFzc2VydF90aHJvd3ModGhlRXJyb3IsIGZ1bmN0
aW9uKCkgeyBjLmVucXVldWUoJ2EnKTsgfSwgJ2VucXVldWUgc2hvdWxkIHRocm93IHRoZSBlcnJv
cicpOwogICAgICAgICB9LAotICAgICAgICBnZXQgc3RyYXRlZ3koKSB7CisgICAgICAgIHN0cmF0
ZWd5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHRocm93IHRoZUVycm9yOwogICAgICAgICB9
CiAgICAgfSk7CkBAIC00MzcsNyArNDM3LDcgQEAgdGVzdDE4LnN0ZXAoZnVuY3Rpb24oKSB7CiAg
ICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MTkgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBjbG9zZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cnLCB7IHRpbWVvdXQ6IDUw
IH0pOwordmFyIHRlc3QxOSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5n
IGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdycpOwogdGVzdDE5LnN0ZXAoZnVuY3Rpb24o
KSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdib28nKTsKICAgICB2YXIgc3RhcnRD
YWxsZWQgPSBmYWxzZTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCB0ZXN0MTkuc3RlcChmdW5jdGlvbigp
IHsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QyMCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcg
c291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUn
LCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3QyMCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcg
c291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUn
KTsKIHRlc3QyMC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJv
cignYm9vJyk7CiAgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CkBAIC00NzEsNyArNDcxLDcg
QEAgdGVzdDIwLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MjEg
PSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBjbG9z
ZSBzaG91bGQgdGhyb3cnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3QyMSA9IGFzeW5jX3Rl
c3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNsb3NlIHNob3VsZCB0
aHJvdycpOwogdGVzdDIxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHN0YXJ0Q2FsbGVkID0g
ZmFsc2U7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKQEAgLTQ4NSw0ICs0ODUsNSBAQCB0ZXN0
MjEuc3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgdGVzdDIxLmRvbmUoJ2Nsb3NlZCBzaG91bGQg
ZnVsZmlsbCcpOwogICAgIH0pKTsKIH0pOworCiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3Ry
YXRlZ3ktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKaW5kZXggN2JkZjNk
ZWM2ZDU5NDNmZmU1MmNmOWY4NWFiNGQ0ZTA1Nzc1YjVmMC4uZDdjYmI3NWYzNzIzNjkyMmVlZTVh
YzgwMmIxMTZiODNmMDEyNWJlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQt
cXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKQEAgLTIsNyArMiw3IEBACiBQQVNTIENhbiBj
b25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3YXRlciBt
YXJrIAogUEFTUyBHaXZlcyBhIFJhbmdlRXJyb3Igd2hlbiB0aGUgbnVtYmVyIGlzIG5lZ2F0aXZl
IAogUEFTUyBDYW4gY29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxpZCBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSAKLUZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1
ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCkgcmVhZCBp
cyBub3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2
YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCkgVGVz
dCB0aW1lZCBvdXQKIEZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBh
IFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMSkgYXNzZXJ0X2VxdWFs
czogQWZ0ZXIgMCByZWFkcywgMXN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChxdWV1ZSBu
b3cgY29udGFpbnMgMSBjaHVuaykgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiBGQUlMIENv
cnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJsZVN0cmVhbSdzIGVu
cXVldWUgZnVuY3Rpb24gKEhXTSA9IDQpIGFzc2VydF9lcXVhbHM6IEFmdGVyIDAgcmVhZHMsIDFz
dCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5zIDEgY2h1bmsp
IGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0
bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1x
dWV1aW5nLXN0cmF0ZWd5Lmh0bWwKaW5kZXggM2I5NjQ1YjRmOTkzN2U0YWU5NDVkNzVkNDI3NmJi
NWFhOGIzZGFjZS4uODJjMzg3ZGRiYjU3MTU4YmEwZjdmOTJlYmRjNjQxYTIwZTNhZGQwMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291
bnQtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApAQCAtMTcsNyAr
MTcsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0cmF0
ZWd5OiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFyayI6IDQgfSkgfSk7
CiB9LCAnQ2FuIGNvbnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQgQ291bnRR
dWV1aW5nU3RyYXRlZ3knKTsKIAotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnQ29ycmVjdGx5IGdv
dmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtXCdzIGVucXVldWUgZnVu
Y3Rpb24gKEhXTSA9IDApJyk7Cit2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdDb3JyZWN0bHkgZ292
ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW1cJ3MgZW5xdWV1ZSBmdW5j
dGlvbiAoSFdNID0gMCknLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDEuc3RlcChmdW5jdGlvbigp
IHsKICAgICB2YXIgZW5xdWV1ZTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLWNhbmNlbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVk
LnR4dAppbmRleCBlZGY5MDE3NDM4ZGM3NDlhZjYxMDk5ZmUyZGMxYWU2ZTgyOGM0OTgwLi45Yjc1
NTQyODU4ZDU1NTNiYmUzNTNiZGE1MjhmMDQ0YTBlMDJjYzUzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2Fu
Y2VsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsx
LDUgQEAKIAotRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGludGVncmF0aW9uIHRl
c3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJj
ZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRp
b246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBh
IHJhbmRvbSBwdXNoIHNvdXJjZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFJlYWRh
YmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKHJlYXNvbikgc2hvdWxkIHBhc3MgdGhyb3Vn
aCB0aGUgZ2l2ZW4gcmVhc29uIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwgaXMgbm90
IGltcGxlbWVudGVkCiBGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKCkg
b24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3QgY2FsbCB0aGUgdW5kZXJseWlu
ZyBzb3VyY2UgY2FuY2VsIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgUmVhZGFibGVT
dHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRoZSB1bmRlcmx5aW5n
IHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQgdmFsdWUg
b2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBjYW5jZWwgaXMg
bm90IGltcGxlbWVudGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVj
dGVkLnR4dAppbmRleCBlOWQ4NDk1YzZjMTQ2YTYyZTY2N2ZhZDkzYjhlOTkzODQ2MzhjNjAzLi44
OWFlNDlkZTZjZGQ3YjQ3MGE1ZjEyZDNhMTRmYjVhZTY3NjVjMTk5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTUsMjIgKzUsMjIgQEAgUEFT
UyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1mdW5jdGlv
biBzdGFydCBhcmd1bWVudHMKIFBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdl
dCBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50IAogUEFTUyBSZWFkYWJsZVN0cmVh
bSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFyZ3VtZW50IAog
UEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBh
cyBzdHJhdGVneSBhcmd1bWVudCAKLUZBSUwgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJl
IGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorVElNRU9V
VCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNl
IFRlc3QgdGltZWQgb3V0CiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBh
YmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCBUZXN0IHRpbWVkIG91dAotRkFJ
TCBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmpl
Y3RzLiByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCBSZWFkYWJsZVN0cmVhbSBzaG91bGQg
YmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLiBhc3NlcnRfb2JqZWN0X2VxdWFs
czogdmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCBwcm9wZXJ0eSAiZG9uZSIg
ZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iIGdvdCBvYmplY3QgIltvYmplY3QgT2Jq
ZWN0XSIKIFBBU1MgUmVhZGFibGVTdHJlYW06IGlmIHN0YXJ0IHRocm93cyBhbiBlcnJvciwgaXQg
c2hvdWxkIGJlIHJlLXRocm93biAKLUZBSUwgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0
cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZB
SUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91
cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1G
QUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0
aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQg
UmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJl
YW0gVGVzdCB0aW1lZCBvdXQKK1RJTUVPVVQgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2Fs
bCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIFRl
c3QgdGltZWQgb3V0CitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBh
ZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgCiBGQUlMIFJlYWRhYmxlU3Ry
ZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUgcHVsbCAo
d2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dzIGFzc2VydF9lcXVhbHM6
IHB1bGwoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBmb3VyIHRpbWVzIGV4cGVjdGVkIDQgYnV0
IGdvdCAwCiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUgdG8gY2xv
c2UgYSBzdHJlYW0uIFRlc3QgdGltZWQgb3V0CiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBlbnF1ZXVl
IHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWluaW5nIGFz
c2VydF9lcXVhbHM6IHRoZSBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBleHBlY3Rl
ZCB0cnVlIGJ1dCBnb3QgZmFsc2UKIEZBSUwgUmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxk
IHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgYXNzZXJ0X3Rocm93czogZW5xdWV1ZSBh
ZnRlciBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgp
IHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBub3QgdGhyb3cKIEZBSUwgUmVhZGFibGVTdHJlYW06
IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlz
IGVycm9yZWQgYXNzZXJ0X3Rocm93czogZW5xdWV1ZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cg
dGhhdCBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBjLmVucXVldWUoJ2EnKTsgfSIgZGlk
IG5vdCB0aHJvdwotRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBz
b3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitUSU1FT1VU
IFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFz
IG1ldGhvZHMgVGVzdCB0aW1lZCBvdXQKIEZBSUwgUmVhZGFibGVTdHJlYW0gc3RyYXRlZ2llczog
dGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgYWxsIGJ1dCB0aGUg
Zmlyc3QgZW5xdWV1ZSBjYWxsIGFzc2VydF9lcXVhbHM6IGZpcnN0IGVucXVldWUgc2hvdWxkIHJl
dHVybiB0cnVlIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogRkFJTCBSZWFkYWJsZVN0cmVh
bSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUgcmV0dXJu
aW5nIHRydWUgZnJvbSBlbnF1ZXVlIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRlbHkg
YXNzZXJ0X2VxdWFsczogZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQg
dHJ1ZSBidXQgZ290IGZhbHNlCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6
IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1G
QUlMIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxs
IHNvdXJjZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0cmVhbSBpbnRl
Z3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZSByZWFkIGlzIG5vdCBp
bXBsZW1lbnRlZAorVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFw
dGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZSBUZXN0IHRpbWVkIG91dAorVElNRU9VVCBSZWFkYWJs
ZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgVGVz
dCB0aW1lZCBvdXQKK1RJTUVPVVQgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRh
cHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgVGVzdCB0aW1lZCBvdXQKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3Ry
ZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCA3
NTlmMTNjMzBlOGU2YmJjZjJhNWM5N2Q5NDFmM2VjMGM3YjU0NGMyLi4wN2M1ZDc0MDhiZmQ2NjJj
OTRjZmVmZDkwODA4NDVhYmFkYmM2N2E5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dApAQCAtOSwxMCArOSwxMCBAQCBQQVNT
IENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBmYWls
IGlmIHRoZSBzdHJlYW0gaXMgYQogUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIg
dmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkgbG9ja2Vk
ICh2aWEgZGlyZWN0IGdldFJlYWRlcikgCiBQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCAK
IFBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxk
IGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAKLUZBSUwgUmVhZGluZyBmcm9tIGEgcmVh
ZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMgYXZhaWxh
YmxlIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitUSU1FT1VUIFJlYWRpbmcgZnJvbSBhIHJlYWRl
ciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJs
ZSBUZXN0IHRpbWVkIG91dAogRkFJTCBjYW5jZWwoKSBvbiBhIHJlYWRlciByZWxlYXNlcyB0aGUg
cmVhZGVyIGJlZm9yZSBjYWxsaW5nIHRocm91Z2ggY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAog
UEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xvc2VkICgu
Y2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKIEZBSUwgY2xvc2VkIHNob3VsZCBiZSBm
dWxmaWxsZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBzdHJlYW0g
bG9ja3MpIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBDYW5ub3QgdXNlIGFu
IGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbiByZWxlYXNl
TG9jayBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgR2V0dGluZyBhIHNlY29uZCByZWFkZXIgYWZ0
ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBzaG91bGQgc3VjY2VlZCByZWFkIGlzIG5vdCBpbXBsZW1l
bnRlZAorUEFTUyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0aGUgc3Ry
ZWFtIHNob3VsZCBzdWNjZWVkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLmh0bWwKaW5kZXggMzU4MzQzYWU0MjliNDYwZGI1ZDJhZjgzMWIxYzM2ZGE3YWY3Y2U4
OS4uODEzZTAxZWQ0NWE1ZWFkNTFlOWFkMTgxNzE1ZWY4NGZhNDFiYmUwNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3Ry
ZWFtLXJlYWRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbApAQCAtMTA3LDcgKzEwNyw3IEBA
IHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJzKTsgLy8g
Q29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCiB9LCAnQ29uc3RydWN0aW5n
IGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJl
YW0gaXMgZXJyb3JlZCcpOwogCi12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkaW5nIGZyb20g
YSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVuayBpcyBh
dmFpbGFibGUnKTsKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgZnJvbSBhIHJlYWRl
ciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2YWlsYWJs
ZScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBj
b250cm9sbGVyOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1z
dHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0
CmluZGV4IDIzOGIwZjdmYjc1MDgyYjdiOTZhODNiYTRkMTlkOGY0YTFkOGVmN2IuLjNlOGMyYzFl
ZmViZGQxZDE3ODI4ZmM1MGQ3OWM1YmU2OWIyNzdkOWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0
ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CkBAIC0zLDcg
KzMsNyBAQCBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxlU3RyZWFt
IChlbXB0eSkKIFBBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBhbmQgcHJv
cGVydGllcyAKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGggUmVhZGFi
bGVTdHJlYW0gKGVtcHR5KSByZWFkZXIgCiBQQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBjb3JyZWN0
IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCi1GQUlMIHJlYWQoKSBzaG91bGQgcmV0dXJuIGRpc3Rp
bmN0IHByb21pc2VzIGVhY2ggdGltZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorUEFTUyByZWFk
KCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCiBQQVNTIGdldFJl
YWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCiBGQUlMIHJlbGVhc2luZyB0
aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVzb2x2ZSBhcyBp
ZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZB
SUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gZnVsZmlsbCByZWxl
YXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKQEAgLTE0LDcgKzE0LDcgQEAgRkFJTCBjYW5jZWwo
KSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0aW1lIGNh
bmNlbCBpcyBub3QKIFBBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAogUEFTUyBzaG91bGQg
YmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMsIHNpbmNlIHRoZXkgYXJlIGFsbCBh
dXRvLXJlbGVhc2VkIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGgg
UmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCkgcmVhZGVyIAotRkFJTCBy
ZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUg
fSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0
aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKIFBBU1MgY2xvc2VkIHNob3VsZCBm
dWxmaWxsIHdpdGggdW5kZWZpbmVkIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkIHdp
dGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKSAKIEZBSUwgY2FuY2VsKCkgc2hv
dWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwg
aXMgbm90IGltcGxlbWVudGVkCkBAIC0yNCwyNiArMjQsMjEgQEAgUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2Vs
KSByZWEKIEZBSUwgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5kZWZpbmVk
LCBkb25lOiB0cnVlIH0gY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBjbG9zZWQgc2hv
dWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVk
IHZpYSBjYWxsIGluIHN0YXJ0KSAKLUZBSUwgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJl
YWRlciB0aGF0IGFjdHMgZXJyb3JlZCByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorUEFTUyBnZXRS
ZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAogUEFTUyBS
dW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVy
cm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAogRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEg
ZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1l
bnRlZAogRkFJTCByZWFkZXIgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVj
dGVkIHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1Mgc2hv
dWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzLCBzaW5jZSB0aGV5IGFyZSBh
bGwgYXV0by1yZWxlYXNlZCAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBS
ZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBp
biBzdGFydCkgCi1GQUlMIGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBh
Y3RzIGVycm9yZWQgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLVBBU1MgUnVubmluZyB0ZW1wbGF0
ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJu
aW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyIAotVElNRU9VVCBjbG9zZWQg
c2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciBUZXN0IHRpbWVkIG91dAotRkFJTCByZWFkKCkg
c2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoIFJlYWRhYmxlU3Ry
ZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXIgCi1GQUlMIGNhbGxp
bmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3Ro
IGNodW5rcyByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBjYWxsaW5nIHJlYWQoKSB0d2lj
ZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgcmVhZCBpcyBu
b3QgaW1wbGVtZW50ZWQKLUZBSUwgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlz
ZXMgZWFjaCB0aW1lIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIGNhbmNlbCgpIGFmdGVy
IGEgcmVhZCgpIHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0IHJlYWQg
aXMgbm90IGltcGxlbWVudGVkCitUSU1FT1VUIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQg
d2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyBUZXN0IHRpbWVkIG91dAor
VElNRU9VVCBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5
IGdpdmUgYm90aCBjaHVua3MgVGVzdCB0aW1lZCBvdXQKK1BBU1MgcmVhZCgpIHNob3VsZCByZXR1
cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAorRkFJTCBjYW5jZWwoKSBhZnRlciBhIHJl
YWQoKSBzaG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCBjYW5jZWwgaXMg
bm90IGltcGxlbWVudGVkCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3NDbG9zZWRS
ZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhlbiBjbG9z
ZWQpIHJlYWRlciAKLUZBSUwgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNob3VsZCBn
aXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IHJlYWQgaXMgbm90IGltcGxlbWVu
dGVkCi1GQUlMIHRoaXJkIHJlYWQsIHdpdGggd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2YWx1ZTog
dW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgZHJh
aW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVyIGNsb3Nl
ZCBwcm9taXNlIHRvIGZ1bGZpbGwgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgcmVsZWFz
aW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBkbyBub3RoaW5n
IHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIHRoaXJkIHJlYWQoKSwgd2l0aG91dCB3YWl0
aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSBhc3NlcnRf
b2JqZWN0X2VxdWFsczogZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0IHByb3BlcnR5ICJk
b25lIiBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290IG9iamVjdCAiW29iamVj
dCBPYmplY3RdIgorRkFJTCB0aGlyZCByZWFkLCB3aXRoIHdhaXRpbmcsIHNob3VsZCBnaXZlIHsg
dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IGFzc2VydF9vYmplY3RfZXF1YWxzOiBmaXJz
dCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QgcHJvcGVydHkgImRvbmUiIGV4cGVjdGVkIG9iamVj
dCAiW29iamVjdCBPYmplY3RdIiBnb3Qgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iCitQQVNTIGRy
YWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRlciBjbG9z
ZWQgcHJvbWlzZSB0byBmdWxmaWxsIAorRkFJTCByZWxlYXNpbmcgdGhlIGxvY2sgYWZ0ZXIgdGhl
IHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGRvIG5vdGhpbmcgcmVsZWFzZUxvY2sgaXMgbm90IGlt
cGxlbWVudGVkCiBGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgcmVhZCgpIHRv
IGFjdCBhcyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVt
ZW50ZWQKLUZBSUwgcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBz
YW1lIHByb21pc2UgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwgcmVhZGVyJ3MgY2xvc2Vk
IHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21pc2UgcmVsZWFzZUxvY2sgaXMg
bm90IGltcGxlbWVudGVkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJl
bmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10
ZW1wbGF0ZWQuaHRtbAppbmRleCA4YzFiZjU4N2UxZTQ3MmRlMjUzMTE0Yzk1NzAzZGRmMTVhNTVi
YzkyLi5jNzJjYWEwNjZkMWU3MDVmZmE0NzcyNjFkYTVjNDIwOGUzYmE2ZGM2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1z
dHJlYW0tdGVtcGxhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sCkBAIC0zNjksNyAr
MzY5LDcgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyKGxhYmVsLCBm
YWN0b3J5LCBjaHVua3MpIHsKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIH0sICdSdW5uaW5n
IHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoICcgKyBsYWJlbCk7CiAKLSAgICB2
YXIgdGVzdDEgPSBhc3luY190ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRp
bmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MnKTsKKyAgICB2YXIgdGVzdDEgPSBh
c3luY190ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVu
dHVhbGx5IGdpdmUgYm90aCBjaHVua3MnLCB7IHRpbWVvdXQ6IDUwIH0pOwogICAgIHRlc3QxLnN0
ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwogICAg
ICAgICB2YXIgcHJvbWlzZUNvdW50ID0gMDsKQEAgLTM4NSw3ICszODUsNyBAQCBmdW5jdGlvbiB0
ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIobGFiZWwsIGZhY3RvcnksIGNodW5rcykgewog
ICAgICAgICB9KSk7CiAgICAgfSk7CiAKLSAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdjYWxs
aW5nIHJlYWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBj
aHVua3MnKTsKKyAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2lj
ZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MnLCB7IHRpbWVv
dXQ6IDUwIH0pOwogICAgIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciB7IHJl
YWRlciB9ID0gZmFjdG9yeSgpOwogCkBAIC02MTQsNyArNjE0LDggQEAgdGVtcGxhdGVkUlNFcnJv
cmVkU3luY09ubHkoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KScs
IGZ1bmN0aW8KICAgICB9KX0sCiAgICAgdGhlRXJyb3IKICk7Ci0KKy8vIEZJWE1FOiBBY3RpdmF0
ZSB0aGVzZSB0ZXN0cyBvbmNlIFByb21pc2UgaGFuZGxpbmcgaXMgc3VwcG9ydGVkIGluIHN0YXJ0
IGZ1bmN0aW9uLgorLyoKIHRlbXBsYXRlZFJTRXJyb3JlZCgnUmVhZGFibGVTdHJlYW0gKGVycm9y
ZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpJywgZnVuY3Rpb24o
KSB7CiAgICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7CiAgICAgICAgIHN0YXJ0OiBmdW5j
dGlvbigpIHsKQEAgLTYzMiw2ICs2MzMsNyBAQCB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1Jl
YWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taQogICAg
IH0pKX0sCiAgICAgdGhlRXJyb3IKICk7CisqLwogCiB2YXIgY2h1bmtzID0gWydhJywgJ2InXTsK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbAppbmRleCBkMDcyNWU0NDI2NjFhNzJl
MjZmZWI2MzNmODMzNmMyMDhlOTU0ZTYxLi4xNmNlOGM0YWU0NDkzMzE3ZDMyN2NmOTE4YjRjZjQ5
MDk2MTU4ZDU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbApAQCAtNTMsNyAr
NTMsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0cmF0
ZWd5OiAyIH0pOyAvLyBDb25zdHJ1Y3RvciBzaG91bGQgbm90IHRocm93IHdoZW4gc3RyYXRlZ3kg
aXMgbm90IGFuIG9iamVjdC4KIH0sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0
IGluaXRpYWwgZ2FyYmFnZSBhcyBzdHJhdGVneSBhcmd1bWVudCcpOwogCi12YXIgdGVzdDEgPSBh
c3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4g
YSBwcm9taXNlJyk7Cit2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBzdGFy
dCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlJywgeyB0aW1lb3V0OiA1MCB9KTsK
IHRlc3QxLnN0ZXAoZnVuY3Rpb24oKQogewogICAgIHZhciByZWFkQ2FsbGVkID0gZmFsc2U7CkBA
IC0xNDYsNyArMTQ2LDcgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBhc3NlcnRfdGhyb3dzKGVy
cm9yLCBmdW5jdGlvbigpIHsgbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RhcnQoKSB7IHRocm93IGVy
cm9yOyB9IH0pIH0sICdlcnJvciBzaG91bGQgYmUgcmUtdGhyb3duJyk7CiB9LCAnUmVhZGFibGVT
dHJlYW06IGlmIHN0YXJ0IHRocm93cyBhbiBlcnJvciwgaXQgc2hvdWxkIGJlIHJlLXRocm93bicp
OwogCi12YXIgdGVzdDQgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWpl
Y3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbScpOwordmFyIHRlc3Q0ID0gYXN5bmNfdGVz
dCgnUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBz
dHJlYW0nLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDQuc3RlcChmdW5jdGlvbigpIHsKICAgICB2
YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ3B1bGwgZmFpbHVyZScpOwogICAgIHZhciBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSh7CkBAIC0zNjgsNyArMzY4LDcgQEAgdGVzdDQuc3RlcChmdW5jdGlvbigp
IHsKIC8vICAgICB9KSwgc3RhbmRhcmRUaW1lb3V0KTsKIC8vIH0pOwogCi12YXIgdGVzdDExID0g
YXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRo
ZSBwcmV2aW91cyBwdWxsIGNhbGxcJ3MgcHJvbWlzZSBmdWxmaWxscycpOwordmFyIHRlc3QxMSA9
IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCB1bnRpbCB0
aGUgcHJldmlvdXMgcHVsbCBjYWxsXCdzIHByb21pc2UgZnVsZmlsbHMnLCB7IHRpbWVvdXQ6IDUw
IH0pOwogdGVzdDExLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJlc29sdmU7CiAgICAgdmFy
IHJldHVybmVkUHJvbWlzZTsKQEAgLTU2NSw3ICs1NjUsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewog
ICAgIH0pOwogfSwgJ1JlYWRhYmxlU3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgc3Rv
cmVkIGVycm9yIHdoZW4gdGhlIHN0cmVhbSBpcyBlcnJvcmVkJyk7CiAKLXZhciB0ZXN0MTYgPSBh
c3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2Ug
bWV0aG9kcyBhcyBtZXRob2RzJyk7Cit2YXIgdGVzdDE2ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVT
dHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0aG9kcycs
IHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MTYuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgc3Rh
cnRDYWxsZWQgPSAwOwogICAgIHZhciBwdWxsQ2FsbGVkID0gMDsKQEAgLTY1OCw3ICs2NTgsNyBA
QCB0ZXN0MTcuc3RlcChmdW5jdGlvbigpIHsKICAgICB9KSkuY2F0Y2godGVzdDE3LnN0ZXBfZnVu
YyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0gKSk7CiB9KTsKIAotdmFyIHRl
c3QxOCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0
aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlJyk7Cit2YXIgdGVzdDE4ID0gYXN5bmNfdGVzdCgnUmVh
ZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3Vy
Y2UnLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDE4LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFy
IHB1bGxDaGVja2VkID0gZmFsc2U7CiAgICAgdmFyIHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5kb21Q
dXNoU291cmNlKDgpOwpAQCAtNzAyLDcgKzcwMiw3IEBAIHRlc3QxOC5zdGVwKGZ1bmN0aW9uKCkg
ewogICAgIH0pLCB0ZXN0MTguc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3JlYWNoZWQo
ZSk7IH0pKTsKIH0pOwogCi12YXIgdGVzdDE5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0g
aW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSBzeW5jIHB1bGwgc291cmNlJyk7Cit2YXIgdGVz
dDE5ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRp
bmcgYSBzeW5jIHB1bGwgc291cmNlJywgeyB0aW1lb3V0OiA1MCB9KTsKIHRlc3QxOS5zdGVwKGZ1
bmN0aW9uKCkgewogICAgIHZhciBycyA9IHNlcXVlbnRpYWxSZWFkYWJsZVN0cmVhbSgxMCk7CiAK
QEAgLTcxNCw3ICs3MTQsNyBAQCB0ZXN0MTkuc3RlcChmdW5jdGlvbigpIHsKICAgICB9KSk7CiB9
KTsKIAotdmFyIHRlc3QyMCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9u
IHRlc3Q6IGFkYXB0aW5nIGFuIGFzeW5jIHB1bGwgc291cmNlJyk7Cit2YXIgdGVzdDIwID0gYXN5
bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5
bmMgcHVsbCBzb3VyY2UnLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDIwLnN0ZXAoZnVuY3Rpb24o
KSB7CiAgICAgdmFyIHJzID0gc2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwLCB7IGFzeW5jOiB0
cnVlIH0pOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253790</attachid>
            <date>2015-05-27 07:23:25 -0700</date>
            <delta_ts>2015-06-02 02:02:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144790-20150527162313.patch</filename>
            <type>text/plain</type>
            <size>45690</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAyNjU2NWMyNDZkYmNl
YTA1NjZkOWRmYjBjMGZjODQ2MmM3NWMyYy4uNWVkYzhiZWJjNGRmMGE1NWY4YzJiZjVjNzBlZDUz
MDk3NTcyZTJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE1LTA1LTI3ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IEltcGxlbWVudCBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFkIG1ldGhvZCBpbiBjbG9zZWQgYW5k
IGVycm9yZWQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NDc5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlYWRlciBkZWxlZ2F0ZXMgcmVhZCgpIHByb21pc2UgaGFuZGxpbmcgdG8gaXRzIHN0
cmVhbSBleGNlcHQgaWYgcmVhZGVyIGlzIG5vIGxvbmdlciBsb2NraW5nIHRoZSBzdHJlYW0gYW5k
IHN0cmVhbSBpcyByZWFkYWJsZS4KKyAgICAgICAgU3RvcmluZyBvZiByZWFkZXIgcmVhZCgpIHBy
b21pc2UgY2FsbGJhY2tzIGFzIGEgVmVjdG9yIGluIFJlYWRhYmxlU3RyZWFtLgorICAgICAgICBB
ZGRlZCByZXNvbHV0aW9uL3JlamVjdGlvbiBvZiByZWFkKCkgcHJvbWlzZXMgaW4gY2FzZSBvZiBl
cnJvcmVkL2Nsb3NlZCBzdHJlYW1zLgorCisgICAgICAgIFRlc3Q6IHN0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLXJlYWRlci1yZWFkLmh0bWwKKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3J1
bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVh
bTo6Y2xlYW5DYWxsYmFja3MpOiBDbGVhbiB0aGUgcmVhZCByZXF1ZXN0cy4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvQ2xvc2VkKTogUnVuIHN1Y2Nlc3Mg
Y2FsbGJhY2tzIHdpdGggdW5kZWZpbmVkIGZvciByZWFkIHJlcXVlc3RzLgorICAgICAgICAoV2Vi
Q29yZTo6UmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9FcnJvcmVkKTogUnVuIGZhaWx1cmUg
Y2FsbGJhY2tzIHdpdGggdGhlIGVycm9ycyBmb3IgcmVhZCByZXF1ZXN0cy4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpjbG9zZWQpOiBQYXJhbWV0ZXIgbmFtZSBjaGFuZ2VkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnJlYWQpOiBBZGRlZC4gU3VjY2VlZHMg
d2l0aCBlbXB0eSB3aGVuIGNsb3NlZCwgZmFpbHMgd2l0aCBlcnJvciB3aGVuIGVycm9yZWQsIHJl
YWRzIGEKKyAgICAgICAgdmFsdWUgaWYgdGhlcmUgaXMgb25lIGFuZCBwdXNoZXMgdGhlIGNhbGxi
YWNrcyB0byB0aGUgcXVldWUgb3RoZXJ3aXNlLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OlJlYWRD
YWxsYmFja3M6OlJlYWRDYWxsYmFja3MpOiBTdHJ1Y3QgY29udGFpbmluZyBzdWNjZXNzIGFuZCBm
YWlsdXJlIGNhbGxiYWNrcy4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1SZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1SZWFkZXI6OmNs
b3NlZCk6IFBhcmFtZXRlciBuYW1lIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJs
ZVN0cmVhbVJlYWRlcjo6cmVhZCk6IEludm9rZSBzdWNjZXNzIHdpdGggZW1wdHkgaWYgd2Ugc3Ry
ZWFtcyBpZiB3ZSBkb24ndCBoYXZlIHRoZSByaWdodCByZWFkZXIKKyAgICAgICAgYW5kIGNhbGwg
dGhlIHN0cmVhbSBvdGhlcndpc2UgdG8gcmVhZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1SZWFkZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxl
U3RyZWFtUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFibGVTdHJl
YW1SZWFkZXI6OnJlYWQpOiBDcmVhdGUgdGhlIGNhbGxiYWNrIGxhbWJkYXMgYW5kIGludm9rZSBy
ZWFkLiBGYWlsdXJlIHJlamVjdHMgdGhlCisgICAgICAgIHByb21pc2UgYW5kIHN1Y2Nlc3MgY3Jl
YXRlcyB0aGUgcmVzdWx0IGZyb20gdGhlIHJlYWQgdmFsdWUuCisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVKU1N0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3Ry
ZWFtOjpoYXNWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpyZWFk
KTogTm90IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmg6CisKIDIwMTUtMDUtMjcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBcmFiaWMgbGlnYXR1cmVzIGFyZSBicm9rZW4gaW4g
R29vZ2xlIE1hcHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJz
L3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjZTA2YTE3
ZWU2Njg4NDNkNmQ5ODQzMzFjYjlmMGNlNTQ4YmNkZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5o
CkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9JdGVyYXRvck9wZXJhdGlvbnNf
aAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JdGVyYXRvck9wZXJhdGlvbnNfaAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAppbmRleCBiZWMzZDMw
MDc3MDY1NTRlM2I4ZGFhOWMwYTYyYWFiMmNmODg0NzIzLi4yNzNiNzNjZTNhYjE5NWVjYzVmM2Yz
MmE4OGQyOTFmYTJmMzBlYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKLSNpbmNs
dWRlIDxydW50aW1lL0pTQ0pTVmFsdWUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC02Miw2ICs2Miw4IEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OmNs
ZWFyQ2FsbGJhY2tzKCkKIHsKICAgICBtX2Nsb3NlZFN1Y2Nlc3NDYWxsYmFjayA9IG51bGxwdHI7
CiAgICAgbV9jbG9zZWRGYWlsdXJlQ2FsbGJhY2sgPSBudWxscHRyOworCisgICAgbV9yZWFkUmVx
dWVzdHMuY2xlYXIoKTsKIH0KIAogdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Ns
b3NlZCgpCkBAIC03Niw2ICs3OCw5IEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRl
VG9DbG9zZWQoKQogICAgIGlmIChtX2Nsb3NlZFN1Y2Nlc3NDYWxsYmFjaykKICAgICAgICAgbV9j
bG9zZWRTdWNjZXNzQ2FsbGJhY2soKTsKIAorICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fcmVh
ZFJlcXVlc3RzKQorICAgICAgICByZXF1ZXN0LnN1Y2Nlc3NDYWxsYmFjayhKU0M6OkpTVmFsdWUo
KSk7CisKICAgICBjbGVhckNhbGxiYWNrcygpOwogfQogCkBAIC04OCw4ICs5MywxMiBAQCB2b2lk
IFJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCiAgICAgaWYgKG1fcmVhZGVy
KQogICAgICAgICBtX3JlbGVhc2VkUmVhZGVycy5hcHBlbmQoV1RGOjptb3ZlKG1fcmVhZGVyKSk7
CiAKKyAgICBKU0M6OkpTVmFsdWUgZXJyb3IgPSB0aGlzLT5lcnJvcigpOwogICAgIGlmIChtX2Ns
b3NlZEZhaWx1cmVDYWxsYmFjaykKLSAgICAgICAgbV9jbG9zZWRGYWlsdXJlQ2FsbGJhY2soZXJy
b3IoKSk7CisgICAgICAgIG1fY2xvc2VkRmFpbHVyZUNhbGxiYWNrKGVycm9yKTsKKworICAgIGZv
ciAoYXV0byYgcmVxdWVzdCA6IG1fcmVhZFJlcXVlc3RzKQorICAgICAgICByZXF1ZXN0LmZhaWx1
cmVDYWxsYmFjayhlcnJvcik7CiAKICAgICBjbGVhckNhbGxiYWNrcygpOwogfQpAQCAtMTEwLDcg
KzExOSw3IEBAIFJlYWRhYmxlU3RyZWFtUmVhZGVyJiBSZWFkYWJsZVN0cmVhbTo6Z2V0UmVhZGVy
KCkKICAgICByZXR1cm4gcmVhZGVyOwogfQogCi12b2lkIFJlYWRhYmxlU3RyZWFtOjpjbG9zZWQo
Q2xvc2VkU3VjY2Vzc0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgQ2xvc2VkRmFpbHVyZUNhbGxi
YWNrIGZhaWx1cmVDYWxsYmFjaykKK3ZvaWQgUmVhZGFibGVTdHJlYW06OmNsb3NlZChDbG9zZWRT
dWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBGYWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNh
bGxiYWNrKQogewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpIHsKICAgICAgICAg
c3VjY2Vzc0NhbGxiYWNrKCk7CkBAIC0xMjQsNiArMTMzLDI0IEBAIHZvaWQgUmVhZGFibGVTdHJl
YW06OmNsb3NlZChDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBDbG9zZWRG
YWlsdXJlCiAgICAgbV9jbG9zZWRGYWlsdXJlQ2FsbGJhY2sgPSBXVEY6Om1vdmUoZmFpbHVyZUNh
bGxiYWNrKTsKIH0KIAordm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVhZChSZWFkU3VjY2Vzc0NhbGxi
YWNrIHN1Y2Nlc3NDYWxsYmFjaywgRmFpbHVyZUNhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaykKK3sK
KyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKSB7CisgICAgICAgIHN1Y2Nlc3NDYWxs
YmFjayhKU0M6OkpTVmFsdWUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1f
c3RhdGUgPT0gU3RhdGU6OkVycm9yZWQpIHsKKyAgICAgICAgZmFpbHVyZUNhbGxiYWNrKGVycm9y
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChoYXNWYWx1ZSgpKSB7CisgICAg
ICAgIHN1Y2Nlc3NDYWxsYmFjayhyZWFkKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IG1fcmVhZFJlcXVlc3RzLmFwcGVuZChSZWFkQ2FsbGJhY2tzIHsgV1RGOjptb3ZlKHN1Y2Nlc3ND
YWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spIH0pOworICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgdHJ5IHRvIHB1bGwuCit9CisKIHZvaWQgUmVhZGFibGVTdHJlYW06OnN0YXJ0KCkK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW0uaAppbmRleCBjODc0MzY1NzVjMzRlY2ZhN2MwYWEwNjkzM2I2
NGMzOWMxZjVkMDkxLi43MTgyZjlhNjMwNzY0NDgzYmY0OWQwMDQ0MDEwNjg2ZTEyMjRjYTE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaApA
QCAtNzUsOSArNzUsMTMgQEAgcHVibGljOgogCiAgICAgUmVhZGFibGVTdHJlYW1Tb3VyY2UmIHNv
dXJjZSgpIHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9CiAKKyAgICB0eXBlZGVmIHN0ZDo6ZnVu
Y3Rpb248dm9pZChKU0M6OkpTVmFsdWUpPiBGYWlsdXJlQ2FsbGJhY2s7CisKICAgICB0eXBlZGVm
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBDbG9zZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgdHlwZWRl
ZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoSlNDOjpKU1ZhbHVlKT4gQ2xvc2VkRmFpbHVyZUNhbGxiYWNr
OwotICAgIHZvaWQgY2xvc2VkKENsb3NlZFN1Y2Nlc3NDYWxsYmFjaywgQ2xvc2VkRmFpbHVyZUNh
bGxiYWNrKTsKKyAgICB2b2lkIGNsb3NlZChDbG9zZWRTdWNjZXNzQ2FsbGJhY2ssIEZhaWx1cmVD
YWxsYmFjayk7CisKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChKU0M6OkpTVmFsdWUp
PiBSZWFkU3VjY2Vzc0NhbGxiYWNrOworICAgIHZvaWQgcmVhZChSZWFkU3VjY2Vzc0NhbGxiYWNr
LCBGYWlsdXJlQ2FsbGJhY2spOwogCiBwcm90ZWN0ZWQ6CiAgICAgUmVhZGFibGVTdHJlYW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxSZWFkYWJsZVN0cmVhbVNvdXJjZT4mJik7CkBAIC04
OSwxMSArOTMsMjAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2xlYXJDYWxsYmFja3MoKTsKIAor
ICAgIHZpcnR1YWwgYm9vbCBoYXNWYWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6
SlNWYWx1ZSByZWFkKCkgPSAwOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRhYmxlU3RyZWFt
UmVhZGVyPiBtX3JlYWRlcjsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyPj4gbV9yZWxlYXNlZFJlYWRlcnM7CiAKICAgICBDbG9zZWRTdWNjZXNzQ2FsbGJh
Y2sgbV9jbG9zZWRTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgQ2xvc2VkRmFpbHVyZUNhbGxiYWNrIG1f
Y2xvc2VkRmFpbHVyZUNhbGxiYWNrOworICAgIEZhaWx1cmVDYWxsYmFjayBtX2Nsb3NlZEZhaWx1
cmVDYWxsYmFjazsKKworICAgIHN0cnVjdCBSZWFkQ2FsbGJhY2tzIHsKKyAgICAgICAgUmVhZFN1
Y2Nlc3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2s7CisgICAgICAgIEZhaWx1cmVDYWxsYmFjayBm
YWlsdXJlQ2FsbGJhY2s7CisgICAgfTsKKyAgICBWZWN0b3I8UmVhZENhbGxiYWNrcz4gbV9yZWFk
UmVxdWVzdHM7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJlYWRhYmxlIH07CiAgICAg
UmVmPFJlYWRhYmxlU3RyZWFtU291cmNlPiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCmluZGV4IDQ0
MjhkYWI0ZDc1MjkxYWNjZTQ4NmJiMWVjOGY1YzRiYTBkZWM4NTkuLjZhNDQ2ODlmYmM2NDM2MmE3
Zjk5ZjU2NzFmZWE3NjhkNzUxNWI3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcApAQCAtMzAsMTEgKzMwLDEz
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFkZXIu
aCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKwogI2lmIEVOQUJM
RShTVFJFQU1TX0FQSSkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyOjpjbG9zZWQoUmVhZGFibGVTdHJlYW06OkNsb3NlZFN1Y2Nlc3NDYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRGYWlsdXJlQ2FsbGJhY2sgZmFp
bHVyZUNhbGxiYWNrKQordm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKFJlYWRhYmxl
U3RyZWFtOjpDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBSZWFkYWJsZVN0
cmVhbTo6RmFpbHVyZUNhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaykKIHsKICAgICBpZiAobV9zdHJl
YW0uaXNSZWFkYWJsZSgpICYmIG1fc3RyZWFtLnJlYWRlcigpICE9IHRoaXMpIHsKICAgICAgICAg
c3VjY2Vzc0NhbGxiYWNrKCk7CkBAIC00Myw2ICs0NSwxNSBAQCB2b2lkIFJlYWRhYmxlU3RyZWFt
UmVhZGVyOjpjbG9zZWQoUmVhZGFibGVTdHJlYW06OkNsb3NlZFN1Y2Nlc3NDYWxsYmFjayBzdWNj
ZXNzQwogICAgIG1fc3RyZWFtLmNsb3NlZChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RG
Ojptb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwogfQogCit2b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVy
OjpyZWFkKFJlYWRhYmxlU3RyZWFtOjpSZWFkU3VjY2Vzc0NhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFj
aywgUmVhZGFibGVTdHJlYW06OkZhaWx1cmVDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2spCit7Cisg
ICAgaWYgKG1fc3RyZWFtLmlzUmVhZGFibGUoKSAmJiBtX3N0cmVhbS5yZWFkZXIoKSAhPSB0aGlz
KSB7CisgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhKU0M6OkpTVmFsdWUoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgbV9zdHJlYW0ucmVhZChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjaykpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIu
aAppbmRleCA0ZmY0MmQyMTQxYjNiNWNjYmRkZDUzY2RjM2FkNTUzYjJhODI2N2UwLi45MmNlMTg5
NTU3NjUyMmYyZjBiYTFiMTgxZjU1MGJhZjVlNzMyNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaApAQCAtNTEsNyAr
NTEsOCBAQCBwdWJsaWM6CiAgICAgUmVhZGFibGVTdHJlYW1SZWFkZXIoUmVhZGFibGVTdHJlYW0m
IHN0cmVhbSkKICAgICAgICAgOiBtX3N0cmVhbShzdHJlYW0pIHsgfQogCi0gICAgdm9pZCBjbG9z
ZWQoUmVhZGFibGVTdHJlYW06OkNsb3NlZFN1Y2Nlc3NDYWxsYmFjaywgUmVhZGFibGVTdHJlYW06
OkNsb3NlZEZhaWx1cmVDYWxsYmFjayk7CisgICAgdm9pZCBjbG9zZWQoUmVhZGFibGVTdHJlYW06
OkNsb3NlZFN1Y2Nlc3NDYWxsYmFjaywgUmVhZGFibGVTdHJlYW06OkZhaWx1cmVDYWxsYmFjayk7
CisgICAgdm9pZCByZWFkKFJlYWRhYmxlU3RyZWFtOjpSZWFkU3VjY2Vzc0NhbGxiYWNrLCBSZWFk
YWJsZVN0cmVhbTo6RmFpbHVyZUNhbGxiYWNrKTsKIAogICAgIHZvaWQgcmVmKCkgeyBtX3N0cmVh
bS5yZWYoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IG1fc3RyZWFtLmRlcmVmKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJl
YWRlckN1c3RvbS5jcHAKaW5kZXggYTc3Yzk4ODcxNGZiZjE0NWUxOTRlOWEwNGQ0ODQyMjZkMDZl
MmJhMi4uOGM2MzQwOTY5ZjcwNmQ3YTZjZTk0NWYxY2MyZDI0Nzc1NGZjOTVhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJl
YWRlckN1c3RvbS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU1JlYWRhYmxlU3Ry
ZWFtLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVKU1N0cmVhbS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUv
RXJyb3IuaD4KKyNpbmNsdWRlIDxydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNDUs
OCArNDYsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1ZhbHVlIEpTUmVhZGFibGVTdHJl
YW1SZWFkZXI6OnJlYWQoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVmFsdWUgZXJyb3IgPSBj
cmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInJlYWQgaXMgbm90IGltcGxlbWVudGVkIikp
OwotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVycm9yKTsKKyAg
ICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkID0gSlNQcm9taXNlRGVmZXJyZWQ6
OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QoKSk7CisgICAgRGVmZXJyZWRXcmFwcGVyIHdyYXBw
ZXIoZXhlYywgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCk7CisgICAgYXV0byBzdWNj
ZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0oSlNWYWx1ZSB2YWx1ZSkgbXV0YWJsZSB7CisgICAgICAg
IEpTVmFsdWUgcmVzdWx0ID0gY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3Qod3JhcHBlci5wcm9t
aXNlKCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHZhbHVlID8gdmFsdWUgOiBKU0M6
OmpzVW5kZWZpbmVkKCksICF2YWx1ZSk7CisgICAgICAgIHdyYXBwZXIucmVzb2x2ZShyZXN1bHQp
OworICAgIH07CisgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oSlNWYWx1ZSB2
YWx1ZSkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KHZhbHVlKTsKKyAgICB9Owor
CisgICAgaW1wbCgpLnJlYWQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShm
YWlsdXJlQ2FsbGJhY2spKTsKKworICAgIHJldHVybiB3cmFwcGVyLnByb21pc2UoKTsKIH0KIAog
SlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoRXhlY1N0YXRlKiBleGVjKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0
cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNw
cAppbmRleCAzNjczODVmNTRmYzU0MDAzNWUwNTcyNGU2MjNlNDQwNDFjZjBjMDhjLi5kNDg3MzE0
MGZmMDg5Zjg1ZDIwNWJlNTA4ZGI5N2ZlODMyYmJkYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAtMTQ4LDYgKzE0OCwxOCBAQCB2
b2lkIFJlYWRhYmxlSlNTdHJlYW06OnN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIGV4ZWMpCiAg
ICAgY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKIH0KIAorYm9vbCBSZWFkYWJsZUpTU3RyZWFtOjpo
YXNWYWx1ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK0pTVmFsdWUgUmVhZGFibGVKU1N0cmVhbTo6cmVhZCgpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlSlNTdHJlYW0uaAppbmRleCA0YjczYjg5NjQzMTc2ZWZkMzkwMzcwNDgwYWNkNTQwOTBiNGUw
NTMwLi42OGFiODlhNmQ2ZjY0YTM5ZjZhZTUxMDM4N2YwMjZhODAwMTZkZTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCkBAIC03Myw2ICs3Myw5
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgUmVmPFJlYWRhYmxlSlNTdHJlYW06OlNvdXJjZT4mJik7CiAKKyAgICB2aXJ0
dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEpTQzo6SlNW
YWx1ZSByZWFkKCkgb3ZlcnJpZGU7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZGFibGVTdHJl
YW1Db250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3du
PiBtX2Vycm9yOwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZmI1Mzc2NDY2MDgyNzE4MTlmYzYyZWMyZDI2MGRkZTli
NTY3YmQ0Li5iZmJkMDc3NzI2MWY2OTNjYzNmNjdlZmY0NWQ1NmM1ZThhOWMwNjM1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMTUtMDUtMjcgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2Fs
dmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5mYWJsZXRAY3JmLmNh
bm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVtZW50IFJlYWRhYmxlU3RyZWFt
UmVhZGVyIHJlYWQgbWV0aG9kIGluIGNsb3NlZCBhbmQgZXJyb3JlZCBzdGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzkwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbmV3IHRlc3QuIFJl
YmFzZWQgcmVmZXJlbmNlIHRlc3RzIChleHBlY3RhdGlvbnMgYW5kIHRpbWVvdXRpbmcvdW50aW1l
b3V0aW5nIHRlc3RzKS4KKworICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRl
ci1yZWFkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0tcmVhZGVyLXJlYWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmct
c291cmNlcy5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbDoKKyAg
ICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
Y2FuY2VsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS1yZWFkZXIuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxh
dGVkLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVh
ZGFibGUtc3RyZWFtLmh0bWw6CisKIDIwMTUtMDUtMjcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBcmFiaWMgbGlnYXR1cmVzIGFyZSBi
cm9rZW4gaW4gR29vZ2xlIE1hcHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVh
ZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
YWY0M2UxY2U2MjY2MjQ4YjNlNGY3NDhiMThlMDRlYzBkMmNkY2QwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJlYWQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0g
dGhhdCBnZXRzIGNsb3NlZCAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3NlZCBzdHJlYW0g
CitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0gCitQQVNTIFJlYWRpbmcg
dHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQgCitQQVNTIFJlYWRpbmcgd2l0aGlu
IGEgcmVhZCBwcm9taXNlIHJlc29sdmUgY2FsbGJhY2sgb24gYSBzdHJlYW0gdGhhdCBnZXRzIGNs
b3NlZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLXJlYWQuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJl
YWRlci1yZWFkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI0MTdiNzFlMTJmZTk0MzA1NDk5NjE3YTE5NTgz
YmIxOTM0MDU4MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFi
bGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0bWwKQEAgLTAsMCArMSwxNjIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3Njcmlw
dD4KKzxzY3JpcHQ+Cit2YXIgdDEgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGEgc3Ry
ZWFtIHRoYXQgZ2V0cyBjbG9zZWQnKTsKK3QxLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNv
bnRyb2xsZXI7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9
CisgICAgfSk7CisgICAgdmFyIGNvdW50ZXIgPSAwOworICAgIHZhciByZWFkZXIgPSBycy5nZXRS
ZWFkZXIoKTsKKworICAgIHJlYWRlci5yZWFkKCkudGhlbih0MS5zdGVwX2Z1bmMoZnVuY3Rpb24o
cmVzdWx0KSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1ZTog
dW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBjbG9z
ZScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDEpOworICAgICAgICBjb3VudGVy
Kys7CisgICAgfSkpOworICAgIHJlYWRlci5yZWFkKCkudGhlbih0MS5zdGVwX2Z1bmMoZnVuY3Rp
b24ocmVzdWx0KSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwgeyB2YWx1
ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCBj
bG9zZScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDIpOworICAgICAgICBjb3Vu
dGVyKys7CisgICAgICAgIHQxLmRvbmUoKTsKKyAgICB9KSk7CisgICAgcmVhZGVyLmNsb3NlZC50
aGVuKHQxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3Vu
dGVyLCAwKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKworICAgIGNvbnRyb2xsZXIu
Y2xvc2UoKTsKK30pOworCit2YXIgdDIgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3aWNlIG9uIGEg
Y2xvc2VkIHN0cmVhbScpOwordDIuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJvbGxl
cjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVu
Y3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKworICAgIHZhciBjb3VudGVyID0gMDsKKyAg
ICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4o
dDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgpIHNo
b3VsZCBmdWxmaWxsIHdpdGggY2xvc2UnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVy
LCAwKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFkZXIucmVhZCgpLnRo
ZW4odDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAncmVhZCgp
IHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3Vu
dGVyLCAxKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFkZXIuY2xvc2Vk
LnRoZW4odDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGNv
dW50ZXIsIDIpOworICAgICAgICBjb3VudGVyKys7CisgICAgICAgIHQyLmRvbmUoKTsKKyAgICB9
KSk7Cit9KTsKKwordmFyIHQzID0gYXN5bmNfdGVzdCgnUmVhZGluZyB0d2ljZSBvbiBhbiBlcnJv
cmVkIHN0cmVhbScpOwordDMuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJvbGxlcjsK
KyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rp
b24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIHZhciBteUVycm9yID0geyBwb3RhdG86ICJtYXNoZWQiIH07CisgICAgY29udHJvbGxl
ci5lcnJvcihteUVycm9yKTsKKworICAgIHZhciBjb3VudGVyID0gMDsKKyAgICB2YXIgcmVhZGVy
ID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odDMuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIHJl
amVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworICAgIH0pLCB0My5zdGVwX2Z1bmMoZnVuY3Rp
b24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsK
KyAgICByZWFkZXIucmVhZCgpLnRoZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIHJlamVjdCBvbiBhbiBlcnJvcmVkIHN0
cmVhbScpOworICAgIH0pLCB0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFz
c2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVy
LCAxKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFkZXIuY2xvc2VkLnRo
ZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdy
ZWFkKCkgc2hvdWxkIHJlamVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworICAgIH0pLCB0My5z
dGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwg
ZXJyKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAyKTsKKyAgICAgICAgY291bnRl
cisrOworICAgICAgICB0My5kb25lKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0NCA9IGFzeW5j
X3Rlc3QoJ1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQnKTsKK3Q0
LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFyIHJzID0gbmV3
IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAg
ICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgY291bnRl
ciA9IDA7CisgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgICAgcmVhZGVyLnJl
YWQoKS50aGVuKHQ0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgncmVhZCgpIHNob3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKyAgICB9
KSwgdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKG15
RXJyb3IsIGVycik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMSk7CisgICAgICAg
IGNvdW50ZXIrKzsKKyAgICB9KSk7CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHQ0LnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCBy
ZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKyAgICB9KSwgdDQuc3RlcF9mdW5jKGZ1bmN0
aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVycik7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoY291bnRlciwgMik7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAg
dDQuZG9uZSgpOworICAgIH0pKTsKKyAgICByZWFkZXIuY2xvc2VkLnRoZW4odDQuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIHJl
amVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworICAgIH0pLCB0NC5zdGVwX2Z1bmMoZnVuY3Rp
b24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsK
KworICAgIHZhciBteUVycm9yID0geyBwb3RhdG86ICdtYXNoZWQnIH07CisgICAgY29udHJvbGxl
ci5lcnJvcihteUVycm9yKTsKKyB9KTsKKwordmFyIHQ1ID0gYXN5bmNfdGVzdCgnUmVhZGluZyB3
aXRoaW4gYSByZWFkIHByb21pc2UgcmVzb2x2ZSBjYWxsYmFjayBvbiBhIHN0cmVhbSB0aGF0IGdl
dHMgY2xvc2VkJyk7Cit0NS5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb250cm9sbGVyOwor
ICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlv
bihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgICAgcmVhZGVyLnJlYWQoKS50
aGVuKHQ1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgcmVhZGVyLnJlYWQoKS50aGVu
KHQ1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHQ1LmRvbmUoKTsKKyAgICAg
ICAgfSkpOworICAgIH0pKTsKKyAgICBjb250cm9sbGVyLmNsb3NlKCk7Cit9KTsKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVj
dGVkLnR4dAppbmRleCAxOWNhMzU1NTk1NzRlMzEzMDk5ZmM0ODgyY2FkZDE0MTJhOWEyMjgwLi5i
NzU1ODFiMWQ5NWMwNDE3MDhlNTEzZGU5YmVjMTI4NWEzMTcxNDk1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1z
b3VyY2VzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dApAQCAtNSw4
ICs1LDggQEAgRkFJTCBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcgZ2V0dGVyIGFz
c2VydF90aHJvd3M6IGNvbnN0cnVjdGluZyB0aGUgc3QKIFBBU1MgVW5kZXJseWluZyBzb3VyY2Ug
c3RhcnQ6IHRocm93aW5nIG1ldGhvZCAKIFRJTUVPVVQgVW5kZXJseWluZyBzb3VyY2U6IHRocm93
aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1bGwpIFRlc3QgdGltZWQgb3V0CiBUSU1FT1VUIFVu
ZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5pdGlhbCBwdWxsKSBUZXN0
IHRpbWVkIG91dAotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIg
KHNlY29uZCBwdWxsKSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBVbmRlcmx5aW5nIHNv
dXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKHNlY29uZCBwdWxsKSByZWFkIGlzIG5vdCBpbXBs
ZW1lbnRlZAorVElNRU9VVCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBnZXR0ZXIg
KHNlY29uZCBwdWxsKSBUZXN0IHRpbWVkIG91dAorVElNRU9VVCBVbmRlcmx5aW5nIHNvdXJjZTog
dGhyb3dpbmcgcHVsbCBtZXRob2QgKHNlY29uZCBwdWxsKSBUZXN0IHRpbWVkIG91dAogRkFJTCBV
bmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgY2FuY2VsIGdldHRlciBjYW5jZWwgaXMgbm90IGlt
cGxlbWVudGVkCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBjYW5jZWwgbWV0aG9k
IGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHRocm93
aW5nIHN0cmF0ZWd5IGdldHRlciBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB0
aGUgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBu
b3QgdGhyb3cKQEAgLTE4LDcgKzE4LDcgQEAgRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogc3RyYXRl
Z3kuc2l6ZSByZXR1cm5pbmcgTmFOIGFzc2VydF91bnJlYWNoZWQ6IGVucXVldWUgZGkKIEZBSUwg
VW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nIC1JbmZpbml0eSBhc3Nl
cnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpZG4ndCB0aHJvdyBSZWFjaGVkIHVucmVhY2hhYmxlIGNv
ZGUKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nICtJbmZp
bml0eSBhc3NlcnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpZG4ndCB0aHJvdyBSZWFjaGVkIHVucmVh
Y2hhYmxlIGNvZGUKIFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ug
b24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCi1GQUlMIFVu
ZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVtcHR5IHN0cmVh
bSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitG
QUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVtcHR5
IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIGFzc2VydF9vYmplY3RfZXF1YWxz
OiByZWFkKCkgc2hvdWxkIHJlYWQgdGhlIGVucXVldWVkIGNodW5rIHByb3BlcnR5ICJkb25lIiBl
eHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290IG9iamVjdCAiW29iamVjdCBPYmpl
Y3RdIgogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBj
YW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVk
CiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNh
bmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQK
IFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxk
IHRocm93IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sCmlu
ZGV4IGJjNDE3MDkyNGI3YjFhYjkzMzIzNmM0MmI0MWVjOWY4ZTVkY2JjZGYuLmM4NWQ1M2M3MTE5
OTAzYjI1ZmYwZGUxMzA3NGI1ZDU5ZWVkODM2NjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQt
dW5kZXJseWluZy1zb3VyY2VzLmh0bWwKQEAgLTYxLDcgKzYxLDcgQEAgdGVzdDIuc3RlcChmdW5j
dGlvbigpIHsKICAgICAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MyA9IGFzeW5jX3Rlc3QoJ1Vu
ZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoc2Vjb25kIHB1bGwpJyk7Cit2
YXIgdGVzdDMgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBn
ZXR0ZXIgKHNlY29uZCBwdWxsKScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0My5zdGVwKGZ1bmN0
aW9uKCkgewogICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUgc3RyaW5nJyk7
CiAgICAgdmFyIGNvdW50ZXIgPSAwOwpAQCAtODksNyArODksNyBAQCB0ZXN0My5zdGVwKGZ1bmN0
aW9uKCkgewogICAgICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3Q0ID0gYXN5bmNfdGVzdCgnVW5k
ZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChzZWNvbmQgcHVsbCknKTsKK3Zh
ciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1l
dGhvZCAoc2Vjb25kIHB1bGwpJywgeyB0aW1lb3V0OiA1MCB9KTsKIHRlc3Q0LnN0ZXAoZnVuY3Rp
b24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBzdHJpbmcnKTsK
ICAgICB2YXIgY291bnRlciA9IDA7CkBAIC00MzcsNyArNDM3LDcgQEAgdGVzdDE4LnN0ZXAoZnVu
Y3Rpb24oKSB7CiAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MTkgPSBhc3luY190ZXN0KCdVbmRl
cmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBhZnRlciBlcnJvciBzaG91bGQgdGhyb3cnLCB7
IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3QxOSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291
cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdycpOwogdGVzdDE5LnN0
ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdib28nKTsKICAg
ICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCB0ZXN0MTkuc3Rl
cChmdW5jdGlvbigpIHsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QyMCA9IGFzeW5jX3Rlc3Qo
J1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0aGUg
c2Vjb25kIHRpbWUnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3QyMCA9IGFzeW5jX3Rlc3Qo
J1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0aGUg
c2Vjb25kIHRpbWUnKTsKIHRlc3QyMC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVFcnJv
ciA9IG5ldyBFcnJvcignYm9vJyk7CiAgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CkBAIC00
NzEsNyArNDcxLDcgQEAgdGVzdDIwLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSkpOwogfSk7CiAK
LXZhciB0ZXN0MjEgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJv
ciBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3Qy
MSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNs
b3NlIHNob3VsZCB0aHJvdycpOwogdGVzdDIxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHN0
YXJ0Q2FsbGVkID0gZmFsc2U7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVp
bmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKaW5kZXgg
N2JkZjNkZWM2ZDU5NDNmZmU1MmNmOWY4NWFiNGQ0ZTA1Nzc1YjVmMC4uZDdjYmI3NWYzNzIzNjky
MmVlZTVhYzgwMmIxMTZiODNmMDEyNWJlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
Y291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKQEAgLTIsNyArMiw3IEBACiBQQVNT
IENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFsaWQgaGlnaCB3
YXRlciBtYXJrIAogUEFTUyBHaXZlcyBhIFJhbmdlRXJyb3Igd2hlbiB0aGUgbnVtYmVyIGlzIG5l
Z2F0aXZlIAogUEFTUyBDYW4gY29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdpdGggYSB2YWxp
ZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAKLUZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVy
biB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCkg
cmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJl
dHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0g
MCkgVGVzdCB0aW1lZCBvdXQKIEZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1
ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMSkgYXNzZXJ0
X2VxdWFsczogQWZ0ZXIgMCByZWFkcywgMXN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIChx
dWV1ZSBub3cgY29udGFpbnMgMSBjaHVuaykgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCiBG
QUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFkYWJsZVN0cmVh
bSdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDQpIGFzc2VydF9lcXVhbHM6IEFmdGVyIDAgcmVh
ZHMsIDFzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNvbnRhaW5zIDEg
Y2h1bmspIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0
ZWd5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9j
b3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKaW5kZXggM2I5NjQ1YjRmOTkzN2U0YWU5NDVkNzVk
NDI3NmJiNWFhOGIzZGFjZS4uODJjMzg3ZGRiYjU3MTU4YmEwZjdmOTJlYmRjNjQxYTIwZTNhZGQw
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3kuaHRtbApAQCAt
MTcsNyArMTcsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7
IHN0cmF0ZWd5OiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVyTWFyayI6IDQg
fSkgfSk7CiB9LCAnQ2FuIGNvbnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRoIGEgdmFsaWQg
Q291bnRRdWV1aW5nU3RyYXRlZ3knKTsKIAotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnQ29ycmVj
dGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtXCdzIGVucXVl
dWUgZnVuY3Rpb24gKEhXTSA9IDApJyk7Cit2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdDb3JyZWN0
bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW1cJ3MgZW5xdWV1
ZSBmdW5jdGlvbiAoSFdNID0gMCknLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDEuc3RlcChmdW5j
dGlvbigpIHsKICAgICB2YXIgZW5xdWV1ZTsKICAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJl
YW0oewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50
YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLWV4
cGVjdGVkLnR4dAppbmRleCBlZGY5MDE3NDM4ZGM3NDlhZjYxMDk5ZmUyZGMxYWU2ZTgyOGM0OTgw
Li45Yjc1NTQyODU4ZDU1NTNiYmUzNTNiZGE1MjhmMDQ0YTBlMDJjYzUzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJl
YW0tY2FuY2VsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVkLnR4dApAQCAt
MSw1ICsxLDUgQEAKIAotRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246IGludGVncmF0
aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNo
IHNvdXJjZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5j
ZWxsYXRpb246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQg
ZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJjZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlM
IFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKHJlYXNvbikgc2hvdWxkIHBhc3Mg
dGhyb3VnaCB0aGUgZ2l2ZW4gcmVhc29uIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSBjYW5jZWwg
aXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2Fu
Y2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3QgY2FsbCB0aGUgdW5k
ZXJseWluZyBzb3VyY2UgY2FuY2VsIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgUmVh
ZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9tIHRoZSB1bmRl
cmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVsZmlsbG1lbnQg
dmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNhbmNlbCBjYW5j
ZWwgaXMgbm90IGltcGxlbWVudGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFt
LWV4cGVjdGVkLnR4dAppbmRleCBlOWQ4NDk1YzZjMTQ2YTYyZTY2N2ZhZDkzYjhlOTkzODQ2Mzhj
NjAzLi44OWFlNDlkZTZjZGQ3YjQ3MGE1ZjEyZDNhMTRmYjVhZTY3NjVjMTk5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1z
dHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTUsMjIgKzUsMjIg
QEAgUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cgZm9yIG5vbi1m
dW5jdGlvbiBzdGFydCBhcmd1bWVudHMKIFBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Ig
Y2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50IAogUEFTUyBSZWFkYWJs
ZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBwdWxsIGFyZ3Vt
ZW50IAogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2Fy
YmFnZSBhcyBzdHJhdGVneSBhcmd1bWVudCAKLUZBSUwgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hv
dWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAor
VElNRU9VVCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBw
cm9taXNlIFRlc3QgdGltZWQgb3V0CiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3Vs
ZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCBUZXN0IHRpbWVkIG91
dAotRkFJTCBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVu
dCBvYmplY3RzLiByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCBSZWFkYWJsZVN0cmVhbSBz
aG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLiBhc3NlcnRfb2JqZWN0
X2VxdWFsczogdmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCBwcm9wZXJ0eSAi
ZG9uZSIgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iIGdvdCBvYmplY3QgIltvYmpl
Y3QgT2JqZWN0XSIKIFBBU1MgUmVhZGFibGVTdHJlYW06IGlmIHN0YXJ0IHRocm93cyBhbiBlcnJv
ciwgaXQgc2hvdWxkIGJlIHJlLXRocm93biAKLUZBSUwgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwg
cmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gcmVhZCBpcyBub3QgaW1wbGVtZW50
ZWQKLUZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBw
cmV2aW91cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIHJlYWQgaXMgbm90IGltcGxlbWVu
dGVkCi1GQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBhZnRlciBzdGFy
dCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1RJ
TUVPVVQgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRo
ZSBzdHJlYW0gVGVzdCB0aW1lZCBvdXQKK1RJTUVPVVQgUmVhZGFibGVTdHJlYW06IHNob3VsZCBu
b3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZp
bGxzIFRlc3QgdGltZWQgb3V0CitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwg
cHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgCiBGQUlMIFJlYWRh
YmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVpbmcgZnJvbSBpbnNpZGUg
cHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dzIGFzc2VydF9l
cXVhbHM6IHB1bGwoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBmb3VyIHRpbWVzIGV4cGVjdGVk
IDQgYnV0IGdvdCAwCiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxkIGJlIGFibGUg
dG8gY2xvc2UgYSBzdHJlYW0uIFRlc3QgdGltZWQgb3V0CiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBl
bnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUgYnV0IGRyYWlu
aW5nIGFzc2VydF9lcXVhbHM6IHRoZSBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBl
eHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKIEZBSUwgUmVhZGFibGVTdHJlYW06IGVucXVldWUg
c2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgYXNzZXJ0X3Rocm93czogZW5x
dWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZnVuY3Rpb24gImZ1bmN0
aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBub3QgdGhyb3cKIEZBSUwgUmVhZGFibGVT
dHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQgZXJyb3Igd2hlbiB0aGUgc3Ry
ZWFtIGlzIGVycm9yZWQgYXNzZXJ0X3Rocm93czogZW5xdWV1ZSBhZnRlciBlcnJvciBzaG91bGQg
dGhyb3cgdGhhdCBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBjLmVucXVldWUoJ2EnKTsg
fSIgZGlkIG5vdCB0aHJvdwotRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJs
eWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitU
SU1FT1VUIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRo
b2RzIGFzIG1ldGhvZHMgVGVzdCB0aW1lZCBvdXQKIEZBSUwgUmVhZGFibGVTdHJlYW0gc3RyYXRl
Z2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgYWxsIGJ1
dCB0aGUgZmlyc3QgZW5xdWV1ZSBjYWxsIGFzc2VydF9lcXVhbHM6IGZpcnN0IGVucXVldWUgc2hv
dWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogRkFJTCBSZWFkYWJs
ZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUg
cmV0dXJuaW5nIHRydWUgZnJvbSBlbnF1ZXVlIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRp
YXRlbHkgYXNzZXJ0X2VxdWFsczogZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhw
ZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9u
IHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlIHJlYWQgaXMgbm90IGltcGxlbWVu
dGVkCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3lu
YyBwdWxsIHNvdXJjZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFkYWJsZVN0cmVh
bSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZSByZWFkIGlz
IG5vdCBpbXBsZW1lbnRlZAorVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0
OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZSBUZXN0IHRpbWVkIG91dAorVElNRU9VVCBS
ZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3Vy
Y2UgVGVzdCB0aW1lZCBvdXQKK1RJTUVPVVQgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVz
dDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgVGVzdCB0aW1lZCBvdXQKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFi
bGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dApp
bmRleCA3NTlmMTNjMzBlOGU2YmJjZjJhNWM5N2Q5NDFmM2VjMGM3YjU0NGMyLi4wN2M1ZDc0MDhi
ZmQ2NjJjOTRjZmVmZDkwODA4NDVhYmFkYmM2N2E5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dApAQCAtOSwxMCArOSwxMCBA
QCBQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3Vs
ZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYQogUEFTUyBHZXR0aW5nIGEgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlzIGFscmVhZHkg
bG9ja2VkICh2aWEgZGlyZWN0IGdldFJlYWRlcikgCiBQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3RyZWFtIGlzIGNs
b3NlZCAKIFBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkg
c2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAKLUZBSUwgUmVhZGluZyBmcm9t
IGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEgY2h1bmsgaXMg
YXZhaWxhYmxlIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitUSU1FT1VUIFJlYWRpbmcgZnJvbSBh
IHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2
YWlsYWJsZSBUZXN0IHRpbWVkIG91dAogRkFJTCBjYW5jZWwoKSBvbiBhIHJlYWRlciByZWxlYXNl
cyB0aGUgcmVhZGVyIGJlZm9yZSBjYWxsaW5nIHRocm91Z2ggY2FuY2VsIGlzIG5vdCBpbXBsZW1l
bnRlZAogUEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJlYW0gaXMgY2xv
c2VkICguY2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKIEZBSUwgY2xvc2VkIHNob3Vs
ZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrIChtdWx0aXBsZSBz
dHJlYW0gbG9ja3MpIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBDYW5ub3Qg
dXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVhbSBhZ2FpbiBy
ZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgR2V0dGluZyBhIHNlY29uZCByZWFk
ZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBzaG91bGQgc3VjY2VlZCByZWFkIGlzIG5vdCBp
bXBsZW1lbnRlZAorUEFTUyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBlcnJvcmluZyB0
aGUgc3RyZWFtIHNob3VsZCBzdWNjZWVkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1z
dHJlYW0tcmVhZGVyLmh0bWwKaW5kZXggMzU4MzQzYWU0MjliNDYwZGI1ZDJhZjgzMWIxYzM2ZGE3
YWY3Y2U4OS4uODEzZTAxZWQ0NWE1ZWFkNTFlOWFkMTgxNzE1ZWY4NGZhNDFiYmUwNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFi
bGUtc3RyZWFtLXJlYWRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbApAQCAtMTA3LDcgKzEw
Nyw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtUmVhZGVyKHJz
KTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCiB9LCAnQ29uc3Ry
dWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRo
ZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwogCi12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkaW5n
IGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50aWwgYSBjaHVu
ayBpcyBhdmFpbGFibGUnKTsKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgZnJvbSBh
IHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNodW5rIGlzIGF2
YWlsYWJsZScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkgewogICAg
IHZhciBjb250cm9sbGVyOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0
ZWQudHh0CmluZGV4IDIzOGIwZjdmYjc1MDgyYjdiOTZhODNiYTRkMTlkOGY0YTFkOGVmN2IuLjNl
OGMyYzFlZmViZGQxZDE3ODI4ZmM1MGQ3OWM1YmU2OWIyNzdkOWUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10
ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNl
LWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CkBA
IC0zLDcgKzMsNyBAQCBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRoIFJlYWRhYmxl
U3RyZWFtIChlbXB0eSkKIFBBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyBh
bmQgcHJvcGVydGllcyAKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5UmVhZGVyIHdpdGgg
UmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXIgCiBQQVNTIGluc3RhbmNlcyBoYXZlIHRoZSBj
b3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCi1GQUlMIHJlYWQoKSBzaG91bGQgcmV0dXJu
IGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorUEFT
UyByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRpbWUgCiBQQVNT
IGdldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCiBGQUlMIHJlbGVh
c2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMgdG8gcmVzb2x2
ZSBhcyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50
ZWQKIEZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQgdG8gZnVsZmls
bCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKQEAgLTE0LDcgKzE0LDcgQEAgRkFJTCBj
YW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21pc2UgZWFjaCB0
aW1lIGNhbmNlbCBpcyBub3QKIFBBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9LIAogUEFTUyBz
aG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMsIHNpbmNlIHRoZXkgYXJl
IGFsbCBhdXRvLXJlbGVhc2VkIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVy
IHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCkgcmVhZGVyIAot
RkFJTCByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6
IHRydWUgfSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorUEFTUyByZWFkKCkgc2hvdWxkIGZ1bGZp
bGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKIFBBU1MgY2xvc2VkIHNo
b3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xv
c2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKSAKIEZBSUwgY2FuY2Vs
KCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVhY2ggdGltZSBj
YW5jZWwgaXMgbm90IGltcGxlbWVudGVkCkBAIC0yNCwyNiArMjQsMjEgQEAgUEFTUyBSdW5uaW5n
IHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEg
Y2FuY2VsKSByZWEKIEZBSUwgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2YWx1ZTogdW5k
ZWZpbmVkLCBkb25lOiB0cnVlIH0gY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBjbG9z
ZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRl
ZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxlU3RyZWFtIChl
cnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKLUZBSUwgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVy
biBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorUEFT
UyBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIAog
UEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVTdHJl
YW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAogRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0
dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBp
bXBsZW1lbnRlZAogRkFJTCByZWFkZXIgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0
IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIFBB
U1Mgc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzLCBzaW5jZSB0aGV5
IGFyZSBhbGwgYXV0by1yZWxlYXNlZCAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQg
d2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJv
bWlzZSBpbiBzdGFydCkgCi1GQUlMIGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIg
dGhhdCBhY3RzIGVycm9yZWQgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLVBBU1MgUnVubmluZyB0
ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEg
cmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyIAotVElNRU9VVCBj
bG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciBUZXN0IHRpbWVkIG91dAotRkFJTCBy
ZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciByZWFkIGlzIG5vdCBpbXBsZW1lbnRl
ZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoIFJlYWRh
YmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFkZXIgCi1GQUlM
IGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2
ZSBib3RoIGNodW5rcyByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBjYWxsaW5nIHJlYWQo
KSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgcmVh
ZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgcmVhZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3Qg
cHJvbWlzZXMgZWFjaCB0aW1lIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlMIGNhbmNlbCgp
IGFmdGVyIGEgcmVhZCgpIHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJlYWQgcmVzdWx0
IHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitUSU1FT1VUIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdp
dGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyBUZXN0IHRpbWVk
IG91dAorVElNRU9VVCBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVu
dHVhbGx5IGdpdmUgYm90aCBjaHVua3MgVGVzdCB0aW1lZCBvdXQKK1BBU1MgcmVhZCgpIHNob3Vs
ZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAorRkFJTCBjYW5jZWwoKSBhZnRl
ciBhIHJlYWQoKSBzaG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJlc3VsdCBjYW5j
ZWwgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNUd29DaHVua3ND
bG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1ZXVlZCwgdGhl
biBjbG9zZWQpIHJlYWRlciAKLUZBSUwgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdhaXRpbmcsIHNo
b3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IHJlYWQgaXMgbm90IGlt
cGxlbWVudGVkCi1GQUlMIHRoaXJkIHJlYWQsIHdpdGggd2FpdGluZywgc2hvdWxkIGdpdmUgeyB2
YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZB
SUwgZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0aGUgcmVhZGVy
IGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwg
cmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNob3VsZCBkbyBu
b3RoaW5nIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIHRoaXJkIHJlYWQoKSwgd2l0aG91
dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSBh
c3NlcnRfb2JqZWN0X2VxdWFsczogZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3JyZWN0IHByb3Bl
cnR5ICJkb25lIiBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290IG9iamVjdCAi
W29iamVjdCBPYmplY3RdIgorRkFJTCB0aGlyZCByZWFkLCB3aXRoIHdhaXRpbmcsIHNob3VsZCBn
aXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IGFzc2VydF9vYmplY3RfZXF1YWxz
OiBmaXJzdCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QgcHJvcGVydHkgImRvbmUiIGV4cGVjdGVk
IG9iamVjdCAiW29iamVjdCBPYmplY3RdIiBnb3Qgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iCitQ
QVNTIGRyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2UgdGhlIHJlYWRl
ciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsIAorRkFJTCByZWxlYXNpbmcgdGhlIGxvY2sgYWZ0
ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGRvIG5vdGhpbmcgcmVsZWFzZUxvY2sgaXMg
bm90IGltcGxlbWVudGVkCiBGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgcmVh
ZCgpIHRvIGFjdCBhcyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9jayBpcyBub3Qg
aW1wbGVtZW50ZWQKLUZBSUwgcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5z
IHRoZSBzYW1lIHByb21pc2UgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwgcmVhZGVyJ3Mg
Y2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21pc2UgcmVsZWFzZUxv
Y2sgaXMgbm90IGltcGxlbWVudGVkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0
cmVhbS10ZW1wbGF0ZWQuaHRtbAppbmRleCA4YzFiZjU4N2UxZTQ3MmRlMjUzMTE0Yzk1NzAzZGRm
MTVhNTViYzkyLi5hYzJjNGMyODg2YjdhNjNjOWYwNzQ1Y2U1MTRlYjEwMTA4NTk2NDY5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5odG1sCkBAIC0z
NjksNyArMzY5LDcgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNUd29DaHVua3NPcGVuUmVhZGVyKGxh
YmVsLCBmYWN0b3J5LCBjaHVua3MpIHsKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIH0sICdS
dW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoICcgKyBsYWJlbCk7CiAK
LSAgICB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0
IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MnKTsKKyAgICB2YXIgdGVz
dDEgPSBhc3luY190ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdhaXRpbmcgd2ls
bCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MnLCB7IHRpbWVvdXQ6IDUwIH0pOwogICAgIHRl
c3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgp
OwogICAgICAgICB2YXIgcHJvbWlzZUNvdW50ID0gMDsKQEAgLTM4NSw3ICszODUsNyBAQCBmdW5j
dGlvbiB0ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIobGFiZWwsIGZhY3RvcnksIGNodW5r
cykgewogICAgICAgICB9KSk7CiAgICAgfSk7CiAKLSAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0
KCdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUg
Ym90aCBjaHVua3MnKTsKKyAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdjYWxsaW5nIHJlYWQo
KSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MnLCB7
IHRpbWVvdXQ6IDUwIH0pOwogICAgIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHZh
ciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwogCkBAIC02MTUsMjMgKzYxNSwyNCBAQCB0ZW1wbGF0
ZWRSU0Vycm9yZWRTeW5jT25seSgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4g
c3RhcnQpJywgZnVuY3RpbwogICAgIHRoZUVycm9yCiApOwogCi10ZW1wbGF0ZWRSU0Vycm9yZWQo
J1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNl
IGluIHN0YXJ0KScsIGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0o
ewotICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHJvbWlz
ZS5yZWplY3QodGhlRXJyb3IpOwotICAgICAgICB9Ci0gICAgfSl9LAotICAgIHRoZUVycm9yCi0p
OwotCi10ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZp
YSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXInLCBmdW5jdGlv
bigpIHsKLSAgICByZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVhZGFibGVTdHJl
YW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZWplY3QodGhlRXJyb3IpOwotICAgICAgICB9Ci0gICAgfSkpfSwKLSAgICB0aGVFcnJv
cgotKTsKKy8vIEZJWE1FOiBBY3RpdmF0ZSB0aGVzZSB0ZXN0cyBvbmNlIFByb21pc2UgaGFuZGxp
bmcgaXMgc3VwcG9ydGVkIGluIHN0YXJ0IGZ1bmN0aW9uLgorLy8gdGVtcGxhdGVkUlNFcnJvcmVk
KCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlz
ZSBpbiBzdGFydCknLCBmdW5jdGlvbigpIHsKKy8vICAgICByZXR1cm4gbmV3IFJlYWRhYmxlU3Ry
ZWFtKHsKKy8vICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgeworLy8gICAgICAgICAgICAgcmV0
dXJuIFByb21pc2UucmVqZWN0KHRoZUVycm9yKTsKKy8vICAgICAgICAgfQorLy8gICAgIH0pfSwK
Ky8vICAgICB0aGVFcnJvcgorLy8gKTsKKworLy8gdGVtcGxhdGVkUlNFcnJvcmVkUmVhZGVyKCdS
ZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBp
biBzdGFydCkgcmVhZGVyJywgZnVuY3Rpb24oKSB7CisvLyAgICAgcmV0dXJuIHN0cmVhbUFuZERl
ZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKKy8vICAgICAgICAgc3RhcnQ6IGZ1bmN0
aW9uKCkgeworLy8gICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoZUVycm9yKTsK
Ky8vICAgICAgICAgfQorLy8gICAgIH0pKX0sCisvLyAgICAgdGhlRXJyb3IKKy8vICk7CiAKIHZh
ciBjaHVua3MgPSBbJ2EnLCAnYiddOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1s
CmluZGV4IGQwNzI1ZTQ0MjY2MWE3MmUyNmZlYjYzM2Y4MzM2YzIwOGU5NTRlNjEuLjE2Y2U4YzRh
ZTQ0OTMzMTdkMzI3Y2Y5MThiNGNmNDkwOTYxNThkNTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS5odG1sCkBAIC01Myw3ICs1Myw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsgc3RyYXRlZ3k6IDIgfSk7IC8vIENvbnN0cnVjdG9yIHNob3VsZCBu
b3QgdGhyb3cgd2hlbiBzdHJhdGVneSBpcyBub3QgYW4gb2JqZWN0LgogfSwgJ1JlYWRhYmxlU3Ry
ZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHN0cmF0ZWd5IGFyZ3Vt
ZW50Jyk7CiAKLXZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNo
b3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UnKTsKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rl
c3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21p
c2UnLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDEuc3RlcChmdW5jdGlvbigpCiB7CiAgICAgdmFy
IHJlYWRDYWxsZWQgPSBmYWxzZTsKQEAgLTE0Niw3ICsxNDYsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkg
ewogICAgIGFzc2VydF90aHJvd3MoZXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgUmVhZGFibGVTdHJl
YW0oeyBzdGFydCgpIHsgdGhyb3cgZXJyb3I7IH0gfSkgfSwgJ2Vycm9yIHNob3VsZCBiZSByZS10
aHJvd24nKTsKIH0sICdSZWFkYWJsZVN0cmVhbTogaWYgc3RhcnQgdGhyb3dzIGFuIGVycm9yLCBp
dCBzaG91bGQgYmUgcmUtdGhyb3duJyk7CiAKLXZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1JlYWRh
YmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUgc3RyZWFtJyk7
Cit2YXIgdGVzdDQgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3Rz
LCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0NC5z
dGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcigncHVsbCBmYWlsdXJl
Jyk7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKQEAgLTM2OCw3ICszNjgsNyBA
QCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogLy8gICAgIH0pLCBzdGFuZGFyZFRpbWVvdXQpOwog
Ly8gfSk7CiAKLXZhciB0ZXN0MTEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxk
IG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbFwncyBwcm9taXNlIGZ1
bGZpbGxzJyk7Cit2YXIgdGVzdDExID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW06IHNob3Vs
ZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGxcJ3MgcHJvbWlzZSBm
dWxmaWxscycsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MTEuc3RlcChmdW5jdGlvbigpIHsKICAg
ICB2YXIgcmVzb2x2ZTsKICAgICB2YXIgcmV0dXJuZWRQcm9taXNlOwpAQCAtNTY1LDcgKzU2NSw3
IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgfSk7CiB9LCAnUmVhZGFibGVTdHJlYW06IGVucXVl
dWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFtIGlzIGVycm9y
ZWQnKTsKIAotdmFyIHRlc3QxNiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtOiBzaG91bGQg
Y2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMnKTsKK3ZhciB0ZXN0MTYg
PSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3Vy
Y2UgbWV0aG9kcyBhcyBtZXRob2RzJywgeyB0aW1lb3V0OiA1MCB9KTsKIHRlc3QxNi5zdGVwKGZ1
bmN0aW9uKCkgewogICAgIHZhciBzdGFydENhbGxlZCA9IDA7CiAgICAgdmFyIHB1bGxDYWxsZWQg
PSAwOwpAQCAtNjU4LDcgKzY1OCw3IEBAIHRlc3QxNy5zdGVwKGZ1bmN0aW9uKCkgewogICAgIH0p
KS5jYXRjaCh0ZXN0MTcuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3VucmVhY2hlZChl
KTsgfSApKTsKIH0pOwogCi12YXIgdGVzdDE4ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0g
aW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UnKTsKK3ZhciB0
ZXN0MTggPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFw
dGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MTguc3Rl
cChmdW5jdGlvbigpIHsKICAgICB2YXIgcHVsbENoZWNrZWQgPSBmYWxzZTsKICAgICB2YXIgcmFu
ZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoOCk7CkBAIC03MDIsNyArNzAyLDcgQEAg
dGVzdDE4LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSksIHRlc3QxOC5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgeyBhc3NlcnRfcmVhY2hlZChlKTsgfSkpOwogfSk7CiAKLXZhciB0ZXN0MTkgPSBhc3lu
Y190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMg
cHVsbCBzb3VyY2UnKTsKK3ZhciB0ZXN0MTkgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBp
bnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UnLCB7IHRpbWVvdXQ6
IDUwIH0pOwogdGVzdDE5LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJzID0gc2VxdWVudGlh
bFJlYWRhYmxlU3RyZWFtKDEwKTsKIApAQCAtNzE0LDcgKzcxNCw3IEBAIHRlc3QxOS5zdGVwKGZ1
bmN0aW9uKCkgewogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDIwID0gYXN5bmNfdGVzdCgnUmVh
ZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3Vy
Y2UnKTsKK3ZhciB0ZXN0MjAgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlv
biB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZScsIHsgdGltZW91dDogNTAgfSk7
CiB0ZXN0MjAuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcnMgPSBzZXF1ZW50aWFsUmVhZGFi
bGVTdHJlYW0oMTAsIHsgYXN5bmM6IHRydWUgfSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254060</attachid>
            <date>2015-06-02 02:02:48 -0700</date>
            <delta_ts>2015-06-02 12:28:35 -0700</delta_ts>
            <desc>Option 1, adding Vector::append method and removing unnecessary callback copies</desc>
            <filename>bug-144790-20150602110228.patch</filename>
            <type>text/plain</type>
            <size>47637</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJmMmJmNDYzZWYzNTIxODY5YWNmZWM0
MDc5ZTVjODg1NzdlOWU0OTMuLmE1ODAxYjRkMTYxYWFiODc2MGE4NDQzYTE5MDkwZjIwNWM0Nzky
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDYtMDIgIFhhYmllciBSb2RyaWd1ZXogQ2Fs
dmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5mYWJs
ZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gRGVsZWdhdGUgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgcmVmZXJlbmNlIGNvdW50aW5nIHRvIFJlYWRhYmxlU3RyZWFtCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5MDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9WZWN0b3Iu
aDoKKyAgICAgICAgKFdURjo6VmVjdG9yOjphcHBlbmQpOiBBZGRpbmcgbm90IHRlbXBsYXRlZCBh
cHBlbmQgbWV0aG9kLCBmb3J3YXJkaW5nIHRvIFZhbHVlVHlwZSB0ZW1wbGF0ZWQgYXBwZW5kIG1l
dGhvZC4KKwogMjAxNS0wNi0wMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIFVzZSB4cGNfY29ubmVjdGlvbl9zZXRfb25lc2hvdF9pbnN0YW5jZSB3aGVy
ZSBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYxNTU2NzZmYWJkMzJmM2U4YmVkN2Y5MzU5YWU3NWIx
NTllZTYzM2YuLjJmYmZjYzJmOTY0ZjA0ZDQ5YWU2M2JiY2UzMGE0NjU5YTU2YWIyM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxNS0wNi0wMiAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2
YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxl
dEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBJbXBsZW1lbnQgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgcmVhZCBtZXRob2QgaW4gY2xvc2VkIGFuZCBlcnJvcmVkIHN0YXRlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ3OTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWFkZXIgZGVs
ZWdhdGVzIHJlYWQoKSBwcm9taXNlIGhhbmRsaW5nIHRvIGl0cyBzdHJlYW0gZXhjZXB0IGlmIHJl
YWRlciBpcyBubyBsb25nZXIgbG9ja2luZyB0aGUgc3RyZWFtIGFuZCBzdHJlYW0gaXMgcmVhZGFi
bGUuCisgICAgICAgIFN0b3Jpbmcgb2YgcmVhZGVyIHJlYWQoKSBwcm9taXNlIGNhbGxiYWNrcyBh
cyBhIFZlY3RvciBpbiBSZWFkYWJsZVN0cmVhbS4KKyAgICAgICAgQWRkZWQgcmVzb2x1dGlvbi9y
ZWplY3Rpb24gb2YgcmVhZCgpIHByb21pc2VzIGluIGNhc2Ugb2YgZXJyb3JlZC9jbG9zZWQgc3Ry
ZWFtcy4KKworICAgICAgICBUZXN0OiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXItcmVh
ZC5odG1sCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9ydW50aW1lL0l0ZXJhdG9yT3Bl
cmF0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNsZWFuQ2FsbGJhY2tz
KTogQ2xlYW4gdGhlIHJlYWQgcmVxdWVzdHMuCisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0
cmVhbTo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCk6IFJ1biBzdWNjZXNzIGNhbGxiYWNrcyB3aXRoIHVu
ZGVmaW5lZCBmb3IgcmVhZCByZXF1ZXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3Ry
ZWFtOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCk6IFJ1biBmYWlsdXJlIGNhbGxiYWNrcyB3aXRoIHRo
ZSBlcnJvcnMgZm9yIHJlYWQgcmVxdWVzdHMuCisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0
cmVhbTo6Y2xvc2VkKTogUGFyYW1ldGVyIG5hbWUgY2hhbmdlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlYWRhYmxlU3RyZWFtOjpyZWFkKTogQWRkZWQuIFN1Y2NlZWRzIHdpdGggZW1wdHkgd2hlbiBj
bG9zZWQsIGZhaWxzIHdpdGggZXJyb3Igd2hlbiBlcnJvcmVkLCByZWFkcyBhCisgICAgICAgIHZh
bHVlIGlmIHRoZXJlIGlzIG9uZSBhbmQgcHVzaGVzIHRoZSBjYWxsYmFja3MgdG8gdGhlIHF1ZXVl
IG90aGVyd2lzZS4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpSZWFkQ2FsbGJhY2tzOjpSZWFkQ2Fs
bGJhY2tzKTogU3RydWN0IGNvbnRhaW5pbmcgc3VjY2VzcyBhbmQgZmFpbHVyZSBjYWxsYmFja3Mu
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQpOiBQYXJhbWV0ZXIg
bmFtZSBjaGFuZ2VkLgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1SZWFkZXI6OnJl
YWQpOiBJbnZva2Ugc3VjY2VzcyB3aXRoIGVtcHR5IGlmIHdlIHN0cmVhbXMgaWYgd2UgZG9uJ3Qg
aGF2ZSB0aGUgcmlnaHQgcmVhZGVyCisgICAgICAgIGFuZCBjYWxsIHRoZSBzdHJlYW0gb3RoZXJ3
aXNlIHRvIHJlYWQuCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVh
ZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWFkKTog
Q3JlYXRlIHRoZSBjYWxsYmFjayBsYW1iZGFzIGFuZCBpbnZva2UgcmVhZC4gRmFpbHVyZSByZWpl
Y3RzIHRoZQorICAgICAgICBwcm9taXNlIGFuZCBzdWNjZXNzIGNyZWF0ZXMgdGhlIHJlc3VsdCBm
cm9tIHRoZSByZWFkIHZhbHVlLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJl
YW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6aGFzVmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6cmVhZCk6IE5vdCBpbXBsZW1lbnRl
ZCB5ZXQuCisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oOgorCiAyMDE1
LTA2LTAxICBIdW5zZW9wIEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAg
ICBVc2UgbW9kZXJuIGZvci1sb29wcyBpbiBXZWJDb3JlL01vZHVsZXMgLSAxCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4
IDQyNTdkOGMyYjBkNzM5ZmQ1Nzk0OGJkN2NiODRiYjIxN2ViODQ0YjUuLmQ2MWM1ZmZjMzZhMGNi
OGVhMWU5ZTdjNGZmNjU1OWU5OWVhNjZkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Zl
Y3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC03MjMsNiArNzIzLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGVhcigpIHsgc2hyaW5rQ2FwYWNpdHkoMCk7IH0KIAorICAg
IHZvaWQgYXBwZW5kKFZhbHVlVHlwZSYmIHZhbHVlKSB7IGFwcGVuZDxWYWx1ZVR5cGU+KHN0ZDo6
Zm9yd2FyZDxWYWx1ZVR5cGU+KHZhbHVlKSk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2
b2lkIGFwcGVuZChjb25zdCBVKiwgc2l6ZV90KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2
b2lkIGFwcGVuZChVJiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgdW5jaGVja2Vk
QXBwZW5kKFUmJiB2YWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hl
YWRlcnMvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNl
MDZhMTdlZTY2ODg0M2Q2ZDk4NDMzMWNiOWYwY2U1NDhiY2RkNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRp
b25zLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0l0ZXJhdG9yT3BlcmF0
aW9uc19oCisjZGVmaW5lIFdlYkNvcmVfRldEX0l0ZXJhdG9yT3BlcmF0aW9uc19oCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSXRlcmF0b3JPcGVyYXRpb25zLmg+CisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCmluZGV4IGJl
YzNkMzAwNzcwNjU1NGUzYjhkYWE5YzBhNjJhYWIyY2Y4ODQ3MjMuLmYwMTliNDQxNmYzMTE2YTZh
YzczODQwODc4NzY5NTc0ZGJmMzEwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVJlYWRlci5oIgot
I2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYyLDYgKzYyLDggQEAgdm9pZCBSZWFkYWJsZVN0cmVh
bTo6Y2xlYXJDYWxsYmFja3MoKQogewogICAgIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrID0gbnVs
bHB0cjsKICAgICBtX2Nsb3NlZEZhaWx1cmVDYWxsYmFjayA9IG51bGxwdHI7CisKKyAgICBtX3Jl
YWRSZXF1ZXN0cy5jbGVhcigpOwogfQogCiB2b2lkIFJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0
ZVRvQ2xvc2VkKCkKQEAgLTc2LDYgKzc4LDkgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdl
U3RhdGVUb0Nsb3NlZCgpCiAgICAgaWYgKG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrKQogICAgICAg
ICBtX2Nsb3NlZFN1Y2Nlc3NDYWxsYmFjaygpOwogCisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDog
bV9yZWFkUmVxdWVzdHMpCisgICAgICAgIHJlcXVlc3QuZW5kQ2FsbGJhY2soKTsKKwogICAgIGNs
ZWFyQ2FsbGJhY2tzKCk7CiB9CiAKQEAgLTg4LDggKzkzLDEyIEBAIHZvaWQgUmVhZGFibGVTdHJl
YW06OmNoYW5nZVN0YXRlVG9FcnJvcmVkKCkKICAgICBpZiAobV9yZWFkZXIpCiAgICAgICAgIG1f
cmVsZWFzZWRSZWFkZXJzLmFwcGVuZChXVEY6Om1vdmUobV9yZWFkZXIpKTsKIAorICAgIEpTQzo6
SlNWYWx1ZSBlcnJvciA9IHRoaXMtPmVycm9yKCk7CiAgICAgaWYgKG1fY2xvc2VkRmFpbHVyZUNh
bGxiYWNrKQotICAgICAgICBtX2Nsb3NlZEZhaWx1cmVDYWxsYmFjayhlcnJvcigpKTsKKyAgICAg
ICAgbV9jbG9zZWRGYWlsdXJlQ2FsbGJhY2soZXJyb3IpOworCisgICAgZm9yIChhdXRvJiByZXF1
ZXN0IDogbV9yZWFkUmVxdWVzdHMpCisgICAgICAgIHJlcXVlc3QuZmFpbHVyZUNhbGxiYWNrKGVy
cm9yKTsKIAogICAgIGNsZWFyQ2FsbGJhY2tzKCk7CiB9CkBAIC0xMTAsNyArMTE5LDcgQEAgUmVh
ZGFibGVTdHJlYW1SZWFkZXImIFJlYWRhYmxlU3RyZWFtOjpnZXRSZWFkZXIoKQogICAgIHJldHVy
biByZWFkZXI7CiB9CiAKLXZvaWQgUmVhZGFibGVTdHJlYW06OmNsb3NlZChDbG9zZWRTdWNjZXNz
Q2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBDbG9zZWRGYWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNh
bGxiYWNrKQordm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKENsb3NlZFN1Y2Nlc3NDYWxsYmFj
ayYmIHN1Y2Nlc3NDYWxsYmFjaywgRmFpbHVyZUNhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQog
ewogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpIHsKICAgICAgICAgc3VjY2Vzc0Nh
bGxiYWNrKCk7CkBAIC0xMjQsNiArMTMzLDI0IEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OmNsb3Nl
ZChDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBDbG9zZWRGYWlsdXJlCiAg
ICAgbV9jbG9zZWRGYWlsdXJlQ2FsbGJhY2sgPSBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKTsK
IH0KIAordm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVhZChSZWFkU3VjY2Vzc0NhbGxiYWNrJiYgc3Vj
Y2Vzc0NhbGxiYWNrLCBSZWFkRW5kQ2FsbGJhY2smJiBlbmRDYWxsYmFjaywgRmFpbHVyZUNhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrKQoreworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9z
ZWQpIHsKKyAgICAgICAgZW5kQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCkgeworICAgICAgICBmYWlsdXJlQ2FsbGJh
Y2soZXJyb3IoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGhhc1ZhbHVlKCkp
IHsKKyAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHJlYWQoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgbV9yZWFkUmVxdWVzdHMuYXBwZW5kKHsgV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFj
ayksIFdURjo6bW92ZShlbmRDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spIH0p
OworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5IHRvIHB1bGwuCit9CisKIHZvaWQgUmVhZGFi
bGVTdHJlYW06OnN0YXJ0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAppbmRleCBjODc0MzY1NzVj
MzRlY2ZhN2MwYWEwNjkzM2I2NGMzOWMxZjVkMDkxLi4yYmQyY2E1MjE4YjFiNjYwMDNhYWYyOWM1
MGJkNzgyNjFmNDA3YjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uaApAQCAtNzUsOSArNzUsMTQgQEAgcHVibGljOgogCiAgICAgUmVhZGFi
bGVTdHJlYW1Tb3VyY2UmIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9CiAKKyAg
ICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChKU0M6OkpTVmFsdWUpPiBGYWlsdXJlQ2FsbGJh
Y2s7CisKICAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBDbG9zZWRTdWNjZXNzQ2Fs
bGJhY2s7Ci0gICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoSlNDOjpKU1ZhbHVlKT4gQ2xv
c2VkRmFpbHVyZUNhbGxiYWNrOwotICAgIHZvaWQgY2xvc2VkKENsb3NlZFN1Y2Nlc3NDYWxsYmFj
aywgQ2xvc2VkRmFpbHVyZUNhbGxiYWNrKTsKKyAgICB2b2lkIGNsb3NlZChDbG9zZWRTdWNjZXNz
Q2FsbGJhY2smJiwgRmFpbHVyZUNhbGxiYWNrJiYpOworCisgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0
aW9uPHZvaWQoSlNDOjpKU1ZhbHVlKT4gUmVhZFN1Y2Nlc3NDYWxsYmFjazsKKyAgICB0eXBlZGVm
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBSZWFkRW5kQ2FsbGJhY2s7CisgICAgdm9pZCByZWFkKFJl
YWRTdWNjZXNzQ2FsbGJhY2smJiwgUmVhZEVuZENhbGxiYWNrJiYsIEZhaWx1cmVDYWxsYmFjayYm
KTsKIAogcHJvdGVjdGVkOgogICAgIFJlYWRhYmxlU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBSZWY8UmVhZGFibGVTdHJlYW1Tb3VyY2U+JiYpOwpAQCAtODksMTEgKzk0LDIxIEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGNsZWFyQ2FsbGJhY2tzKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzVmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgcmVhZCgpID0g
MDsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4gbV9yZWFkZXI7
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4+IG1fcmVs
ZWFzZWRSZWFkZXJzOwogCiAgICAgQ2xvc2VkU3VjY2Vzc0NhbGxiYWNrIG1fY2xvc2VkU3VjY2Vz
c0NhbGxiYWNrOwotICAgIENsb3NlZEZhaWx1cmVDYWxsYmFjayBtX2Nsb3NlZEZhaWx1cmVDYWxs
YmFjazsKKyAgICBGYWlsdXJlQ2FsbGJhY2sgbV9jbG9zZWRGYWlsdXJlQ2FsbGJhY2s7CisKKyAg
ICBzdHJ1Y3QgUmVhZENhbGxiYWNrcyB7CisgICAgICAgIFJlYWRTdWNjZXNzQ2FsbGJhY2sgc3Vj
Y2Vzc0NhbGxiYWNrOworICAgICAgICBSZWFkRW5kQ2FsbGJhY2sgZW5kQ2FsbGJhY2s7CisgICAg
ICAgIEZhaWx1cmVDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2s7CisgICAgfTsKKyAgICBWZWN0b3I8
UmVhZENhbGxiYWNrcz4gbV9yZWFkUmVxdWVzdHM7CiAKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3Rh
dGU6OlJlYWRhYmxlIH07CiAgICAgUmVmPFJlYWRhYmxlU3RyZWFtU291cmNlPiBtX3NvdXJjZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1SZWFkZXIuY3BwCmluZGV4IDQ0MjhkYWI0ZDc1MjkxYWNjZTQ4NmJiMWVjOGY1YzRiYTBkZWM4
NTkuLjEwODEwZmViMDdiYjBhNDZjZTgzZTBlYjQxNjIwMDIzNjkzZjQ5NmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVy
LmNwcApAQCAtMzAsMTEgKzMwLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UmVhZGFibGVTdHJlYW1SZWFkZXIuaCIKIAorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlu
bGluZXMuaD4KKwogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoUmVhZGFibGVTdHJlYW06OkNs
b3NlZFN1Y2Nlc3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpDbG9z
ZWRGYWlsdXJlQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQordm9pZCBSZWFkYWJsZVN0cmVhbVJl
YWRlcjo6Y2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRTdWNjZXNzQ2FsbGJhY2smJiBzdWNj
ZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpGYWlsdXJlQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spCiB7CiAgICAgaWYgKG1fc3RyZWFtLmlzUmVhZGFibGUoKSAmJiBtX3N0cmVhbS5yZWFk
ZXIoKSAhPSB0aGlzKSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpOwpAQCAtNDMsNiArNDUs
MTUgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpD
bG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0MKICAgICBtX3N0cmVhbS5jbG9zZWQoV1RGOjpt
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKIH0KIAor
dm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6cmVhZChSZWFkYWJsZVN0cmVhbTo6UmVhZFN1Y2Nl
c3NDYWxsYmFjayYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVhZGFibGVTdHJlYW06OlJlYWRFbmRDYWxs
YmFjayYmIGVuZENhbGxiYWNrLCBSZWFkYWJsZVN0cmVhbTo6RmFpbHVyZUNhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrKQoreworICAgIGlmIChtX3N0cmVhbS5pc1JlYWRhYmxlKCkgJiYgbV9zdHJl
YW0ucmVhZGVyKCkgIT0gdGhpcykgeworICAgICAgICBzdWNjZXNzQ2FsbGJhY2soSlNDOjpKU1Zh
bHVlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fc3RyZWFtLnJlYWQoV1RGOjpt
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShlbmRDYWxsYmFjayksIFdURjo6bW92ZShm
YWlsdXJlQ2FsbGJhY2spKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKaW5kZXggNGZmNDJk
MjE0MWIzYjVjY2JkZGQ1M2NkYzNhZDU1M2IyYTgyNjdlMC4uZWQyMGI3MzRjYjRiYTY0MTA2NTU5
MzMyMzcwYWE3N2UzZmJhYTJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKQEAgLTUxLDcgKzUxLDggQEAgcHVibGlj
OgogICAgIFJlYWRhYmxlU3RyZWFtUmVhZGVyKFJlYWRhYmxlU3RyZWFtJiBzdHJlYW0pCiAgICAg
ICAgIDogbV9zdHJlYW0oc3RyZWFtKSB7IH0KIAotICAgIHZvaWQgY2xvc2VkKFJlYWRhYmxlU3Ry
ZWFtOjpDbG9zZWRTdWNjZXNzQ2FsbGJhY2ssIFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRGYWlsdXJl
Q2FsbGJhY2spOworICAgIHZvaWQgY2xvc2VkKFJlYWRhYmxlU3RyZWFtOjpDbG9zZWRTdWNjZXNz
Q2FsbGJhY2smJiwgUmVhZGFibGVTdHJlYW06OkZhaWx1cmVDYWxsYmFjayYmKTsKKyAgICB2b2lk
IHJlYWQoUmVhZGFibGVTdHJlYW06OlJlYWRTdWNjZXNzQ2FsbGJhY2smJiwgUmVhZGFibGVTdHJl
YW06OlJlYWRFbmRDYWxsYmFjayYmLCBSZWFkYWJsZVN0cmVhbTo6RmFpbHVyZUNhbGxiYWNrJiYp
OwogCiAgICAgdm9pZCByZWYoKSB7IG1fc3RyZWFtLnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigp
IHsgbV9zdHJlYW0uZGVyZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcAppbmRleCBhNzdjOTg4
NzE0ZmJmMTQ1ZTE5NGU5YTA0ZDQ4NDIyNmQwNmUyYmEyLi41ZDVjMzQ0MWI5MzRlZmUzN2Q5NDQ0
YjNjNWNkZjMxOTFhYmM4YTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJSZWFkYWJsZUpT
U3RyZWFtLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUv
SXRlcmF0b3JPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBKU0M7CkBAIC00NSw4ICs0NiwyMiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6cmVhZChFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgSlNWYWx1ZSBlcnJvciA9IGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgicmVhZCBpcyBub3QgaW1wbGVtZW50ZWQiKSk7Ci0gICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgZXJyb3IpOworICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKGV4
ZWMsIGdsb2JhbE9iamVjdCgpKTsKKyAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFwcGVy
XShKU1ZhbHVlIHZhbHVlKSBtdXRhYmxlIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjcmVh
dGVJdGVyYXRvclJlc3VsdE9iamVjdCh3cmFwcGVyLnByb21pc2UoKS0+Z2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKSwgdmFsdWUsIGZhbHNlKTsKKyAgICAgICAgd3JhcHBlci5yZXNvbHZlKHJl
c3VsdCk7CisgICAgfTsKKyAgICBhdXRvIGVuZENhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJs
ZSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY3JlYXRlSXRlcmF0b3JSZXN1bHRPYmplY3Qo
d3JhcHBlci5wcm9taXNlKCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIEpTQzo6anNV
bmRlZmluZWQoKSwgdHJ1ZSk7CisgICAgICAgIHdyYXBwZXIucmVzb2x2ZShyZXN1bHQpOworICAg
IH07CisgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oSlNWYWx1ZSB2YWx1ZSkg
bXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KHZhbHVlKTsKKyAgICB9OworCisgICAg
aW1wbCgpLnJlYWQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShlbmRDYWxs
YmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKKworICAgIHJldHVybiB3cmFwcGVy
LnByb21pc2UoKTsKIH0KIAogSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQo
RXhlY1N0YXRlKiBleGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9S
ZWFkYWJsZUpTU3RyZWFtLmNwcAppbmRleCAzNjczODVmNTRmYzU0MDAzNWUwNTcyNGU2MjNlNDQw
NDFjZjBjMDhjLi5kNDg3MzE0MGZmMDg5Zjg1ZDIwNWJlNTA4ZGI5N2ZlODMyYmJkYWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAt
MTQ4LDYgKzE0OCwxOCBAQCB2b2lkIFJlYWRhYmxlSlNTdHJlYW06OnN0b3JlRXJyb3IoSlNDOjpF
eGVjU3RhdGUmIGV4ZWMpCiAgICAgY2hhbmdlU3RhdGVUb0Vycm9yZWQoKTsKIH0KIAorYm9vbCBS
ZWFkYWJsZUpTU3RyZWFtOjpoYXNWYWx1ZSgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTVmFsdWUgUmVhZGFibGVKU1N0cmVhbTo6cmVh
ZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaAppbmRleCA0YjczYjg5NjQzMTc2ZWZkMzkw
MzcwNDgwYWNkNTQwOTBiNGUwNTMwLi42OGFiODlhNmQ2ZjY0YTM5ZjZhZTUxMDM4N2YwMjZhODAw
MTZkZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVh
bS5oCkBAIC03Myw2ICs3Myw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVhZGFibGVKU1N0
cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPFJlYWRhYmxlSlNTdHJlYW06OlNvdXJj
ZT4mJik7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSByZWFkKCkgb3ZlcnJpZGU7CisKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVhZGFibGVTdHJlYW1Db250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CiAgICAgSlNDOjpT
dHJvbmc8SlNDOjpVbmtub3duPiBtX2Vycm9yOwogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMzlhMTc2NDM5ODdlNjky
ZDUyYzQ2ZTMxOTQxZmE0ZWY0MGY1NmFmLi5kYTA4N2M1YTM4NGIxNjY3MmQ3ZDJhNWFmM2RmMjJl
ZWYxMWMzN2QzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTUtMDYtMDIgIFhhYmllciBSb2Ry
aWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlv
dWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gSW1wbGVt
ZW50IFJlYWRhYmxlU3RyZWFtUmVhZGVyIHJlYWQgbWV0aG9kIGluIGNsb3NlZCBhbmQgZXJyb3Jl
ZCBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ0NzkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgbmV3IHRlc3QuIFJlYmFzZWQgcmVmZXJlbmNlIHRlc3RzIChleHBlY3RhdGlvbnMgYW5k
IHRpbWVvdXRpbmcvdW50aW1lb3V0aW5nIHRlc3RzKS4KKyAgICAgICAgUmVtb3ZlZCB0ZW1wb3Jh
cmlseSBzb21lIHRlc3RzIGluIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbC4KKyAgICAgICAgVGhlc2UgdGVzdHMgdHJ5IHRvIGNo
ZWNrIGhhbmRsaW5nIHByb21pc2UgcmV0dXJuZWQgaW4gc3RhcnQgbWV0aG9kIHdoaWNoIGlzIG5v
dCB5ZXQgc3VwcG9ydGVkLgorICAgICAgICBJZiB3ZSBkaWQgbm90IGNvbW1lbnQgdGhlc2UgdGVz
dHMsIHRoZXkgd291bGQgYmUgZmxha3kuCisKKyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS1yZWFkZXItcmVhZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0cmVhbXMv
cmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11
bmRlcmx5aW5nLXNvdXJjZXMuaHRtbDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5
Lmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFi
bGUtc3RyZWFtLWNhbmNlbC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVy
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWw6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3Ry
ZWFtLXRlbXBsYXRlZC5odG1sOgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVu
dGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sOgorCiAyMDE1LTA2LTAxICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1NWRyAtPiBPVEYgQ29udmVy
dGVyXSBSZW1vdmUgdW5uZWNlc3NhcnkgaGFja3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYWY0M2UxY2U2MjY2MjQ4YjNlNGY3NDhiMThlMDRlYzBkMmNkY2QwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLXJl
YWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24g
YSBzdHJlYW0gdGhhdCBnZXRzIGNsb3NlZCAKK1BBU1MgUmVhZGluZyB0d2ljZSBvbiBhIGNsb3Nl
ZCBzdHJlYW0gCitQQVNTIFJlYWRpbmcgdHdpY2Ugb24gYW4gZXJyb3JlZCBzdHJlYW0gCitQQVNT
IFJlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9yZWQgCitQQVNTIFJlYWRp
bmcgd2l0aGluIGEgcmVhZCBwcm9taXNlIHJlc29sdmUgY2FsbGJhY2sgb24gYSBzdHJlYW0gdGhh
dCBnZXRzIGNsb3NlZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW0tcmVhZGVyLXJlYWQuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUt
c3RyZWFtLXJlYWRlci1yZWFkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODI0MTdiNzFlMTJmZTk0MzA1NDk5
NjE3YTE5NTgzYmIxOTM0MDU4MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0cmVh
bXMvcmVhZGFibGUtc3RyZWFtLXJlYWRlci1yZWFkLmh0bWwKQEAgLTAsMCArMSwxNjIgQEAKKzwh
RE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Jz48L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgdDEgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3aWNl
IG9uIGEgc3RyZWFtIHRoYXQgZ2V0cyBjbG9zZWQnKTsKK3QxLnN0ZXAoZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAg
ICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOwor
ICAgICAgICB9CisgICAgfSk7CisgICAgdmFyIGNvdW50ZXIgPSAwOworICAgIHZhciByZWFkZXIg
PSBycy5nZXRSZWFkZXIoKTsKKworICAgIHJlYWRlci5yZWFkKCkudGhlbih0MS5zdGVwX2Z1bmMo
ZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3VsdCwg
eyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZpbGwg
d2l0aCBjbG9zZScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDEpOworICAgICAg
ICBjb3VudGVyKys7CisgICAgfSkpOworICAgIHJlYWRlci5yZWFkKCkudGhlbih0MS5zdGVwX2Z1
bmMoZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKHJlc3Vs
dCwgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0sICdyZWFkKCkgc2hvdWxkIGZ1bGZp
bGwgd2l0aCBjbG9zZScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDIpOworICAg
ICAgICBjb3VudGVyKys7CisgICAgICAgIHQxLmRvbmUoKTsKKyAgICB9KSk7CisgICAgcmVhZGVy
LmNsb3NlZC50aGVuKHQxLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhjb3VudGVyLCAwKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKworICAgIGNv
bnRyb2xsZXIuY2xvc2UoKTsKK30pOworCit2YXIgdDIgPSBhc3luY190ZXN0KCdSZWFkaW5nIHR3
aWNlIG9uIGEgY2xvc2VkIHN0cmVhbScpOwordDIuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIg
Y29udHJvbGxlcjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBz
dGFydDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIGNvbnRyb2xsZXIuY2xvc2UoKTsKKworICAgIHZhciBjb3VudGVy
ID0gMDsKKyAgICB2YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICByZWFkZXIucmVh
ZCgpLnRoZW4odDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBhc3NlcnRf
b2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9LCAn
cmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhjb3VudGVyLCAwKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFkZXIu
cmVhZCgpLnRoZW4odDIuc3RlcF9mdW5jKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICBhc3Nl
cnRfb2JqZWN0X2VxdWFscyhyZXN1bHQsIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9
LCAncmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggY2xvc2UnKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhjb3VudGVyLCAxKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFk
ZXIuY2xvc2VkLnRoZW4odDIuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGNvdW50ZXIsIDIpOworICAgICAgICBjb3VudGVyKys7CisgICAgICAgIHQyLmRvbmUo
KTsKKyAgICB9KSk7Cit9KTsKKwordmFyIHQzID0gYXN5bmNfdGVzdCgnUmVhZGluZyB0d2ljZSBv
biBhbiBlcnJvcmVkIHN0cmVhbScpOwordDMuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29u
dHJvbGxlcjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFy
dDogZnVuY3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHZhciBteUVycm9yID0geyBwb3RhdG86ICJtYXNoZWQiIH07CisgICAg
Y29udHJvbGxlci5lcnJvcihteUVycm9yKTsKKworICAgIHZhciBjb3VudGVyID0gMDsKKyAgICB2
YXIgcmVhZGVyID0gcnMuZ2V0UmVhZGVyKCk7CisKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odDMu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkg
c2hvdWxkIHJlamVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworICAgIH0pLCB0My5zdGVwX2Z1
bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsKKyAgICAgICAgY291bnRlcisrOwor
ICAgIH0pKTsKKyAgICByZWFkZXIucmVhZCgpLnRoZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkg
eworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkgc2hvdWxkIHJlamVjdCBvbiBhbiBl
cnJvcmVkIHN0cmVhbScpOworICAgIH0pLCB0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhjb3VudGVyLCAxKTsKKyAgICAgICAgY291bnRlcisrOworICAgIH0pKTsKKyAgICByZWFkZXIu
Y2xvc2VkLnRoZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCdyZWFkKCkgc2hvdWxkIHJlamVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworICAg
IH0pLCB0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
bXlFcnJvciwgZXJyKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAyKTsKKyAgICAg
ICAgY291bnRlcisrOworICAgICAgICB0My5kb25lKCk7CisgICAgfSkpOworfSk7CisKK3ZhciB0
NCA9IGFzeW5jX3Rlc3QoJ1JlYWRpbmcgdHdpY2Ugb24gYSBzdHJlYW0gdGhhdCBnZXRzIGVycm9y
ZWQnKTsKK3Q0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFy
IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsK
KyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2
YXIgY291bnRlciA9IDA7CisgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgICAg
cmVhZGVyLnJlYWQoKS50aGVuKHQ0LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNz
ZXJ0X3VucmVhY2hlZCgncmVhZCgpIHNob3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0n
KTsKKyAgICB9KSwgdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRf
ZXF1YWxzKG15RXJyb3IsIGVycik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMSk7
CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICB9KSk7CisgICAgcmVhZGVyLnJlYWQoKS50aGVuKHQ0
LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgncmVhZCgp
IHNob3VsZCByZWplY3Qgb24gYW4gZXJyb3JlZCBzdHJlYW0nKTsKKyAgICB9KSwgdDQuc3RlcF9m
dW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKG15RXJyb3IsIGVycik7
CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnRlciwgMik7CisgICAgICAgIGNvdW50ZXIrKzsK
KyAgICAgICAgdDQuZG9uZSgpOworICAgIH0pKTsKKyAgICByZWFkZXIuY2xvc2VkLnRoZW4odDQu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdyZWFkKCkg
c2hvdWxkIHJlamVjdCBvbiBhbiBlcnJvcmVkIHN0cmVhbScpOworICAgIH0pLCB0NC5zdGVwX2Z1
bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMobXlFcnJvciwgZXJyKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAwKTsKKyAgICAgICAgY291bnRlcisrOwor
ICAgIH0pKTsKKworICAgIHZhciBteUVycm9yID0geyBwb3RhdG86ICdtYXNoZWQnIH07CisgICAg
Y29udHJvbGxlci5lcnJvcihteUVycm9yKTsKKyB9KTsKKwordmFyIHQ1ID0gYXN5bmNfdGVzdCgn
UmVhZGluZyB3aXRoaW4gYSByZWFkIHByb21pc2UgcmVzb2x2ZSBjYWxsYmFjayBvbiBhIHN0cmVh
bSB0aGF0IGdldHMgY2xvc2VkJyk7Cit0NS5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb250
cm9sbGVyOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0
OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgdmFyIHJlYWRlciA9IHJzLmdldFJlYWRlcigpOworCisgICAgcmVhZGVy
LnJlYWQoKS50aGVuKHQ1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgcmVhZGVyLnJl
YWQoKS50aGVuKHQ1LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHQ1LmRvbmUo
KTsKKyAgICAgICAgfSkpOworICAgIH0pKTsKKyAgICBjb250cm9sbGVyLmNsb3NlKCk7Cit9KTsK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3Vy
Y2VzLWV4cGVjdGVkLnR4dAppbmRleCAxOWNhMzU1NTk1NzRlMzEzMDk5ZmM0ODgyY2FkZDE0MTJh
OWEyMjgwLi5iNzU1ODFiMWQ5NWMwNDE3MDhlNTEzZGU5YmVjMTI4NWEzMTcxNDk1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5k
ZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4
dApAQCAtNSw4ICs1LDggQEAgRkFJTCBVbmRlcmx5aW5nIHNvdXJjZSBzdGFydDogdGhyb3dpbmcg
Z2V0dGVyIGFzc2VydF90aHJvd3M6IGNvbnN0cnVjdGluZyB0aGUgc3QKIFBBU1MgVW5kZXJseWlu
ZyBzb3VyY2Ugc3RhcnQ6IHRocm93aW5nIG1ldGhvZCAKIFRJTUVPVVQgVW5kZXJseWluZyBzb3Vy
Y2U6IHRocm93aW5nIHB1bGwgZ2V0dGVyIChpbml0aWFsIHB1bGwpIFRlc3QgdGltZWQgb3V0CiBU
SU1FT1VUIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIG1ldGhvZCAoaW5pdGlhbCBw
dWxsKSBUZXN0IHRpbWVkIG91dAotRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVs
bCBnZXR0ZXIgKHNlY29uZCBwdWxsKSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBVbmRl
cmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKHNlY29uZCBwdWxsKSByZWFkIGlz
IG5vdCBpbXBsZW1lbnRlZAorVElNRU9VVCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgcHVs
bCBnZXR0ZXIgKHNlY29uZCBwdWxsKSBUZXN0IHRpbWVkIG91dAorVElNRU9VVCBVbmRlcmx5aW5n
IHNvdXJjZTogdGhyb3dpbmcgcHVsbCBtZXRob2QgKHNlY29uZCBwdWxsKSBUZXN0IHRpbWVkIG91
dAogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dpbmcgY2FuY2VsIGdldHRlciBjYW5jZWwg
aXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBjYW5j
ZWwgbWV0aG9kIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgVW5kZXJseWluZyBzb3Vy
Y2U6IHRocm93aW5nIHN0cmF0ZWd5IGdldHRlciBhc3NlcnRfdGhyb3dzOiBlbnF1ZXVlIHNob3Vs
ZCB0aHJvdyB0aGUgZXJyb3IgZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7
IH0iIGRpZCBub3QgdGhyb3cKQEAgLTE4LDcgKzE4LDcgQEAgRkFJTCBVbmRlcmx5aW5nIHNvdXJj
ZTogc3RyYXRlZ3kuc2l6ZSByZXR1cm5pbmcgTmFOIGFzc2VydF91bnJlYWNoZWQ6IGVucXVldWUg
ZGkKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJuaW5nIC1JbmZp
bml0eSBhc3NlcnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpZG4ndCB0aHJvdyBSZWFjaGVkIHVucmVh
Y2hhYmxlIGNvZGUKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IHN0cmF0ZWd5LnNpemUgcmV0dXJu
aW5nICtJbmZpbml0eSBhc3NlcnRfdW5yZWFjaGVkOiBlbnF1ZXVlIGRpZG4ndCB0aHJvdyBSZWFj
aGVkIHVucmVhY2hhYmxlIGNvZGUKIFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xv
c2UgdHdpY2Ugb24gYW4gZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUg
Ci1GQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEgbm9uLWVt
cHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIHJlYWQgaXMgbm90IGltcGxl
bWVudGVkCitGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGEg
bm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIGFzc2VydF9vYmpl
Y3RfZXF1YWxzOiByZWFkKCkgc2hvdWxkIHJlYWQgdGhlIGVucXVldWVkIGNodW5rIHByb3BlcnR5
ICJkb25lIiBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290IG9iamVjdCAiW29i
amVjdCBPYmplY3RdIgogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBvbiBh
biBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0aHJvdyBjYW5jZWwgaXMgbm90IGlt
cGxlbWVudGVkCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIG9uIGEgbm9u
LWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IGNhbmNlbCBpcyBub3QgaW1w
bGVtZW50ZWQKIFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJy
b3Igc2hvdWxkIHRocm93IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVu
Y2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy5odG1sIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNl
cy5odG1sCmluZGV4IGJjNDE3MDkyNGI3YjFhYjkzMzIzNmM0MmI0MWVjOWY4ZTVkY2JjZGYuLmM4
NWQ1M2M3MTE5OTAzYjI1ZmYwZGUxMzA3NGI1ZDU5ZWVkODM2NjcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNv
dXJjZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLmh0bWwKQEAgLTYxLDcgKzYxLDcgQEAgdGVzdDIu
c3RlcChmdW5jdGlvbigpIHsKICAgICAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MyA9IGFzeW5j
X3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2luZyBwdWxsIGdldHRlciAoc2Vjb25kIHB1
bGwpJyk7Cit2YXIgdGVzdDMgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogdGhyb3dp
bmcgcHVsbCBnZXR0ZXIgKHNlY29uZCBwdWxsKScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0My5z
dGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciB0aGVFcnJvciA9IG5ldyBFcnJvcignYSB1bmlxdWUg
c3RyaW5nJyk7CiAgICAgdmFyIGNvdW50ZXIgPSAwOwpAQCAtODksNyArODksNyBAQCB0ZXN0My5z
dGVwKGZ1bmN0aW9uKCkgewogICAgICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3Q0ID0gYXN5bmNf
dGVzdCgnVW5kZXJseWluZyBzb3VyY2U6IHRocm93aW5nIHB1bGwgbWV0aG9kIChzZWNvbmQgcHVs
bCknKTsKK3ZhciB0ZXN0NCA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiB0aHJvd2lu
ZyBwdWxsIG1ldGhvZCAoc2Vjb25kIHB1bGwpJywgeyB0aW1lb3V0OiA1MCB9KTsKIHRlc3Q0LnN0
ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdhIHVuaXF1ZSBz
dHJpbmcnKTsKICAgICB2YXIgY291bnRlciA9IDA7CkBAIC00MzcsNyArNDM3LDcgQEAgdGVzdDE4
LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MTkgPSBhc3luY190
ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBhZnRlciBlcnJvciBzaG91bGQg
dGhyb3cnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3QxOSA9IGFzeW5jX3Rlc3QoJ1VuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdycpOwog
dGVzdDE5LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdi
b28nKTsKICAgICB2YXIgc3RhcnRDYWxsZWQgPSBmYWxzZTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCB0
ZXN0MTkuc3RlcChmdW5jdGlvbigpIHsKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QyMCA9IGFz
eW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0
aHJvdyB0aGUgc2Vjb25kIHRpbWUnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3QyMCA9IGFz
eW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0
aHJvdyB0aGUgc2Vjb25kIHRpbWUnKTsKIHRlc3QyMC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZh
ciB0aGVFcnJvciA9IG5ldyBFcnJvcignYm9vJyk7CiAgICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFs
c2U7CkBAIC00NzEsNyArNDcxLDcgQEAgdGVzdDIwLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSkp
OwogfSk7CiAKLXZhciB0ZXN0MjEgPSBhc3luY190ZXN0KCdVbmRlcmx5aW5nIHNvdXJjZTogY2Fs
bGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cnLCB7IHRpbWVvdXQ6IDUwIH0pOwor
dmFyIHRlc3QyMSA9IGFzeW5jX3Rlc3QoJ1VuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9y
IGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdycpOwogdGVzdDIxLnN0ZXAoZnVuY3Rpb24oKSB7CiAg
ICAgdmFyIHN0YXJ0Q2FsbGVkID0gZmFsc2U7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2Nv
dW50LXF1ZXVpbmctc3RyYXRlZ3ktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50
eHQKaW5kZXggN2JkZjNkZWM2ZDU5NDNmZmU1MmNmOWY4NWFiNGQ0ZTA1Nzc1YjVmMC4uZDdjYmI3
NWYzNzIzNjkyMmVlZTVhYzgwMmIxMTZiODNmMDEyNWJlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVn
eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS1leHBlY3RlZC50eHQKQEAgLTIsNyArMiw3
IEBACiBQQVNTIENhbiBjb25zdHJ1Y3QgYSBDb3VudFF1ZXVpbmdTdHJhdGVneSB3aXRoIGEgdmFs
aWQgaGlnaCB3YXRlciBtYXJrIAogUEFTUyBHaXZlcyBhIFJhbmdlRXJyb3Igd2hlbiB0aGUgbnVt
YmVyIGlzIG5lZ2F0aXZlIAogUEFTUyBDYW4gY29uc3RydWN0IGEgcmVhZGFibGUgc3RyZWFtIHdp
dGggYSB2YWxpZCBDb3VudFF1ZXVpbmdTdHJhdGVneSAKLUZBSUwgQ29ycmVjdGx5IGdvdmVybnMg
dGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAo
SFdNID0gMCkgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK1RJTUVPVVQgQ29ycmVjdGx5IGdvdmVy
bnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlv
biAoSFdNID0gMCkgVGVzdCB0aW1lZCBvdXQKIEZBSUwgQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJl
dHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFtJ3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0g
MSkgYXNzZXJ0X2VxdWFsczogQWZ0ZXIgMCByZWFkcywgMXN0IGVucXVldWUgc2hvdWxkIHJldHVy
biB0cnVlIChxdWV1ZSBub3cgY29udGFpbnMgMSBjaHVuaykgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290
IGZhbHNlCiBGQUlMIENvcnJlY3RseSBnb3Zlcm5zIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBSZWFk
YWJsZVN0cmVhbSdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDQpIGFzc2VydF9lcXVhbHM6IEFm
dGVyIDAgcmVhZHMsIDFzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSAocXVldWUgbm93IGNv
bnRhaW5zIDEgY2h1bmspIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9jb3VudC1xdWV1
aW5nLXN0cmF0ZWd5Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9jb3VudC1xdWV1aW5nLXN0cmF0ZWd5Lmh0bWwKaW5kZXggM2I5NjQ1YjRmOTkzN2U0
YWU5NDVkNzVkNDI3NmJiNWFhOGIzZGFjZS4uODJjMzg3ZGRiYjU3MTU4YmEwZjdmOTJlYmRjNjQx
YTIwZTNhZGQwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vY291bnQtcXVldWluZy1zdHJhdGVneS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2NvdW50LXF1ZXVpbmctc3RyYXRlZ3ku
aHRtbApAQCAtMTcsNyArMTcsNyBAQCB0ZXN0KGZ1bmN0aW9uKCkgewogICAgIG5ldyBSZWFkYWJs
ZVN0cmVhbSh7IHN0cmF0ZWd5OiBuZXcgQ291bnRRdWV1aW5nU3RyYXRlZ3koeyAiaGlnaFdhdGVy
TWFyayI6IDQgfSkgfSk7CiB9LCAnQ2FuIGNvbnN0cnVjdCBhIHJlYWRhYmxlIHN0cmVhbSB3aXRo
IGEgdmFsaWQgQ291bnRRdWV1aW5nU3RyYXRlZ3knKTsKIAotdmFyIHRlc3QxID0gYXN5bmNfdGVz
dCgnQ29ycmVjdGx5IGdvdmVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIFJlYWRhYmxlU3RyZWFt
XCdzIGVucXVldWUgZnVuY3Rpb24gKEhXTSA9IDApJyk7Cit2YXIgdGVzdDEgPSBhc3luY190ZXN0
KCdDb3JyZWN0bHkgZ292ZXJucyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgUmVhZGFibGVTdHJlYW1c
J3MgZW5xdWV1ZSBmdW5jdGlvbiAoSFdNID0gMCknLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDEu
c3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgZW5xdWV1ZTsKICAgICB2YXIgcnMgPSBuZXcgUmVh
ZGFibGVTdHJlYW0oewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWNhbmNlbC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
Y2FuY2VsLWV4cGVjdGVkLnR4dAppbmRleCBlZGY5MDE3NDM4ZGM3NDlhZjYxMDk5ZmUyZGMxYWU2
ZTgyOGM0OTgwLi45Yjc1NTQyODU4ZDU1NTNiYmUzNTNiZGE1MjhmMDQ0YTBlMDJjYzUzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tY2FuY2VsLWV4cGVjdGVk
LnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJTCBSZWFkYWJsZVN0cmVhbSBjYW5jZWxsYXRpb246
IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFtIGRlcml2ZWQgZnJvbSBhIHJh
bmRvbSBwdXNoIHNvdXJjZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCBSZWFkYWJsZVN0
cmVhbSBjYW5jZWxsYXRpb246IGludGVncmF0aW9uIHRlc3Qgb24gYW4gaW5maW5pdGUgc3RyZWFt
IGRlcml2ZWQgZnJvbSBhIHJhbmRvbSBwdXNoIHNvdXJjZSBjYW5jZWwgaXMgbm90IGltcGxlbWVu
dGVkCiBGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxhdGlvbjogY2FuY2VsKHJlYXNvbikgc2hv
dWxkIHBhc3MgdGhyb3VnaCB0aGUgZ2l2ZW4gcmVhc29uIHRvIHRoZSB1bmRlcmx5aW5nIHNvdXJj
ZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFJlYWRhYmxlU3RyZWFtIGNhbmNlbGxh
dGlvbjogY2FuY2VsKCkgb24gYSBsb2NrZWQgc3RyZWFtIHNob3VsZCBmYWlsIGFuZCBub3QgY2Fs
bCB0aGUgdW5kZXJseWluZyBzb3VyY2UgY2FuY2VsIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQK
IEZBSUwgUmVhZGFibGVTdHJlYW0gY2FuY2VsbGF0aW9uOiByZXR1cm5pbmcgYSB2YWx1ZSBmcm9t
IHRoZSB1bmRlcmx5aW5nIHNvdXJjZSdzIGNhbmNlbCBzaG91bGQgbm90IGFmZmVjdCB0aGUgZnVs
ZmlsbG1lbnQgdmFsdWUgb2YgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHN0cmVhbSdzIGNh
bmNlbCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFi
bGUtc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCBlOWQ4NDk1YzZjMTQ2YTYyZTY2N2ZhZDkzYjhl
OTkzODQ2MzhjNjAzLi44OWFlNDlkZTZjZGQ3YjQ3MGE1ZjEyZDNhMTRmYjVhZTY3NjVjMTk5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVm
ZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTUs
MjIgKzUsMjIgQEAgUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cg
Zm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMKIFBBU1MgUmVhZGFibGVTdHJlYW0gY29u
c3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50IAogUEFT
UyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBw
dWxsIGFyZ3VtZW50IAogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGlu
aXRpYWwgZ2FyYmFnZSBhcyBzdHJhdGVneSBhcmd1bWVudCAKLUZBSUwgUmVhZGFibGVTdHJlYW0g
c3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSByZWFkIGlzIG5vdCBpbXBs
ZW1lbnRlZAorVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byBy
ZXR1cm4gYSBwcm9taXNlIFRlc3QgdGltZWQgb3V0CiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHN0
YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCBUZXN0
IHRpbWVkIG91dAotRkFJTCBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVl
IGRpZmZlcmVudCBvYmplY3RzLiByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorRkFJTCBSZWFkYWJs
ZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRpZmZlcmVudCBvYmplY3RzLiBhc3Nl
cnRfb2JqZWN0X2VxdWFsczogdmFsdWUgcmVhZCBzaG91bGQgYmUgdGhlIG9uZSBlbnF1ZXVlZCBw
cm9wZXJ0eSAiZG9uZSIgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0IE9iamVjdF0iIGdvdCBvYmpl
Y3QgIltvYmplY3QgT2JqZWN0XSIKIFBBU1MgUmVhZGFibGVTdHJlYW06IGlmIHN0YXJ0IHRocm93
cyBhbiBlcnJvciwgaXQgc2hvdWxkIGJlIHJlLXRocm93biAKLUZBSUwgUmVhZGFibGVTdHJlYW06
IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gcmVhZCBpcyBub3Qg
aW1wbGVtZW50ZWQKLUZBSUwgUmVhZGFibGVTdHJlYW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVu
dGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGwncyBwcm9taXNlIGZ1bGZpbGxzIHJlYWQgaXMgbm90
IGltcGxlbWVudGVkCi1GQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgbm90IGNhbGwgcHVsbCBh
ZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgcmVhZCBpcyBub3QgaW1wbGVt
ZW50ZWQKK1RJTUVPVVQgUmVhZGFibGVTdHJlYW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxk
IGVycm9yIHRoZSBzdHJlYW0gVGVzdCB0aW1lZCBvdXQKK1RJTUVPVVQgUmVhZGFibGVTdHJlYW06
IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGwncyBwcm9t
aXNlIGZ1bGZpbGxzIFRlc3QgdGltZWQgb3V0CitQQVNTIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQg
bm90IGNhbGwgcHVsbCBhZnRlciBzdGFydCBpZiB0aGUgc3RyZWFtIGlzIG5vdyBjbG9zZWQgCiBG
QUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCBwdWxsIGFmdGVyIGVucXVldWVpbmcgZnJv
bSBpbnNpZGUgcHVsbCAod2l0aCBubyByZWFkIHJlcXVlc3RzKSwgaWYgc3RyYXRlZ3kgYWxsb3dz
IGFzc2VydF9lcXVhbHM6IHB1bGwoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBmb3VyIHRpbWVz
IGV4cGVjdGVkIDQgYnV0IGdvdCAwCiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtIHB1bGwgc2hvdWxk
IGJlIGFibGUgdG8gY2xvc2UgYSBzdHJlYW0uIFRlc3QgdGltZWQgb3V0CiBGQUlMIFJlYWRhYmxl
U3RyZWFtOiBlbnF1ZXVlIHNob3VsZCB0aHJvdyB3aGVuIHRoZSBzdHJlYW0gaXMgcmVhZGFibGUg
YnV0IGRyYWluaW5nIGFzc2VydF9lcXVhbHM6IHRoZSBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1
cm4gdHJ1ZSBleHBlY3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UKIEZBSUwgUmVhZGFibGVTdHJlYW06
IGVucXVldWUgc2hvdWxkIHRocm93IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQgYXNzZXJ0X3Ro
cm93czogZW5xdWV1ZSBhZnRlciBjbG9zZSBzaG91bGQgdGhyb3cgYSBUeXBlRXJyb3IgZnVuY3Rp
b24gImZ1bmN0aW9uICgpIHsgYy5lbnF1ZXVlKCdhJyk7IH0iIGRpZCBub3QgdGhyb3cKIEZBSUwg
UmVhZGFibGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQgZXJyb3Igd2hl
biB0aGUgc3RyZWFtIGlzIGVycm9yZWQgYXNzZXJ0X3Rocm93czogZW5xdWV1ZSBhZnRlciBlcnJv
ciBzaG91bGQgdGhyb3cgdGhhdCBlcnJvciBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyBjLmVucXVl
dWUoJ2EnKTsgfSIgZGlkIG5vdCB0aHJvdwotRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNh
bGwgdW5kZXJseWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzIHJlYWQgaXMgbm90IGltcGxl
bWVudGVkCitUSU1FT1VUIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNv
dXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgVGVzdCB0aW1lZCBvdXQKIEZBSUwgUmVhZGFibGVTdHJl
YW0gc3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIHJldHVybiBmYWxzZSBm
b3IgYWxsIGJ1dCB0aGUgZmlyc3QgZW5xdWV1ZSBjYWxsIGFzc2VydF9lcXVhbHM6IGZpcnN0IGVu
cXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZQogRkFJ
TCBSZWFkYWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQg
Y29udGludWUgcmV0dXJuaW5nIHRydWUgZnJvbSBlbnF1ZXVlIGlmIHRoZSBjaHVua3MgYXJlIHJl
YWQgaW1tZWRpYXRlbHkgYXNzZXJ0X2VxdWFsczogZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJu
IHRydWUgZXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGlu
dGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlIHJlYWQgaXMgbm90
IGltcGxlbWVudGVkCi1GQUlMIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0
aW5nIGEgc3luYyBwdWxsIHNvdXJjZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBSZWFk
YWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJj
ZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3Jh
dGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZSBUZXN0IHRpbWVkIG91dAor
VElNRU9VVCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMg
cHVsbCBzb3VyY2UgVGVzdCB0aW1lZCBvdXQKK1RJTUVPVVQgUmVhZGFibGVTdHJlYW0gaW50ZWdy
YXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMgcHVsbCBzb3VyY2UgVGVzdCB0aW1lZCBvdXQK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVj
dGVkLnR4dAppbmRleCA3NTlmMTNjMzBlOGU2YmJjZjJhNWM5N2Q5NDFmM2VjMGM3YjU0NGMyLi4w
N2M1ZDc0MDhiZmQ2NjJjOTRjZmVmZDkwODA4NDVhYmFkYmM2N2E5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
cmVhZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVhZGVyLWV4cGVjdGVkLnR4dApAQCAtOSwx
MCArOSwxMCBAQCBQQVNTIENvbnN0cnVjdGluZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVj
dGx5IHNob3VsZCBmYWlsIGlmIHRoZSBzdHJlYW0gaXMgYQogUEFTUyBHZXR0aW5nIGEgUmVhZGFi
bGVTdHJlYW1SZWFkZXIgdmlhIGdldFJlYWRlciBzaG91bGQgZmFpbCBpZiB0aGUgc3RyZWFtIGlz
IGFscmVhZHkgbG9ja2VkICh2aWEgZGlyZWN0IGdldFJlYWRlcikgCiBQQVNTIENvbnN0cnVjdGlu
ZyBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGRpcmVjdGx5IHNob3VsZCBiZSBPSyBpZiB0aGUgc3Ry
ZWFtIGlzIGNsb3NlZCAKIFBBU1MgQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIg
ZGlyZWN0bHkgc2hvdWxkIGJlIE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCAKLUZBSUwgUmVh
ZGluZyBmcm9tIGEgcmVhZGVyIGZvciBhbiBlbXB0eSBzdHJlYW0gd2lsbCB3YWl0IHVudGlsIGEg
Y2h1bmsgaXMgYXZhaWxhYmxlIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitUSU1FT1VUIFJlYWRp
bmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNo
dW5rIGlzIGF2YWlsYWJsZSBUZXN0IHRpbWVkIG91dAogRkFJTCBjYW5jZWwoKSBvbiBhIHJlYWRl
ciByZWxlYXNlcyB0aGUgcmVhZGVyIGJlZm9yZSBjYWxsaW5nIHRocm91Z2ggY2FuY2VsIGlzIG5v
dCBpbXBsZW1lbnRlZAogUEFTUyBjbG9zZWQgc2hvdWxkIGJlIGZ1bGZpbGxlZCBhZnRlciBzdHJl
YW0gaXMgY2xvc2VkICguY2xvc2VkIGFjY2VzcyBiZWZvcmUgYWNxdWlyaW5nKSAKIEZBSUwgY2xv
c2VkIHNob3VsZCBiZSBmdWxmaWxsZWQgYWZ0ZXIgcmVhZGVyIHJlbGVhc2VzIGl0cyBsb2NrICht
dWx0aXBsZSBzdHJlYW0gbG9ja3MpIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJ
TCBDYW5ub3QgdXNlIGFuIGFscmVhZHktcmVsZWFzZWQgcmVhZGVyIHRvIHVubG9jayBhIHN0cmVh
bSBhZ2FpbiByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgR2V0dGluZyBhIHNl
Y29uZCByZWFkZXIgYWZ0ZXIgZXJyb3JpbmcgdGhlIHN0cmVhbSBzaG91bGQgc3VjY2VlZCByZWFk
IGlzIG5vdCBpbXBsZW1lbnRlZAorUEFTUyBHZXR0aW5nIGEgc2Vjb25kIHJlYWRlciBhZnRlciBl
cnJvcmluZyB0aGUgc3RyZWFtIHNob3VsZCBzdWNjZWVkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tcmVh
ZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tcmVhZGVyLmh0bWwKaW5kZXggMzU4MzQzYWU0MjliNDYwZGI1ZDJhZjgz
MWIxYzM2ZGE3YWY3Y2U4OS4uODEzZTAxZWQ0NWE1ZWFkNTFlOWFkMTgxNzE1ZWY4NGZhNDFiYmUw
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLXJlYWRlci5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1yZWFkZXIuaHRtbApAQCAt
MTA3LDcgKzEwNyw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFt
UmVhZGVyKHJzKTsgLy8gQ29uc3RydWN0aW5nIGRpcmVjdGx5IHNob3VsZCBub3QgdGhyb3cuCiB9
LCAnQ29uc3RydWN0aW5nIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIgZGlyZWN0bHkgc2hvdWxkIGJl
IE9LIGlmIHRoZSBzdHJlYW0gaXMgZXJyb3JlZCcpOwogCi12YXIgdGVzdDEgPSBhc3luY190ZXN0
KCdSZWFkaW5nIGZyb20gYSByZWFkZXIgZm9yIGFuIGVtcHR5IHN0cmVhbSB3aWxsIHdhaXQgdW50
aWwgYSBjaHVuayBpcyBhdmFpbGFibGUnKTsKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRp
bmcgZnJvbSBhIHJlYWRlciBmb3IgYW4gZW1wdHkgc3RyZWFtIHdpbGwgd2FpdCB1bnRpbCBhIGNo
dW5rIGlzIGF2YWlsYWJsZScsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MS5zdGVwKGZ1bmN0aW9u
KCkgewogICAgIHZhciBjb250cm9sbGVyOwogICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0
ZWQtZXhwZWN0ZWQudHh0CmluZGV4IDIzOGIwZjdmYjc1MDgyYjdiOTZhODNiYTRkMTlkOGY0YTFk
OGVmN2IuLjNlOGMyYzFlZmViZGQxZDE3ODI4ZmM1MGQ3OWM1YmU2OWIyNzdkOWUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0
ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFbXB0eSB3aXRo
IFJlYWRhYmxlU3RyZWFtIChlbXB0eSkKIFBBU1MgaW5zdGFuY2VzIGhhdmUgdGhlIGNvcnJlY3Qg
bWV0aG9kcyBhbmQgcHJvcGVydGllcyAKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0VtcHR5UmVh
ZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVtcHR5KSByZWFkZXIgCiBQQVNTIGluc3RhbmNlcyBo
YXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgCi1GQUlMIHJlYWQoKSBzaG91
bGQgcmV0dXJuIGRpc3RpbmN0IHByb21pc2VzIGVhY2ggdGltZSByZWFkIGlzIG5vdCBpbXBsZW1l
bnRlZAorUEFTUyByZWFkKCkgc2hvdWxkIHJldHVybiBkaXN0aW5jdCBwcm9taXNlcyBlYWNoIHRp
bWUgCiBQQVNTIGdldFJlYWRlcigpIGFnYWluIG9uIHRoZSBzdHJlYW0gc2hvdWxkIGZhaWwgCiBG
QUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQgY2F1c2UgZnVydGhlciByZWFkKCkgY2FsbHMg
dG8gcmVzb2x2ZSBhcyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9jayBpcyBub3Qg
aW1wbGVtZW50ZWQKIEZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIHNob3VsZCBjYXVzZSBjbG9zZWQg
dG8gZnVsZmlsbCByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKQEAgLTE0LDcgKzE0LDcg
QEAgRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3QgZnVsZmlsbGVkIHByb21p
c2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QKIFBBU1MgZ2V0UmVhZGVyKCkgc2hvdWxkIGJlIE9L
IAogUEFTUyBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMsIHNpbmNl
IHRoZXkgYXJlIGFsbCBhdXRvLXJlbGVhc2VkIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xv
c2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FsbCBpbiBzdGFydCkg
cmVhZGVyIAotRkFJTCByZWFkKCkgc2hvdWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmlu
ZWQsIGRvbmU6IHRydWUgfSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAorUEFTUyByZWFkKCkgc2hv
dWxkIGZ1bGZpbGwgd2l0aCB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSAKIFBBU1Mg
Y2xvc2VkIHNob3VsZCBmdWxmaWxsIHdpdGggdW5kZWZpbmVkIAogUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTQ2xvc2VkIHdpdGggUmVhZGFibGVTdHJlYW0gKGNsb3NlZCB2aWEgY2FuY2VsKSAKIEZB
SUwgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IGZ1bGZpbGxlZCBwcm9taXNlIGVh
Y2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCkBAIC0yNCwyNiArMjQsMjEgQEAgUEFT
UyBSdW5uaW5nIHRlbXBsYXRlZFJTQ2xvc2VkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGNs
b3NlZCB2aWEgY2FuY2VsKSByZWEKIEZBSUwgcmVhZCgpIHNob3VsZCBmdWxmaWxsIHdpdGggeyB2
YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAog
RkFJTCBjbG9zZWQgc2hvdWxkIGZ1bGZpbGwgd2l0aCB1bmRlZmluZWQgY2FuY2VsIGlzIG5vdCBp
bXBsZW1lbnRlZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRoIFJlYWRhYmxl
U3RyZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKLUZBSUwgZ2V0UmVhZGVyKCkgc2hv
dWxkIHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCByZWFkIGlzIG5vdCBpbXBsZW1l
bnRlZAorUEFTUyBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBl
cnJvcmVkIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVh
ZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIGNhbGwgaW4gc3RhcnQpIAogRkFJTCBjYW5jZWwoKSBz
aG91bGQgcmV0dXJuIGEgZGlzdGluY3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2Vs
IGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCByZWFkZXIgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBh
IGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QgaW1wbGVt
ZW50ZWQKIFBBU1Mgc2hvdWxkIGJlIGFibGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzLCBz
aW5jZSB0aGV5IGFyZSBhbGwgYXV0by1yZWxlYXNlZCAKLVBBU1MgUnVubmluZyB0ZW1wbGF0ZWRS
U0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVq
ZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgCi1GQUlMIGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4g
YSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLVBBU1Mg
UnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJy
b3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyIAot
VElNRU9VVCBjbG9zZWQgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciBUZXN0IHRpbWVkIG91
dAotRkFJTCByZWFkKCkgc2hvdWxkIHJlamVjdCB3aXRoIHRoZSBlcnJvciByZWFkIGlzIG5vdCBp
bXBsZW1lbnRlZAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3
aXRoIFJlYWRhYmxlU3RyZWFtICh0d28gY2h1bmtzIGVucXVldWVkLCBzdGlsbCBvcGVuKSByZWFk
ZXIgCi1GQUlMIGNhbGxpbmcgcmVhZCgpIHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50
dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAotRkFJTCBjYWxs
aW5nIHJlYWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBj
aHVua3MgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgcmVhZCgpIHNob3VsZCByZXR1cm4g
ZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCi1GQUlM
IGNhbmNlbCgpIGFmdGVyIGEgcmVhZCgpIHNob3VsZCBzdGlsbCBnaXZlIHRoYXQgc2luZ2xlIHJl
YWQgcmVzdWx0IHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitUSU1FT1VUIGNhbGxpbmcgcmVhZCgp
IHR3aWNlIHdpdGhvdXQgd2FpdGluZyB3aWxsIGV2ZW50dWFsbHkgZ2l2ZSBib3RoIGNodW5rcyBU
ZXN0IHRpbWVkIG91dAorVElNRU9VVCBjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcg
d2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MgVGVzdCB0aW1lZCBvdXQKK1BBU1MgcmVh
ZCgpIHNob3VsZCByZXR1cm4gZGlzdGluY3QgcHJvbWlzZXMgZWFjaCB0aW1lIAorRkFJTCBjYW5j
ZWwoKSBhZnRlciBhIHJlYWQoKSBzaG91bGQgc3RpbGwgZ2l2ZSB0aGF0IHNpbmdsZSByZWFkIHJl
c3VsdCBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNU
d29DaHVua3NDbG9zZWRSZWFkZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAodHdvIGNodW5rcyBlbnF1
ZXVlZCwgdGhlbiBjbG9zZWQpIHJlYWRlciAKLUZBSUwgdGhpcmQgcmVhZCgpLCB3aXRob3V0IHdh
aXRpbmcsIHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IHJlYWQg
aXMgbm90IGltcGxlbWVudGVkCi1GQUlMIHRoaXJkIHJlYWQsIHdpdGggd2FpdGluZywgc2hvdWxk
IGdpdmUgeyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH0gcmVhZCBpcyBub3QgaW1wbGVt
ZW50ZWQKLUZBSUwgZHJhaW5pbmcgdGhlIHN0cmVhbSB2aWEgcmVhZCgpIHNob3VsZCBjYXVzZSB0
aGUgcmVhZGVyIGNsb3NlZCBwcm9taXNlIHRvIGZ1bGZpbGwgcmVhZCBpcyBub3QgaW1wbGVtZW50
ZWQKLUZBSUwgcmVsZWFzaW5nIHRoZSBsb2NrIGFmdGVyIHRoZSBzdHJlYW0gaXMgY2xvc2VkIHNo
b3VsZCBkbyBub3RoaW5nIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCitGQUlMIHRoaXJkIHJlYWQo
KSwgd2l0aG91dCB3YWl0aW5nLCBzaG91bGQgZ2l2ZSB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6
IHRydWUgfSBhc3NlcnRfb2JqZWN0X2VxdWFsczogZmlyc3QgcmVzdWx0IHNob3VsZCBiZSBjb3Jy
ZWN0IHByb3BlcnR5ICJkb25lIiBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgZ290
IG9iamVjdCAiW29iamVjdCBPYmplY3RdIgorRkFJTCB0aGlyZCByZWFkLCB3aXRoIHdhaXRpbmcs
IHNob3VsZCBnaXZlIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9IGFzc2VydF9vYmpl
Y3RfZXF1YWxzOiBmaXJzdCByZXN1bHQgc2hvdWxkIGJlIGNvcnJlY3QgcHJvcGVydHkgImRvbmUi
IGV4cGVjdGVkIG9iamVjdCAiW29iamVjdCBPYmplY3RdIiBnb3Qgb2JqZWN0ICJbb2JqZWN0IE9i
amVjdF0iCitQQVNTIGRyYWluaW5nIHRoZSBzdHJlYW0gdmlhIHJlYWQoKSBzaG91bGQgY2F1c2Ug
dGhlIHJlYWRlciBjbG9zZWQgcHJvbWlzZSB0byBmdWxmaWxsIAorRkFJTCByZWxlYXNpbmcgdGhl
IGxvY2sgYWZ0ZXIgdGhlIHN0cmVhbSBpcyBjbG9zZWQgc2hvdWxkIGRvIG5vdGhpbmcgcmVsZWFz
ZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIHJlbGVhc2luZyB0aGUgbG9jayBzaG91bGQg
Y2F1c2UgcmVhZCgpIHRvIGFjdCBhcyBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZCByZWxlYXNlTG9j
ayBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgcmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5
cyByZXR1cm5zIHRoZSBzYW1lIHByb21pc2UgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKK0ZBSUwg
cmVhZGVyJ3MgY2xvc2VkIHByb3BlcnR5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIHByb21pc2Ug
cmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0
ZWQuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jl
YWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQuaHRtbAppbmRleCA4YzFiZjU4N2UxZTQ3MmRlMjUzMTE0
Yzk1NzAzZGRmMTVhNTViYzkyLi5hYzJjNGMyODg2YjdhNjNjOWYwNzQ1Y2U1MTRlYjEwMTA4NTk2
NDY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRh
dGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC5o
dG1sCkBAIC0zNjksNyArMzY5LDcgQEAgZnVuY3Rpb24gdGVtcGxhdGVkUlNUd29DaHVua3NPcGVu
UmVhZGVyKGxhYmVsLCBmYWN0b3J5LCBjaHVua3MpIHsKICAgICB0ZXN0KGZ1bmN0aW9uKCkgewog
ICAgIH0sICdSdW5uaW5nIHRlbXBsYXRlZFJTVHdvQ2h1bmtzT3BlblJlYWRlciB3aXRoICcgKyBs
YWJlbCk7CiAKLSAgICB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2lj
ZSB3aXRob3V0IHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MnKTsKKyAg
ICB2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRob3V0IHdh
aXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBjaHVua3MnLCB7IHRpbWVvdXQ6IDUwIH0p
OwogICAgIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciB7IHJlYWRlciB9ID0g
ZmFjdG9yeSgpOwogICAgICAgICB2YXIgcHJvbWlzZUNvdW50ID0gMDsKQEAgLTM4NSw3ICszODUs
NyBAQCBmdW5jdGlvbiB0ZW1wbGF0ZWRSU1R3b0NodW5rc09wZW5SZWFkZXIobGFiZWwsIGZhY3Rv
cnksIGNodW5rcykgewogICAgICAgICB9KSk7CiAgICAgfSk7CiAKLSAgICB2YXIgdGVzdDIgPSBh
c3luY190ZXN0KCdjYWxsaW5nIHJlYWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVh
bGx5IGdpdmUgYm90aCBjaHVua3MnKTsKKyAgICB2YXIgdGVzdDIgPSBhc3luY190ZXN0KCdjYWxs
aW5nIHJlYWQoKSB0d2ljZSB3aXRoIHdhaXRpbmcgd2lsbCBldmVudHVhbGx5IGdpdmUgYm90aCBj
aHVua3MnLCB7IHRpbWVvdXQ6IDUwIH0pOwogICAgIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKSB7CiAg
ICAgICAgIHZhciB7IHJlYWRlciB9ID0gZmFjdG9yeSgpOwogCkBAIC02MTUsMjMgKzYxNSwyNCBA
QCB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSgnUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlh
IGNhbGwgaW4gc3RhcnQpJywgZnVuY3RpbwogICAgIHRoZUVycm9yCiApOwogCi10ZW1wbGF0ZWRS
U0Vycm9yZWQoJ1JlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3Rl
ZCBwcm9taXNlIGluIHN0YXJ0KScsIGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBuZXcgUmVhZGFi
bGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QodGhlRXJyb3IpOwotICAgICAgICB9Ci0gICAgfSl9LAotICAgIHRo
ZUVycm9yCi0pOwotCi10ZW1wbGF0ZWRSU0Vycm9yZWRSZWFkZXIoJ1JlYWRhYmxlU3RyZWFtIChl
cnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXIn
LCBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gc3RyZWFtQW5kRGVmYXVsdFJlYWRlcihuZXcgUmVh
ZGFibGVTdHJlYW0oewotICAgICAgICBzdGFydDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gUHJvbWlzZS5yZWplY3QodGhlRXJyb3IpOwotICAgICAgICB9Ci0gICAgfSkpfSwKLSAg
ICB0aGVFcnJvcgotKTsKKy8vIEZJWE1FOiBBY3RpdmF0ZSB0aGVzZSB0ZXN0cyBvbmNlIFByb21p
c2UgaGFuZGxpbmcgaXMgc3VwcG9ydGVkIGluIHN0YXJ0IGZ1bmN0aW9uLgorLy8gdGVtcGxhdGVk
UlNFcnJvcmVkKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0
ZWQgcHJvbWlzZSBpbiBzdGFydCknLCBmdW5jdGlvbigpIHsKKy8vICAgICByZXR1cm4gbmV3IFJl
YWRhYmxlU3RyZWFtKHsKKy8vICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkgeworLy8gICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRoZUVycm9yKTsKKy8vICAgICAgICAgfQorLy8g
ICAgIH0pfSwKKy8vICAgICB0aGVFcnJvcgorLy8gKTsKKworLy8gdGVtcGxhdGVkUlNFcnJvcmVk
UmVhZGVyKCdSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQg
cHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyJywgZnVuY3Rpb24oKSB7CisvLyAgICAgcmV0dXJuIHN0
cmVhbUFuZERlZmF1bHRSZWFkZXIobmV3IFJlYWRhYmxlU3RyZWFtKHsKKy8vICAgICAgICAgc3Rh
cnQ6IGZ1bmN0aW9uKCkgeworLy8gICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHRo
ZUVycm9yKTsKKy8vICAgICAgICAgfQorLy8gICAgIH0pKX0sCisvLyAgICAgdGhlRXJyb3IKKy8v
ICk7CiAKIHZhciBjaHVua3MgPSBbJ2EnLCAnYiddOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbCBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0
cmVhbS5odG1sCmluZGV4IGQwNzI1ZTQ0MjY2MWE3MmUyNmZlYjYzM2Y4MzM2YzIwOGU5NTRlNjEu
LjE2Y2U4YzRhZTQ0OTMzMTdkMzI3Y2Y5MThiNGNmNDkwOTYxNThkNTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3JlYWRhYmxlLXN0cmVhbS5odG1sCkBAIC01Myw3ICs1Myw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7
CiAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKHsgc3RyYXRlZ3k6IDIgfSk7IC8vIENvbnN0cnVjdG9y
IHNob3VsZCBub3QgdGhyb3cgd2hlbiBzdHJhdGVneSBpcyBub3QgYW4gb2JqZWN0LgogfSwgJ1Jl
YWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHN0cmF0
ZWd5IGFyZ3VtZW50Jyk7CiAKLXZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFt
IHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UnKTsKK3ZhciB0ZXN0MSA9
IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVy
biBhIHByb21pc2UnLCB7IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDEuc3RlcChmdW5jdGlvbigpCiB7
CiAgICAgdmFyIHJlYWRDYWxsZWQgPSBmYWxzZTsKQEAgLTE0Niw3ICsxNDYsNyBAQCB0ZXN0KGZ1
bmN0aW9uKCkgewogICAgIGFzc2VydF90aHJvd3MoZXJyb3IsIGZ1bmN0aW9uKCkgeyBuZXcgUmVh
ZGFibGVTdHJlYW0oeyBzdGFydCgpIHsgdGhyb3cgZXJyb3I7IH0gfSkgfSwgJ2Vycm9yIHNob3Vs
ZCBiZSByZS10aHJvd24nKTsKIH0sICdSZWFkYWJsZVN0cmVhbTogaWYgc3RhcnQgdGhyb3dzIGFu
IGVycm9yLCBpdCBzaG91bGQgYmUgcmUtdGhyb3duJyk7CiAKLXZhciB0ZXN0NCA9IGFzeW5jX3Rl
c3QoJ1JlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUg
c3RyZWFtJyk7Cit2YXIgdGVzdDQgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogaWYgcHVs
bCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVhbScsIHsgdGltZW91dDogNTAgfSk7
CiB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcigncHVs
bCBmYWlsdXJlJyk7CiAgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKQEAgLTM2OCw3
ICszNjgsNyBAQCB0ZXN0NC5zdGVwKGZ1bmN0aW9uKCkgewogLy8gICAgIH0pLCBzdGFuZGFyZFRp
bWVvdXQpOwogLy8gfSk7CiAKLXZhciB0ZXN0MTEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVh
bTogc2hvdWxkIG5vdCBjYWxsIHB1bGwgdW50aWwgdGhlIHByZXZpb3VzIHB1bGwgY2FsbFwncyBw
cm9taXNlIGZ1bGZpbGxzJyk7Cit2YXIgdGVzdDExID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJl
YW06IHNob3VsZCBub3QgY2FsbCBwdWxsIHVudGlsIHRoZSBwcmV2aW91cyBwdWxsIGNhbGxcJ3Mg
cHJvbWlzZSBmdWxmaWxscycsIHsgdGltZW91dDogNTAgfSk7CiB0ZXN0MTEuc3RlcChmdW5jdGlv
bigpIHsKICAgICB2YXIgcmVzb2x2ZTsKICAgICB2YXIgcmV0dXJuZWRQcm9taXNlOwpAQCAtNTY1
LDcgKzU2NSw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgfSk7CiB9LCAnUmVhZGFibGVTdHJl
YW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFt
IGlzIGVycm9yZWQnKTsKIAotdmFyIHRlc3QxNiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFt
OiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMnKTsKK3Zh
ciB0ZXN0MTYgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJs
eWluZyBzb3VyY2UgbWV0aG9kcyBhcyBtZXRob2RzJywgeyB0aW1lb3V0OiA1MCB9KTsKIHRlc3Qx
Ni5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBzdGFydENhbGxlZCA9IDA7CiAgICAgdmFyIHB1
bGxDYWxsZWQgPSAwOwpAQCAtNjU4LDcgKzY1OCw3IEBAIHRlc3QxNy5zdGVwKGZ1bmN0aW9uKCkg
ewogICAgIH0pKS5jYXRjaCh0ZXN0MTcuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0X3Vu
cmVhY2hlZChlKTsgfSApKTsKIH0pOwogCi12YXIgdGVzdDE4ID0gYXN5bmNfdGVzdCgnUmVhZGFi
bGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2Un
KTsKK3ZhciB0ZXN0MTggPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0
ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZScsIHsgdGltZW91dDogNTAgfSk7CiB0
ZXN0MTguc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcHVsbENoZWNrZWQgPSBmYWxzZTsKICAg
ICB2YXIgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoOCk7CkBAIC03MDIsNyAr
NzAyLDcgQEAgdGVzdDE4LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSksIHRlc3QxOC5zdGVwX2Z1
bmMoZnVuY3Rpb24oZSkgeyBhc3NlcnRfcmVhY2hlZChlKTsgfSkpOwogfSk7CiAKLXZhciB0ZXN0
MTkgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGlu
ZyBhIHN5bmMgcHVsbCBzb3VyY2UnKTsKK3ZhciB0ZXN0MTkgPSBhc3luY190ZXN0KCdSZWFkYWJs
ZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UnLCB7
IHRpbWVvdXQ6IDUwIH0pOwogdGVzdDE5LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHJzID0g
c2VxdWVudGlhbFJlYWRhYmxlU3RyZWFtKDEwKTsKIApAQCAtNzE0LDcgKzcxNCw3IEBAIHRlc3Qx
OS5zdGVwKGZ1bmN0aW9uKCkgewogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDIwID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYW4gYXN5bmMg
cHVsbCBzb3VyY2UnKTsKK3ZhciB0ZXN0MjAgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBp
bnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhbiBhc3luYyBwdWxsIHNvdXJjZScsIHsgdGltZW91
dDogNTAgfSk7CiB0ZXN0MjAuc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcnMgPSBzZXF1ZW50
aWFsUmVhZGFibGVTdHJlYW0oMTAsIHsgYXN5bmM6IHRydWUgfSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>