<?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>66925</bug_id>
          
          <creation_ts>2011-08-25 01:58:08 -0700</creation_ts>
          <short_desc>[WebSocket] WebSocket::close didn&apos;t handle code and reason arguments</short_desc>
          <delta_ts>2012-02-01 22:42:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>66924</dependson>
          <blocked>50099</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Takashi Toyoshima">toyoshim</reporter>
          <assigned_to name="Takashi Toyoshima">toyoshim</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>456714</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-25 01:58:08 -0700</bug_when>
    <thetext>This is a sending side of code and reason support for latest hybi spec.
Receiving side is already landed (https://bugs.webkit.org/show_bug.cgi?id=66362).

FYI: Reference specifications
http://dev.w3.org/html5/websockets/#dom-websocket-close
http://www.w3.org/TR/WebIDL/#es-unsigned-short</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456717</commentid>
    <comment_count>1</comment_count>
      <attachid>105146</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-25 02:15:32 -0700</bug_when>
    <thetext>Created attachment 105146
Patch (v8 code missing now)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456822</commentid>
    <comment_count>2</comment_count>
      <attachid>105176</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-25 06:56:33 -0700</bug_when>
    <thetext>Created attachment 105176
Patch (include pywebsocket update patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456825</commentid>
    <comment_count>3</comment_count>
      <attachid>105178</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-25 07:14:05 -0700</bug_when>
    <thetext>Created attachment 105178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456827</commentid>
    <comment_count>4</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-25 07:16:06 -0700</bug_when>
    <thetext>Second patch included 66924 change.
Difference between second one and third one is that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457320</commentid>
    <comment_count>5</comment_count>
      <attachid>105178</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-25 18:19:27 -0700</bug_when>
    <thetext>Comment on attachment 105178
Patch

Would you post a patch which won&apos;t cause conflicts please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457488</commentid>
    <comment_count>6</comment_count>
      <attachid>105338</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-26 02:42:11 -0700</bug_when>
    <thetext>Created attachment 105338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457491</commentid>
    <comment_count>7</comment_count>
      <attachid>105338</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 02:49:19 -0700</bug_when>
    <thetext>Comment on attachment 105338
Patch

Attachment 105338 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9508916</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457494</commentid>
    <comment_count>8</comment_count>
      <attachid>105340</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-26 02:58:52 -0700</bug_when>
    <thetext>Created attachment 105340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457498</commentid>
    <comment_count>9</comment_count>
      <attachid>105340</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 03:25:32 -0700</bug_when>
    <thetext>Comment on attachment 105340
Patch

Attachment 105340 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9508927

New failing tests:
http/tests/websocket/tests/hybi/client-close.html
http/tests/websocket/tests/hybi/close.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458761</commentid>
    <comment_count>10</comment_count>
      <attachid>105340</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-30 01:25:51 -0700</bug_when>
    <thetext>Comment on attachment 105340
Patch

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

&gt; LayoutTests/http/tests/websocket/tests/hybi/close.html:108
&gt; +    // TODO(toyoshim): unpaired surrogates throw SYNTAX_ERR

TODO(name) is not a WebKit style.

&gt; LayoutTests/http/tests/websocket/tests/hybi/close_wsh.py:56
&gt; +
&gt; +
&gt; +# vi:sts=4 sw=4 et

Should remove such editor-specific annotation.

&gt; LayoutTests/http/tests/websocket/tests/hybi/workers/resources/close.js:120
&gt; +            //shouldBeTrue(&quot;exceptionProto === DOMException.prototype&quot;);

should remove unused code.

&gt; LayoutTests/http/tests/websocket/tests/hybi/workers/resources/close.js:160
&gt; +            //shouldBeTrue(&quot;exceptionProto === DOMException.prototype&quot;);

ditto.

&gt; Source/WebCore/bindings/js/JSWebSocketCustom.cpp:93
&gt; +    int argumentCount = static_cast&lt;int&gt;(exec-&gt;argumentCount());

Why don&apos;t you use unsigned or size_t for argumentCount?

&gt; Source/WebCore/websockets/WebSocketChannel.cpp:737
&gt; +                startClosingHandshake(0, &quot;&quot;);

What does &quot;0&quot; mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458784</commentid>
    <comment_count>11</comment_count>
      <attachid>105340</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2011-08-30 02:06:28 -0700</bug_when>
    <thetext>Comment on attachment 105340
Patch

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

&gt; Source/WebCore/bindings/js/JSWebSocketCustom.cpp:102
&gt; +        code = clampToInteger(x);

Just curious, what happens if isnan(x) is true?

&gt; Source/WebCore/bindings/js/JSWebSocketCustom.cpp:105
&gt; +            reason = ustringToString(exec-&gt;argument(1).toString(exec));

toString() may raise an exception. If that happens, you need to exit the function (see constructJSWebSocket() function above).

&gt; Source/WebCore/bindings/v8/custom/V8WebSocketCustom.cpp:121
&gt; +      double x = args[0]-&gt;NumberValue();

Lousy indentation here.

&gt; Source/WebCore/bindings/v8/custom/V8WebSocketCustom.cpp:123
&gt; +            x = clampTo(x, 0, 0xffff);

You could use USHORT_MAX, or numeric_limit&lt;uint16_t&gt;::max().

&gt; Source/WebCore/bindings/v8/custom/V8WebSocketCustom.cpp:127
&gt; +            reason = toWebCoreString(args[1]-&gt;ToString());

Same here, you need to watch an exception coming from ToString().

&gt; Source/WebCore/websockets/WebSocket.cpp:267
&gt; +        if (!(code == WebSocketChannel::CloseEventCodeNormalClosure || (3000 &lt;= code &amp;&amp; code &lt;= 4999))) {

You probably need to give names to bare numbers like 3000 and 4999.

&gt; Source/WebCore/websockets/WebSocket.cpp:272
&gt; +        if (reason.utf8().length() &gt; 123) {

Same here, define a constant for the value 123.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458888</commentid>
    <comment_count>12</comment_count>
      <attachid>105340</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-30 07:31:27 -0700</bug_when>
    <thetext>Comment on attachment 105340
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSWebSocketCustom.cpp:102
&gt;&gt; +        code = clampToInteger(x);
&gt; 
&gt; Just curious, what happens if isnan(x) is true?

clampToInteger handle NaN by static cast to int.
I guess its result depends on compilers.

I assign 0.0 explicitly when x is NaN.

&gt;&gt; Source/WebCore/websockets/WebSocketChannel.cpp:737
&gt;&gt; +                startClosingHandshake(0, &quot;&quot;);
&gt; 
&gt; What does &quot;0&quot; mean?

Actually, these arguments have no mean because this function is for old protocol hixie76.
Hixie76 doesn&apos;t use code and reason.
Anyway, I use CloseEventCodeNotSpecified (-1) for readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459534</commentid>
    <comment_count>13</comment_count>
      <attachid>105763</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-31 02:54:39 -0700</bug_when>
    <thetext>Created attachment 105763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>459549</commentid>
    <comment_count>14</comment_count>
      <attachid>105767</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-08-31 04:22:43 -0700</bug_when>
    <thetext>Created attachment 105767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460244</commentid>
    <comment_count>15</comment_count>
      <attachid>105767</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-31 23:08:37 -0700</bug_when>
    <thetext>Comment on attachment 105767
Patch

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

r- for some style issues.

&gt; LayoutTests/http/tests/websocket/tests/hybi/close-expected.txt:7
&gt; +invalid code test: 0

nit: Capitalize: invalid -&gt; Invalid

&gt; LayoutTests/http/tests/websocket/tests/hybi/close-expected.txt:8
&gt; +code 999 must cause INVALID_ACCESS_ERR

nit: This is a sentence.  So &quot;code&quot; should be &quot;Code&quot;, and should end with &apos;.&apos;.

&gt; LayoutTests/http/tests/websocket/tests/hybi/close.html:48
&gt; +var onopen = function ()

The names onopen, onerror, onclose, onmessage are confusing.
I recommend to rename them like handleOpen, handleError, ....

&gt; LayoutTests/http/tests/websocket/tests/hybi/close.html:68
&gt; +var set_defaults = function (ws)

We usually use the naming rule same as C++.  So this should be &quot;setDefaults&quot;.
Also, there is no reason to use &quot;var&quot;.

function setDefaultHandlers(ws)
{
  ....

&gt; LayoutTests/http/tests/websocket/tests/hybi/close.html:76
&gt; +var run_code_test = function ()

ditto.

function runCodeTest() ...

&gt; LayoutTests/http/tests/websocket/tests/hybi/close.html:106
&gt; +var run_invalid_string_test = function ()

ditto.

function runInvalidStringTest() ...

&gt; LayoutTests/http/tests/websocket/tests/hybi/close.html:113
&gt; +var run_reason_test = function (next_test)

ditto.

function runReasonTest() ...

&gt; Source/WebCore/bindings/js/JSWebSocketCustom.cpp:109
&gt; +            // in optional DOMString reason

It seems that this comment adds no information to the code.
It should be removed.

&gt; Source/WebCore/bindings/v8/custom/V8WebSocketCustom.cpp:131
&gt; +            // in optional DOMString reason

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460282</commentid>
    <comment_count>16</comment_count>
      <attachid>105909</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-09-01 00:14:41 -0700</bug_when>
    <thetext>Created attachment 105909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460285</commentid>
    <comment_count>17</comment_count>
      <attachid>105909</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-09-01 00:24:19 -0700</bug_when>
    <thetext>Comment on attachment 105909
Patch

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

&gt; LayoutTests/http/tests/websocket/tests/hybi/close.html:108
&gt; +    // TODO: unpaired surrogates throw SYNTAX_ERR

TODO -&gt; FIXME

&gt; Source/WebCore/websockets/WebSocket.idl:67
&gt; -        void close();
&gt; +        [Custom] void close(in [Optional] unsigned short code, in [Optional] DOMString reason) raises(DOMException);

Do we really need custom binding code?
Probably we can avoid [Custom] by providing close(ExceptionCode&amp;), close(unsigned short, ExceptionCode&amp;), and close(unsigned short, const String&amp;, ExceptionCode&amp;) in WebSocket.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460296</commentid>
    <comment_count>18</comment_count>
      <attachid>105909</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-09-01 00:40:40 -0700</bug_when>
    <thetext>Comment on attachment 105909
Patch

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

&gt;&gt; Source/WebCore/websockets/WebSocket.idl:67
&gt;&gt; +        [Custom] void close(in [Optional] unsigned short code, in [Optional] DOMString reason) raises(DOMException);
&gt; 
&gt; Do we really need custom binding code?
&gt; Probably we can avoid [Custom] by providing close(ExceptionCode&amp;), close(unsigned short, ExceptionCode&amp;), and close(unsigned short, const String&amp;, ExceptionCode&amp;) in WebSocket.

Main purpose to use [Custom] is to realize [Clamp] attribute behavior exactly.
Autogenerated code will handle casting from Number to unsigned short as modulo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460298</commentid>
    <comment_count>19</comment_count>
      <attachid>105915</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-09-01 00:43:56 -0700</bug_when>
    <thetext>Created attachment 105915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460301</commentid>
    <comment_count>20</comment_count>
      <attachid>105909</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-09-01 00:46:37 -0700</bug_when>
    <thetext>Comment on attachment 105909
Patch

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

&gt;&gt;&gt; Source/WebCore/websockets/WebSocket.idl:67
&gt;&gt;&gt; +        [Custom] void close(in [Optional] unsigned short code, in [Optional] DOMString reason) raises(DOMException);
&gt;&gt; 
&gt;&gt; Do we really need custom binding code?
&gt;&gt; Probably we can avoid [Custom] by providing close(ExceptionCode&amp;), close(unsigned short, ExceptionCode&amp;), and close(unsigned short, const String&amp;, ExceptionCode&amp;) in WebSocket.
&gt; 
&gt; Main purpose to use [Custom] is to realize [Clamp] attribute behavior exactly.
&gt; Autogenerated code will handle casting from Number to unsigned short as modulo.

So the right direction is to implement [Clamp] for our binding code generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460420</commentid>
    <comment_count>21</comment_count>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-09-01 07:01:02 -0700</bug_when>
    <thetext>Kent-san,

Thank you for review.
I totally agree with you.

But, could you permit me to split that work to another change?
I&apos;d like to try my current implementation here, then apply it to the generator.
To my understanding, this is the first and only use case of [Clamp] in WebKit for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460988</commentid>
    <comment_count>22</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-09-01 18:28:15 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; But, could you permit me to split that work to another change?
&gt; I&apos;d like to try my current implementation here, then apply it to the generator.

It&apos;s reasonable.
Please file a bug for the generator change now, and add FIXME comments to JSWebSocketCustom.cpp, V8WebSocketCustom.cpp, and WebSocket.idl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461044</commentid>
    <comment_count>23</comment_count>
      <attachid>106092</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-09-01 22:00:57 -0700</bug_when>
    <thetext>Created attachment 106092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461047</commentid>
    <comment_count>24</comment_count>
      <attachid>106092</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-09-01 22:18:03 -0700</bug_when>
    <thetext>Comment on attachment 106092
Patch

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

&gt; Source/WebCore/websockets/WebSocket.idl:67
&gt; -        void close();
&gt; +        [Custom] void close(in [Optional] unsigned short code, in [Optional] DOMString reason) raises(DOMException);

Add a FIXME comment about Clamp please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461048</commentid>
    <comment_count>25</comment_count>
      <attachid>106093</attachid>
    <who name="Takashi Toyoshima">toyoshim</who>
    <bug_when>2011-09-01 22:24:18 -0700</bug_when>
    <thetext>Created attachment 106093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461050</commentid>
    <comment_count>26</comment_count>
      <attachid>106093</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-09-01 22:29:56 -0700</bug_when>
    <thetext>Comment on attachment 106093
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461062</commentid>
    <comment_count>27</comment_count>
      <attachid>106093</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-01 23:32:58 -0700</bug_when>
    <thetext>Comment on attachment 106093
Patch

Clearing flags on attachment: 106093

Committed r94387: &lt;http://trac.webkit.org/changeset/94387&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461063</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-01 23:33:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547663</commentid>
    <comment_count>29</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-02-01 22:42:19 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; But, could you permit me to split that work to another change?
&gt; &gt; I&apos;d like to try my current implementation here, then apply it to the generator.
&gt; 
&gt; It&apos;s reasonable.
&gt; Please file a bug for the generator change now, and add FIXME comments to JSWebSocketCustom.cpp, V8WebSocketCustom.cpp, and WebSocket.idl.

Filed Bug 77605.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105146</attachid>
            <date>2011-08-25 02:15:32 -0700</date>
            <delta_ts>2011-08-25 06:56:26 -0700</delta_ts>
            <desc>Patch (v8 code missing now)</desc>
            <filename>bug-66925-20110825181531.patch</filename>
            <type>text/plain</type>
            <size>42927</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0OTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMjk3MjIxOTYyMWNjYWI4NTFlODU2
OTk0NDVjNWVjMTMzMGY2NWZhLi5kZDc1MDNkZDJjN2FhYTc0Yzc5YzAxYzllZGU2NzZmMjI3YTEx
NjI3IDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMjUgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIFdlYlNvY2tl
dDo6Y2xvc2UgZGlkbid0IGhhbmRsZSBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2Ut
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qczogQWRkZWQuCisg
ICAgICAgIChwb3N0UmVzdWx0KToKKyAgICAgICAgKHRlc3RGYWlsZWQpOgorICAgICAgICAoZGVi
dWcpOgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVUcnVlKToKKyAgICAg
ICAgKHNob3VsZEJlRmFsc2UpOgorICAgICAgICAob25vcGVuKToKKyAgICAgICAgKG9uZXJyb3Ip
OgorICAgICAgICAob25jbG9zZSk6CisgICAgICAgIChvbm1lc3NhZ2UpOgorICAgICAgICAoc2V0
X2RlZmF1bHRzKToKKyAgICAgICAgKHJ1bl9pbnZhbGlkX2NvZGVfdGVzdC53cy5vbmNsb3NlKToK
KyAgICAgICAgKHJ1bl9pbnZhbGlkX2NvZGVfdGVzdCk6CisgICAgICAgIChydW5faW52YWxpZF9z
dHJpbmdfdGVzdCk6CisgICAgICAgIChydW5fdG9vX2xvbmdfdXRmOC53cy5vbmNsb3NlKToKKyAg
ICAgICAgKHJ1bl90b29fbG9uZ191dGY4KToKKyAgICAgICAgKHJ1bl9jb2RlX2FuZF9yZWFzb24u
KToKKyAgICAgICAgKHJ1bl9jb2RlX2FuZF9yZWFzb24pOgorCiAyMDExLTA4LTIxICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgcmVzdWx0cyBmb3IgbW9y
ZSB0ZXN0cyBhZmZlY3RlZCBieSB0aGUgYWRkaXRpb24gb2YgdGhlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2ODc4YTFlYWE5YjRhM2EyNGJkMjBiNWE2MTc2MWU5ZTc3
M2ZlMDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2Nsb3NlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkzIEBACitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rp
b24gaXMgZXN0YWJsaXNoZWQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlz
IGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitWZXJpZnkgV2Vi
U29ja2V0OjpjbG9zZSBiZWhhdmlvcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
Y29kZSA5OTkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJv
dG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1l
IGlzIGludmFsaWRBY2Nlc3NFcnIKK2NvZGUgMTAwMSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNT
X0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0
cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorY29kZSAyOTk5IG11
c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01F
eGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlk
QWNjZXNzRXJyCitjb2RlIDUwMDAgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1Mg
ZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBl
eGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2NvZGUgNjY1MzYgbXVzdCBjYXVzZSBJ
TlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5w
cm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIK
K2NvZGUgNDI5NDk2ODI5NiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNl
cHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorY29kZSAyOTk5LjkgbXVzdCBjYXVzZSBJTlZB
TElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90
b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2Nv
ZGUgTmFOIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3Rv
ID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBp
cyBpbnZhbGlkQWNjZXNzRXJyCitjb2RlIDAgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIK
K1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQor
UEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2NvZGUgMTAwIG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRp
b24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNz
RXJyCitjb2RlIEluZmluaXR5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4
Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhj
ZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitjb2RlIC1JbmZpbml0eSBtdXN0IGNhdXNl
IElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9u
LnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0Vy
cgorY29kZSBOYU4gbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9u
UHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25O
YW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK29uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVudC5jb2Rl
IGlzIGFibm9ybWFsQ2xvc3VyZQorY29kZSAxMDAwIGRpZG4ndCByYWlzZSBleGNlcHRpb24uCitQ
QVNTIGNvZGUgaXMgbm9ybWFsQ2xvc3VyZQorc2tpcCBpbnZhbGlkIHN0cmluZyB0ZXN0CitjbG9z
ZSB3aXRoIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNAorcmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQgbXVzdCBjYXVzZSBT
WU5UQVhfRVJSCitQQVNTIHJlc3VsdCBpcyBmYWxzZQorUEFTUyBleGNlcHRpb25Qcm90byA9PT0g
RE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgc3lu
dGF4RXJyCitjbG9zZSB3aXRoIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTLCqQorcmVhc29uIDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEywqkg
bXVzdCBjYXVzZSBTWU5UQVhfRVJSCitQQVNTIHJlc3VsdCBpcyBmYWxzZQorUEFTUyBleGNlcHRp
b25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlv
bk5hbWUgaXMgc3ludGF4RXJyCitjbG9zZSB3aXRoIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzCitvbmNsb3Nl
KCkuCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBhYm5vcm1hbENsb3N1cmUKK3JlYXNvbiAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjMgZGlkbid0IHJhaXNlIGV4Y2VwdGlvbi4KK1BBU1MgcmVzdWx0IGlzIHRydWUKK2Nsb3Nl
IGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9LLCBC
eWUhCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNv
ZGUgaXMgY29kZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK2Nsb3NlIGNvZGUg
YW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogMzAwMAorICByZWFzb246IDMwMDAKK1BBU1Mg
Y2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBjb2Rl
CitQQVNTIGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgorY2xvc2UgY29kZSBhbmQgcmVhc29u
IG11c3QgYmUKKyAgY29kZSAgOiA0MDAwCisgIHJlYXNvbjogY29kZSBpcyA0MDAwCitQQVNTIGNs
b3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQor
UEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK2Nsb3NlIGNvZGUgYW5kIHJlYXNvbiBt
dXN0IGJlCisgIGNvZGUgIDogNDk5OQorICByZWFzb246IMKpIEdvb2dsZQorUEFTUyBjbG9zZUV2
ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1Mg
Y2xvc2VFdmVudC5yZWFzb24gaXMgcmVhc29uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2M2Q5NTJkYWYw
NmQyNmI1MzUwNjg0MDk2MjM4ODNhZGI3N2Q1OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwKQEAgLTAsMCAr
MSwxOTEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24o
IlZlcmlmeSBXZWJTb2NrZXQ6OmNsb3NlIGJlaGF2aW9ycy4iKTsKKword2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2Nr
ZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGV4Y2VwdGlvbk5hbWU7Cit2YXIgZXhjZXB0
aW9uUHJvdG87Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBjb2RlOwordmFyIHJlYXNvbjsKK3ZhciBy
ZXN1bHQ7Cit2YXIgaW52YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElEX0FDQ0VTU19FUlIiOwordmFy
IHN5bnRheEVyciA9ICJTWU5UQVhfRVJSIjsKK3ZhciBub3JtYWxDbG9zdXJlID0gMTAwMDsKK3Zh
ciBhYm5vcm1hbENsb3N1cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgw
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlIjsKKwordmFyIG9ub3BlbiA9IGZ1bmN0aW9uKCkK
K3sKKyAgICB0ZXN0RmFpbGVkKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFyIG9u
ZXJyb3IgPSBmdW5jdGlvbigpCit7CisgICAgdGVzdEZhaWxlZCgib25lcnJvcigpIHdhcyBjYWxs
ZWQuIik7Cit9OworCit2YXIgb25jbG9zZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0ZXN0RmFpbGVk
KCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3ZhciBvbm1lc3NhZ2UgPSBmdW5jdGlv
bigpCit7CisgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4iKTsKK307CisK
K2Z1bmN0aW9uIHNldF9kZWZhdWx0cyh3cykKK3sKKyAgICB3cy5vbm9wZW4gPSBvbm9wZW47Cisg
ICAgd3Mub25lcnJvciA9IG9uZXJyb3I7CisgICAgd3Mub25jbG9zZSA9IG9uY2xvc2U7CisgICAg
d3Mub25tZXNzYWdlID0gb25tZXNzYWdlOworfQorCitmdW5jdGlvbiBydW5faW52YWxpZF9jb2Rl
X3Rlc3QoKQoreworICAgIHZhciBjb2RlcyA9IFsKKyAgICAgICAgOTk5LCAxMDAxLCAyOTk5LCA1
MDAwLCA2NTUzNiArIDEwMDAsIDB4MTAwMDAwMDAwICsgMTAwMCwgMjk5OS45LCBOYU4sICIwIiwg
IjEwMCIsIDEvMCwgLTEvMCwgMC8wLAorICAgICAgICAxMDAwLjAKKyAgICBdOworICAgIHZhciB3
cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICB2YXIgaTsKKyAgICBzZXRfZGVmYXVsdHMod3Mp
OworICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbihlKQorICAgIHsKKyAgICAgICAgZGVidWcoIm9u
Y2xvc2UoKS4iKTsKKyAgICAgICAgaWYgKGNvZGVzW2ldICE9IG5vcm1hbENsb3N1cmUpCisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJ1bmV4cGVjdGVkIG9uY2xvc2UoKSBvbiBjb2RlICIgKyBjb2Rl
c1tpXSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImFibm9ybWFsQ2xvc3VyZSIpOwor
ICAgICAgICB9CisgICAgfTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY29kZXMubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVzW2ldKTsKKyAgICAg
ICAgICAgIGRlYnVnKCJjb2RlICIgKyBjb2Rlc1tpXSArICIgZGlkbid0IHJhaXNlIGV4Y2VwdGlv
bi4iKTsKKyAgICAgICAgICAgIGNvZGUgPSBjb2Rlc1tpXTsKKyAgICAgICAgICAgIHNob3VsZEJl
KCJjb2RlIiwgIm5vcm1hbENsb3N1cmUiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICAgICAgZGVidWcoImNvZGUgIiArIGNvZGVzW2ldICsgIiBtdXN0IGNhdXNlICIgKyBpbnZhbGlk
QWNjZXNzRXJyKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAgICAg
ICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5
cGUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJleGNlcHRpb25OYW1lIiwgImludmFsaWRBY2Nl
c3NFcnIiKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuX2ludmFsaWRfc3Ry
aW5nX3Rlc3QoKQoreworICAgIC8vIFRPRE8odG95b3NoaW0pOiB1bnBhaXJlZCBzdXJyb2dhdGVz
IHRocm93IFNZTlRBWF9FUlIKKyAgICBkZWJ1Zygic2tpcCBpbnZhbGlkIHN0cmluZyB0ZXN0Iik7
Cit9CisKK2Z1bmN0aW9uIHJ1bl90b29fbG9uZ191dGY4KCkKK3sKKyAgICB2YXIgcmVhc29ucyA9
IFsKKyAgICAgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQiLCAvLyAxMjQgQnl0ZQorICAgICAgICAiMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTJc
dTAwYTkiLCAvLyBsZW5ndGggaXMgMTIzLCBidXQgMTI0IEJ5dGUgaW4gVVRGLTgKKyAgICAgICAg
IjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMyIsIC8vIDEyMyBCeXRlCisgICAgXTsKKyAgICB2YXIgcmVzdWx0cyA9IFsKKyAg
ICAgICAgZmFsc2UsCisgICAgICAgIGZhbHNlLAorICAgICAgICB0cnVlLAorICAgIF07CisgICAg
dmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAgIHZhciBpOworICAgIHNldF9kZWZhdWx0
cyh3cyk7CisgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICBkZWJ1
Zygib25jbG9zZSgpLiIpOworICAgICAgICBpZiAoIXJlc3VsdHNbaV0pCisgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJ1bmV4cGVjdGVkIG9uY2xvc2UoKSBvbiByZWFzb24gIiArIHJlYXNvbnNbaV0p
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAg
ICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5vcm1hbENsb3N1cmUiKTsKKyAgICAg
ICAgfQorICAgIH07CisgICAgZm9yIChpID0gMDsgaSA8IHJlYXNvbnMubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgZGVidWcoImNsb3NlIHdpdGggcmVhc29uOiAiICsgcmVhc29uc1tpXSk7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICB3cy5jbG9zZShub3JtYWxDbG9zdXJlLCByZWFzb25zW2ld
KTsKKyAgICAgICAgICAgIGRlYnVnKCJyZWFzb24gIiArIHJlYXNvbnNbaV0gKyAiIGRpZG4ndCBy
YWlzZSBleGNlcHRpb24uIik7CisgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRzW2ldOworICAg
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJyZXN1bHQiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgZGVidWcoInJlYXNvbiAiICsgcmVhc29uc1tpXSArICIgbXVzdCBjYXVzZSAi
ICsgc3ludGF4RXJyKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdHNbaV07CisgICAgICAg
ICAgICBleGNlcHRpb25OYW1lID0gZS5uYW1lOworICAgICAgICAgICAgZXhjZXB0aW9uUHJvdG8g
PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CisgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCJy
ZXN1bHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZXhjZXB0aW9uUHJvdG8gPT09IERP
TUV4Y2VwdGlvbi5wcm90b3R5cGUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJleGNlcHRpb25O
YW1lIiwgInN5bnRheEVyciIpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBydW5f
Y29kZV9hbmRfcmVhc29uKCkKK3sKKyAgICB2YXIgY29kZXMgPSBbCisgICAgICAgIDEwMDAsCisg
ICAgICAgIDMwMDAsCisgICAgICAgIDQwMDAsCisgICAgICAgIDQ5OTkKKyAgICBdOworICAgIHZh
ciByZWFzb25zID0gWworICAgICAgICAiT0ssIEJ5ZSEiLAorICAgICAgICAiMzAwMCIsCisgICAg
ICAgICJjb2RlIGlzIDQwMDAiLAorICAgICAgICAiXHUwMGE5IEdvb2dsZSIKKyAgICBdOworICAg
IChmdW5jdGlvbiB0ZXN0KHRlc3RJZCkgeworICAgICAgICB2YXIgd3MgPSBuZXcgV2ViU29ja2V0
KHVybCk7CisgICAgICAgIHNldF9kZWZhdWx0cyh3cyk7CisgICAgICAgIHdzLm9ub3BlbiA9IGZ1
bmN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgd3MuY2xvc2UoY29kZXNbdGVzdElkXSwg
cmVhc29uc1t0ZXN0SWRdKTsKKyAgICAgICAgfTsKKyAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0
aW9uKGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAg
ICAgY29kZSA9IGNvZGVzW3Rlc3RJZF07CisgICAgICAgICAgICByZWFzb24gPSByZWFzb25zW3Rl
c3RJZF07CisgICAgICAgICAgICBkZWJ1ZygiY2xvc2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUi
KTsKKyAgICAgICAgICAgIGRlYnVnKCIgIGNvZGUgIDogIiArIGNvZGUpOworICAgICAgICAgICAg
ZGVidWcoIiAgcmVhc29uOiAiICsgcmVhc29uKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgi
Y2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQu
Y29kZSIsICJjb2RlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5yZWFzb24i
LCAicmVhc29uIik7CisgICAgICAgICAgICBpZiAoKyt0ZXN0SWQgIT0gY29kZXMubGVuZ3RoKQor
ICAgICAgICAgICAgICAgIHRlc3QodGVzdElkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfTsKKyAgICB9KSgwKTsKK30KKworcnVu
X2ludmFsaWRfY29kZV90ZXN0KCk7CitydW5faW52YWxpZF9zdHJpbmdfdGVzdCgpOworcnVuX3Rv
b19sb25nX3V0ZjgoKTsKK3J1bl9jb2RlX2FuZF9yZWFzb24oKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9jbG9zZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2Nsb3NlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDcwYmE1ZGUwYzVlZTFlNjIxYTgyMjc0ZmJl
NDU1MTYxOGVmMDI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZV93c2gucHkKQEAgLTAsMCArMSw1NiBAQAorIyBDb3B5
cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK19HT09EQllFX01FU1NBR0UgPSB1J0dvb2Ri
eWUnCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAg
IHBhc3MgICMgQWx3YXlzIGFjY2VwdC4KKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRh
KHJlcXVlc3QpOgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0
cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICBpZiBsaW5lIGlzIE5vbmU6CisgICAgICAg
ICAgICByZXR1cm4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCB1bmljb2RlKToKKyAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBiaW5hcnk9RmFsc2Up
CisgICAgICAgICAgICBpZiBsaW5lID09IF9HT09EQllFX01FU1NBR0U6CisgICAgICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5z
ZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PVRydWUpCisKKworZGVmIHdlYl9zb2NrZXRfcGFzc2l2
ZV9jbG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICByZXR1cm4gcmVxdWVzdC53c19jbG9z
ZV9jb2RlLCByZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbgorCisKKyMgdmk6c3RzPTQgc3c9NCBldApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93
b3JrZXJzL2Nsb3NlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgw
MGJjMDY4NTg1NmNjYTZjZjM1ZGI5YzFjZTQxYjRjY2FhYzI5MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9z
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3OSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6
IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVk
LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRo
ZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgorVmVyaWZ5IFdlYlNvY2tldDo6Y2xvc2UgYmVo
YXZpb3JzIGluIFdvcmtlci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitjb2RlIDk5
OSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorY29kZSAxMDAxIG11c3QgY2F1c2UgSU5WQUxJ
RF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlk
QWNjZXNzRXJyCitjb2RlIDI5OTkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1Mg
UEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2NvZGUgNTAw
MCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorY29kZSA2NjUzNiBtdXN0IGNhdXNlIElOVkFM
SURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxp
ZEFjY2Vzc0VycgorY29kZSA0Mjk0OTY4Mjk2IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJS
CitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitj
b2RlIDI5OTkuOSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorY29kZSBOYU4gbXVzdCBjYXVz
ZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlz
IGludmFsaWRBY2Nlc3NFcnIKK2NvZGUgMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgor
UEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorY29k
ZSAxMDAgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBl
eGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2NvZGUgSW5maW5pdHkgbXVzdCBjYXVz
ZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlz
IGludmFsaWRBY2Nlc3NFcnIKK2NvZGUgLUluZmluaXR5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NF
U1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNz
RXJyCitjb2RlIE5hTiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3
b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorY29kZSAxMDAwIGRpZG4n
dCByYWlzZSBleGNlcHRpb24uCitQQVNTIFBBU1M6IHdvcmtlcjogY29kZSBpcyBub3JtYWxDbG9z
dXJlCitza2lwIGludmFsaWQgc3RyaW5nIHRlc3QKK2Nsb3NlIHdpdGggcmVhc29uOiAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0CityZWFzb24gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCBtdXN0IGNhdXNlIFNZTlRBWF9FUlIKK1BBU1MgUEFTUzog
d29ya2VyOiByZXN1bHQgaXMgZmFsc2UKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1l
IGlzIHN5bnRheEVycgorY2xvc2Ugd2l0aCByZWFzb246IDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEywqkKK3JlYXNvbiAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMsKpIG11c3QgY2F1c2UgU1lOVEFYX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IHJlc3VsdCBp
cyBmYWxzZQorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgc3ludGF4RXJyCitj
bG9zZSB3aXRoIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzCityZWFzb24gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzIGRpZG4ndCByYWlz
ZSBleGNlcHRpb24uCitQQVNTIFBBU1M6IHdvcmtlcjogcmVzdWx0IGlzIHRydWUKK29uY2xvc2Uo
KS4KK0ZBSUwgRkFJTDogdW5leHBlY3RlZCBvbmNsb3NlKCkgb24gY29kZSB1bmRlZmluZWQKK29u
Y2xvc2UoKS4KK0ZBSUwgRkFJTDogdW5leHBlY3RlZCBvbmNsb3NlKCkgb24gcmVhc29uIHVuZGVm
aW5lZAorY2xvc2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUKKyAgY29kZSAgOiAxMDAwCisgIHJl
YXNvbjogT0ssIEJ5ZSEKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQ
QVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgorY2xvc2UgY29kZSBhbmQg
cmVhc29uIG11c3QgYmUKKyAgY29kZSAgOiAzMDAwCisgIHJlYXNvbjogMzAwMAorUEFTUyBQQVNT
OiB3b3JrZXI6IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6
IGNsb3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5y
ZWFzb24gaXMgcmVhc29uCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6
IDQwMDAKKyAgcmVhc29uOiBjb2RlIGlzIDQwMDAKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2
ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LmNvZGUg
aXMgY29kZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgor
Y2xvc2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUKKyAgY29kZSAgOiA0OTk5CisgIHJlYXNvbjog
wqkgR29vZ2xlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVl
CitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgUEFTUzog
d29ya2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK0RPTkUKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9z
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ0YzY2MjBlODc0MGM2NjliMWIyMTJkYjRkZDFiOTEyNDNmZWYy
MGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
Ly4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
ZGVzY3JpcHRpb24oIlZlcmlmeSBXZWJTb2NrZXQ6OmNsb3NlIGJlaGF2aW9ycyBpbiBXb3JrZXIu
Iik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisKK2Z1bmN0aW9u
IHN0YXJ0c1dpdGgoc3RyLCBwcmVmaXgpCit7CisgICAgcmV0dXJuIHN0ci5pbmRleE9mKHByZWZp
eCkgPT0gMDsKK30KKwordmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy9jbG9zZS5q
cyIpOword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkKK3sKKyAgICB2YXIgbWVz
c2FnZSA9IGV2ZW50LmRhdGE7CisgICAgaWYgKHN0YXJ0c1dpdGgobWVzc2FnZSwgIlBBU1MiKSkK
KyAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgICBlbHNlIGlmIChzdGFydHNXaXRoKG1l
c3NhZ2UsICJGQUlMIikpCisgICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSkKKyAgICBlbHNlCisg
ICAgICAgIGRlYnVnKG1lc3NhZ2UpOworICAgIGlmIChtZXNzYWdlID09PSAiRE9ORSIpCisgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jl
c291cmNlcy9jbG9zZS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE3YTZiYmYyMjVl
N2ZmNDMxZjQyNjZhZjA3ZjIwZGExMmY2YzU5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xv
c2UuanMKQEAgLTAsMCArMSwyMDMgQEAKK2Z1bmN0aW9uIHBvc3RSZXN1bHQocmVzdWx0LCBhY3R1
YWwsIGV4cGVjdGVkKQoreworICAgIHZhciBtZXNzYWdlID0gcmVzdWx0ID8gIlBBU1MiIDogIkZB
SUwiOworICAgIG1lc3NhZ2UgKz0gIjogd29ya2VyOiAiICsgYWN0dWFsICsgIiBpcyAiOworICAg
IGlmICghcmVzdWx0KQorICAgICAgICBtZXNzYWdlICs9ICJub3QgIjsKKyAgICBtZXNzYWdlICs9
IGV4cGVjdGVkOworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiB0ZXN0
RmFpbGVkKG1lc3NhZ2UpCit7CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6ICIgKyBtZXNzYWdlKTsK
K30KKworZnVuY3Rpb24gZGVidWcobWVzc2FnZSkKK3sKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdl
KTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICB2YXIg
X3Jlc3VsdCA9IGV2YWwoYWN0dWFsICsgIiA9PSAiICsgZXhwZWN0ZWQpOworICAgIHBvc3RSZXN1
bHQoX3Jlc3VsdCwgYWN0dWFsLCBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlVHJ1
ZShhY3R1YWwpCit7CisgICAgc2hvdWxkQmUoYWN0dWFsLCAidHJ1ZSIpOworfQorCitmdW5jdGlv
biBzaG91bGRCZUZhbHNlKGFjdHVhbCkKK3sKKyAgICBzaG91bGRCZShhY3R1YWwsICJmYWxzZSIp
OworfQorCit2YXIgZXhjZXB0aW9uTmFtZTsKK3ZhciBleGNlcHRpb25Qcm90bzsKK3ZhciBjbG9z
ZUV2ZW50OwordmFyIGNvZGU7Cit2YXIgcmVhc29uOwordmFyIHJlc3VsdDsKK3ZhciBpbnZhbGlk
QWNjZXNzRXJyID0gIklOVkFMSURfQUNDRVNTX0VSUiI7Cit2YXIgc3ludGF4RXJyID0gIlNZTlRB
WF9FUlIiOwordmFyIG5vcm1hbENsb3N1cmUgPSAxMDAwOwordmFyIGFibm9ybWFsQ2xvc3VyZSA9
IDEwMDY7Cit2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvY2xvc2UiOworCit2YXIgb25vcGVuID0gZnVuY3Rpb24oKQoreworICAgIHRlc3RGYWlsZWQo
Im9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgb25lcnJvciA9IGZ1bmN0aW9uKCkK
K3sKKyAgICB0ZXN0RmFpbGVkKCJvbmVycm9yKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3ZhciBv
bmNsb3NlID0gZnVuY3Rpb24oKQoreworICAgIHRlc3RGYWlsZWQoIm9uY2xvc2UoKSB3YXMgY2Fs
bGVkLiIpOworfTsKKwordmFyIG9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0ZXN0RmFp
bGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiIpOworfTsKKworZnVuY3Rpb24gc2V0X2RlZmF1
bHRzKHdzKQoreworICAgIHdzLm9ub3BlbiA9IG9ub3BlbjsKKyAgICB3cy5vbmVycm9yID0gb25l
cnJvcjsKKyAgICB3cy5vbmNsb3NlID0gb25jbG9zZTsKKyAgICB3cy5vbm1lc3NhZ2UgPSBvbm1l
c3NhZ2U7Cit9CisKK2Z1bmN0aW9uIHJ1bl9pbnZhbGlkX2NvZGVfdGVzdCgpCit7CisgICAgdmFy
IGNvZGVzID0gWworICAgICAgICA5OTksIDEwMDEsIDI5OTksIDUwMDAsIDY1NTM2ICsgMTAwMCwg
MHgxMDAwMDAwMDAgKyAxMDAwLCAyOTk5LjksIE5hTiwgIjAiLCAiMTAwIiwgMS8wLCAtMS8wLCAw
LzAsCisgICAgICAgIDEwMDAuMAorICAgIF07CisgICAgdmFyIHdzID0gbmV3IFdlYlNvY2tldCh1
cmwpOworICAgIHZhciBpOworICAgIHNldF9kZWZhdWx0cyh3cyk7CisgICAgd3Mub25jbG9zZSA9
IGZ1bmN0aW9uKGUpCisgICAgeworICAgICAgICBkZWJ1Zygib25jbG9zZSgpLiIpOworICAgICAg
ICBpZiAoY29kZXNbaV0gIT0gbm9ybWFsQ2xvc3VyZSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
InVuZXhwZWN0ZWQgb25jbG9zZSgpIG9uIGNvZGUgIiArIGNvZGVzW2ldKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJj
bG9zZUV2ZW50LmNvZGUiLCAiYWJub3JtYWxDbG9zdXJlIik7CisgICAgICAgIH0KKyAgICB9Owor
ICAgIGZvciAoaSA9IDA7IGkgPCBjb2Rlcy5sZW5ndGg7IGkrKykgeworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgd3MuY2xvc2UoY29kZXNbaV0pOworICAgICAgICAgICAgZGVidWcoImNvZGUg
IiArIGNvZGVzW2ldICsgIiBkaWRuJ3QgcmFpc2UgZXhjZXB0aW9uLiIpOworICAgICAgICAgICAg
Y29kZSA9IGNvZGVzW2ldOworICAgICAgICAgICAgc2hvdWxkQmUoImNvZGUiLCAibm9ybWFsQ2xv
c3VyZSIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiY29kZSAi
ICsgY29kZXNbaV0gKyAiIG11c3QgY2F1c2UgIiArIGludmFsaWRBY2Nlc3NFcnIpOworICAgICAg
ICAgICAgZXhjZXB0aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblByb3Rv
ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4Y2Vw
dGlvbk5hbWUiLCAiaW52YWxpZEFjY2Vzc0VyciIpOworICAgICAgICB9CisgICAgfQorfQorCitm
dW5jdGlvbiBydW5faW52YWxpZF9zdHJpbmdfdGVzdCgpCit7CisgICAgLy8gVE9ETyh0b3lvc2hp
bSk6IHVucGFpcmVkIHN1cnJvZ2F0ZXMgdGhyb3cgU1lOVEFYX0VSUgorICAgIGRlYnVnKCJza2lw
IGludmFsaWQgc3RyaW5nIHRlc3QiKTsKK30KKworZnVuY3Rpb24gcnVuX3Rvb19sb25nX3V0Zjgo
KQoreworICAgIHZhciByZWFzb25zID0gWworICAgICAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCIsIC8vIDEyNCBC
eXRlCisgICAgICAgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMlx1MDBhOSIsIC8vIGxlbmd0aCBpcyAxMjMsIGJ1dCAxMjQg
Qnl0ZSBpbiBVVEYtOAorICAgICAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzIiwgLy8gMTIzIEJ5dGUKKyAgICBdOwor
ICAgIHZhciByZXN1bHRzID0gWworICAgICAgICBmYWxzZSwKKyAgICAgICAgZmFsc2UsCisgICAg
ICAgIHRydWUsCisgICAgXTsKKyAgICB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAg
dmFyIGk7CisgICAgc2V0X2RlZmF1bHRzKHdzKTsKKyAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24o
ZSkKKyAgICB7CisgICAgICAgIGRlYnVnKCJvbmNsb3NlKCkuIik7CisgICAgICAgIGlmICghcmVz
dWx0c1tpXSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoInVuZXhwZWN0ZWQgb25jbG9zZSgpIG9u
IHJlYXNvbiAiICsgcmVhc29uc1tpXSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY2xv
c2VFdmVudCA9IGU7CisgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImFi
bm9ybWFsQ2xvc3VyZSIpOworICAgICAgICB9CisgICAgfTsKKyAgICBmb3IgKGkgPSAwOyBpIDwg
cmVhc29ucy5sZW5ndGg7IGkrKykgeworICAgICAgICBkZWJ1ZygiY2xvc2Ugd2l0aCByZWFzb246
ICIgKyByZWFzb25zW2ldKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKG5v
cm1hbENsb3N1cmUsIHJlYXNvbnNbaV0pOworICAgICAgICAgICAgZGVidWcoInJlYXNvbiAiICsg
cmVhc29uc1tpXSArICIgZGlkbid0IHJhaXNlIGV4Y2VwdGlvbi4iKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IHJlc3VsdHNbaV07CisgICAgICAgICAgICBzaG91bGRCZVRydWUoInJlc3VsdCIpOwor
ICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBkZWJ1ZygicmVhc29uICIgKyByZWFz
b25zW2ldICsgIiBtdXN0IGNhdXNlICIgKyBzeW50YXhFcnIpOworICAgICAgICAgICAgcmVzdWx0
ID0gcmVzdWx0c1tpXTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAg
ICAgICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlRmFsc2UoInJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4
Y2VwdGlvbk5hbWUiLCAic3ludGF4RXJyIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0
aW9uIHJ1bl9jb2RlX2FuZF9yZWFzb24oKQoreworICAgIHZhciBjb2RlcyA9IFsKKyAgICAgICAg
MTAwMCwKKyAgICAgICAgMzAwMCwKKyAgICAgICAgNDAwMCwKKyAgICAgICAgNDk5OQorICAgIF07
CisgICAgdmFyIHJlYXNvbnMgPSBbCisgICAgICAgICJPSywgQnllISIsCisgICAgICAgICIzMDAw
IiwKKyAgICAgICAgImNvZGUgaXMgNDAwMCIsCisgICAgICAgICJcdTAwYTkgR29vZ2xlIgorICAg
IF07CisgICAgKGZ1bmN0aW9uIHRlc3QodGVzdElkKSB7CisgICAgICAgIHZhciB3cyA9IG5ldyBX
ZWJTb2NrZXQodXJsKTsKKyAgICAgICAgc2V0X2RlZmF1bHRzKHdzKTsKKyAgICAgICAgd3Mub25v
cGVuID0gZnVuY3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB3cy5jbG9zZShjb2Rlc1t0
ZXN0SWRdLCByZWFzb25zW3Rlc3RJZF0pOworICAgICAgICB9OworICAgICAgICB3cy5vbmNsb3Nl
ID0gZnVuY3Rpb24oZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7Cisg
ICAgICAgICAgICBjb2RlID0gY29kZXNbdGVzdElkXTsKKyAgICAgICAgICAgIHJlYXNvbiA9IHJl
YXNvbnNbdGVzdElkXTsKKyAgICAgICAgICAgIGRlYnVnKCJjbG9zZSBjb2RlIGFuZCByZWFzb24g
bXVzdCBiZSIpOworICAgICAgICAgICAgZGVidWcoIiAgY29kZSAgOiAiICsgY29kZSk7CisgICAg
ICAgICAgICBkZWJ1ZygiICByZWFzb246ICIgKyByZWFzb24pOworICAgICAgICAgICAgc2hvdWxk
QmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY2xv
c2VFdmVudC5jb2RlIiwgImNvZGUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50
LnJlYXNvbiIsICJyZWFzb24iKTsKKyAgICAgICAgICAgIGlmICgrK3Rlc3RJZCAhPSBjb2Rlcy5s
ZW5ndGgpCisgICAgICAgICAgICAgICAgdGVzdCh0ZXN0SWQpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJET05FIik7CisgICAgICAgIH07CisgICAgfSko
MCk7Cit9CisKK3J1bl9pbnZhbGlkX2NvZGVfdGVzdCgpOworcnVuX2ludmFsaWRfc3RyaW5nX3Rl
c3QoKTsKK3J1bl90b29fbG9uZ191dGY4KCk7CitydW5fY29kZV9hbmRfcmVhc29uKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggODA1MjQ0NzRlOGQyM2IxYTAyZjljNzExMzE3Y2NiMzNhN2JiMjYyYy4uNWYwZjM1
OTZiZTUyZTkzMzgyNjExZjQ1MmE1Yzg1NGU4Zjc1NjQ4MSAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM3IEBACisyMDExLTA4LTI1ICBUYWthc2hpIFRveW9zaGltYSAgPHRveW9zaGltQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbV2ViU29ja2V0XSBXZWJTb2NrZXQ6OmNsb3NlIGRpZG4ndCBoYW5k
bGUgY29kZSBhbmQgcmVhc29uIGFyZ3VtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvY2xvc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS93b3JrZXJzL2Nsb3NlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViU29j
a2V0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViU29ja2V0OjpjbG9zZSk6Cisg
ICAgICAgIEFkZCBjdXN0b20gYnJpZGdlIGZvciBXZWJTb2NrZXQ6OmNsb3NlKCkuCisgICAgICAg
ICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdl
YnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y2xv
c2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgICogd2Vic29j
a2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjbG9zZSk6CisgICAg
ICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzIGhhbmRsaW5nLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAg
U2VuZCBhIGNsb3NlIGZyYW1lIHdpdGhvdXQgY29kZSBhbmQgcmVhc29uIG9uIHNlcnZlciBpbml0
aWF0ZWQgY2xvc2luZyBoYW5kc2hha2VzLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OnByb2Nlc3NGcmFtZUhpeGllNzYpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpQZWVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3NlKToKKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAg
ICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzIGhhbmRsaW5nLgorCiAyMDExLTA4LTIx
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXgg
J21ha2UgZGlzdCcgZm9yIFdlYktpdEdUSysuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKaW5kZXggYWY1ZGFjYTU1NWUwODllYzEyMjU4YzYx
NzIyYzYwN2NkZjMwMTZjYS4uNjczZmFiNzY0ZTYzNDU2ZTdiMTM5NTc5NTg5NGFjZjBlYjQwZmQ1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9t
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQXBw
bGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM4LDcg
KzM4LDkgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgi
CiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgog
I2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTg1LDYg
Kzg3LDI5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNXZWJTb2NrZXRDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0SlNXZWJTb2NrZXQoRXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0
KCksIFdlYlNvY2tldCwgd2ViU29ja2V0LmdldCgpKSk7CiB9CiAKK0pTVmFsdWUgSlNXZWJTb2Nr
ZXQ6OmNsb3NlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBXZWJTb2NrZXQqIHdlYlNvY2tldCA9
IHN0YXRpY19jYXN0PFdlYlNvY2tldCo+KGltcGwoKSk7CisgICAgaW50IGFyZ3VtZW50Q291bnQg
PSBzdGF0aWNfY2FzdDxpbnQ+KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSk7CisgICAgaW50IGNvZGUg
PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZDsKKyAgICBTdHJp
bmcgcmVhc29uID0gIiI7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPj0gMSkgeworICAgICAgICAv
LyBbQ2xhbXBdIGluIG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IGNvZGUuCisgICAgICAgIEpTVmFs
dWUgdiA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgICAgICBkb3VibGUgeCA9IHYudG9OdW1iZXIo
ZXhlYyk7CisgICAgICAgIGlmICghaXNuYW4oeCkpCisgICAgICAgICAgICB4ID0gY2xhbXBUbyh4
LCAwLCAweGZmZmYpOworICAgICAgICBjb2RlID0gY2xhbXBUb0ludGVnZXIoeCk7CisgICAgICAg
IGlmIChhcmd1bWVudENvdW50ID49IDIpCisgICAgICAgICAgICAvLyBpbiBvcHRpb25hbCBET01T
dHJpbmcgcmVhc29uCisgICAgICAgICAgICByZWFzb24gPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+
YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYykpOworICAgIH0KKyAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKKyAgICB3ZWJTb2NrZXQtPmNsb3NlKGNvZGUsIHJlYXNvbiwgZWMpOworICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggY2Q5Y2UyNTJh
NGNkNWJkNjdhNzM5Y2ZjNTMzMjcwOGUwZWQ0OGNmZS4uMDlmODFiNTA3YTEwMDFkNmU3ZWE1OTE3
MjExNmVhOWU5ZmY3YmQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSA9IDA7IC8vIFdpbGwgYmUgYXZhaWxh
YmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2VkLgogICAgIHZpcnR1YWwg
Ym9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xv
c2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbikgPSAwOwogICAgIC8vIExvZyB0aGUgcmVhc29uIHRleHQgYW5kIGNsb3NlIHRoZSBj
b25uZWN0aW9uLiBXaWxsIGNhbGwgZGlkQ2xvc2UoKS4KICAgICB2aXJ0dWFsIHZvaWQgZmFpbChj
b25zdCBTdHJpbmcmIHJlYXNvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkg
PSAwOyAvLyBXaWxsIHN1cHByZXNzIGRpZENsb3NlKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKaW5kZXggZjE3OTdmMDg0YWNmNDAxOGMyZDM2NDU3N2ExOGIyOGU0ODZk
ZmY2ZC4uMTE4OTc1OTc2ZjVhYzgyNDYzMmY2OTk3NDQwNjM4MjJjN2Y5MjRkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNTgsOSArMjU4LDIzIEBAIGJvb2wg
V2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKIH0KIAotdm9pZCBXZWJTb2Nr
ZXQ6OmNsb3NlKCkKK3ZvaWQgV2ViU29ja2V0OjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5n
JiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0ICVwIGNsb3NlIiwgdGhpcyk7CisgICAgaWYgKGNvZGUgPT0gV2ViU29ja2V0Q2hhbm5lbDo6
Q2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQpCisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0ICVwIGNsb3NlIHdpdGhvdXQgY29kZSBhbmQgcmVhc29uIiwgdGhpcyk7CisgICAgZWxzZSB7
CisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIHdpdGggY29kZSA9ICVk
LCByZWFzb24gPSAlcyIsIHRoaXMsIGNvZGUsIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgaWYgKCEoY29kZSA9PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5vcm1hbENs
b3N1cmUgfHwgMzAwMCA8PSBjb2RlICYmIGNvZGUgPD0gNDk5OSkpIHsKKyAgICAgICAgICAgIGVj
ID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIC8vIEZJWE1FOiBpZiByZWFzb24gY29udGFpbnMgYW55IHVucGFpcmVkIHN1cnJvZ2F0
ZXMsIHJhaXNlIFNZTlRBWF9FUlIuCisgICAgICAgIGlmIChyZWFzb24udXRmOCgpLmxlbmd0aCgp
ID4gMTIzKSB7CisgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TSU5HIHx8IG1f
c3RhdGUgPT0gQ0xPU0VEKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1fc3RhdGUgPT0gQ09O
TkVDVElORykgewpAQCAtMjczLDcgKzI4Nyw3IEBAIHZvaWQgV2ViU29ja2V0OjpjbG9zZSgpCiAg
ICAgLy8gZGlkQ2xvc2Ugbm90aWZpY2F0aW9uIG1heSBiZSBhbHJlYWR5IHF1ZXVlZCwgd2hpY2gg
d2Ugd2lsbCBpbmFkdmVydGVudGx5IHByb2Nlc3Mgd2hpbGUgd2FpdGluZyBmb3IgYnVmZmVyZWRB
bW91bnQoKSB0byByZXR1cm4uCiAgICAgLy8gSW4gdGhpcyBjYXNlIG1fY2hhbm5lbCB3aWxsIGJl
IHNldCB0byBudWxsIGR1cmluZyBkaWRDbG9zZSgpIGNhbGwsIHRodXMgd2UgbmVlZCB0byB0ZXN0
IHZhbGlkbmVzcyBvZiBtX2NoYW5uZWwgaGVyZS4KICAgICBpZiAobV9jaGFubmVsKQotICAgICAg
ICBtX2NoYW5uZWwtPmNsb3NlKCk7CisgICAgICAgIG1fY2hhbm5lbC0+Y2xvc2UoY29kZSwgcmVh
c29uKTsKIH0KIAogY29uc3QgS1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggMjcxMjU0MWZhOWZmMmYzZTc5YjQ4NWFkOTM3
N2E0MTg2NTEyYjJiNS4uODQ5ZGI1MDc2OGFmN2EzM2YyYTBiNTkwNzFiMDFkYzE5ZTg4NGQ3YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTY4LDcgKzY4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgICAgICB2b2lkIGNsb3NlKCk7CisgICAgICAgIHZv
aWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBFeGNlcHRpb25Db2RlJik7
CiAKICAgICAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CiAgICAgICAgIFN0YXRlIHJlYWR5
U3RhdGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAppbmRl
eCA4MWQ3NTYzZjA3YzkxNDI3NDVmN2YyOWIxY2UzMjU1ZjU2YTZlY2UyLi5jYWQzYTZiZmExZTYy
NDkxNDYxOGYwM2RhZjRkNDRkMTU3YTEzZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaWRsCkBAIC02NCw3ICs2NCw3IEBAIG1vZHVsZSB3ZWJzb2NrZXRzIHsKICAgICAg
ICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICBbUmVxdWlyZXNB
bGxBcmd1bWVudHNdIGJvb2xlYW4gc2VuZChpbiBET01TdHJpbmcgZGF0YSkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7Ci0gICAgICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBj
bG9zZShpbiBbT3B0aW9uYWxdIHVuc2lnbmVkIHNob3J0IGNvZGUsIGluIFtPcHRpb25hbF0gRE9N
U3RyaW5nIHJlYXNvbikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgLy8gRXZlbnRU
YXJnZXQgaW50ZXJmYWNlCiAgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJp
bmcgdHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IGVlODY4ZmZiMzE2YmJjNzY3YmJmYTczM2IxMDIyNDQ1NGM0MDY1ODYuLjgwMjNh
MGYyMDNkMTBiMGQ1NTFkNDY5YjE5MjIxOTExZGUwYjkxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTYwLDEzICsxNjAsMTMgQEAg
dW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1faGFuZGxlLT5idWZmZXJlZEFtb3VudCgpOwogfQogCi12b2lkIFdlYlNvY2tl
dENoYW5uZWw6OmNsb3NlKCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoaW50IGNvZGUs
IGNvbnN0IFN0cmluZyYgcmVhc29uKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCBjbG9zZSIsIHRoaXMpOwogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwogICAgIGlm
ICghbV9oYW5kbGUpCiAgICAgICAgIHJldHVybjsKLSAgICBzdGFydENsb3NpbmdIYW5kc2hha2Uo
KTsKKyAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoY29kZSwgcmVhc29uKTsKICAgICBpZiAobV9j
bG9zaW5nICYmICFtX2Nsb3NpbmdUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2Nsb3NpbmdU
aW1lci5zdGFydE9uZVNob3QoMiAqIFRDUE1heGltdW1TZWdtZW50TGlmZXRpbWUpOwogfQpAQCAt
NDExLDcgKzQxMSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZChU
aW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGltZXIpCiAgICAgICAgIGRpZENsb3NlU29ja2V0U3Ry
ZWFtKG1faGFuZGxlLmdldCgpKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzdGFydENs
b3NpbmdIYW5kc2hha2UoKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5k
c2hha2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewogICAgIExPRyhOZXR3b3Jr
LCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zaW5nICVkICVkIiwgdGhpcywgbV9jbG9zaW5nLCBt
X3JlY2VpdmVkQ2xvc2luZ0hhbmRzaGFrZSk7CiAgICAgaWYgKG1fY2xvc2luZykKQEAgLTQyMyw5
ICs0MjMsMTcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2Uo
KQogICAgICAgICBidWYuYXBwZW5kKCdceGZmJyk7CiAgICAgICAgIGJ1Zi5hcHBlbmQoJ1wwJyk7
CiAgICAgICAgIHNlbnRTdWNjZXNzZnVsbHkgPSBtX2hhbmRsZS0+c2VuZChidWYuZGF0YSgpLCBi
dWYuc2l6ZSgpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgc2VudFN1Y2Nlc3NmdWxseSA9IHNlbmRG
cmFtZShPcENvZGVDbG9zZSwgIiIsIDApOyAvLyBGSVhNRTogU2VuZCBzdGF0dXMgY29kZSBhbmQg
cmVhc29uIG1lc3NhZ2UuCi0KKyAgICB9IGVsc2UgeworICAgICAgICBWZWN0b3I8Y2hhcj4gYnVm
OworICAgICAgICBpZiAoIW1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlKSB7CisgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIGhpZ2hCeXRlID0gY29kZSA+PiA4OworICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciBsb3dCeXRlID0gY29kZTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoc3RhdGljX2Nh
c3Q8Y2hhcj4oaGlnaEJ5dGUpKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoc3RhdGljX2Nhc3Q8
Y2hhcj4obG93Qnl0ZSkpOworICAgICAgICAgICAgYnVmLmFwcGVuZChyZWFzb24udXRmOCgpLmRh
dGEoKSwgcmVhc29uLnV0ZjgoKS5sZW5ndGgoKSk7CisgICAgICAgIH0KKyAgICAgICAgc2VudFN1
Y2Nlc3NmdWxseSA9IHNlbmRGcmFtZShPcENvZGVDbG9zZSwgYnVmLmRhdGEoKSwgYnVmLnNpemUo
KSk7CisgICAgfQogICAgIGlmICghc2VudFN1Y2Nlc3NmdWxseSkgewogICAgICAgICBtX2hhbmRs
ZS0+ZGlzY29ubmVjdCgpOwogICAgICAgICByZXR1cm47CkBAIC02MzYsNyArNjQ0LDcgQEAgYm9v
bCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogICAgICAgICAgICAgbV9jbG9zZUV2
ZW50UmVhc29uID0gIiI7CiAgICAgICAgIHNraXBCdWZmZXIoZnJhbWUuZnJhbWVFbmQgLSBtX2J1
ZmZlcik7CiAgICAgICAgIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlID0gdHJ1ZTsKLSAgICAg
ICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CisgICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFr
ZShtX2Nsb3NlRXZlbnRDb2RlLCBtX2Nsb3NlRXZlbnRSZWFzb24pOwogICAgICAgICBpZiAobV9j
bG9zaW5nKQogICAgICAgICAgICAgbV9oYW5kbGUtPmNsb3NlKCk7IC8vIENsb3NlIGFmdGVyIHNl
bmRpbmcgYSBjbG9zZSBmcmFtZS4KICAgICAgICAgYnJlYWs7CkBAIC03MTgsNyArNzI2LDcgQEAg
Ym9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWVIaXhpZTc2KCkKICAgICAgICAgICAg
IHNraXBCdWZmZXIobmV4dEZyYW1lIC0gbV9idWZmZXIpOwogICAgICAgICAgICAgaWYgKGZyYW1l
Qnl0ZSA9PSAweGZmICYmICFsZW5ndGgpIHsKICAgICAgICAgICAgICAgICBtX3JlY2VpdmVkQ2xv
c2luZ0hhbmRzaGFrZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc3RhcnRDbG9zaW5nSGFuZHNo
YWtlKCk7CisgICAgICAgICAgICAgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKDAsICIiKTsKICAg
ICAgICAgICAgICAgICBpZiAobV9jbG9zaW5nKQogICAgICAgICAgICAgICAgICAgICBtX2hhbmRs
ZS0+Y2xvc2UoKTsgLy8gY2xvc2UgYWZ0ZXIgc2VuZGluZyBGRiAwMC4KICAgICAgICAgICAgIH0g
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRl
eCAzODg0ZmNmNTNkNWNhNDIwZjI2ODQ3NTlmYmI5ZTU0NTRjYzExNGI4Li4xMGRhNjRiMDkwNDlj
NmE2NmIyMzVmYTIzN2M3NzdhZDdkMWY5NjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNTksNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCk7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZpcnR1YWwgdW5z
aWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2UoKTsgLy8gU3RhcnQgY2xvc2luZyBoYW5kc2hha2UuCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOyAvLyBTdGFydCBjbG9zaW5n
IGhhbmRzaGFrZS4KICAgICAgICAgdmlydHVhbCB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFz
b24pOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpOwogCkBAIC03NSw2ICs3NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJik7CiAKICAgICAgICAgZW51bSBDbG9zZUV2ZW50Q29kZSB7CisgICAg
ICAgICAgICBDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCA9IC0xLAogICAgICAgICAgICAgQ2xv
c2VFdmVudENvZGVOb3JtYWxDbG9zdXJlID0gMTAwMCwKICAgICAgICAgICAgIENsb3NlRXZlbnRD
b2RlR29pbmdBd2F5ID0gMTAwMSwKICAgICAgICAgICAgIENsb3NlRXZlbnRDb2RlUHJvdG9jb2xF
cnJvciA9IDEwMDIsCkBAIC05OSw3ICsxMDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVuKTsKICAgICAgICAgYm9vbCBwcm9jZXNzQnVm
ZmVyKCk7CiAgICAgICAgIHZvaWQgcmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFu
bmVsPiogdGltZXIpOwotICAgICAgICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOworICAg
ICAgICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb24pOwogICAgICAgICB2b2lkIGNsb3NpbmdUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENo
YW5uZWw+Kik7CiAKICAgICAgICAgLy8gSHliaS0xMCBvcGNvZGVzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcAppbmRleCA5ZGFiODEyZmM4MDE1ZjM4OWY3NDA4ZDBkZWE3Y2JlY2Y5NjI4NGYz
Li44ZmU5NDU5MTcyZmZjZWYzMDRjNzk1MTNkMWY5YTk4ZDBhMzA5NTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmNwcApAQCAtOTQsMTAgKzk0LDEwIEBAIHVuc2lnbmVkIGxvbmcgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKICAgICBy
ZXR1cm4gbV9icmlkZ2UtPmJ1ZmZlcmVkQW1vdW50KCk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OmNsb3NlKCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAg
ICBpZiAobV9icmlkZ2UpCi0gICAgICAgIG1fYnJpZGdlLT5jbG9zZSgpOworICAgICAgICBtX2Jy
aWRnZS0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKQEAgLTE4NywxMiArMTg3
LDEyIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmJ1ZmZl
cmVkQW1vdW50KCkKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29u
dGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRHZXRCdWZmZXJlZEFtb3Vu
dCwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudCksIG1fdGFza01vZGUpOwog
fQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZSgp
Cit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZShpbnQg
Y29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5jbG9zZSgpOworICAgIG1fbWFpbldlYlNvY2tldENo
YW5uZWwtPmNsb3NlKGNvZGUsIHJlYXNvbik7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OlBlZXI6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCkBAIC0zODMs
MTkgKzM4MywxOSBAQCB1bnNpZ25lZCBsb25nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6OmJ1ZmZlcmVkQW1vdW50KCkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIpCit2b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGVlciogcGVlciwgaW50IGNvZGUsIGNvbnN0IFN0cmluZyZyZWFzb24pCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
IGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHBlZXIpOwogCi0gICAgcGVlci0+
Y2xvc2UoKTsKKyAgICBwZWVyLT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCi12b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3NlKCkKK3ZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0
IFN0cmluZyYgcmVhc29uKQogewogICAgIEFTU0VSVChtX3BlZXIpOwotICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
bV9wZWVyKSkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxs
YmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xv
c2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSwgY29kZSwgcmVhc29uKSk7CiB9CiAK
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRGYWlsKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IFN0cmluZyYg
cmVhc29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDBkYzM4YzMyZDdmMjc5ZTZhMjBh
MGM3ZDQzMzZjODhlZjQxYjI2NzcuLjQzYTIxNmY1YTMxYmYxMDBlNmM3ZDE2M2JlYWU0NzgzYjAz
ZDZiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCk7CiAgICAgdmlydHVhbCBib29sIHNl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVm
ZmVyZWRBbW91bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICB2aXJ0
dWFsIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2Nvbm5lY3QoKTsgLy8gV2lsbCBzdXBwcmVzcyBkaWRDbG9zZSgpLgogICAgIHZpcnR1YWwgdm9p
ZCBzdXNwZW5kKCk7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY29u
bmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIHZvaWQg
c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50
KCk7Ci0gICAgICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwg
Y29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgICAgICB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiBy
ZWFzb24pOwogICAgICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKICAgICAgICAgdm9pZCBzdXNwZW5k
KCk7CkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBjb25uZWN0KGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICAgICAgYm9vbCBzZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91
bnQoKTsKLSAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lkIGNsb3NlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcm
IHJlYXNvbik7CiAgICAgICAgIHZvaWQgZGlzY29ubmVjdCgpOwogICAgICAgICB2b2lkIHN1c3Bl
bmQoKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1haW5U
aHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5k
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
ICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBlZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2xvc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2xv
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBpbnQgY29kZSwgY29uc3QgU3RyaW5n
JiByZWFzb24pOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRGYWlsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQZWVyKiwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHN0YXRpYyB2b2lk
IG1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7CiAgICAg
c3RhdGljIHZvaWQgbWFpblRocmVhZFN1c3BlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBl
ZXIqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105176</attachid>
            <date>2011-08-25 06:56:33 -0700</date>
            <delta_ts>2011-08-25 07:14:51 -0700</delta_ts>
            <desc>Patch (include pywebsocket update patch)</desc>
            <filename>bug-66925-20110825225632.patch</filename>
            <type>text/plain</type>
            <size>46526</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0OTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMjk3MjIxOTYyMWNjYWI4NTFlODU2
OTk0NDVjNWVjMTMzMGY2NWZhLi42NjgzY2UzNTM0NzNhOTM4ZTJlZGU1OTkxOTJjNmE1NzBlMWUx
YmYwIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMjUgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIFdlYlNvY2tl
dDo6Y2xvc2UgZGlkbid0IGhhbmRsZSBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2Ut
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qczogQWRkZWQuCisg
ICAgICAgIChwb3N0UmVzdWx0KToKKyAgICAgICAgKHRlc3RGYWlsZWQpOgorICAgICAgICAoZGVi
dWcpOgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVUcnVlKToKKyAgICAg
ICAgKHNob3VsZEJlRmFsc2UpOgorICAgICAgICAob25vcGVuKToKKyAgICAgICAgKG9uZXJyb3Ip
OgorICAgICAgICAob25jbG9zZSk6CisgICAgICAgIChvbm1lc3NhZ2UpOgorICAgICAgICAoc2V0
X2RlZmF1bHRzKToKKyAgICAgICAgKHJ1bl9jb2RlX3Rlc3QuZWxzZS53cy5vbmNsb3NlKToKKyAg
ICAgICAgKHJ1bl9jb2RlX3Rlc3QpOgorICAgICAgICAocnVuX2ludmFsaWRfc3RyaW5nX3Rlc3Qp
OgorICAgICAgICAocnVuX3JlYXNvbl90ZXN0LmVsc2Uud3Mub25jbG9zZSk6CisgICAgICAgIChy
dW5fcmVhc29uX3Rlc3QpOgorICAgICAgICAocnVuX2NvZGVfYW5kX3JlYXNvbl90ZXN0Lik6Cisg
ICAgICAgIChydW5fY29kZV9hbmRfcmVhc29uX3Rlc3QpOgorCiAyMDExLTA4LTIxICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgcmVzdWx0cyBmb3IgbW9y
ZSB0ZXN0cyBhZmZlY3RlZCBieSB0aGUgYWRkaXRpb24gb2YgdGhlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwZDkzNGI2ZDU4ZjNkODAwNDdjNDllNTQ5MjllMWU1ODE1
YjZkZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2Nsb3NlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwOCBAQAorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDA6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0
aW9uIGlzIGVzdGFibGlzaGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFdlYlNvY2tldCBp
cyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgorVmVyaWZ5IFdl
YlNvY2tldDo6Y2xvc2UgYmVoYXZpb3JzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K2ludmFsaWQgY29kZSB0ZXN0OiAwCitjb2RlIDk5OSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNT
X0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0
cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2Rl
IHRlc3Q6IDEKK2NvZGUgMTAwMSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBl
eGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4
Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDIKK2Nv
ZGUgMjk5OSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90
byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUg
aXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDMKK2NvZGUgNTAwMCBtdXN0
IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhj
ZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFj
Y2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDQKK2NvZGUgNjY1MzYgbXVzdCBjYXVzZSBJTlZB
TElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90
b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2lu
dmFsaWQgY29kZSB0ZXN0OiA1Citjb2RlIDQyOTQ5NjgyOTYgbXVzdCBjYXVzZSBJTlZBTElEX0FD
Q0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUg
aXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQg
Y29kZSB0ZXN0OiA2Citjb2RlIDI5OTkuOSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgor
UEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQ
QVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6
IDcKK2NvZGUgTmFOIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlv
blByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9u
TmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogOAorY29kZSAwIG11
c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01F
eGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlk
QWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogOQorY29kZSAxMDAgbXVzdCBjYXVzZSBJTlZB
TElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90
b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2lu
dmFsaWQgY29kZSB0ZXN0OiAxMAorY29kZSBJbmZpbml0eSBtdXN0IGNhdXNlIElOVkFMSURfQUND
RVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBp
cyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBj
b2RlIHRlc3Q6IDExCitjb2RlIC1JbmZpbml0eSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VS
UgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVl
CitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRl
c3Q6IDEyCitjb2RlIE5hTiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNl
cHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorcnVuX2NvZGVfdGVzdDogb25jbG9zZSgpLgor
UEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgYWJub3JtYWxDbG9zdXJlCitza2lwIGludmFsaWQgc3Ry
aW5nIHRlc3QKK3JlYXNvbiB0ZXN0OiAwCisgIHdpdGggaW52YWxpZCByZWFzb246IDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQKK3JlYXNvbiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0IG11c3QgY2F1c2UgU1lOVEFYX0VSUgorUEFTUyByZXN1bHQg
aXMgZmFsc2UKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUg
aXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIHN5bnRheEVycgorcmVhc29uIHRlc3Q6IDEK
KyAgd2l0aCBpbnZhbGlkIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTLCqQorcmVhc29uIDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEywqkgbXVz
dCBjYXVzZSBTWU5UQVhfRVJSCitQQVNTIHJlc3VsdCBpcyBmYWxzZQorUEFTUyBleGNlcHRpb25Q
cm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5h
bWUgaXMgc3ludGF4RXJyCityZWFzb24gdGVzdDogMgorcnVuX3JlYXNvbl90ZXN0OiBvbmNsb3Nl
KCkuCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBhYm5vcm1hbENsb3N1cmUKK2NvZGUgYW5kIHJl
YXNvbiB0ZXN0OiAwCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDEw
MDAKKyAgcmVhc29uOiBPSywgQnllIQorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUK
K1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgY2xvc2VFdmVudC5yZWFzb24gaXMg
cmVhc29uCitjb2RlIGFuZCByZWFzb24gdGVzdDogMQorY2xvc2UgY29kZSBhbmQgcmVhc29uIG11
c3QgYmUKKyAgY29kZSAgOiAzMDAwCisgIHJlYXNvbjogMzAwMAorUEFTUyBjbG9zZUV2ZW50Lndh
c0NsZWFuIGlzIHRydWUKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgY2xvc2VF
dmVudC5yZWFzb24gaXMgcmVhc29uCitjb2RlIGFuZCByZWFzb24gdGVzdDogMgorY2xvc2UgY29k
ZSBhbmQgcmVhc29uIG11c3QgYmUKKyAgY29kZSAgOiA0MDAwCisgIHJlYXNvbjogY29kZSBpcyA0
MDAwCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNv
ZGUgaXMgY29kZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK2NvZGUgYW5kIHJl
YXNvbiB0ZXN0OiAzCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDQ5
OTkKKyAgcmVhc29uOiDCqSBHb29nbGUKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVl
CitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIGNsb3NlRXZlbnQucmVhc29uIGlz
IHJlYXNvbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvY2xvc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvY2xvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWE1NTExMGViMmIzNmFmZTI1MDg3MGJiNTU4MDJh
OWIzOGRmMzc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sCkBAIC0wLDAgKzEsMTkzIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgV2ViU29ja2V0Ojpj
bG9zZSBiZWhhdmlvcnMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwg
MCk7CisKK3ZhciBleGNlcHRpb25OYW1lOwordmFyIGV4Y2VwdGlvblByb3RvOwordmFyIGNsb3Nl
RXZlbnQ7Cit2YXIgY29kZTsKK3ZhciByZWFzb247Cit2YXIgcmVzdWx0OwordmFyIGludmFsaWRB
Y2Nlc3NFcnIgPSAiSU5WQUxJRF9BQ0NFU1NfRVJSIjsKK3ZhciBzeW50YXhFcnIgPSAiU1lOVEFY
X0VSUiI7Cit2YXIgbm9ybWFsQ2xvc3VyZSA9IDEwMDA7Cit2YXIgYWJub3JtYWxDbG9zdXJlID0g
MTAwNjsKK3ZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHli
aS9jbG9zZSI7Cit2YXIgd3M7Cit2YXIgdGVzdElkOworCit2YXIgY29kZVRlc3RDb2RlcyA9IFsK
KyAgICA5OTksIDEwMDEsIDI5OTksIDUwMDAsIDY1NTM2ICsgMTAwMCwgMHgxMDAwMDAwMDAgKyAx
MDAwLCAyOTk5LjksIE5hTiwgIjAiLCAiMTAwIiwgMS8wLCAtMS8wLCAwLzAsCisgICAgMTAwMC4w
CitdOworCit2YXIgcmVhc29uVGVzdFJlYXNvbnMgPSBbCisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQiLCAvLyAx
MjQgQnl0ZQorICAgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMlx1MDBhOSIsIC8vIGxlbmd0aCBpcyAxMjMsIGJ1dCAxMjQg
Qnl0ZSBpbiBVVEYtOAorICAgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjMiLCAvLyAxMjMgQnl0ZQorXTsKKwordmFyIHJl
YXNvblRlc3RSZXN1bHRzID0gWworICAgIGZhbHNlLAorICAgIGZhbHNlLAorICAgIHRydWUsCitd
OworCit2YXIgb25vcGVuID0gZnVuY3Rpb24gKCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJvbm9wZW4o
KSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFyIG9uZXJyb3IgPSBmdW5jdGlvbiAoKQoreworICAg
IHRlc3RGYWlsZWQoIm9uZXJyb3IoKSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFyIG9uY2xvc2Ug
PSBmdW5jdGlvbiAoKQoreworICAgIHRlc3RGYWlsZWQoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIp
OworfTsKKwordmFyIG9ubWVzc2FnZSA9IGZ1bmN0aW9uICgpCit7CisgICAgdGVzdEZhaWxlZCgi
b25tZXNzYWdlKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3ZhciBzZXRfZGVmYXVsdHMgPSBmdW5j
dGlvbiAod3MpCit7CisgICAgd3Mub25vcGVuID0gb25vcGVuOworICAgIHdzLm9uZXJyb3IgPSBv
bmVycm9yOworICAgIHdzLm9uY2xvc2UgPSBvbmNsb3NlOworICAgIHdzLm9ubWVzc2FnZSA9IG9u
bWVzc2FnZTsKK30KKwordmFyIHJ1bl9jb2RlX3Rlc3QgPSBmdW5jdGlvbiAoKQoreworICAgIHdz
ID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAgIHNldF9kZWZhdWx0cyh3cyk7CisgICAgZm9yICh2
YXIgaWQgPSAwOyBpZCA8IGNvZGVUZXN0Q29kZXMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGlm
IChjb2RlVGVzdENvZGVzW2lkXSAhPSBub3JtYWxDbG9zdXJlKSB7CisgICAgICAgICAgICBkZWJ1
ZygiaW52YWxpZCBjb2RlIHRlc3Q6ICIgKyBpZCk7CisgICAgICAgICAgICB3cy5vbmNsb3NlID0g
b25jbG9zZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5j
dGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygicnVuX2NvZGVf
dGVzdDogb25jbG9zZSgpLiIpOworICAgICAgICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LmNvZGUiLCAiYWJub3JtYWxDbG9zdXJl
Iik7CisgICAgICAgICAgICAgICAgaWYgKGNsb3NlRXZlbnQuY29kZSA9PSBhYm5vcm1hbENsb3N1
cmUpCisgICAgICAgICAgICAgICAgICAgIHJ1bl9pbnZhbGlkX3N0cmluZ190ZXN0KCk7CisgICAg
ICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB3cy5jbG9z
ZShjb2RlVGVzdENvZGVzW2lkXSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
IGRlYnVnKCJjb2RlICIgKyBjb2RlVGVzdENvZGVzW2lkXSArICIgbXVzdCBjYXVzZSAiICsgaW52
YWxpZEFjY2Vzc0Vycik7CisgICAgICAgICAgICBleGNlcHRpb25OYW1lID0gZS5uYW1lOworICAg
ICAgICAgICAgZXhjZXB0aW9uUHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CisgICAg
ICAgICAgICBzaG91bGRCZVRydWUoImV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJv
dG90eXBlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiZXhjZXB0aW9uTmFtZSIsICJpbnZhbGlk
QWNjZXNzRXJyIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZhciBydW5faW52YWxpZF9zdHJp
bmdfdGVzdCA9IGZ1bmN0aW9uICgpCit7CisgICAgLy8gVE9ETyh0b3lvc2hpbSk6IHVucGFpcmVk
IHN1cnJvZ2F0ZXMgdGhyb3cgU1lOVEFYX0VSUgorICAgIGRlYnVnKCJza2lwIGludmFsaWQgc3Ry
aW5nIHRlc3QiKTsKKyAgICBydW5fcmVhc29uX3Rlc3QoKTsKK30KKwordmFyIHJ1bl9yZWFzb25f
dGVzdCA9IGZ1bmN0aW9uIChuZXh0X3Rlc3QpCit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVy
bCk7CisgICAgc2V0X2RlZmF1bHRzKHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgcmVh
c29uVGVzdFJlYXNvbnMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGRlYnVnKCJyZWFzb24gdGVz
dDogIiArIGlkKTsKKyAgICAgICAgaWYgKCFyZWFzb25UZXN0UmVzdWx0c1tpZF0pIHsKKyAgICAg
ICAgICAgIGRlYnVnKCIgIHdpdGggaW52YWxpZCByZWFzb246ICIgKyByZWFzb25UZXN0UmVhc29u
c1tpZF0pOworICAgICAgICAgICAgd3Mub25jbG9zZSA9IG9uY2xvc2U7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZGVidWcoInJ1bl9yZWFzb25fdGVzdDogb25jbG9zZSgpLiIpOwor
ICAgICAgICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJjbG9zZUV2ZW50LmNvZGUiLCAiYWJub3JtYWxDbG9zdXJlIik7CisgICAgICAgICAgICAgICAg
aWYgKGNsb3NlRXZlbnQuY29kZSA9PSBhYm5vcm1hbENsb3N1cmUpCisgICAgICAgICAgICAgICAg
ICAgIHJ1bl9jb2RlX2FuZF9yZWFzb25fdGVzdCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAg
fQorICAgICAgICB0cnkgeworICAgICAgICAgICAgd3MuY2xvc2Uobm9ybWFsQ2xvc3VyZSwgcmVh
c29uVGVzdFJlYXNvbnNbaWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAg
ZGVidWcoInJlYXNvbiAiICsgcmVhc29uVGVzdFJlYXNvbnNbaWRdICsgIiBtdXN0IGNhdXNlICIg
KyBzeW50YXhFcnIpOworICAgICAgICAgICAgcmVzdWx0ID0gcmVhc29uVGVzdFJlc3VsdHNbaWRd
OworICAgICAgICAgICAgZXhjZXB0aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAgICAgIGV4Y2Vw
dGlvblByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOworICAgICAgICAgICAgc2hvdWxk
QmVGYWxzZSgicmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImV4Y2VwdGlvblBy
b3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
ZXhjZXB0aW9uTmFtZSIsICJzeW50YXhFcnIiKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordmFy
IHJ1bl9jb2RlX2FuZF9yZWFzb25fdGVzdCA9IGZ1bmN0aW9uICgpCit7CisgICAgdmFyIGNvZGVz
ID0gWworICAgICAgICAxMDAwLAorICAgICAgICAzMDAwLAorICAgICAgICA0MDAwLAorICAgICAg
ICA0OTk5CisgICAgXTsKKyAgICB2YXIgcmVhc29ucyA9IFsKKyAgICAgICAgIk9LLCBCeWUhIiwK
KyAgICAgICAgIjMwMDAiLAorICAgICAgICAiY29kZSBpcyA0MDAwIiwKKyAgICAgICAgIlx1MDBh
OSBHb29nbGUiCisgICAgXTsKKyAgICAoZnVuY3Rpb24gdGVzdCAoaWQpIHsKKyAgICAgICAgZGVi
dWcoImNvZGUgYW5kIHJlYXNvbiB0ZXN0OiAiICsgaWQpOworICAgICAgICB3cyA9IG5ldyBXZWJT
b2NrZXQodXJsKTsKKyAgICAgICAgc2V0X2RlZmF1bHRzKHdzKTsKKyAgICAgICAgd3Mub25vcGVu
ID0gZnVuY3Rpb24gKCkKKyAgICAgICAgeworICAgICAgICAgICAgd3MuY2xvc2UoY29kZXNbaWRd
LCByZWFzb25zW2lkXSk7CisgICAgICAgIH07CisgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlv
biAoZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAgICAgICAg
ICBjb2RlID0gY29kZXNbaWRdOworICAgICAgICAgICAgcmVhc29uID0gcmVhc29uc1tpZF07Cisg
ICAgICAgICAgICBkZWJ1ZygiY2xvc2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUiKTsKKyAgICAg
ICAgICAgIGRlYnVnKCIgIGNvZGUgIDogIiArIGNvZGUpOworICAgICAgICAgICAgZGVidWcoIiAg
cmVhc29uOiAiICsgcmVhc29uKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVu
dC53YXNDbGVhbiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJj
b2RlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5yZWFzb24iLCAicmVhc29u
Iik7CisgICAgICAgICAgICBpZiAoKytpZCAhPSBjb2Rlcy5sZW5ndGgpCisgICAgICAgICAgICAg
ICAgdGVzdChpZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH07CisgICAgfSkoMCk7Cit9CisKK3J1bl9jb2RlX3Rlc3QoKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jbG9zZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDcwYmE1ZGUwYzVl
ZTFlNjIxYTgyMjc0ZmJlNDU1MTYxOGVmMDI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZV93c2gucHkKQEAgLTAsMCAr
MSw1NiBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK19HT09EQllFX01F
U1NBR0UgPSB1J0dvb2RieWUnCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpOgorICAgIHBhc3MgICMgQWx3YXlzIGFjY2VwdC4KKworCitkZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGxpbmUg
PSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICBpZiBsaW5lIGlz
IE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCB1
bmljb2RlKToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5l
LCBiaW5hcnk9RmFsc2UpCisgICAgICAgICAgICBpZiBsaW5lID09IF9HT09EQllFX01FU1NBR0U6
CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXF1
ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PVRydWUpCisKKworZGVmIHdl
Yl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICByZXR1cm4g
cmVxdWVzdC53c19jbG9zZV9jb2RlLCByZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbgorCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmNhNjllODNhMjY1ZmVmYjI4N2Q2ZDZkN2RkYmJiN2UwMjNhNjg2OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvd29ya2Vycy9jbG9zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5NCBAQAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDA6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9u
IGlzIGVzdGFibGlzaGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFdlYlNvY2tldCBpcyBj
bG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgorVmVyaWZ5IFdlYlNv
Y2tldDo6Y2xvc2UgYmVoYXZpb3JzIGluIFdvcmtlci4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitpbnZhbGlkIGNvZGUgdGVzdDogMAorY29kZSA5OTkgbXVzdCBjYXVzZSBJTlZBTElE
X0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRB
Y2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiAxCitjb2RlIDEwMDEgbXVzdCBjYXVzZSBJTlZB
TElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFs
aWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiAyCitjb2RlIDI5OTkgbXVzdCBjYXVzZSBJ
TlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGlu
dmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiAzCitjb2RlIDUwMDAgbXVzdCBjYXVz
ZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlz
IGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA0Citjb2RlIDY2NTM2IG11c3Qg
Y2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFt
ZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogNQorY29kZSA0Mjk0OTY4
Mjk2IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhj
ZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogNgorY29k
ZSAyOTk5LjkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2Vy
OiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA3
Citjb2RlIE5hTiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6
IDgKK2NvZGUgMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6
IDkKK2NvZGUgMTAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdv
cmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVz
dDogMTAKK2NvZGUgSW5maW5pdHkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1Mg
UEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQg
Y29kZSB0ZXN0OiAxMQorY29kZSAtSW5maW5pdHkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19F
UlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIK
K2ludmFsaWQgY29kZSB0ZXN0OiAxMgorY29kZSBOYU4gbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VT
U19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NF
cnIKK3J1bl9jb2RlX3Rlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2
ZW50LmNvZGUgaXMgYWJub3JtYWxDbG9zdXJlCitza2lwIGludmFsaWQgc3RyaW5nIHRlc3QKK3Jl
YXNvbiB0ZXN0OiAwCisgIHdpdGggaW52YWxpZCByZWFzb246IDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQKK3JlYXNvbiAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0IG11c3QgY2F1c2UgU1lOVEFYX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IHJlc3Vs
dCBpcyBmYWxzZQorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgc3ludGF4RXJy
CityZWFzb24gdGVzdDogMQorICB3aXRoIGludmFsaWQgcmVhc29uOiAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMsKpCityZWFz
b24gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTLCqSBtdXN0IGNhdXNlIFNZTlRBWF9FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBy
ZXN1bHQgaXMgZmFsc2UKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIHN5bnRh
eEVycgorcmVhc29uIHRlc3Q6IDIKK3J1bl9yZWFzb25fdGVzdDogb25jbG9zZSgpLgorUEFTUyBQ
QVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQuY29kZSBpcyBhYm5vcm1hbENsb3N1cmUKK2NvZGUgYW5k
IHJlYXNvbiB0ZXN0OiAwCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6
IDEwMDAKKyAgcmVhc29uOiBPSywgQnllIQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQu
d2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQuY29kZSBpcyBj
b2RlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5yZWFzb24gaXMgcmVhc29uCitjb2Rl
IGFuZCByZWFzb24gdGVzdDogMQorY2xvc2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUKKyAgY29k
ZSAgOiAzMDAwCisgIHJlYXNvbjogMzAwMAorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQu
d2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQuY29kZSBpcyBj
b2RlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5yZWFzb24gaXMgcmVhc29uCitjb2Rl
IGFuZCByZWFzb24gdGVzdDogMgorY2xvc2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUKKyAgY29k
ZSAgOiA0MDAwCisgIHJlYXNvbjogY29kZSBpcyA0MDAwCitQQVNTIFBBU1M6IHdvcmtlcjogY2xv
c2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5j
b2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFz
b24KK2NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAzCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBi
ZQorICBjb2RlICA6IDQ5OTkKKyAgcmVhc29uOiDCqSBHb29nbGUKK1BBU1MgUEFTUzogd29ya2Vy
OiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2
ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQucmVhc29uIGlz
IHJlYXNvbgorRE9ORQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvd29ya2Vycy9jbG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRjNjYyMGU4
NzQwYzY2OWIxYjIxMmRiNGRkMWI5MTI0M2ZlZjIwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS5odG1s
CkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiVmVyaWZ5IFdlYlNvY2tl
dDo6Y2xvc2UgYmVoYXZpb3JzIGluIFdvcmtlci4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQiLCAwKTsKKworZnVuY3Rpb24gc3RhcnRzV2l0aChzdHIsIHByZWZpeCkKK3sK
KyAgICByZXR1cm4gc3RyLmluZGV4T2YocHJlZml4KSA9PSAwOworfQorCit2YXIgd29ya2VyID0g
bmV3IFdvcmtlcigicmVzb3VyY2VzL2Nsb3NlLmpzIik7Cit3b3JrZXIub25tZXNzYWdlID0gZnVu
Y3Rpb24gKGV2ZW50KQoreworICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICBpZiAo
c3RhcnRzV2l0aChtZXNzYWdlLCAiUEFTUyIpKQorICAgICAgICB0ZXN0UGFzc2VkKG1lc3NhZ2Up
OworICAgIGVsc2UgaWYgKHN0YXJ0c1dpdGgobWVzc2FnZSwgIkZBSUwiKSkKKyAgICAgICAgdGVz
dEZhaWxlZChtZXNzYWdlKQorICAgIGVsc2UKKyAgICAgICAgZGVidWcobWVzc2FnZSk7CisgICAg
aWYgKG1lc3NhZ2UgPT09ICJET05FIikKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLmpzIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9z
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YWNhNjlkNGU4ZGZhZDIzYmI5ODc0MGM2NGJhMjJjNWYwNjdkYjhk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qcwpAQCAtMCwwICsxLDIwNyBAQAorZnVu
Y3Rpb24gcG9zdFJlc3VsdChyZXN1bHQsIGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgdmFyIG1l
c3NhZ2UgPSByZXN1bHQgPyAiUEFTUyIgOiAiRkFJTCI7CisgICAgbWVzc2FnZSArPSAiOiB3b3Jr
ZXI6ICIgKyBhY3R1YWwgKyAiIGlzICI7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIG1lc3Nh
Z2UgKz0gIm5vdCAiOworICAgIG1lc3NhZ2UgKz0gZXhwZWN0ZWQ7CisgICAgcG9zdE1lc3NhZ2Uo
bWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGYWlsZWQobWVzc2FnZSkKK3sKKyAgICBwb3N0
TWVzc2FnZSgiRkFJTDogIiArIG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiBkZWJ1ZyhtZXNzYWdl
KQoreworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKQoreworICAgIHZhciBfcmVzdWx0ID0gZXZhbChhY3R1YWwgKyAiID09
ICIgKyBleHBlY3RlZCk7CisgICAgcG9zdFJlc3VsdChfcmVzdWx0LCBhY3R1YWwsIGV4cGVjdGVk
KTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVUcnVlKGFjdHVhbCkKK3sKKyAgICBzaG91bGRCZShh
Y3R1YWwsICJ0cnVlIik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlRmFsc2UoYWN0dWFsKQorewor
ICAgIHNob3VsZEJlKGFjdHVhbCwgImZhbHNlIik7Cit9CisKK3ZhciBleGNlcHRpb25OYW1lOwor
dmFyIGV4Y2VwdGlvblByb3RvOwordmFyIGNsb3NlRXZlbnQ7Cit2YXIgY29kZTsKK3ZhciByZWFz
b247Cit2YXIgcmVzdWx0OwordmFyIGludmFsaWRBY2Nlc3NFcnIgPSAiSU5WQUxJRF9BQ0NFU1Nf
RVJSIjsKK3ZhciBzeW50YXhFcnIgPSAiU1lOVEFYX0VSUiI7Cit2YXIgbm9ybWFsQ2xvc3VyZSA9
IDEwMDA7Cit2YXIgYWJub3JtYWxDbG9zdXJlID0gMTAwNjsKK3ZhciB1cmwgPSAid3M6Ly8xMjcu
MC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZSI7Cit2YXIgd3M7Cit2YXIgdGVz
dElkOworCit2YXIgY29kZVRlc3RDb2RlcyA9IFsKKyAgICA5OTksIDEwMDEsIDI5OTksIDUwMDAs
IDY1NTM2ICsgMTAwMCwgMHgxMDAwMDAwMDAgKyAxMDAwLCAyOTk5LjksIE5hTiwgIjAiLCAiMTAw
IiwgMS8wLCAtMS8wLCAwLzAsCisgICAgMTAwMC4wCitdOworCit2YXIgcmVhc29uVGVzdFJlYXNv
bnMgPSBbCisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQiLCAvLyAxMjQgQnl0ZQorICAgICIxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMlx1MDBh
OSIsIC8vIGxlbmd0aCBpcyAxMjMsIGJ1dCAxMjQgQnl0ZSBpbiBVVEYtOAorICAgICIxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjMiLCAvLyAxMjMgQnl0ZQorXTsKKwordmFyIHJlYXNvblRlc3RSZXN1bHRzID0gWworICAgIGZh
bHNlLAorICAgIGZhbHNlLAorICAgIHRydWUsCitdOworCit2YXIgb25vcGVuID0gZnVuY3Rpb24g
KCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFy
IG9uZXJyb3IgPSBmdW5jdGlvbiAoKQoreworICAgIHRlc3RGYWlsZWQoIm9uZXJyb3IoKSB3YXMg
Y2FsbGVkLiIpOworfTsKKwordmFyIG9uY2xvc2UgPSBmdW5jdGlvbiAoKQoreworICAgIHRlc3RG
YWlsZWQoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFyIG9ubWVzc2FnZSA9IGZ1
bmN0aW9uICgpCit7CisgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4iKTsK
K307CisKK3ZhciBzZXRfZGVmYXVsdHMgPSBmdW5jdGlvbiAod3MpCit7CisgICAgd3Mub25vcGVu
ID0gb25vcGVuOworICAgIHdzLm9uZXJyb3IgPSBvbmVycm9yOworICAgIHdzLm9uY2xvc2UgPSBv
bmNsb3NlOworICAgIHdzLm9ubWVzc2FnZSA9IG9ubWVzc2FnZTsKK30KKwordmFyIHJ1bl9jb2Rl
X3Rlc3QgPSBmdW5jdGlvbiAoKQoreworICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAg
IHNldF9kZWZhdWx0cyh3cyk7CisgICAgZm9yICh2YXIgaWQgPSAwOyBpZCA8IGNvZGVUZXN0Q29k
ZXMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGlmIChjb2RlVGVzdENvZGVzW2lkXSAhPSBub3Jt
YWxDbG9zdXJlKSB7CisgICAgICAgICAgICBkZWJ1ZygiaW52YWxpZCBjb2RlIHRlc3Q6ICIgKyBp
ZCk7CisgICAgICAgICAgICB3cy5vbmNsb3NlID0gb25jbG9zZTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygicnVuX2NvZGVfdGVzdDogb25jbG9zZSgpLiIpOworICAgICAg
ICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjbG9z
ZUV2ZW50LmNvZGUiLCAiYWJub3JtYWxDbG9zdXJlIik7CisgICAgICAgICAgICAgICAgaWYgKGNs
b3NlRXZlbnQuY29kZSA9PSBhYm5vcm1hbENsb3N1cmUpCisgICAgICAgICAgICAgICAgICAgIHJ1
bl9pbnZhbGlkX3N0cmluZ190ZXN0KCk7CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICB3cy5jbG9zZShjb2RlVGVzdENvZGVzW2lkXSk7CisgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJjb2RlICIgKyBjb2RlVGVzdENv
ZGVzW2lkXSArICIgbXVzdCBjYXVzZSAiICsgaW52YWxpZEFjY2Vzc0Vycik7CisgICAgICAgICAg
ICBleGNlcHRpb25OYW1lID0gZS5uYW1lOworICAgICAgICAgICAgZXhjZXB0aW9uUHJvdG8gPSBP
YmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CisgICAgICAgICAgICAvL3Nob3VsZEJlVHJ1ZSgiZXhj
ZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJleGNlcHRpb25OYW1lIiwgImludmFsaWRBY2Nlc3NFcnIiKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordmFyIHJ1bl9pbnZhbGlkX3N0cmluZ190ZXN0ID0gZnVuY3Rpb24gKCkKK3sK
KyAgICAvLyBUT0RPKHRveW9zaGltKTogdW5wYWlyZWQgc3Vycm9nYXRlcyB0aHJvdyBTWU5UQVhf
RVJSCisgICAgZGVidWcoInNraXAgaW52YWxpZCBzdHJpbmcgdGVzdCIpOworICAgIHJ1bl9yZWFz
b25fdGVzdCgpOworfQorCit2YXIgcnVuX3JlYXNvbl90ZXN0ID0gZnVuY3Rpb24gKG5leHRfdGVz
dCkKK3sKKyAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICBzZXRfZGVmYXVsdHMod3Mp
OworICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCByZWFzb25UZXN0UmVhc29ucy5sZW5ndGg7IGlk
KyspIHsKKyAgICAgICAgZGVidWcoInJlYXNvbiB0ZXN0OiAiICsgaWQpOworICAgICAgICBpZiAo
IXJlYXNvblRlc3RSZXN1bHRzW2lkXSkgeworICAgICAgICAgICAgZGVidWcoIiAgd2l0aCBpbnZh
bGlkIHJlYXNvbjogIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSk7CisgICAgICAgICAgICB3cy5v
bmNsb3NlID0gb25jbG9zZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHdzLm9uY2xv
c2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1Zygi
cnVuX3JlYXNvbl90ZXN0OiBvbmNsb3NlKCkuIik7CisgICAgICAgICAgICAgICAgY2xvc2VFdmVu
dCA9IGU7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5v
cm1hbENsb3N1cmUiKTsKKyAgICAgICAgICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2RlID09IGFi
bm9ybWFsQ2xvc3VyZSkKKyAgICAgICAgICAgICAgICAgICAgcnVuX2NvZGVfYW5kX3JlYXNvbl90
ZXN0KCk7CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICB3cy5jbG9zZShub3JtYWxDbG9zdXJlLCByZWFzb25UZXN0UmVhc29uc1tpZF0pOworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBkZWJ1ZygicmVhc29uICIgKyByZWFzb25U
ZXN0UmVhc29uc1tpZF0gKyAiIG11c3QgY2F1c2UgIiArIHN5bnRheEVycik7CisgICAgICAgICAg
ICByZXN1bHQgPSByZWFzb25UZXN0UmVzdWx0c1tpZF07CisgICAgICAgICAgICBleGNlcHRpb25O
YW1lID0gZS5uYW1lOworICAgICAgICAgICAgZXhjZXB0aW9uUHJvdG8gPSBPYmplY3QuZ2V0UHJv
dG90eXBlT2YoZSk7CisgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCJyZXN1bHQiKTsKKyAgICAg
ICAgICAgIC8vc2hvdWxkQmVUcnVlKCJleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnBy
b3RvdHlwZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4Y2VwdGlvbk5hbWUiLCAic3ludGF4
RXJyIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZhciBydW5fY29kZV9hbmRfcmVhc29uX3Rl
c3QgPSBmdW5jdGlvbiAoKQoreworICAgIHZhciBjb2RlcyA9IFsKKyAgICAgICAgMTAwMCwKKyAg
ICAgICAgMzAwMCwKKyAgICAgICAgNDAwMCwKKyAgICAgICAgNDk5OQorICAgIF07CisgICAgdmFy
IHJlYXNvbnMgPSBbCisgICAgICAgICJPSywgQnllISIsCisgICAgICAgICIzMDAwIiwKKyAgICAg
ICAgImNvZGUgaXMgNDAwMCIsCisgICAgICAgICJcdTAwYTkgR29vZ2xlIgorICAgIF07CisgICAg
KGZ1bmN0aW9uIHRlc3QgKGlkKSB7CisgICAgICAgIGRlYnVnKCJjb2RlIGFuZCByZWFzb24gdGVz
dDogIiArIGlkKTsKKyAgICAgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgICAgIHNl
dF9kZWZhdWx0cyh3cyk7CisgICAgICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uICgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVzW2lkXSwgcmVhc29uc1tpZF0pOworICAgICAg
ICB9OworICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgY29kZSA9IGNvZGVzW2lkXTsKKyAg
ICAgICAgICAgIHJlYXNvbiA9IHJlYXNvbnNbaWRdOworICAgICAgICAgICAgZGVidWcoImNsb3Nl
IGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlIik7CisgICAgICAgICAgICBkZWJ1ZygiICBjb2RlICA6
ICIgKyBjb2RlKTsKKyAgICAgICAgICAgIGRlYnVnKCIgIHJlYXNvbjogIiArIHJlYXNvbik7Cisg
ICAgICAgICAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LmNvZGUiLCAiY29kZSIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImNsb3NlRXZlbnQucmVhc29uIiwgInJlYXNvbiIpOworICAgICAgICAgICAgaWYgKCsr
aWQgIT0gY29kZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHRlc3QoaWQpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJET05FIik7CisgICAgICAgIH07
CisgICAgfSkoMCk7Cit9CisKK3J1bl9jb2RlX3Rlc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MDUyNDQ3
NGU4ZDIzYjFhMDJmOWM3MTEzMTdjY2IzM2E3YmIyNjJjLi5mMmM5N2EyMTg3MzEwNTIwYTk1YzE0
NDdjZWMwYzk5MDNiZTg5NWVjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDgt
MjUgIFRha2FzaGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtXZWJTb2NrZXRdIFdlYlNvY2tldDo6Y2xvc2UgZGlkbid0IGhhbmRsZSBjb2RlIGFuZCByZWFz
b24gYXJndW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjY5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0czogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xv
c2UuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhX
ZWJTb2NrZXQ6OmNsb3NlQ2FsbGJhY2spOgorICAgICAgICBBZGQgY3VzdG9tIGJyaWRnZSBmb3Ig
V2ViU29ja2V0OjpjbG9zZSgpLgorICAgICAgICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmlkbDoKKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbDo6Y2xvc2UpOgorICAgICAgICBBZGQgY29kZSBhbmQgcmVhc29uIGFyZ3Vt
ZW50cyBoYW5kbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIFNlbmQgYSBjbG9zZSBmcmFtZSB3aXRob3V0IGNv
ZGUgYW5kIHJlYXNvbiBvbiBzZXJ2ZXIgaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWVIaXhpZTc2KToKKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJl
YWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjpjbG9zZSk6CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICBBZGQgY29kZSBhbmQgcmVhc29uIGFyZ3Vt
ZW50cyBoYW5kbGluZy4KKwogMjAxMS0wOC0yMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4ICdtYWtlIGRpc3QnIGZvciBXZWJLaXRHVEsrLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCmlu
ZGV4IGFmNWRhY2E1NTVlMDg5ZWMxMjI1OGM2MTcyMmM2MDdjZGYzMDE2Y2EuLjY3M2ZhYjc2NGU2
MzQ1NmU3YjEzOTU3OTU4OTRhY2YwZWI0MGZkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC0zOCw3ICszOCw5IEBACiAjaW5jbHVkZSAiS1VSTC5oIgog
I2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2lu
Y2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Cisj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CkBAIC04NSw2ICs4NywyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTV2ViU29ja2V0Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTV2ViU29ja2V0KEV4
ZWNTdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMs
IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBXZWJTb2NrZXQsIHdlYlNvY2tldC5nZXQo
KSkpOwogfQogCitKU1ZhbHVlIEpTV2ViU29ja2V0OjpjbG9zZShFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSBzdGF0aWNfY2FzdDxXZWJTb2NrZXQqPihpbXBs
KCkpOworICAgIGludCBhcmd1bWVudENvdW50ID0gc3RhdGljX2Nhc3Q8aW50PihleGVjLT5hcmd1
bWVudENvdW50KCkpOworICAgIGludCBjb2RlID0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVu
dENvZGVOb3RTcGVjaWZpZWQ7CisgICAgU3RyaW5nIHJlYXNvbiA9ICIiOworICAgIGlmIChhcmd1
bWVudENvdW50ID49IDEpIHsKKyAgICAgICAgLy8gW0NsYW1wXSBpbiBvcHRpb25hbCB1bnNpZ25l
ZCBzaG9ydCBjb2RlLgorICAgICAgICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICAgICAgZG91YmxlIHggPSB2LnRvTnVtYmVyKGV4ZWMpOworICAgICAgICBpZiAoIWlzbmFuKHgp
KQorICAgICAgICAgICAgeCA9IGNsYW1wVG8oeCwgMCwgMHhmZmZmKTsKKyAgICAgICAgY29kZSA9
IGNsYW1wVG9JbnRlZ2VyKHgpOworICAgICAgICBpZiAoYXJndW1lbnRDb3VudCA+PSAyKQorICAg
ICAgICAgICAgLy8gaW4gb3B0aW9uYWwgRE9NU3RyaW5nIHJlYXNvbgorICAgICAgICAgICAgcmVh
c29uID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpKTsK
KyAgICB9CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2ViU29ja2V0LT5jbG9zZShj
b2RlLCByZWFzb24sIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29j
a2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNv
Y2tldEN1c3RvbS5jcHAKaW5kZXggNThhMjdlN2ZhMTNkYjlmYTJkZGMzZDJmZWQzZjdlODk3ZmM5
NzVkNS4uYzdjOWJjYjZmOTFmODczYTIzNTYxZjRkNTFhZmMxODkzMGU0MzlkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0
b20uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTQwLDggKzQwLDEwIEBACiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUg
IlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCisjaW5jbHVkZSAiV2ViU29j
a2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA4LDYg
KzExMCwyOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIHJldHVybiBhcmdzLkhvbGRl
cigpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNsb3NlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBXZWJTb2NrZXQqIHdlYlNvY2tl
dCA9IHRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIGludCBhcmd1bWVudENvdW50ID0gYXJn
cy5MZW5ndGgoKTsKKyAgICBpbnQgY29kZSA9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRD
b2RlTm90U3BlY2lmaWVkOworICAgIFN0cmluZyByZWFzb24gPSAiIjsKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA+PSAxKSB7CisgICAgICAgIC8vIFtDbGFtcF0gaW4gb3B0aW9uYWwgdW5zaWduZWQg
c2hvcnQgY29kZS4KKyAgICAgIGRvdWJsZSB4ID0gYXJnc1swXS0+TnVtYmVyVmFsdWUoKTsKKyAg
ICAgICAgaWYgKCFpc25hbih4KSkKKyAgICAgICAgICAgIHggPSBjbGFtcFRvKHgsIDAsIDB4ZmZm
Zik7CisgICAgICAgIGNvZGUgPSBjbGFtcFRvSW50ZWdlcih4KTsKKyAgICAgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgPj0gMikKKyAgICAgICAgICAgIC8vIGluIG9wdGlvbmFsIERPTVN0cmluZyByZWFz
b24KKyAgICAgICAgICAgIHJlYXNvbiA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdLT5Ub1N0cmlu
ZygpKTsKKyAgICB9CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2ViU29ja2V0LT5j
bG9zZShjb2RlLCByZWFzb24sIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKGVjKTsKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCiB9ICAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAppbmRleCBjZDljZTI1MmE0Y2Q1YmQ2N2E3MzljZmM1MzMyNzA4ZTBlZDQ4Y2ZlLi4wOWY4MWI1
MDdhMTAwMWQ2ZTdlYTU5MTcyMTE2ZWE5ZTlmZjdiZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsg
Ly8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9r
ZWQuCiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAg
ICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CiAgICAgLy8gTG9nIHRoZSByZWFzb24gdGV4
dCBhbmQgY2xvc2UgdGhlIGNvbm5lY3Rpb24uIFdpbGwgY2FsbCBkaWRDbG9zZSgpLgogICAgIHZp
cnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2Nvbm5lY3QoKSA9IDA7IC8vIFdpbGwgc3VwcHJlc3MgZGlkQ2xvc2UoKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBmMTc5N2YwODRhY2Y0MDE4YzJk
MzY0NTc3YTE4YjI4ZTQ4NmRmZjZkLi4xMTg5NzU5NzZmNWFjODI0NjMyZjY5OTc0NDA2MzgyMmM3
ZjkyNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI1OCw5
ICsyNTgsMjMgQEAgYm9vbCBXZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gbV9jaGFubmVsLT5zZW5kKG1lc3NhZ2UpOwog
fQogCi12b2lkIFdlYlNvY2tldDo6Y2xvc2UoKQordm9pZCBXZWJTb2NrZXQ6OmNsb3NlKGludCBj
b2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xvc2UiLCB0aGlzKTsKKyAgICBpZiAoY29kZSA9PSBX
ZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCkKKyAgICAgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xvc2Ugd2l0aG91dCBjb2RlIGFuZCByZWFzb24iLCB0
aGlzKTsKKyAgICBlbHNlIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xv
c2Ugd2l0aCBjb2RlID0gJWQsIHJlYXNvbiA9ICVzIiwgdGhpcywgY29kZSwgcmVhc29uLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBpZiAoIShjb2RlID09IFdlYlNvY2tldENoYW5uZWw6OkNsb3Nl
RXZlbnRDb2RlTm9ybWFsQ2xvc3VyZSB8fCAzMDAwIDw9IGNvZGUgJiYgY29kZSA8PSA0OTk5KSkg
eworICAgICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IGlmIHJlYXNvbiBjb250YWlucyBhbnkg
dW5wYWlyZWQgc3Vycm9nYXRlcywgcmFpc2UgU1lOVEFYX0VSUi4KKyAgICAgICAgaWYgKHJlYXNv
bi51dGY4KCkubGVuZ3RoKCkgPiAxMjMpIHsKKyAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChtX3N0YXRl
ID09IENMT1NJTkcgfHwgbV9zdGF0ZSA9PSBDTE9TRUQpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAobV9zdGF0ZSA9PSBDT05ORUNUSU5HKSB7CkBAIC0yNzMsNyArMjg3LDcgQEAgdm9pZCBXZWJT
b2NrZXQ6OmNsb3NlKCkKICAgICAvLyBkaWRDbG9zZSBub3RpZmljYXRpb24gbWF5IGJlIGFscmVh
ZHkgcXVldWVkLCB3aGljaCB3ZSB3aWxsIGluYWR2ZXJ0ZW50bHkgcHJvY2VzcyB3aGlsZSB3YWl0
aW5nIGZvciBidWZmZXJlZEFtb3VudCgpIHRvIHJldHVybi4KICAgICAvLyBJbiB0aGlzIGNhc2Ug
bV9jaGFubmVsIHdpbGwgYmUgc2V0IHRvIG51bGwgZHVyaW5nIGRpZENsb3NlKCkgY2FsbCwgdGh1
cyB3ZSBuZWVkIHRvIHRlc3QgdmFsaWRuZXNzIG9mIG1fY2hhbm5lbCBoZXJlLgogICAgIGlmICht
X2NoYW5uZWwpCi0gICAgICAgIG1fY2hhbm5lbC0+Y2xvc2UoKTsKKyAgICAgICAgbV9jaGFubmVs
LT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCiBjb25zdCBLVVJMJiBXZWJTb2NrZXQ6OnVybCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5o
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCAyNzEyNTQxZmE5
ZmYyZjNlNzliNDg1YWQ5Mzc3YTQxODY1MTJiMmI1Li44NDlkYjUwNzY4YWY3YTMzZjJhMGI1OTA3
MWIwMWRjMTllODg0ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
NjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBzZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgICAgIHZvaWQgY2xv
c2UoKTsKKyAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24s
IEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKICAg
ICAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaWRsCmluZGV4IDgxZDc1NjNmMDdjOTE0Mjc0NWY3ZjI5YjFjZTMyNTVmNTZhNmVj
ZTIuLmNhZDNhNmJmYTFlNjI0OTE0NjE4ZjAzZGFmNGQ0NGQxNTdhMTNmZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKQEAgLTY0LDcgKzY0LDcgQEAgbW9kdWxlIHdl
YnNvY2tldHMgewogICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAg
ICAgICAgIFtSZXF1aXJlc0FsbEFyZ3VtZW50c10gYm9vbGVhbiBzZW5kKGluIERPTVN0cmluZyBk
YXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAg
ICBbQ3VzdG9tXSB2b2lkIGNsb3NlKGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgY29kZSwg
aW4gW09wdGlvbmFsXSBET01TdHJpbmcgcmVhc29uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAog
ICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICAgICAgdm9pZCBhZGRFdmVudExp
c3RlbmVyKGluIERPTVN0cmluZyB0eXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZWU4NjhmZmIzMTZiYmM3NjdiYmZhNzMzYjEwMjI0
NDU0YzQwNjU4Ni4uODAyM2EwZjIwM2QxMGIwZDU1MWQ0NjliMTkyMjE5MTFkZTBiOTE4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0x
NjAsMTMgKzE2MCwxMyBAQCB1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVk
QW1vdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9oYW5kbGUtPmJ1ZmZlcmVkQW1vdW50KCk7CiB9
CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQordm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NlIiwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX3N1
c3BlbmRlZCk7CiAgICAgaWYgKCFtX2hhbmRsZSkKICAgICAgICAgcmV0dXJuOwotICAgIHN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSgpOworICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShjb2RlLCByZWFz
b24pOwogICAgIGlmIChtX2Nsb3NpbmcgJiYgIW1fY2xvc2luZ1RpbWVyLmlzQWN0aXZlKCkpCiAg
ICAgICAgIG1fY2xvc2luZ1RpbWVyLnN0YXJ0T25lU2hvdCgyICogVENQTWF4aW11bVNlZ21lbnRM
aWZldGltZSk7CiB9CkBAIC00MTEsNyArNDExLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpy
ZXN1bWVUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENoYW5uZWw+KiB0aW1lcikKICAgICAgICAg
ZGlkQ2xvc2VTb2NrZXRTdHJlYW0obV9oYW5kbGUuZ2V0KCkpOwogfQogCi12b2lkIFdlYlNvY2tl
dENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCit2b2lkIFdlYlNvY2tldENoYW5uZWw6
OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7
CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgJWQgJWQiLCB0
aGlzLCBtX2Nsb3NpbmcsIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlKTsKICAgICBpZiAobV9j
bG9zaW5nKQpAQCAtNDIzLDkgKzQyMywxNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSgpCiAgICAgICAgIGJ1Zi5hcHBlbmQoJ1x4ZmYnKTsKICAgICAgICAg
YnVmLmFwcGVuZCgnXDAnKTsKICAgICAgICAgc2VudFN1Y2Nlc3NmdWxseSA9IG1faGFuZGxlLT5z
ZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOwotICAgIH0gZWxzZQotICAgICAgICBzZW50U3Vj
Y2Vzc2Z1bGx5ID0gc2VuZEZyYW1lKE9wQ29kZUNsb3NlLCAiIiwgMCk7IC8vIEZJWE1FOiBTZW5k
IHN0YXR1cyBjb2RlIGFuZCByZWFzb24gbWVzc2FnZS4KLQorICAgIH0gZWxzZSB7CisgICAgICAg
IFZlY3RvcjxjaGFyPiBidWY7CisgICAgICAgIGlmICghbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hh
a2UpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5dGUgPSBjb2RlID4+IDg7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxvd0J5dGUgPSBjb2RlOworICAgICAgICAgICAgYnVm
LmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPihoaWdoQnl0ZSkpOworICAgICAgICAgICAgYnVmLmFw
cGVuZChzdGF0aWNfY2FzdDxjaGFyPihsb3dCeXRlKSk7CisgICAgICAgICAgICBidWYuYXBwZW5k
KHJlYXNvbi51dGY4KCkuZGF0YSgpLCByZWFzb24udXRmOCgpLmxlbmd0aCgpKTsKKyAgICAgICAg
fQorICAgICAgICBzZW50U3VjY2Vzc2Z1bGx5ID0gc2VuZEZyYW1lKE9wQ29kZUNsb3NlLCBidWYu
ZGF0YSgpLCBidWYuc2l6ZSgpKTsKKyAgICB9CiAgICAgaWYgKCFzZW50U3VjY2Vzc2Z1bGx5KSB7
CiAgICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTYz
Niw3ICs2NDQsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAg
ICAgICAgICBtX2Nsb3NlRXZlbnRSZWFzb24gPSAiIjsKICAgICAgICAgc2tpcEJ1ZmZlcihmcmFt
ZS5mcmFtZUVuZCAtIG1fYnVmZmVyKTsKICAgICAgICAgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hh
a2UgPSB0cnVlOwotICAgICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoKTsKKyAgICAgICAgc3Rh
cnRDbG9zaW5nSGFuZHNoYWtlKG1fY2xvc2VFdmVudENvZGUsIG1fY2xvc2VFdmVudFJlYXNvbik7
CiAgICAgICAgIGlmIChtX2Nsb3NpbmcpCiAgICAgICAgICAgICBtX2hhbmRsZS0+Y2xvc2UoKTsg
Ly8gQ2xvc2UgYWZ0ZXIgc2VuZGluZyBhIGNsb3NlIGZyYW1lLgogICAgICAgICBicmVhazsKQEAg
LTcxOCw3ICs3MjYsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZUhpeGll
NzYoKQogICAgICAgICAgICAgc2tpcEJ1ZmZlcihuZXh0RnJhbWUgLSBtX2J1ZmZlcik7CiAgICAg
ICAgICAgICBpZiAoZnJhbWVCeXRlID09IDB4ZmYgJiYgIWxlbmd0aCkgewogICAgICAgICAgICAg
ICAgIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBz
dGFydENsb3NpbmdIYW5kc2hha2UoKTsKKyAgICAgICAgICAgICAgICBzdGFydENsb3NpbmdIYW5k
c2hha2UoMCwgIiIpOwogICAgICAgICAgICAgICAgIGlmIChtX2Nsb3NpbmcpCiAgICAgICAgICAg
ICAgICAgICAgIG1faGFuZGxlLT5jbG9zZSgpOyAvLyBjbG9zZSBhZnRlciBzZW5kaW5nIEZGIDAw
LgogICAgICAgICAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oCmluZGV4IDM4ODRmY2Y1M2Q1Y2E0MjBmMjY4NDc1OWZiYjllNTQ1NGNjMTE0
YjguLjEwZGE2NGIwOTA0OWM2YTY2YjIzNWZhMjM3Yzc3N2FkN2QxZjk2OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01OSw3ICs1OSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2wo
KTsKICAgICAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAg
ICAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOyAvLyBTdGFydCBjbG9zaW5nIGhhbmRzaGFrZS4KKyAg
ICAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7
IC8vIFN0YXJ0IGNsb3NpbmcgaGFuZHNoYWtlLgogICAgICAgICB2aXJ0dWFsIHZvaWQgZmFpbChj
b25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCk7
CiAKQEAgLTc1LDYgKzc1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU29ja2V0U3RyZWFtSGFuZGxl
KiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAogICAgICAgICBlbnVtIENsb3Nl
RXZlbnRDb2RlIHsKKyAgICAgICAgICAgIENsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkID0gLTEs
CiAgICAgICAgICAgICBDbG9zZUV2ZW50Q29kZU5vcm1hbENsb3N1cmUgPSAxMDAwLAogICAgICAg
ICAgICAgQ2xvc2VFdmVudENvZGVHb2luZ0F3YXkgPSAxMDAxLAogICAgICAgICAgICAgQ2xvc2VF
dmVudENvZGVQcm90b2NvbEVycm9yID0gMTAwMiwKQEAgLTk5LDcgKzEwMCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBza2lwQnVmZmVyKHNpemVfdCBsZW4pOwogICAgICAg
ICBib29sIHByb2Nlc3NCdWZmZXIoKTsKICAgICAgICAgdm9pZCByZXN1bWVUaW1lckZpcmVkKFRp
bWVyPFdlYlNvY2tldENoYW5uZWw+KiB0aW1lcik7Ci0gICAgICAgIHZvaWQgc3RhcnRDbG9zaW5n
SGFuZHNoYWtlKCk7CisgICAgICAgIHZvaWQgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgY2xvc2luZ1RpbWVyRmlyZWQo
VGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qKTsKIAogICAgICAgICAvLyBIeWJpLTEwIG9wY29kZXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDlkYWI4MTJmYzgwMTVmMzg5Zjc0MDhk
MGRlYTdjYmVjZjk2Mjg0ZjMuLjhmZTk0NTkxNzJmZmNlZjMwNGM3OTUxM2QxZjlhOThkMGEzMDk1
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC05NCwxMCArOTQsMTAgQEAgdW5z
aWduZWQgbG9uZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRBbW91
bnQoKSBjb25zdAogICAgIHJldHVybiBtX2JyaWRnZS0+YnVmZmVyZWRBbW91bnQoKTsKIH0KIAot
dm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQordm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmlu
ZyYgcmVhc29uKQogewogICAgIGlmIChtX2JyaWRnZSkKLSAgICAgICAgbV9icmlkZ2UtPmNsb3Nl
KCk7CisgICAgICAgIG1fYnJpZGdlLT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCiB2b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29u
KQpAQCAtMTg3LDEyICsxODcsMTIgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6YnVmZmVyZWRBbW91bnQoKQogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERp
ZEdldEJ1ZmZlcmVkQW1vdW50LCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGJ1ZmZlcmVkQW1vdW50
KSwgbV90YXNrTW9kZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXI6OmNsb3NlKCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlBlZXI6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9tYWluV2ViU29ja2V0Q2hhbm5lbCkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmNsb3NlKCk7CisgICAg
bV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAogdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZmFpbChjb25zdCBTdHJpbmcm
IHJlYXNvbikKQEAgLTM4MywxOSArMzgzLDE5IEBAIHVuc2lnbmVkIGxvbmcgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6YnVmZmVyZWRBbW91bnQoKQogICAgIHJldHVy
biAwOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhy
ZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlcikKK3Zv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJnJlYXNvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBBU1NFUlQocGVl
cik7CiAKLSAgICBwZWVyLT5jbG9zZSgpOworICAgIHBlZXItPmNsb3NlKGNvZGUsIHJlYXNvbik7
CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y2xv
c2UoKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjbG9z
ZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgQVNTRVJUKG1fcGVlcik7
Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygm
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZSwgQWxsb3dD
cm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1Rv
TG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6Om1haW5UaHJlYWRDbG9zZSwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpLCBjb2Rl
LCByZWFzb24pKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
bWFpblRocmVhZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVl
ciwgY29uc3QgU3RyaW5nJiByZWFzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMGRj
MzhjMzJkN2YyNzllNmEyMGEwYzdkNDMzNmM4OGVmNDFiMjY3Ny4uNDNhMjE2ZjVhMzFiZjEwMGU2
YzdkMTYzYmVhZTQ3ODNiMDNkNmJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNjUs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZpcnR1YWwg
dW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBj
bG9zZSgpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb24pOwogICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpOyAvLyBXaWxsIHN1cHByZXNzIGRpZENsb3NlKCku
CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoKTsKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZv
aWQgYnVmZmVyZWRBbW91bnQoKTsKLSAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lk
IGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgZmFp
bChjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgZGlzY29ubmVjdCgpOwogICAg
ICAgICB2b2lkIHN1c3BlbmQoKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgICAg
ICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAg
ICAgICBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgdW5zaWduZWQg
bG9uZyBidWZmZXJlZEFtb3VudCgpOwotICAgICAgICB2b2lkIGNsb3NlKCk7CisgICAgICAgIHZv
aWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICAgICAgdm9pZCBm
YWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAg
ICAgICAgIHZvaWQgc3VzcGVuZCgpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBl
ZXIqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgc3RhdGljIHZv
aWQgbWFpblRocmVhZFNlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRCdWZmZXJlZEFtb3Vu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwotICAgIHN0YXRpYyB2b2lkIG1haW5U
aHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOworICAgIHN0YXRpYyB2
b2lkIG1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGludCBj
b2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZEZh
aWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7
CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBlZXIqKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU3VzcGVuZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGVlciopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L19faW5pdF9fLnB5CmluZGV4IGYwYTdjNDhmZDMwMTJjMGRmNDUwYjQ2NWM1OTRlY2ExN2Fm
ZGMyZWQuLmRhNzk1YzViMzk3MmE4NWI4ZDU0YTQ2MmI4MzNjZDk4MGVjMDk0YWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkKQEAgLTEzOSw4ICsx
MzksOCBAQCBjbGFzcyBBdXRvaW5zdGFsbEltcG9ydEhvb2sob2JqZWN0KToKICAgICBkZWYgX2lu
c3RhbGxfcHl3ZWJzb2NrZXQoc2VsZik6CiAgICAgICAgIHB5d2Vic29ja2V0X2RpciA9IHNlbGYu
X2ZzLmpvaW4oX0FVVE9JTlNUQUxMRURfRElSLCAicHl3ZWJzb2NrZXQiKQogICAgICAgICBpbnN0
YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9kaXI9cHl3ZWJzb2NrZXRfZGlyKQotICAgICAg
ICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9weXdlYnNvY2tldC5nb29nbGVjb2RlLmNv
bS9maWxlcy9tb2RfcHl3ZWJzb2NrZXQtMC42YjIudGFyLmd6IiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXJsX3N1YnBhdGg9InB5d2Vic29ja2V0LTAuNmIyL3NyYy9tb2RfcHl3ZWJzb2Nr
ZXQiKQorICAgICAgICBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9weXdlYnNvY2tldC5n
b29nbGVjb2RlLmNvbS9maWxlcy9tb2RfcHl3ZWJzb2NrZXQtMC42YjMudGFyLmd6IiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9InB5d2Vic29ja2V0LTAuNmIzL3NyYy9t
b2RfcHl3ZWJzb2NrZXQiKQogCiAgICAgZGVmIF9pbnN0YWxsKHNlbGYsIHVybCwgdXJsX3N1YnBh
dGgpOgogICAgICAgICBpbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9kaXI9X0FVVE9J
TlNUQUxMRURfRElSKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105178</attachid>
            <date>2011-08-25 07:14:05 -0700</date>
            <delta_ts>2011-08-26 02:42:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66925-20110825231402.patch</filename>
            <type>text/plain</type>
            <size>45509</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM0OTIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMjk3MjIxOTYyMWNjYWI4NTFlODU2
OTk0NDVjNWVjMTMzMGY2NWZhLi42NjgzY2UzNTM0NzNhOTM4ZTJlZGU1OTkxOTJjNmE1NzBlMWUx
YmYwIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMjUgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIFdlYlNvY2tl
dDo6Y2xvc2UgZGlkbid0IGhhbmRsZSBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2Ut
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qczogQWRkZWQuCisg
ICAgICAgIChwb3N0UmVzdWx0KToKKyAgICAgICAgKHRlc3RGYWlsZWQpOgorICAgICAgICAoZGVi
dWcpOgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVUcnVlKToKKyAgICAg
ICAgKHNob3VsZEJlRmFsc2UpOgorICAgICAgICAob25vcGVuKToKKyAgICAgICAgKG9uZXJyb3Ip
OgorICAgICAgICAob25jbG9zZSk6CisgICAgICAgIChvbm1lc3NhZ2UpOgorICAgICAgICAoc2V0
X2RlZmF1bHRzKToKKyAgICAgICAgKHJ1bl9jb2RlX3Rlc3QuZWxzZS53cy5vbmNsb3NlKToKKyAg
ICAgICAgKHJ1bl9jb2RlX3Rlc3QpOgorICAgICAgICAocnVuX2ludmFsaWRfc3RyaW5nX3Rlc3Qp
OgorICAgICAgICAocnVuX3JlYXNvbl90ZXN0LmVsc2Uud3Mub25jbG9zZSk6CisgICAgICAgIChy
dW5fcmVhc29uX3Rlc3QpOgorICAgICAgICAocnVuX2NvZGVfYW5kX3JlYXNvbl90ZXN0Lik6Cisg
ICAgICAgIChydW5fY29kZV9hbmRfcmVhc29uX3Rlc3QpOgorCiAyMDExLTA4LTIxICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgcmVzdWx0cyBmb3IgbW9y
ZSB0ZXN0cyBhZmZlY3RlZCBieSB0aGUgYWRkaXRpb24gb2YgdGhlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwZDkzNGI2ZDU4ZjNkODAwNDdjNDllNTQ5MjllMWU1ODE1
YjZkZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2Nsb3NlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwOCBAQAorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDA6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0
aW9uIGlzIGVzdGFibGlzaGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFdlYlNvY2tldCBp
cyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgorVmVyaWZ5IFdl
YlNvY2tldDo6Y2xvc2UgYmVoYXZpb3JzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K2ludmFsaWQgY29kZSB0ZXN0OiAwCitjb2RlIDk5OSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNT
X0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0
cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2Rl
IHRlc3Q6IDEKK2NvZGUgMTAwMSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBl
eGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4
Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDIKK2Nv
ZGUgMjk5OSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90
byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUg
aXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDMKK2NvZGUgNTAwMCBtdXN0
IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhj
ZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFj
Y2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDQKK2NvZGUgNjY1MzYgbXVzdCBjYXVzZSBJTlZB
TElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90
b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2lu
dmFsaWQgY29kZSB0ZXN0OiA1Citjb2RlIDQyOTQ5NjgyOTYgbXVzdCBjYXVzZSBJTlZBTElEX0FD
Q0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUg
aXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQg
Y29kZSB0ZXN0OiA2Citjb2RlIDI5OTkuOSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgor
UEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQ
QVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6
IDcKK2NvZGUgTmFOIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlv
blByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9u
TmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogOAorY29kZSAwIG11
c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01F
eGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlk
QWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogOQorY29kZSAxMDAgbXVzdCBjYXVzZSBJTlZB
TElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90
b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2lu
dmFsaWQgY29kZSB0ZXN0OiAxMAorY29kZSBJbmZpbml0eSBtdXN0IGNhdXNlIElOVkFMSURfQUND
RVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBp
cyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBj
b2RlIHRlc3Q6IDExCitjb2RlIC1JbmZpbml0eSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VS
UgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVl
CitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRl
c3Q6IDEyCitjb2RlIE5hTiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNl
cHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorcnVuX2NvZGVfdGVzdDogb25jbG9zZSgpLgor
UEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgYWJub3JtYWxDbG9zdXJlCitza2lwIGludmFsaWQgc3Ry
aW5nIHRlc3QKK3JlYXNvbiB0ZXN0OiAwCisgIHdpdGggaW52YWxpZCByZWFzb246IDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQKK3JlYXNvbiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0IG11c3QgY2F1c2UgU1lOVEFYX0VSUgorUEFTUyByZXN1bHQg
aXMgZmFsc2UKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUg
aXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIHN5bnRheEVycgorcmVhc29uIHRlc3Q6IDEK
KyAgd2l0aCBpbnZhbGlkIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTLCqQorcmVhc29uIDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEywqkgbXVz
dCBjYXVzZSBTWU5UQVhfRVJSCitQQVNTIHJlc3VsdCBpcyBmYWxzZQorUEFTUyBleGNlcHRpb25Q
cm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5h
bWUgaXMgc3ludGF4RXJyCityZWFzb24gdGVzdDogMgorcnVuX3JlYXNvbl90ZXN0OiBvbmNsb3Nl
KCkuCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBhYm5vcm1hbENsb3N1cmUKK2NvZGUgYW5kIHJl
YXNvbiB0ZXN0OiAwCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDEw
MDAKKyAgcmVhc29uOiBPSywgQnllIQorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUK
K1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgY2xvc2VFdmVudC5yZWFzb24gaXMg
cmVhc29uCitjb2RlIGFuZCByZWFzb24gdGVzdDogMQorY2xvc2UgY29kZSBhbmQgcmVhc29uIG11
c3QgYmUKKyAgY29kZSAgOiAzMDAwCisgIHJlYXNvbjogMzAwMAorUEFTUyBjbG9zZUV2ZW50Lndh
c0NsZWFuIGlzIHRydWUKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgY2xvc2VF
dmVudC5yZWFzb24gaXMgcmVhc29uCitjb2RlIGFuZCByZWFzb24gdGVzdDogMgorY2xvc2UgY29k
ZSBhbmQgcmVhc29uIG11c3QgYmUKKyAgY29kZSAgOiA0MDAwCisgIHJlYXNvbjogY29kZSBpcyA0
MDAwCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNv
ZGUgaXMgY29kZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK2NvZGUgYW5kIHJl
YXNvbiB0ZXN0OiAzCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDQ5
OTkKKyAgcmVhc29uOiDCqSBHb29nbGUKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVl
CitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIGNsb3NlRXZlbnQucmVhc29uIGlz
IHJlYXNvbgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvY2xvc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvY2xvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWE1NTExMGViMmIzNmFmZTI1MDg3MGJiNTU4MDJh
OWIzOGRmMzc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sCkBAIC0wLDAgKzEsMTkzIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgV2ViU29ja2V0Ojpj
bG9zZSBiZWhhdmlvcnMuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwg
MCk7CisKK3ZhciBleGNlcHRpb25OYW1lOwordmFyIGV4Y2VwdGlvblByb3RvOwordmFyIGNsb3Nl
RXZlbnQ7Cit2YXIgY29kZTsKK3ZhciByZWFzb247Cit2YXIgcmVzdWx0OwordmFyIGludmFsaWRB
Y2Nlc3NFcnIgPSAiSU5WQUxJRF9BQ0NFU1NfRVJSIjsKK3ZhciBzeW50YXhFcnIgPSAiU1lOVEFY
X0VSUiI7Cit2YXIgbm9ybWFsQ2xvc3VyZSA9IDEwMDA7Cit2YXIgYWJub3JtYWxDbG9zdXJlID0g
MTAwNjsKK3ZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHli
aS9jbG9zZSI7Cit2YXIgd3M7Cit2YXIgdGVzdElkOworCit2YXIgY29kZVRlc3RDb2RlcyA9IFsK
KyAgICA5OTksIDEwMDEsIDI5OTksIDUwMDAsIDY1NTM2ICsgMTAwMCwgMHgxMDAwMDAwMDAgKyAx
MDAwLCAyOTk5LjksIE5hTiwgIjAiLCAiMTAwIiwgMS8wLCAtMS8wLCAwLzAsCisgICAgMTAwMC4w
CitdOworCit2YXIgcmVhc29uVGVzdFJlYXNvbnMgPSBbCisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQiLCAvLyAx
MjQgQnl0ZQorICAgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMlx1MDBhOSIsIC8vIGxlbmd0aCBpcyAxMjMsIGJ1dCAxMjQg
Qnl0ZSBpbiBVVEYtOAorICAgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjMiLCAvLyAxMjMgQnl0ZQorXTsKKwordmFyIHJl
YXNvblRlc3RSZXN1bHRzID0gWworICAgIGZhbHNlLAorICAgIGZhbHNlLAorICAgIHRydWUsCitd
OworCit2YXIgb25vcGVuID0gZnVuY3Rpb24gKCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJvbm9wZW4o
KSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFyIG9uZXJyb3IgPSBmdW5jdGlvbiAoKQoreworICAg
IHRlc3RGYWlsZWQoIm9uZXJyb3IoKSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFyIG9uY2xvc2Ug
PSBmdW5jdGlvbiAoKQoreworICAgIHRlc3RGYWlsZWQoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIp
OworfTsKKwordmFyIG9ubWVzc2FnZSA9IGZ1bmN0aW9uICgpCit7CisgICAgdGVzdEZhaWxlZCgi
b25tZXNzYWdlKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3ZhciBzZXRfZGVmYXVsdHMgPSBmdW5j
dGlvbiAod3MpCit7CisgICAgd3Mub25vcGVuID0gb25vcGVuOworICAgIHdzLm9uZXJyb3IgPSBv
bmVycm9yOworICAgIHdzLm9uY2xvc2UgPSBvbmNsb3NlOworICAgIHdzLm9ubWVzc2FnZSA9IG9u
bWVzc2FnZTsKK30KKwordmFyIHJ1bl9jb2RlX3Rlc3QgPSBmdW5jdGlvbiAoKQoreworICAgIHdz
ID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAgIHNldF9kZWZhdWx0cyh3cyk7CisgICAgZm9yICh2
YXIgaWQgPSAwOyBpZCA8IGNvZGVUZXN0Q29kZXMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGlm
IChjb2RlVGVzdENvZGVzW2lkXSAhPSBub3JtYWxDbG9zdXJlKSB7CisgICAgICAgICAgICBkZWJ1
ZygiaW52YWxpZCBjb2RlIHRlc3Q6ICIgKyBpZCk7CisgICAgICAgICAgICB3cy5vbmNsb3NlID0g
b25jbG9zZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5j
dGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygicnVuX2NvZGVf
dGVzdDogb25jbG9zZSgpLiIpOworICAgICAgICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LmNvZGUiLCAiYWJub3JtYWxDbG9zdXJl
Iik7CisgICAgICAgICAgICAgICAgaWYgKGNsb3NlRXZlbnQuY29kZSA9PSBhYm5vcm1hbENsb3N1
cmUpCisgICAgICAgICAgICAgICAgICAgIHJ1bl9pbnZhbGlkX3N0cmluZ190ZXN0KCk7CisgICAg
ICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB3cy5jbG9z
ZShjb2RlVGVzdENvZGVzW2lkXSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
IGRlYnVnKCJjb2RlICIgKyBjb2RlVGVzdENvZGVzW2lkXSArICIgbXVzdCBjYXVzZSAiICsgaW52
YWxpZEFjY2Vzc0Vycik7CisgICAgICAgICAgICBleGNlcHRpb25OYW1lID0gZS5uYW1lOworICAg
ICAgICAgICAgZXhjZXB0aW9uUHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CisgICAg
ICAgICAgICBzaG91bGRCZVRydWUoImV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJv
dG90eXBlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiZXhjZXB0aW9uTmFtZSIsICJpbnZhbGlk
QWNjZXNzRXJyIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZhciBydW5faW52YWxpZF9zdHJp
bmdfdGVzdCA9IGZ1bmN0aW9uICgpCit7CisgICAgLy8gVE9ETyh0b3lvc2hpbSk6IHVucGFpcmVk
IHN1cnJvZ2F0ZXMgdGhyb3cgU1lOVEFYX0VSUgorICAgIGRlYnVnKCJza2lwIGludmFsaWQgc3Ry
aW5nIHRlc3QiKTsKKyAgICBydW5fcmVhc29uX3Rlc3QoKTsKK30KKwordmFyIHJ1bl9yZWFzb25f
dGVzdCA9IGZ1bmN0aW9uIChuZXh0X3Rlc3QpCit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVy
bCk7CisgICAgc2V0X2RlZmF1bHRzKHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgcmVh
c29uVGVzdFJlYXNvbnMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGRlYnVnKCJyZWFzb24gdGVz
dDogIiArIGlkKTsKKyAgICAgICAgaWYgKCFyZWFzb25UZXN0UmVzdWx0c1tpZF0pIHsKKyAgICAg
ICAgICAgIGRlYnVnKCIgIHdpdGggaW52YWxpZCByZWFzb246ICIgKyByZWFzb25UZXN0UmVhc29u
c1tpZF0pOworICAgICAgICAgICAgd3Mub25jbG9zZSA9IG9uY2xvc2U7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZGVidWcoInJ1bl9yZWFzb25fdGVzdDogb25jbG9zZSgpLiIpOwor
ICAgICAgICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJjbG9zZUV2ZW50LmNvZGUiLCAiYWJub3JtYWxDbG9zdXJlIik7CisgICAgICAgICAgICAgICAg
aWYgKGNsb3NlRXZlbnQuY29kZSA9PSBhYm5vcm1hbENsb3N1cmUpCisgICAgICAgICAgICAgICAg
ICAgIHJ1bl9jb2RlX2FuZF9yZWFzb25fdGVzdCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAg
fQorICAgICAgICB0cnkgeworICAgICAgICAgICAgd3MuY2xvc2Uobm9ybWFsQ2xvc3VyZSwgcmVh
c29uVGVzdFJlYXNvbnNbaWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAg
ZGVidWcoInJlYXNvbiAiICsgcmVhc29uVGVzdFJlYXNvbnNbaWRdICsgIiBtdXN0IGNhdXNlICIg
KyBzeW50YXhFcnIpOworICAgICAgICAgICAgcmVzdWx0ID0gcmVhc29uVGVzdFJlc3VsdHNbaWRd
OworICAgICAgICAgICAgZXhjZXB0aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAgICAgIGV4Y2Vw
dGlvblByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOworICAgICAgICAgICAgc2hvdWxk
QmVGYWxzZSgicmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImV4Y2VwdGlvblBy
b3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
ZXhjZXB0aW9uTmFtZSIsICJzeW50YXhFcnIiKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordmFy
IHJ1bl9jb2RlX2FuZF9yZWFzb25fdGVzdCA9IGZ1bmN0aW9uICgpCit7CisgICAgdmFyIGNvZGVz
ID0gWworICAgICAgICAxMDAwLAorICAgICAgICAzMDAwLAorICAgICAgICA0MDAwLAorICAgICAg
ICA0OTk5CisgICAgXTsKKyAgICB2YXIgcmVhc29ucyA9IFsKKyAgICAgICAgIk9LLCBCeWUhIiwK
KyAgICAgICAgIjMwMDAiLAorICAgICAgICAiY29kZSBpcyA0MDAwIiwKKyAgICAgICAgIlx1MDBh
OSBHb29nbGUiCisgICAgXTsKKyAgICAoZnVuY3Rpb24gdGVzdCAoaWQpIHsKKyAgICAgICAgZGVi
dWcoImNvZGUgYW5kIHJlYXNvbiB0ZXN0OiAiICsgaWQpOworICAgICAgICB3cyA9IG5ldyBXZWJT
b2NrZXQodXJsKTsKKyAgICAgICAgc2V0X2RlZmF1bHRzKHdzKTsKKyAgICAgICAgd3Mub25vcGVu
ID0gZnVuY3Rpb24gKCkKKyAgICAgICAgeworICAgICAgICAgICAgd3MuY2xvc2UoY29kZXNbaWRd
LCByZWFzb25zW2lkXSk7CisgICAgICAgIH07CisgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlv
biAoZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAgICAgICAg
ICBjb2RlID0gY29kZXNbaWRdOworICAgICAgICAgICAgcmVhc29uID0gcmVhc29uc1tpZF07Cisg
ICAgICAgICAgICBkZWJ1ZygiY2xvc2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUiKTsKKyAgICAg
ICAgICAgIGRlYnVnKCIgIGNvZGUgIDogIiArIGNvZGUpOworICAgICAgICAgICAgZGVidWcoIiAg
cmVhc29uOiAiICsgcmVhc29uKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVu
dC53YXNDbGVhbiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJj
b2RlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5yZWFzb24iLCAicmVhc29u
Iik7CisgICAgICAgICAgICBpZiAoKytpZCAhPSBjb2Rlcy5sZW5ndGgpCisgICAgICAgICAgICAg
ICAgdGVzdChpZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH07CisgICAgfSkoMCk7Cit9CisKK3J1bl9jb2RlX3Rlc3QoKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jbG9zZV93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDcwYmE1ZGUwYzVl
ZTFlNjIxYTgyMjc0ZmJlNDU1MTYxOGVmMDI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZV93c2gucHkKQEAgLTAsMCAr
MSw1NiBAQAorIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3Ry
aWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworaW1wb3J0IGxvZ2dpbmcKK19HT09EQllFX01F
U1NBR0UgPSB1J0dvb2RieWUnCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpOgorICAgIHBhc3MgICMgQWx3YXlzIGFjY2VwdC4KKworCitkZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIGxpbmUg
PSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQorICAgICAgICBpZiBsaW5lIGlz
IE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCB1
bmljb2RlKToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5l
LCBiaW5hcnk9RmFsc2UpCisgICAgICAgICAgICBpZiBsaW5lID09IF9HT09EQllFX01FU1NBR0U6
CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXF1
ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PVRydWUpCisKKworZGVmIHdl
Yl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICByZXR1cm4g
cmVxdWVzdC53c19jbG9zZV9jb2RlLCByZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbgorCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmNhNjllODNhMjY1ZmVmYjI4N2Q2ZDZkN2RkYmJiN2UwMjNhNjg2OAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvd29ya2Vycy9jbG9zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5NCBAQAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDA6IFdlYlNvY2tldCBpcyBjbG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9u
IGlzIGVzdGFibGlzaGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFdlYlNvY2tldCBpcyBj
bG9zZWQgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkLgorVmVyaWZ5IFdlYlNv
Y2tldDo6Y2xvc2UgYmVoYXZpb3JzIGluIFdvcmtlci4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCitpbnZhbGlkIGNvZGUgdGVzdDogMAorY29kZSA5OTkgbXVzdCBjYXVzZSBJTlZBTElE
X0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRB
Y2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiAxCitjb2RlIDEwMDEgbXVzdCBjYXVzZSBJTlZB
TElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFs
aWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiAyCitjb2RlIDI5OTkgbXVzdCBjYXVzZSBJ
TlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGlu
dmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiAzCitjb2RlIDUwMDAgbXVzdCBjYXVz
ZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlz
IGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA0Citjb2RlIDY2NTM2IG11c3Qg
Y2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFt
ZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogNQorY29kZSA0Mjk0OTY4
Mjk2IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhj
ZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogNgorY29k
ZSAyOTk5LjkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2Vy
OiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA3
Citjb2RlIE5hTiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6
IDgKK2NvZGUgMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6
IDkKK2NvZGUgMTAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdv
cmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVz
dDogMTAKK2NvZGUgSW5maW5pdHkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1Mg
UEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQg
Y29kZSB0ZXN0OiAxMQorY29kZSAtSW5maW5pdHkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19F
UlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIK
K2ludmFsaWQgY29kZSB0ZXN0OiAxMgorY29kZSBOYU4gbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VT
U19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NF
cnIKK3J1bl9jb2RlX3Rlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2
ZW50LmNvZGUgaXMgYWJub3JtYWxDbG9zdXJlCitza2lwIGludmFsaWQgc3RyaW5nIHRlc3QKK3Jl
YXNvbiB0ZXN0OiAwCisgIHdpdGggaW52YWxpZCByZWFzb246IDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQKK3JlYXNvbiAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0IG11c3QgY2F1c2UgU1lOVEFYX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IHJlc3Vs
dCBpcyBmYWxzZQorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgc3ludGF4RXJy
CityZWFzb24gdGVzdDogMQorICB3aXRoIGludmFsaWQgcmVhc29uOiAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMsKpCityZWFz
b24gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTLCqSBtdXN0IGNhdXNlIFNZTlRBWF9FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBy
ZXN1bHQgaXMgZmFsc2UKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIHN5bnRh
eEVycgorcmVhc29uIHRlc3Q6IDIKK3J1bl9yZWFzb25fdGVzdDogb25jbG9zZSgpLgorUEFTUyBQ
QVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQuY29kZSBpcyBhYm5vcm1hbENsb3N1cmUKK2NvZGUgYW5k
IHJlYXNvbiB0ZXN0OiAwCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6
IDEwMDAKKyAgcmVhc29uOiBPSywgQnllIQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQu
d2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQuY29kZSBpcyBj
b2RlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5yZWFzb24gaXMgcmVhc29uCitjb2Rl
IGFuZCByZWFzb24gdGVzdDogMQorY2xvc2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUKKyAgY29k
ZSAgOiAzMDAwCisgIHJlYXNvbjogMzAwMAorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQu
d2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQuY29kZSBpcyBj
b2RlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5yZWFzb24gaXMgcmVhc29uCitjb2Rl
IGFuZCByZWFzb24gdGVzdDogMgorY2xvc2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUKKyAgY29k
ZSAgOiA0MDAwCisgIHJlYXNvbjogY29kZSBpcyA0MDAwCitQQVNTIFBBU1M6IHdvcmtlcjogY2xv
c2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5j
b2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFz
b24KK2NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAzCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBi
ZQorICBjb2RlICA6IDQ5OTkKKyAgcmVhc29uOiDCqSBHb29nbGUKK1BBU1MgUEFTUzogd29ya2Vy
OiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2
ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQucmVhc29uIGlz
IHJlYXNvbgorRE9ORQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvd29ya2Vycy9jbG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRjNjYyMGU4
NzQwYzY2OWIxYjIxMmRiNGRkMWI5MTI0M2ZlZjIwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS5odG1s
CkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitkZXNjcmlwdGlvbigiVmVyaWZ5IFdlYlNvY2tl
dDo6Y2xvc2UgYmVoYXZpb3JzIGluIFdvcmtlci4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQiLCAwKTsKKworZnVuY3Rpb24gc3RhcnRzV2l0aChzdHIsIHByZWZpeCkKK3sK
KyAgICByZXR1cm4gc3RyLmluZGV4T2YocHJlZml4KSA9PSAwOworfQorCit2YXIgd29ya2VyID0g
bmV3IFdvcmtlcigicmVzb3VyY2VzL2Nsb3NlLmpzIik7Cit3b3JrZXIub25tZXNzYWdlID0gZnVu
Y3Rpb24gKGV2ZW50KQoreworICAgIHZhciBtZXNzYWdlID0gZXZlbnQuZGF0YTsKKyAgICBpZiAo
c3RhcnRzV2l0aChtZXNzYWdlLCAiUEFTUyIpKQorICAgICAgICB0ZXN0UGFzc2VkKG1lc3NhZ2Up
OworICAgIGVsc2UgaWYgKHN0YXJ0c1dpdGgobWVzc2FnZSwgIkZBSUwiKSkKKyAgICAgICAgdGVz
dEZhaWxlZChtZXNzYWdlKQorICAgIGVsc2UKKyAgICAgICAgZGVidWcobWVzc2FnZSk7CisgICAg
aWYgKG1lc3NhZ2UgPT09ICJET05FIikKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cit9OworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLmpzIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9z
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YWNhNjlkNGU4ZGZhZDIzYmI5ODc0MGM2NGJhMjJjNWYwNjdkYjhk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qcwpAQCAtMCwwICsxLDIwNyBAQAorZnVu
Y3Rpb24gcG9zdFJlc3VsdChyZXN1bHQsIGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgdmFyIG1l
c3NhZ2UgPSByZXN1bHQgPyAiUEFTUyIgOiAiRkFJTCI7CisgICAgbWVzc2FnZSArPSAiOiB3b3Jr
ZXI6ICIgKyBhY3R1YWwgKyAiIGlzICI7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIG1lc3Nh
Z2UgKz0gIm5vdCAiOworICAgIG1lc3NhZ2UgKz0gZXhwZWN0ZWQ7CisgICAgcG9zdE1lc3NhZ2Uo
bWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGYWlsZWQobWVzc2FnZSkKK3sKKyAgICBwb3N0
TWVzc2FnZSgiRkFJTDogIiArIG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiBkZWJ1ZyhtZXNzYWdl
KQoreworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKQoreworICAgIHZhciBfcmVzdWx0ID0gZXZhbChhY3R1YWwgKyAiID09
ICIgKyBleHBlY3RlZCk7CisgICAgcG9zdFJlc3VsdChfcmVzdWx0LCBhY3R1YWwsIGV4cGVjdGVk
KTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVUcnVlKGFjdHVhbCkKK3sKKyAgICBzaG91bGRCZShh
Y3R1YWwsICJ0cnVlIik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlRmFsc2UoYWN0dWFsKQorewor
ICAgIHNob3VsZEJlKGFjdHVhbCwgImZhbHNlIik7Cit9CisKK3ZhciBleGNlcHRpb25OYW1lOwor
dmFyIGV4Y2VwdGlvblByb3RvOwordmFyIGNsb3NlRXZlbnQ7Cit2YXIgY29kZTsKK3ZhciByZWFz
b247Cit2YXIgcmVzdWx0OwordmFyIGludmFsaWRBY2Nlc3NFcnIgPSAiSU5WQUxJRF9BQ0NFU1Nf
RVJSIjsKK3ZhciBzeW50YXhFcnIgPSAiU1lOVEFYX0VSUiI7Cit2YXIgbm9ybWFsQ2xvc3VyZSA9
IDEwMDA7Cit2YXIgYWJub3JtYWxDbG9zdXJlID0gMTAwNjsKK3ZhciB1cmwgPSAid3M6Ly8xMjcu
MC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZSI7Cit2YXIgd3M7Cit2YXIgdGVz
dElkOworCit2YXIgY29kZVRlc3RDb2RlcyA9IFsKKyAgICA5OTksIDEwMDEsIDI5OTksIDUwMDAs
IDY1NTM2ICsgMTAwMCwgMHgxMDAwMDAwMDAgKyAxMDAwLCAyOTk5LjksIE5hTiwgIjAiLCAiMTAw
IiwgMS8wLCAtMS8wLCAwLzAsCisgICAgMTAwMC4wCitdOworCit2YXIgcmVhc29uVGVzdFJlYXNv
bnMgPSBbCisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQiLCAvLyAxMjQgQnl0ZQorICAgICIxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMlx1MDBh
OSIsIC8vIGxlbmd0aCBpcyAxMjMsIGJ1dCAxMjQgQnl0ZSBpbiBVVEYtOAorICAgICIxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjMiLCAvLyAxMjMgQnl0ZQorXTsKKwordmFyIHJlYXNvblRlc3RSZXN1bHRzID0gWworICAgIGZh
bHNlLAorICAgIGZhbHNlLAorICAgIHRydWUsCitdOworCit2YXIgb25vcGVuID0gZnVuY3Rpb24g
KCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJvbm9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFy
IG9uZXJyb3IgPSBmdW5jdGlvbiAoKQoreworICAgIHRlc3RGYWlsZWQoIm9uZXJyb3IoKSB3YXMg
Y2FsbGVkLiIpOworfTsKKwordmFyIG9uY2xvc2UgPSBmdW5jdGlvbiAoKQoreworICAgIHRlc3RG
YWlsZWQoIm9uY2xvc2UoKSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFyIG9ubWVzc2FnZSA9IGZ1
bmN0aW9uICgpCit7CisgICAgdGVzdEZhaWxlZCgib25tZXNzYWdlKCkgd2FzIGNhbGxlZC4iKTsK
K307CisKK3ZhciBzZXRfZGVmYXVsdHMgPSBmdW5jdGlvbiAod3MpCit7CisgICAgd3Mub25vcGVu
ID0gb25vcGVuOworICAgIHdzLm9uZXJyb3IgPSBvbmVycm9yOworICAgIHdzLm9uY2xvc2UgPSBv
bmNsb3NlOworICAgIHdzLm9ubWVzc2FnZSA9IG9ubWVzc2FnZTsKK30KKwordmFyIHJ1bl9jb2Rl
X3Rlc3QgPSBmdW5jdGlvbiAoKQoreworICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAg
IHNldF9kZWZhdWx0cyh3cyk7CisgICAgZm9yICh2YXIgaWQgPSAwOyBpZCA8IGNvZGVUZXN0Q29k
ZXMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGlmIChjb2RlVGVzdENvZGVzW2lkXSAhPSBub3Jt
YWxDbG9zdXJlKSB7CisgICAgICAgICAgICBkZWJ1ZygiaW52YWxpZCBjb2RlIHRlc3Q6ICIgKyBp
ZCk7CisgICAgICAgICAgICB3cy5vbmNsb3NlID0gb25jbG9zZTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygicnVuX2NvZGVfdGVzdDogb25jbG9zZSgpLiIpOworICAgICAg
ICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjbG9z
ZUV2ZW50LmNvZGUiLCAiYWJub3JtYWxDbG9zdXJlIik7CisgICAgICAgICAgICAgICAgaWYgKGNs
b3NlRXZlbnQuY29kZSA9PSBhYm5vcm1hbENsb3N1cmUpCisgICAgICAgICAgICAgICAgICAgIHJ1
bl9pbnZhbGlkX3N0cmluZ190ZXN0KCk7CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICB3cy5jbG9zZShjb2RlVGVzdENvZGVzW2lkXSk7CisgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJjb2RlICIgKyBjb2RlVGVzdENv
ZGVzW2lkXSArICIgbXVzdCBjYXVzZSAiICsgaW52YWxpZEFjY2Vzc0Vycik7CisgICAgICAgICAg
ICBleGNlcHRpb25OYW1lID0gZS5uYW1lOworICAgICAgICAgICAgZXhjZXB0aW9uUHJvdG8gPSBP
YmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CisgICAgICAgICAgICAvL3Nob3VsZEJlVHJ1ZSgiZXhj
ZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlKCJleGNlcHRpb25OYW1lIiwgImludmFsaWRBY2Nlc3NFcnIiKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordmFyIHJ1bl9pbnZhbGlkX3N0cmluZ190ZXN0ID0gZnVuY3Rpb24gKCkKK3sK
KyAgICAvLyBUT0RPKHRveW9zaGltKTogdW5wYWlyZWQgc3Vycm9nYXRlcyB0aHJvdyBTWU5UQVhf
RVJSCisgICAgZGVidWcoInNraXAgaW52YWxpZCBzdHJpbmcgdGVzdCIpOworICAgIHJ1bl9yZWFz
b25fdGVzdCgpOworfQorCit2YXIgcnVuX3JlYXNvbl90ZXN0ID0gZnVuY3Rpb24gKG5leHRfdGVz
dCkKK3sKKyAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICBzZXRfZGVmYXVsdHMod3Mp
OworICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCByZWFzb25UZXN0UmVhc29ucy5sZW5ndGg7IGlk
KyspIHsKKyAgICAgICAgZGVidWcoInJlYXNvbiB0ZXN0OiAiICsgaWQpOworICAgICAgICBpZiAo
IXJlYXNvblRlc3RSZXN1bHRzW2lkXSkgeworICAgICAgICAgICAgZGVidWcoIiAgd2l0aCBpbnZh
bGlkIHJlYXNvbjogIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSk7CisgICAgICAgICAgICB3cy5v
bmNsb3NlID0gb25jbG9zZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHdzLm9uY2xv
c2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1Zygi
cnVuX3JlYXNvbl90ZXN0OiBvbmNsb3NlKCkuIik7CisgICAgICAgICAgICAgICAgY2xvc2VFdmVu
dCA9IGU7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5v
cm1hbENsb3N1cmUiKTsKKyAgICAgICAgICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2RlID09IGFi
bm9ybWFsQ2xvc3VyZSkKKyAgICAgICAgICAgICAgICAgICAgcnVuX2NvZGVfYW5kX3JlYXNvbl90
ZXN0KCk7CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICB3cy5jbG9zZShub3JtYWxDbG9zdXJlLCByZWFzb25UZXN0UmVhc29uc1tpZF0pOworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBkZWJ1ZygicmVhc29uICIgKyByZWFzb25U
ZXN0UmVhc29uc1tpZF0gKyAiIG11c3QgY2F1c2UgIiArIHN5bnRheEVycik7CisgICAgICAgICAg
ICByZXN1bHQgPSByZWFzb25UZXN0UmVzdWx0c1tpZF07CisgICAgICAgICAgICBleGNlcHRpb25O
YW1lID0gZS5uYW1lOworICAgICAgICAgICAgZXhjZXB0aW9uUHJvdG8gPSBPYmplY3QuZ2V0UHJv
dG90eXBlT2YoZSk7CisgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCJyZXN1bHQiKTsKKyAgICAg
ICAgICAgIC8vc2hvdWxkQmVUcnVlKCJleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnBy
b3RvdHlwZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4Y2VwdGlvbk5hbWUiLCAic3ludGF4
RXJyIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZhciBydW5fY29kZV9hbmRfcmVhc29uX3Rl
c3QgPSBmdW5jdGlvbiAoKQoreworICAgIHZhciBjb2RlcyA9IFsKKyAgICAgICAgMTAwMCwKKyAg
ICAgICAgMzAwMCwKKyAgICAgICAgNDAwMCwKKyAgICAgICAgNDk5OQorICAgIF07CisgICAgdmFy
IHJlYXNvbnMgPSBbCisgICAgICAgICJPSywgQnllISIsCisgICAgICAgICIzMDAwIiwKKyAgICAg
ICAgImNvZGUgaXMgNDAwMCIsCisgICAgICAgICJcdTAwYTkgR29vZ2xlIgorICAgIF07CisgICAg
KGZ1bmN0aW9uIHRlc3QgKGlkKSB7CisgICAgICAgIGRlYnVnKCJjb2RlIGFuZCByZWFzb24gdGVz
dDogIiArIGlkKTsKKyAgICAgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgICAgIHNl
dF9kZWZhdWx0cyh3cyk7CisgICAgICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9uICgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVzW2lkXSwgcmVhc29uc1tpZF0pOworICAgICAg
ICB9OworICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgY29kZSA9IGNvZGVzW2lkXTsKKyAg
ICAgICAgICAgIHJlYXNvbiA9IHJlYXNvbnNbaWRdOworICAgICAgICAgICAgZGVidWcoImNsb3Nl
IGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlIik7CisgICAgICAgICAgICBkZWJ1ZygiICBjb2RlICA6
ICIgKyBjb2RlKTsKKyAgICAgICAgICAgIGRlYnVnKCIgIHJlYXNvbjogIiArIHJlYXNvbik7Cisg
ICAgICAgICAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LmNvZGUiLCAiY29kZSIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImNsb3NlRXZlbnQucmVhc29uIiwgInJlYXNvbiIpOworICAgICAgICAgICAgaWYgKCsr
aWQgIT0gY29kZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHRlc3QoaWQpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKCJET05FIik7CisgICAgICAgIH07
CisgICAgfSkoMCk7Cit9CisKK3J1bl9jb2RlX3Rlc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MDUyNDQ3
NGU4ZDIzYjFhMDJmOWM3MTEzMTdjY2IzM2E3YmIyNjJjLi5mMmM5N2EyMTg3MzEwNTIwYTk1YzE0
NDdjZWMwYzk5MDNiZTg5NWVjIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDgt
MjUgIFRha2FzaGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtXZWJTb2NrZXRdIFdlYlNvY2tldDo6Y2xvc2UgZGlkbid0IGhhbmRsZSBjb2RlIGFuZCByZWFz
b24gYXJndW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjY5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0czogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xv
c2UuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhX
ZWJTb2NrZXQ6OmNsb3NlQ2FsbGJhY2spOgorICAgICAgICBBZGQgY3VzdG9tIGJyaWRnZSBmb3Ig
V2ViU29ja2V0OjpjbG9zZSgpLgorICAgICAgICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmlkbDoKKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbDo6Y2xvc2UpOgorICAgICAgICBBZGQgY29kZSBhbmQgcmVhc29uIGFyZ3Vt
ZW50cyBoYW5kbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIFNlbmQgYSBjbG9zZSBmcmFtZSB3aXRob3V0IGNv
ZGUgYW5kIHJlYXNvbiBvbiBzZXJ2ZXIgaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWVIaXhpZTc2KToKKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJl
YWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjpjbG9zZSk6CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICBBZGQgY29kZSBhbmQgcmVhc29uIGFyZ3Vt
ZW50cyBoYW5kbGluZy4KKwogMjAxMS0wOC0yMSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29u
QGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4ICdtYWtlIGRpc3QnIGZvciBXZWJLaXRHVEsrLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCmlu
ZGV4IGFmNWRhY2E1NTVlMDg5ZWMxMjI1OGM2MTcyMmM2MDdjZGYzMDE2Y2EuLjY3M2ZhYjc2NGU2
MzQ1NmU3YjEzOTU3OTU4OTRhY2YwZWI0MGZkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC0zOCw3ICszOCw5IEBACiAjaW5jbHVkZSAiS1VSTC5oIgog
I2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2lu
Y2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+Cisj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CkBAIC04NSw2ICs4NywyOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEpTV2ViU29ja2V0Q29uc3RydWN0b3I6OmNvbnN0cnVjdEpTV2ViU29ja2V0KEV4
ZWNTdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMs
IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBXZWJTb2NrZXQsIHdlYlNvY2tldC5nZXQo
KSkpOwogfQogCitKU1ZhbHVlIEpTV2ViU29ja2V0OjpjbG9zZShFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSBzdGF0aWNfY2FzdDxXZWJTb2NrZXQqPihpbXBs
KCkpOworICAgIGludCBhcmd1bWVudENvdW50ID0gc3RhdGljX2Nhc3Q8aW50PihleGVjLT5hcmd1
bWVudENvdW50KCkpOworICAgIGludCBjb2RlID0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVu
dENvZGVOb3RTcGVjaWZpZWQ7CisgICAgU3RyaW5nIHJlYXNvbiA9ICIiOworICAgIGlmIChhcmd1
bWVudENvdW50ID49IDEpIHsKKyAgICAgICAgLy8gW0NsYW1wXSBpbiBvcHRpb25hbCB1bnNpZ25l
ZCBzaG9ydCBjb2RlLgorICAgICAgICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAg
ICAgICAgZG91YmxlIHggPSB2LnRvTnVtYmVyKGV4ZWMpOworICAgICAgICBpZiAoIWlzbmFuKHgp
KQorICAgICAgICAgICAgeCA9IGNsYW1wVG8oeCwgMCwgMHhmZmZmKTsKKyAgICAgICAgY29kZSA9
IGNsYW1wVG9JbnRlZ2VyKHgpOworICAgICAgICBpZiAoYXJndW1lbnRDb3VudCA+PSAyKQorICAg
ICAgICAgICAgLy8gaW4gb3B0aW9uYWwgRE9NU3RyaW5nIHJlYXNvbgorICAgICAgICAgICAgcmVh
c29uID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpKTsK
KyAgICB9CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2ViU29ja2V0LT5jbG9zZShj
b2RlLCByZWFzb24sIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29j
a2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNv
Y2tldEN1c3RvbS5jcHAKaW5kZXggNThhMjdlN2ZhMTNkYjlmYTJkZGMzZDJmZWQzZjdlODk3ZmM5
NzVkNS4uYzdjOWJjYjZmOTFmODczYTIzNTYxZjRkNTFhZmMxODkzMGU0MzlkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0
b20uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTQwLDggKzQwLDEwIEBACiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUg
IlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCisjaW5jbHVkZSAiV2ViU29j
a2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA4LDYg
KzExMCwyOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIHJldHVybiBhcmdzLkhvbGRl
cigpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNsb3NlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBXZWJTb2NrZXQqIHdlYlNvY2tl
dCA9IHRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIGludCBhcmd1bWVudENvdW50ID0gYXJn
cy5MZW5ndGgoKTsKKyAgICBpbnQgY29kZSA9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRD
b2RlTm90U3BlY2lmaWVkOworICAgIFN0cmluZyByZWFzb24gPSAiIjsKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA+PSAxKSB7CisgICAgICAgIC8vIFtDbGFtcF0gaW4gb3B0aW9uYWwgdW5zaWduZWQg
c2hvcnQgY29kZS4KKyAgICAgIGRvdWJsZSB4ID0gYXJnc1swXS0+TnVtYmVyVmFsdWUoKTsKKyAg
ICAgICAgaWYgKCFpc25hbih4KSkKKyAgICAgICAgICAgIHggPSBjbGFtcFRvKHgsIDAsIDB4ZmZm
Zik7CisgICAgICAgIGNvZGUgPSBjbGFtcFRvSW50ZWdlcih4KTsKKyAgICAgICAgaWYgKGFyZ3Vt
ZW50Q291bnQgPj0gMikKKyAgICAgICAgICAgIC8vIGluIG9wdGlvbmFsIERPTVN0cmluZyByZWFz
b24KKyAgICAgICAgICAgIHJlYXNvbiA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzFdLT5Ub1N0cmlu
ZygpKTsKKyAgICB9CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2ViU29ja2V0LT5j
bG9zZShjb2RlLCByZWFzb24sIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKGVjKTsKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCiB9ICAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAppbmRleCBjZDljZTI1MmE0Y2Q1YmQ2N2E3MzljZmM1MzMyNzA4ZTBlZDQ4Y2ZlLi4wOWY4MWI1
MDdhMTAwMWQ2ZTdlYTU5MTcyMTE2ZWE5ZTlmZjdiZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsg
Ly8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9r
ZWQuCiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAg
ICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CiAgICAgLy8gTG9nIHRoZSByZWFzb24gdGV4
dCBhbmQgY2xvc2UgdGhlIGNvbm5lY3Rpb24uIFdpbGwgY2FsbCBkaWRDbG9zZSgpLgogICAgIHZp
cnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2Nvbm5lY3QoKSA9IDA7IC8vIFdpbGwgc3VwcHJlc3MgZGlkQ2xvc2UoKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBmMTc5N2YwODRhY2Y0MDE4YzJk
MzY0NTc3YTE4YjI4ZTQ4NmRmZjZkLi4xMTg5NzU5NzZmNWFjODI0NjMyZjY5OTc0NDA2MzgyMmM3
ZjkyNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI1OCw5
ICsyNTgsMjMgQEAgYm9vbCBXZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gbV9jaGFubmVsLT5zZW5kKG1lc3NhZ2UpOwog
fQogCi12b2lkIFdlYlNvY2tldDo6Y2xvc2UoKQordm9pZCBXZWJTb2NrZXQ6OmNsb3NlKGludCBj
b2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xvc2UiLCB0aGlzKTsKKyAgICBpZiAoY29kZSA9PSBX
ZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCkKKyAgICAgICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xvc2Ugd2l0aG91dCBjb2RlIGFuZCByZWFzb24iLCB0
aGlzKTsKKyAgICBlbHNlIHsKKyAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xv
c2Ugd2l0aCBjb2RlID0gJWQsIHJlYXNvbiA9ICVzIiwgdGhpcywgY29kZSwgcmVhc29uLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBpZiAoIShjb2RlID09IFdlYlNvY2tldENoYW5uZWw6OkNsb3Nl
RXZlbnRDb2RlTm9ybWFsQ2xvc3VyZSB8fCAzMDAwIDw9IGNvZGUgJiYgY29kZSA8PSA0OTk5KSkg
eworICAgICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IGlmIHJlYXNvbiBjb250YWlucyBhbnkg
dW5wYWlyZWQgc3Vycm9nYXRlcywgcmFpc2UgU1lOVEFYX0VSUi4KKyAgICAgICAgaWYgKHJlYXNv
bi51dGY4KCkubGVuZ3RoKCkgPiAxMjMpIHsKKyAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChtX3N0YXRl
ID09IENMT1NJTkcgfHwgbV9zdGF0ZSA9PSBDTE9TRUQpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAobV9zdGF0ZSA9PSBDT05ORUNUSU5HKSB7CkBAIC0yNzMsNyArMjg3LDcgQEAgdm9pZCBXZWJT
b2NrZXQ6OmNsb3NlKCkKICAgICAvLyBkaWRDbG9zZSBub3RpZmljYXRpb24gbWF5IGJlIGFscmVh
ZHkgcXVldWVkLCB3aGljaCB3ZSB3aWxsIGluYWR2ZXJ0ZW50bHkgcHJvY2VzcyB3aGlsZSB3YWl0
aW5nIGZvciBidWZmZXJlZEFtb3VudCgpIHRvIHJldHVybi4KICAgICAvLyBJbiB0aGlzIGNhc2Ug
bV9jaGFubmVsIHdpbGwgYmUgc2V0IHRvIG51bGwgZHVyaW5nIGRpZENsb3NlKCkgY2FsbCwgdGh1
cyB3ZSBuZWVkIHRvIHRlc3QgdmFsaWRuZXNzIG9mIG1fY2hhbm5lbCBoZXJlLgogICAgIGlmICht
X2NoYW5uZWwpCi0gICAgICAgIG1fY2hhbm5lbC0+Y2xvc2UoKTsKKyAgICAgICAgbV9jaGFubmVs
LT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCiBjb25zdCBLVVJMJiBXZWJTb2NrZXQ6OnVybCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5o
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCAyNzEyNTQxZmE5
ZmYyZjNlNzliNDg1YWQ5Mzc3YTQxODY1MTJiMmI1Li44NDlkYjUwNzY4YWY3YTMzZjJhMGI1OTA3
MWIwMWRjMTllODg0ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
NjgsNyArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBzZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgICAgIHZvaWQgY2xv
c2UoKTsKKyAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24s
IEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKICAg
ICAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaWRsCmluZGV4IDgxZDc1NjNmMDdjOTE0Mjc0NWY3ZjI5YjFjZTMyNTVmNTZhNmVj
ZTIuLmNhZDNhNmJmYTFlNjI0OTE0NjE4ZjAzZGFmNGQ0NGQxNTdhMTNmZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKQEAgLTY0LDcgKzY0LDcgQEAgbW9kdWxlIHdl
YnNvY2tldHMgewogICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAg
ICAgICAgIFtSZXF1aXJlc0FsbEFyZ3VtZW50c10gYm9vbGVhbiBzZW5kKGluIERPTVN0cmluZyBk
YXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAg
ICBbQ3VzdG9tXSB2b2lkIGNsb3NlKGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgY29kZSwg
aW4gW09wdGlvbmFsXSBET01TdHJpbmcgcmVhc29uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAog
ICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICAgICAgdm9pZCBhZGRFdmVudExp
c3RlbmVyKGluIERPTVN0cmluZyB0eXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggZWU4NjhmZmIzMTZiYmM3NjdiYmZhNzMzYjEwMjI0
NDU0YzQwNjU4Ni4uODAyM2EwZjIwM2QxMGIwZDU1MWQ0NjliMTkyMjE5MTFkZTBiOTE4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0x
NjAsMTMgKzE2MCwxMyBAQCB1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVk
QW1vdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9oYW5kbGUtPmJ1ZmZlcmVkQW1vdW50KCk7CiB9
CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQordm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NlIiwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX3N1
c3BlbmRlZCk7CiAgICAgaWYgKCFtX2hhbmRsZSkKICAgICAgICAgcmV0dXJuOwotICAgIHN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSgpOworICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShjb2RlLCByZWFz
b24pOwogICAgIGlmIChtX2Nsb3NpbmcgJiYgIW1fY2xvc2luZ1RpbWVyLmlzQWN0aXZlKCkpCiAg
ICAgICAgIG1fY2xvc2luZ1RpbWVyLnN0YXJ0T25lU2hvdCgyICogVENQTWF4aW11bVNlZ21lbnRM
aWZldGltZSk7CiB9CkBAIC00MTEsNyArNDExLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpy
ZXN1bWVUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENoYW5uZWw+KiB0aW1lcikKICAgICAgICAg
ZGlkQ2xvc2VTb2NrZXRTdHJlYW0obV9oYW5kbGUuZ2V0KCkpOwogfQogCi12b2lkIFdlYlNvY2tl
dENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCit2b2lkIFdlYlNvY2tldENoYW5uZWw6
OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7
CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgJWQgJWQiLCB0
aGlzLCBtX2Nsb3NpbmcsIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlKTsKICAgICBpZiAobV9j
bG9zaW5nKQpAQCAtNDIzLDkgKzQyMywxNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSgpCiAgICAgICAgIGJ1Zi5hcHBlbmQoJ1x4ZmYnKTsKICAgICAgICAg
YnVmLmFwcGVuZCgnXDAnKTsKICAgICAgICAgc2VudFN1Y2Nlc3NmdWxseSA9IG1faGFuZGxlLT5z
ZW5kKGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOwotICAgIH0gZWxzZQotICAgICAgICBzZW50U3Vj
Y2Vzc2Z1bGx5ID0gc2VuZEZyYW1lKE9wQ29kZUNsb3NlLCAiIiwgMCk7IC8vIEZJWE1FOiBTZW5k
IHN0YXR1cyBjb2RlIGFuZCByZWFzb24gbWVzc2FnZS4KLQorICAgIH0gZWxzZSB7CisgICAgICAg
IFZlY3RvcjxjaGFyPiBidWY7CisgICAgICAgIGlmICghbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hh
a2UpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5dGUgPSBjb2RlID4+IDg7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxvd0J5dGUgPSBjb2RlOworICAgICAgICAgICAgYnVm
LmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPihoaWdoQnl0ZSkpOworICAgICAgICAgICAgYnVmLmFw
cGVuZChzdGF0aWNfY2FzdDxjaGFyPihsb3dCeXRlKSk7CisgICAgICAgICAgICBidWYuYXBwZW5k
KHJlYXNvbi51dGY4KCkuZGF0YSgpLCByZWFzb24udXRmOCgpLmxlbmd0aCgpKTsKKyAgICAgICAg
fQorICAgICAgICBzZW50U3VjY2Vzc2Z1bGx5ID0gc2VuZEZyYW1lKE9wQ29kZUNsb3NlLCBidWYu
ZGF0YSgpLCBidWYuc2l6ZSgpKTsKKyAgICB9CiAgICAgaWYgKCFzZW50U3VjY2Vzc2Z1bGx5KSB7
CiAgICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTYz
Niw3ICs2NDQsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAg
ICAgICAgICBtX2Nsb3NlRXZlbnRSZWFzb24gPSAiIjsKICAgICAgICAgc2tpcEJ1ZmZlcihmcmFt
ZS5mcmFtZUVuZCAtIG1fYnVmZmVyKTsKICAgICAgICAgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hh
a2UgPSB0cnVlOwotICAgICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoKTsKKyAgICAgICAgc3Rh
cnRDbG9zaW5nSGFuZHNoYWtlKG1fY2xvc2VFdmVudENvZGUsIG1fY2xvc2VFdmVudFJlYXNvbik7
CiAgICAgICAgIGlmIChtX2Nsb3NpbmcpCiAgICAgICAgICAgICBtX2hhbmRsZS0+Y2xvc2UoKTsg
Ly8gQ2xvc2UgYWZ0ZXIgc2VuZGluZyBhIGNsb3NlIGZyYW1lLgogICAgICAgICBicmVhazsKQEAg
LTcxOCw3ICs3MjYsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZUhpeGll
NzYoKQogICAgICAgICAgICAgc2tpcEJ1ZmZlcihuZXh0RnJhbWUgLSBtX2J1ZmZlcik7CiAgICAg
ICAgICAgICBpZiAoZnJhbWVCeXRlID09IDB4ZmYgJiYgIWxlbmd0aCkgewogICAgICAgICAgICAg
ICAgIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBz
dGFydENsb3NpbmdIYW5kc2hha2UoKTsKKyAgICAgICAgICAgICAgICBzdGFydENsb3NpbmdIYW5k
c2hha2UoMCwgIiIpOwogICAgICAgICAgICAgICAgIGlmIChtX2Nsb3NpbmcpCiAgICAgICAgICAg
ICAgICAgICAgIG1faGFuZGxlLT5jbG9zZSgpOyAvLyBjbG9zZSBhZnRlciBzZW5kaW5nIEZGIDAw
LgogICAgICAgICAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oCmluZGV4IDM4ODRmY2Y1M2Q1Y2E0MjBmMjY4NDc1OWZiYjllNTQ1NGNjMTE0
YjguLjEwZGE2NGIwOTA0OWM2YTY2YjIzNWZhMjM3Yzc3N2FkN2QxZjk2OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01OSw3ICs1OSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2wo
KTsKICAgICAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAg
ICAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOyAvLyBTdGFydCBjbG9zaW5nIGhhbmRzaGFrZS4KKyAg
ICAgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7
IC8vIFN0YXJ0IGNsb3NpbmcgaGFuZHNoYWtlLgogICAgICAgICB2aXJ0dWFsIHZvaWQgZmFpbChj
b25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCk7
CiAKQEAgLTc1LDYgKzc1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU29ja2V0U3RyZWFtSGFuZGxl
KiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAogICAgICAgICBlbnVtIENsb3Nl
RXZlbnRDb2RlIHsKKyAgICAgICAgICAgIENsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkID0gLTEs
CiAgICAgICAgICAgICBDbG9zZUV2ZW50Q29kZU5vcm1hbENsb3N1cmUgPSAxMDAwLAogICAgICAg
ICAgICAgQ2xvc2VFdmVudENvZGVHb2luZ0F3YXkgPSAxMDAxLAogICAgICAgICAgICAgQ2xvc2VF
dmVudENvZGVQcm90b2NvbEVycm9yID0gMTAwMiwKQEAgLTk5LDcgKzEwMCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBza2lwQnVmZmVyKHNpemVfdCBsZW4pOwogICAgICAg
ICBib29sIHByb2Nlc3NCdWZmZXIoKTsKICAgICAgICAgdm9pZCByZXN1bWVUaW1lckZpcmVkKFRp
bWVyPFdlYlNvY2tldENoYW5uZWw+KiB0aW1lcik7Ci0gICAgICAgIHZvaWQgc3RhcnRDbG9zaW5n
SGFuZHNoYWtlKCk7CisgICAgICAgIHZvaWQgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgY2xvc2luZ1RpbWVyRmlyZWQo
VGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qKTsKIAogICAgICAgICAvLyBIeWJpLTEwIG9wY29kZXMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDlkYWI4MTJmYzgwMTVmMzg5Zjc0MDhk
MGRlYTdjYmVjZjk2Mjg0ZjMuLjhmZTk0NTkxNzJmZmNlZjMwNGM3OTUxM2QxZjlhOThkMGEzMDk1
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC05NCwxMCArOTQsMTAgQEAgdW5z
aWduZWQgbG9uZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRBbW91
bnQoKSBjb25zdAogICAgIHJldHVybiBtX2JyaWRnZS0+YnVmZmVyZWRBbW91bnQoKTsKIH0KIAot
dm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQordm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmlu
ZyYgcmVhc29uKQogewogICAgIGlmIChtX2JyaWRnZSkKLSAgICAgICAgbV9icmlkZ2UtPmNsb3Nl
KCk7CisgICAgICAgIG1fYnJpZGdlLT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCiB2b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29u
KQpAQCAtMTg3LDEyICsxODcsMTIgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6YnVmZmVyZWRBbW91bnQoKQogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tG
b3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERp
ZEdldEJ1ZmZlcmVkQW1vdW50LCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGJ1ZmZlcmVkQW1vdW50
KSwgbV90YXNrTW9kZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXI6OmNsb3NlKCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlBlZXI6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9tYWluV2ViU29ja2V0Q2hhbm5lbCkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmNsb3NlKCk7CisgICAg
bV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAogdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZmFpbChjb25zdCBTdHJpbmcm
IHJlYXNvbikKQEAgLTM4MywxOSArMzgzLDE5IEBAIHVuc2lnbmVkIGxvbmcgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6YnVmZmVyZWRBbW91bnQoKQogICAgIHJldHVy
biAwOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhy
ZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlcikKK3Zv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJnJlYXNvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VS
VF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBBU1NFUlQocGVl
cik7CiAKLSAgICBwZWVyLT5jbG9zZSgpOworICAgIHBlZXItPmNsb3NlKGNvZGUsIHJlYXNvbik7
CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y2xv
c2UoKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjbG9z
ZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgQVNTRVJUKG1fcGVlcik7
Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygm
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZSwgQWxsb3dD
cm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1Rv
TG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6Om1haW5UaHJlYWRDbG9zZSwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpLCBjb2Rl
LCByZWFzb24pKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
bWFpblRocmVhZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVl
ciwgY29uc3QgU3RyaW5nJiByZWFzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMGRj
MzhjMzJkN2YyNzllNmEyMGEwYzdkNDMzNmM4OGVmNDFiMjY3Ny4uNDNhMjE2ZjVhMzFiZjEwMGU2
YzdkMTYzYmVhZTQ3ODNiMDNkNmJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNjUs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZpcnR1YWwg
dW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBj
bG9zZSgpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb24pOwogICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpOyAvLyBXaWxsIHN1cHByZXNzIGRpZENsb3NlKCku
CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoKTsKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHZv
aWQgYnVmZmVyZWRBbW91bnQoKTsKLSAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lk
IGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgZmFp
bChjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgZGlzY29ubmVjdCgpOwogICAg
ICAgICB2b2lkIHN1c3BlbmQoKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgICAg
ICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAg
ICAgICBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgdW5zaWduZWQg
bG9uZyBidWZmZXJlZEFtb3VudCgpOwotICAgICAgICB2b2lkIGNsb3NlKCk7CisgICAgICAgIHZv
aWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICAgICAgdm9pZCBm
YWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAg
ICAgICAgIHZvaWQgc3VzcGVuZCgpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBl
ZXIqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgc3RhdGljIHZv
aWQgbWFpblRocmVhZFNlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRCdWZmZXJlZEFtb3Vu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwotICAgIHN0YXRpYyB2b2lkIG1haW5U
aHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOworICAgIHN0YXRpYyB2
b2lkIG1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGludCBj
b2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZEZh
aWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7
CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBlZXIqKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU3VzcGVuZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGVlciopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105338</attachid>
            <date>2011-08-26 02:42:11 -0700</date>
            <delta_ts>2011-08-26 02:58:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66925-20110826184209.patch</filename>
            <type>text/plain</type>
            <size>45310</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM4NTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NzMzY2JiOGQ0MjE5YWRhODRlYTE5
Yjc0ZTJmMTc0NWNmYjQ2YzRmLi5mOWQ5N2FhMmFjNzliOTkyMWE0ODY3ZjAxOWRkNTZkZjhmNDEx
YjgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMjUgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIFdlYlNvY2tl
dDo6Y2xvc2UgZGlkbid0IGhhbmRsZSBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2Ut
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qczogQWRkZWQuCisg
ICAgICAgIChwb3N0UmVzdWx0KToKKyAgICAgICAgKHRlc3RGYWlsZWQpOgorICAgICAgICAoZGVi
dWcpOgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVUcnVlKToKKyAgICAg
ICAgKHNob3VsZEJlRmFsc2UpOgorICAgICAgICAob25vcGVuKToKKyAgICAgICAgKG9uZXJyb3Ip
OgorICAgICAgICAob25jbG9zZSk6CisgICAgICAgIChvbm1lc3NhZ2UpOgorICAgICAgICAoc2V0
X2RlZmF1bHRzKToKKyAgICAgICAgKHJ1bl9jb2RlX3Rlc3QuZWxzZS53cy5vbmNsb3NlKToKKyAg
ICAgICAgKHJ1bl9jb2RlX3Rlc3QpOgorICAgICAgICAocnVuX2ludmFsaWRfc3RyaW5nX3Rlc3Qp
OgorICAgICAgICAocnVuX3JlYXNvbl90ZXN0LmVsc2Uud3Mub25jbG9zZSk6CisgICAgICAgIChy
dW5fcmVhc29uX3Rlc3QpOgorICAgICAgICAocnVuX2NvZGVfYW5kX3JlYXNvbl90ZXN0Lik6Cisg
ICAgICAgIChydW5fY29kZV9hbmRfcmVhc29uX3Rlc3QpOgorCiAyMDExLTA4LTI1ICBCZW4gV2Vs
bHMgIDxiZW53ZWxsc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGV4cGVjdGF0aW9u
cyB0byByZW1vdmUgY29uZmxpY3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODBkOTM0YjZkNThmM2Q4MDA0N2M0OWU1NDkyOWUxZTU4MTViNmRmZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Ut
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTA4IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDog
V2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQu
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhl
IGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhh
dmlvcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworaW52YWxpZCBjb2RlIHRlc3Q6
IDAKK2NvZGUgOTk5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlv
blByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9u
TmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMQorY29kZSAxMDAx
IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBE
T01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZh
bGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMgorY29kZSAyOTk5IG11c3QgY2F1c2Ug
SU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24u
cHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJy
CitpbnZhbGlkIGNvZGUgdGVzdDogMworY29kZSA1MDAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NF
U1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlz
IHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNv
ZGUgdGVzdDogNAorY29kZSA2NjUzNiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFT
UyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNT
IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDUK
K2NvZGUgNDI5NDk2ODI5NiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNl
cHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDYKK2NvZGUg
Mjk5OS45IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3Rv
ID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBp
cyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogNworY29kZSBOYU4gbXVzdCBj
YXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2Vw
dGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nl
c3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA4Citjb2RlIDAgbXVzdCBjYXVzZSBJTlZBTElEX0FD
Q0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUg
aXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQg
Y29kZSB0ZXN0OiA5Citjb2RlIDEwMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFT
UyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNT
IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDEw
Citjb2RlIEluZmluaXR5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2Vw
dGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0
aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMTEKK2NvZGUg
LUluZmluaXR5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblBy
b3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFt
ZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMTIKK2NvZGUgTmFOIG11
c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01F
eGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlk
QWNjZXNzRXJyCitydW5fY29kZV90ZXN0OiBvbmNsb3NlKCkuCitQQVNTIGNsb3NlRXZlbnQuY29k
ZSBpcyBhYm5vcm1hbENsb3N1cmUKK3NraXAgaW52YWxpZCBzdHJpbmcgdGVzdAorcmVhc29uIHRl
c3Q6IDAKKyAgd2l0aCBpbnZhbGlkIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNAorcmVhc29uIDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQgbXVzdCBjYXVzZSBTWU5UQVhfRVJSCitQQVNTIHJlc3VsdCBpcyBmYWxzZQorUEFTUyBleGNl
cHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2Vw
dGlvbk5hbWUgaXMgc3ludGF4RXJyCityZWFzb24gdGVzdDogMQorICB3aXRoIGludmFsaWQgcmVh
c29uOiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMsKpCityZWFzb24gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTLCqSBtdXN0IGNhdXNlIFNZTlRBWF9FUlIK
K1BBU1MgcmVzdWx0IGlzIGZhbHNlCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRp
b24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBzeW50YXhFcnIKK3Jl
YXNvbiB0ZXN0OiAyCitydW5fcmVhc29uX3Rlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVu
dC5jb2RlIGlzIGFibm9ybWFsQ2xvc3VyZQorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK2Nsb3Nl
IGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9LLCBC
eWUhCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNv
ZGUgaXMgY29kZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK2NvZGUgYW5kIHJl
YXNvbiB0ZXN0OiAxCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDMw
MDAKKyAgcmVhc29uOiAzMDAwCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFT
UyBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFz
b24KK2NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAyCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBi
ZQorICBjb2RlICA6IDQwMDAKKyAgcmVhc29uOiBjb2RlIGlzIDQwMDAKK1BBU1MgY2xvc2VFdmVu
dC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIGNs
b3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDMKK2Nsb3Nl
IGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogNDk5OQorICByZWFzb246IMKpIEdv
b2dsZQorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgY2xvc2VFdmVudC5j
b2RlIGlzIGNvZGUKK1BBU1MgY2xvc2VFdmVudC5yZWFzb24gaXMgcmVhc29uCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZhYTU1MTEwZWIyYjM2YWZlMjUwODcwYmI1NTgwMmE5YjM4ZGYzNzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Ns
b3NlLmh0bWwKQEAgLTAsMCArMSwxOTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorZGVzY3JpcHRpb24oIlZlcmlmeSBXZWJTb2NrZXQ6OmNsb3NlIGJlaGF2aW9ycy4iKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGV4Y2VwdGlv
bk5hbWU7Cit2YXIgZXhjZXB0aW9uUHJvdG87Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBjb2RlOwor
dmFyIHJlYXNvbjsKK3ZhciByZXN1bHQ7Cit2YXIgaW52YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElE
X0FDQ0VTU19FUlIiOwordmFyIHN5bnRheEVyciA9ICJTWU5UQVhfRVJSIjsKK3ZhciBub3JtYWxD
bG9zdXJlID0gMTAwMDsKK3ZhciBhYm5vcm1hbENsb3N1cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3
czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsK
K3ZhciB0ZXN0SWQ7CisKK3ZhciBjb2RlVGVzdENvZGVzID0gWworICAgIDk5OSwgMTAwMSwgMjk5
OSwgNTAwMCwgNjU1MzYgKyAxMDAwLCAweDEwMDAwMDAwMCArIDEwMDAsIDI5OTkuOSwgTmFOLCAi
MCIsICIxMDAiLCAxLzAsIC0xLzAsIDAvMCwKKyAgICAxMDAwLjAKK107CisKK3ZhciByZWFzb25U
ZXN0UmVhc29ucyA9IFsKKyAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCIsIC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyXHUwMGE5IiwgLy8gbGVuZ3RoIGlzIDEyMywgYnV0IDEyNCBCeXRlIGluIFVURi04CisgICAg
IjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMyIsIC8vIDEyMyBCeXRlCitdOworCit2YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBb
CisgICAgZmFsc2UsCisgICAgZmFsc2UsCisgICAgdHJ1ZSwKK107CisKK3ZhciBvbm9wZW4gPSBm
dW5jdGlvbiAoKQoreworICAgIHRlc3RGYWlsZWQoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9
OworCit2YXIgb25lcnJvciA9IGZ1bmN0aW9uICgpCit7CisgICAgdGVzdEZhaWxlZCgib25lcnJv
cigpIHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgb25jbG9zZSA9IGZ1bmN0aW9uICgpCit7Cisg
ICAgdGVzdEZhaWxlZCgib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgb25tZXNz
YWdlID0gZnVuY3Rpb24gKCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2Fs
bGVkLiIpOworfTsKKwordmFyIHNldF9kZWZhdWx0cyA9IGZ1bmN0aW9uICh3cykKK3sKKyAgICB3
cy5vbm9wZW4gPSBvbm9wZW47CisgICAgd3Mub25lcnJvciA9IG9uZXJyb3I7CisgICAgd3Mub25j
bG9zZSA9IG9uY2xvc2U7CisgICAgd3Mub25tZXNzYWdlID0gb25tZXNzYWdlOworfQorCit2YXIg
cnVuX2NvZGVfdGVzdCA9IGZ1bmN0aW9uICgpCit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVy
bCk7CisgICAgc2V0X2RlZmF1bHRzKHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgY29k
ZVRlc3RDb2Rlcy5sZW5ndGg7IGlkKyspIHsKKyAgICAgICAgaWYgKGNvZGVUZXN0Q29kZXNbaWRd
ICE9IG5vcm1hbENsb3N1cmUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJpbnZhbGlkIGNvZGUgdGVz
dDogIiArIGlkKTsKKyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBvbmNsb3NlOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCJydW5fY29kZV90ZXN0OiBvbmNsb3NlKCkuIik7
CisgICAgICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5vcm1hbENsb3N1cmUiKTsKKyAgICAgICAgICAgICAg
ICBpZiAoY2xvc2VFdmVudC5jb2RlID09IGFibm9ybWFsQ2xvc3VyZSkKKyAgICAgICAgICAgICAg
ICAgICAgcnVuX2ludmFsaWRfc3RyaW5nX3Rlc3QoKTsKKyAgICAgICAgICAgIH07CisgICAgICAg
IH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVUZXN0Q29kZXNbaWRd
KTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZGVidWcoImNvZGUgIiArIGNv
ZGVUZXN0Q29kZXNbaWRdICsgIiBtdXN0IGNhdXNlICIgKyBpbnZhbGlkQWNjZXNzRXJyKTsKKyAg
ICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAgICAgICAgICBleGNlcHRpb25Q
cm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJleGNlcHRpb25OYW1lIiwgImludmFsaWRBY2Nlc3NFcnIiKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKwordmFyIHJ1bl9pbnZhbGlkX3N0cmluZ190ZXN0ID0gZnVuY3Rpb24g
KCkKK3sKKyAgICAvLyBUT0RPKHRveW9zaGltKTogdW5wYWlyZWQgc3Vycm9nYXRlcyB0aHJvdyBT
WU5UQVhfRVJSCisgICAgZGVidWcoInNraXAgaW52YWxpZCBzdHJpbmcgdGVzdCIpOworICAgIHJ1
bl9yZWFzb25fdGVzdCgpOworfQorCit2YXIgcnVuX3JlYXNvbl90ZXN0ID0gZnVuY3Rpb24gKG5l
eHRfdGVzdCkKK3sKKyAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICBzZXRfZGVmYXVs
dHMod3MpOworICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCByZWFzb25UZXN0UmVhc29ucy5sZW5n
dGg7IGlkKyspIHsKKyAgICAgICAgZGVidWcoInJlYXNvbiB0ZXN0OiAiICsgaWQpOworICAgICAg
ICBpZiAoIXJlYXNvblRlc3RSZXN1bHRzW2lkXSkgeworICAgICAgICAgICAgZGVidWcoIiAgd2l0
aCBpbnZhbGlkIHJlYXNvbjogIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSk7CisgICAgICAgICAg
ICB3cy5vbmNsb3NlID0gb25jbG9zZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHdz
Lm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygicnVuX3JlYXNvbl90ZXN0OiBvbmNsb3NlKCkuIik7CisgICAgICAgICAgICAgICAgY2xv
c2VFdmVudCA9IGU7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIs
ICJhYm5vcm1hbENsb3N1cmUiKTsKKyAgICAgICAgICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2Rl
ID09IGFibm9ybWFsQ2xvc3VyZSkKKyAgICAgICAgICAgICAgICAgICAgcnVuX2NvZGVfYW5kX3Jl
YXNvbl90ZXN0KCk7CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICB3cy5jbG9zZShub3JtYWxDbG9zdXJlLCByZWFzb25UZXN0UmVhc29uc1tpZF0p
OworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBkZWJ1ZygicmVhc29uICIgKyBy
ZWFzb25UZXN0UmVhc29uc1tpZF0gKyAiIG11c3QgY2F1c2UgIiArIHN5bnRheEVycik7CisgICAg
ICAgICAgICByZXN1bHQgPSByZWFzb25UZXN0UmVzdWx0c1tpZF07CisgICAgICAgICAgICBleGNl
cHRpb25OYW1lID0gZS5uYW1lOworICAgICAgICAgICAgZXhjZXB0aW9uUHJvdG8gPSBPYmplY3Qu
Z2V0UHJvdG90eXBlT2YoZSk7CisgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCJyZXN1bHQiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlv
bi5wcm90b3R5cGUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJleGNlcHRpb25OYW1lIiwgInN5
bnRheEVyciIpOworICAgICAgICB9CisgICAgfQorfQorCit2YXIgcnVuX2NvZGVfYW5kX3JlYXNv
bl90ZXN0ID0gZnVuY3Rpb24gKCkKK3sKKyAgICB2YXIgY29kZXMgPSBbCisgICAgICAgIDEwMDAs
CisgICAgICAgIDMwMDAsCisgICAgICAgIDQwMDAsCisgICAgICAgIDQ5OTkKKyAgICBdOworICAg
IHZhciByZWFzb25zID0gWworICAgICAgICAiT0ssIEJ5ZSEiLAorICAgICAgICAiMzAwMCIsCisg
ICAgICAgICJjb2RlIGlzIDQwMDAiLAorICAgICAgICAiXHUwMGE5IEdvb2dsZSIKKyAgICBdOwor
ICAgIChmdW5jdGlvbiB0ZXN0IChpZCkgeworICAgICAgICBkZWJ1ZygiY29kZSBhbmQgcmVhc29u
IHRlc3Q6ICIgKyBpZCk7CisgICAgICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAgICAg
ICBzZXRfZGVmYXVsdHMod3MpOworICAgICAgICB3cy5vbm9wZW4gPSBmdW5jdGlvbiAoKQorICAg
ICAgICB7CisgICAgICAgICAgICB3cy5jbG9zZShjb2Rlc1tpZF0sIHJlYXNvbnNbaWRdKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgIGNvZGUgPSBjb2Rlc1tpZF07
CisgICAgICAgICAgICByZWFzb24gPSByZWFzb25zW2lkXTsKKyAgICAgICAgICAgIGRlYnVnKCJj
bG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZSIpOworICAgICAgICAgICAgZGVidWcoIiAgY29k
ZSAgOiAiICsgY29kZSk7CisgICAgICAgICAgICBkZWJ1ZygiICByZWFzb246ICIgKyByZWFzb24p
OworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImNvZGUiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjbG9zZUV2ZW50LnJlYXNvbiIsICJyZWFzb24iKTsKKyAgICAgICAgICAgIGlm
ICgrK2lkICE9IGNvZGVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICB0ZXN0KGlkKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfTsK
KyAgICB9KSgwKTsKK30KKworcnVuX2NvZGVfdGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Ns
b3NlX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xvc2Vfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0NzBiYTVkZTBjNWVlMWU2MjFhODIyNzRmYmU0NTUx
NjE4ZWYwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2Nsb3NlX3dzaC5weQpAQCAtMCwwICsxLDU2IEBACisjIENvcHlyaWdo
dCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScK
KworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFz
cyAgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVx
dWVzdCk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFt
LnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIHVuaWNvZGUpOgorICAgICAgICAg
ICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKKyAg
ICAgICAgICAgIGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRf
bWVzc2FnZShsaW5lLCBiaW5hcnk9VHJ1ZSkKKworCitkZWYgd2ViX3NvY2tldF9wYXNzaXZlX2Ns
b3NpbmdfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHJldHVybiByZXF1ZXN0LndzX2Nsb3NlX2Nv
ZGUsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtl
cnMvY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2E2OWU4
M2EyNjVmZWZiMjg3ZDZkNmQ3ZGRiYmI3ZTAyM2E2ODY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDk0IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2Vi
U29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNv
bm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlv
cnMgaW4gV29ya2VyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK2ludmFsaWQgY29k
ZSB0ZXN0OiAwCitjb2RlIDk5OSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQ
QVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBj
b2RlIHRlc3Q6IDEKK2NvZGUgMTAwMSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFT
UyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxp
ZCBjb2RlIHRlc3Q6IDIKK2NvZGUgMjk5OSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgor
UEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52
YWxpZCBjb2RlIHRlc3Q6IDMKK2NvZGUgNTAwMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VS
UgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0Vycgor
aW52YWxpZCBjb2RlIHRlc3Q6IDQKK2NvZGUgNjY1MzYgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VT
U19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NF
cnIKK2ludmFsaWQgY29kZSB0ZXN0OiA1Citjb2RlIDQyOTQ5NjgyOTYgbXVzdCBjYXVzZSBJTlZB
TElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFs
aWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA2Citjb2RlIDI5OTkuOSBtdXN0IGNhdXNl
IElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMg
aW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDcKK2NvZGUgTmFOIG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBp
cyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogOAorY29kZSAwIG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBp
cyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogOQorY29kZSAxMDAgbXVzdCBj
YXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1l
IGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiAxMAorY29kZSBJbmZpbml0
eSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDExCitjb2Rl
IC1JbmZpbml0eSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6
IDEyCitjb2RlIE5hTiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3
b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorcnVuX2NvZGVfdGVzdDog
b25jbG9zZSgpLgorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQuY29kZSBpcyBhYm5vcm1h
bENsb3N1cmUKK3NraXAgaW52YWxpZCBzdHJpbmcgdGVzdAorcmVhc29uIHRlc3Q6IDAKKyAgd2l0
aCBpbnZhbGlkIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNAorcmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQgbXVzdCBjYXVz
ZSBTWU5UQVhfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogcmVzdWx0IGlzIGZhbHNlCitQQVNTIFBB
U1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBzeW50YXhFcnIKK3JlYXNvbiB0ZXN0OiAxCisg
IHdpdGggaW52YWxpZCByZWFzb246IDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEywqkKK3JlYXNvbiAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMsKpIG11c3Qg
Y2F1c2UgU1lOVEFYX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IHJlc3VsdCBpcyBmYWxzZQorUEFT
UyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgc3ludGF4RXJyCityZWFzb24gdGVzdDog
MgorcnVuX3JlYXNvbl90ZXN0OiBvbmNsb3NlKCkuCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VF
dmVudC5jb2RlIGlzIGFibm9ybWFsQ2xvc3VyZQorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK2Ns
b3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9L
LCBCeWUhCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQ
QVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29y
a2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK2NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAx
CitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDMwMDAKKyAgcmVhc29u
OiAzMDAwCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQ
QVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29y
a2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK2NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAy
CitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDQwMDAKKyAgcmVhc29u
OiBjb2RlIGlzIDQwMDAKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQ
QVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgorY29kZSBhbmQgcmVhc29u
IHRlc3Q6IDMKK2Nsb3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogNDk5OQor
ICByZWFzb246IMKpIEdvb2dsZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQud2FzQ2xl
YW4gaXMgdHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQuY29kZSBpcyBjb2RlCitQ
QVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5yZWFzb24gaXMgcmVhc29uCitET05FCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Ns
b3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dv
cmtlcnMvY2xvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGM2NjIwZTg3NDBjNjY5YjFiMjEyZGI0ZGQx
YjkxMjQzZmVmMjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0bWwKQEAgLTAsMCArMSw0MCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlvcnMg
aW4gV29ya2VyLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwor
CitmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgcHJlZml4KQoreworICAgIHJldHVybiBzdHIuaW5k
ZXhPZihwcmVmaXgpID09IDA7Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJj
ZXMvY2xvc2UuanMiKTsKK3dvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7Cisg
ICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGlmIChzdGFydHNXaXRoKG1lc3NhZ2Us
ICJQQVNTIikpCisgICAgICAgIHRlc3RQYXNzZWQobWVzc2FnZSk7CisgICAgZWxzZSBpZiAoc3Rh
cnRzV2l0aChtZXNzYWdlLCAiRkFJTCIpKQorICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpCisg
ICAgZWxzZQorICAgICAgICBkZWJ1ZyhtZXNzYWdlKTsKKyAgICBpZiAobWVzc2FnZSA9PT0gIkRP
TkUiKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
d29ya2Vycy9yZXNvdXJjZXMvY2xvc2UuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlh
Y2E2OWQ0ZThkZmFkMjNiYjk4NzQwYzY0YmEyMmM1ZjA2N2RiOGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVz
b3VyY2VzL2Nsb3NlLmpzCkBAIC0wLDAgKzEsMjA3IEBACitmdW5jdGlvbiBwb3N0UmVzdWx0KHJl
c3VsdCwgYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IHJlc3VsdCA/ICJQ
QVNTIiA6ICJGQUlMIjsKKyAgICBtZXNzYWdlICs9ICI6IHdvcmtlcjogIiArIGFjdHVhbCArICIg
aXMgIjsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgbWVzc2FnZSArPSAibm90ICI7CisgICAg
bWVzc2FnZSArPSBleHBlY3RlZDsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlKTsKK30KKworZnVu
Y3Rpb24gdGVzdEZhaWxlZChtZXNzYWdlKQoreworICAgIHBvc3RNZXNzYWdlKCJGQUlMOiAiICsg
bWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIGRlYnVnKG1lc3NhZ2UpCit7CisgICAgcG9zdE1lc3Nh
Z2UobWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7
CisgICAgdmFyIF9yZXN1bHQgPSBldmFsKGFjdHVhbCArICIgPT0gIiArIGV4cGVjdGVkKTsKKyAg
ICBwb3N0UmVzdWx0KF9yZXN1bHQsIGFjdHVhbCwgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBz
aG91bGRCZVRydWUoYWN0dWFsKQoreworICAgIHNob3VsZEJlKGFjdHVhbCwgInRydWUiKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkQmVGYWxzZShhY3R1YWwpCit7CisgICAgc2hvdWxkQmUoYWN0dWFs
LCAiZmFsc2UiKTsKK30KKwordmFyIGV4Y2VwdGlvbk5hbWU7Cit2YXIgZXhjZXB0aW9uUHJvdG87
Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBjb2RlOwordmFyIHJlYXNvbjsKK3ZhciByZXN1bHQ7Cit2
YXIgaW52YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElEX0FDQ0VTU19FUlIiOwordmFyIHN5bnRheEVy
ciA9ICJTWU5UQVhfRVJSIjsKK3ZhciBub3JtYWxDbG9zdXJlID0gMTAwMDsKK3ZhciBhYm5vcm1h
bENsb3N1cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsKK3ZhciB0ZXN0SWQ7CisKK3ZhciBjb2RlVGVz
dENvZGVzID0gWworICAgIDk5OSwgMTAwMSwgMjk5OSwgNTAwMCwgNjU1MzYgKyAxMDAwLCAweDEw
MDAwMDAwMCArIDEwMDAsIDI5OTkuOSwgTmFOLCAiMCIsICIxMDAiLCAxLzAsIC0xLzAsIDAvMCwK
KyAgICAxMDAwLjAKK107CisKK3ZhciByZWFzb25UZXN0UmVhc29ucyA9IFsKKyAgICAiMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNCIsIC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyXHUwMGE5IiwgLy8gbGVuZ3RoIGlzIDEy
MywgYnV0IDEyNCBCeXRlIGluIFVURi04CisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMyIsIC8vIDEyMyBCeXRlCitd
OworCit2YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBbCisgICAgZmFsc2UsCisgICAgZmFsc2UsCisg
ICAgdHJ1ZSwKK107CisKK3ZhciBvbm9wZW4gPSBmdW5jdGlvbiAoKQoreworICAgIHRlc3RGYWls
ZWQoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgb25lcnJvciA9IGZ1bmN0aW9u
ICgpCit7CisgICAgdGVzdEZhaWxlZCgib25lcnJvcigpIHdhcyBjYWxsZWQuIik7Cit9OworCit2
YXIgb25jbG9zZSA9IGZ1bmN0aW9uICgpCit7CisgICAgdGVzdEZhaWxlZCgib25jbG9zZSgpIHdh
cyBjYWxsZWQuIik7Cit9OworCit2YXIgb25tZXNzYWdlID0gZnVuY3Rpb24gKCkKK3sKKyAgICB0
ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFyIHNldF9kZWZh
dWx0cyA9IGZ1bmN0aW9uICh3cykKK3sKKyAgICB3cy5vbm9wZW4gPSBvbm9wZW47CisgICAgd3Mu
b25lcnJvciA9IG9uZXJyb3I7CisgICAgd3Mub25jbG9zZSA9IG9uY2xvc2U7CisgICAgd3Mub25t
ZXNzYWdlID0gb25tZXNzYWdlOworfQorCit2YXIgcnVuX2NvZGVfdGVzdCA9IGZ1bmN0aW9uICgp
Cit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgc2V0X2RlZmF1bHRzKHdzKTsK
KyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgY29kZVRlc3RDb2Rlcy5sZW5ndGg7IGlkKyspIHsK
KyAgICAgICAgaWYgKGNvZGVUZXN0Q29kZXNbaWRdICE9IG5vcm1hbENsb3N1cmUpIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJpbnZhbGlkIGNvZGUgdGVzdDogIiArIGlkKTsKKyAgICAgICAgICAgIHdz
Lm9uY2xvc2UgPSBvbmNsb3NlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3Mub25j
bG9zZSA9IGZ1bmN0aW9uIChlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVn
KCJydW5fY29kZV90ZXN0OiBvbmNsb3NlKCkuIik7CisgICAgICAgICAgICAgICAgY2xvc2VFdmVu
dCA9IGU7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5v
cm1hbENsb3N1cmUiKTsKKyAgICAgICAgICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2RlID09IGFi
bm9ybWFsQ2xvc3VyZSkKKyAgICAgICAgICAgICAgICAgICAgcnVuX2ludmFsaWRfc3RyaW5nX3Rl
c3QoKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIHdzLmNsb3NlKGNvZGVUZXN0Q29kZXNbaWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgZGVidWcoImNvZGUgIiArIGNvZGVUZXN0Q29kZXNbaWRdICsgIiBtdXN0IGNh
dXNlICIgKyBpbnZhbGlkQWNjZXNzRXJyKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBl
Lm5hbWU7CisgICAgICAgICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVP
ZihlKTsKKyAgICAgICAgICAgIC8vc2hvdWxkQmVUcnVlKCJleGNlcHRpb25Qcm90byA9PT0gRE9N
RXhjZXB0aW9uLnByb3RvdHlwZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4Y2VwdGlvbk5h
bWUiLCAiaW52YWxpZEFjY2Vzc0VyciIpOworICAgICAgICB9CisgICAgfQorfQorCit2YXIgcnVu
X2ludmFsaWRfc3RyaW5nX3Rlc3QgPSBmdW5jdGlvbiAoKQoreworICAgIC8vIFRPRE8odG95b3No
aW0pOiB1bnBhaXJlZCBzdXJyb2dhdGVzIHRocm93IFNZTlRBWF9FUlIKKyAgICBkZWJ1Zygic2tp
cCBpbnZhbGlkIHN0cmluZyB0ZXN0Iik7CisgICAgcnVuX3JlYXNvbl90ZXN0KCk7Cit9CisKK3Zh
ciBydW5fcmVhc29uX3Rlc3QgPSBmdW5jdGlvbiAobmV4dF90ZXN0KQoreworICAgIHdzID0gbmV3
IFdlYlNvY2tldCh1cmwpOworICAgIHNldF9kZWZhdWx0cyh3cyk7CisgICAgZm9yICh2YXIgaWQg
PSAwOyBpZCA8IHJlYXNvblRlc3RSZWFzb25zLmxlbmd0aDsgaWQrKykgeworICAgICAgICBkZWJ1
ZygicmVhc29uIHRlc3Q6ICIgKyBpZCk7CisgICAgICAgIGlmICghcmVhc29uVGVzdFJlc3VsdHNb
aWRdKSB7CisgICAgICAgICAgICBkZWJ1ZygiICB3aXRoIGludmFsaWQgcmVhc29uOiAiICsgcmVh
c29uVGVzdFJlYXNvbnNbaWRdKTsKKyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBvbmNsb3NlOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCJydW5fcmVhc29uX3Rlc3Q6IG9u
Y2xvc2UoKS4iKTsKKyAgICAgICAgICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImFibm9ybWFsQ2xvc3VyZSIpOworICAg
ICAgICAgICAgICAgIGlmIChjbG9zZUV2ZW50LmNvZGUgPT0gYWJub3JtYWxDbG9zdXJlKQorICAg
ICAgICAgICAgICAgICAgICBydW5fY29kZV9hbmRfcmVhc29uX3Rlc3QoKTsKKyAgICAgICAgICAg
IH07CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKG5vcm1h
bENsb3N1cmUsIHJlYXNvblRlc3RSZWFzb25zW2lkXSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIGRlYnVnKCJyZWFzb24gIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSArICIg
bXVzdCBjYXVzZSAiICsgc3ludGF4RXJyKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlYXNvblRl
c3RSZXN1bHRzW2lkXTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAg
ICAgICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlRmFsc2UoInJlc3VsdCIpOworICAgICAgICAgICAgLy9zaG91bGRCZVRy
dWUoImV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiZXhjZXB0aW9uTmFtZSIsICJzeW50YXhFcnIiKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordmFyIHJ1bl9jb2RlX2FuZF9yZWFzb25fdGVzdCA9IGZ1bmN0aW9uICgpCit7
CisgICAgdmFyIGNvZGVzID0gWworICAgICAgICAxMDAwLAorICAgICAgICAzMDAwLAorICAgICAg
ICA0MDAwLAorICAgICAgICA0OTk5CisgICAgXTsKKyAgICB2YXIgcmVhc29ucyA9IFsKKyAgICAg
ICAgIk9LLCBCeWUhIiwKKyAgICAgICAgIjMwMDAiLAorICAgICAgICAiY29kZSBpcyA0MDAwIiwK
KyAgICAgICAgIlx1MDBhOSBHb29nbGUiCisgICAgXTsKKyAgICAoZnVuY3Rpb24gdGVzdCAoaWQp
IHsKKyAgICAgICAgZGVidWcoImNvZGUgYW5kIHJlYXNvbiB0ZXN0OiAiICsgaWQpOworICAgICAg
ICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICAgICAgc2V0X2RlZmF1bHRzKHdzKTsKKyAg
ICAgICAgd3Mub25vcGVuID0gZnVuY3Rpb24gKCkKKyAgICAgICAgeworICAgICAgICAgICAgd3Mu
Y2xvc2UoY29kZXNbaWRdLCByZWFzb25zW2lkXSk7CisgICAgICAgIH07CisgICAgICAgIHdzLm9u
Y2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2xvc2VFdmVudCA9
IGU7CisgICAgICAgICAgICBjb2RlID0gY29kZXNbaWRdOworICAgICAgICAgICAgcmVhc29uID0g
cmVhc29uc1tpZF07CisgICAgICAgICAgICBkZWJ1ZygiY2xvc2UgY29kZSBhbmQgcmVhc29uIG11
c3QgYmUiKTsKKyAgICAgICAgICAgIGRlYnVnKCIgIGNvZGUgIDogIiArIGNvZGUpOworICAgICAg
ICAgICAgZGVidWcoIiAgcmVhc29uOiAiICsgcmVhc29uKTsKKyAgICAgICAgICAgIHNob3VsZEJl
VHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNsb3Nl
RXZlbnQuY29kZSIsICJjb2RlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5y
ZWFzb24iLCAicmVhc29uIik7CisgICAgICAgICAgICBpZiAoKytpZCAhPSBjb2Rlcy5sZW5ndGgp
CisgICAgICAgICAgICAgICAgdGVzdChpZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgcG9zdE1lc3NhZ2UoIkRPTkUiKTsKKyAgICAgICAgfTsKKyAgICB9KSgwKTsKK30KKwor
cnVuX2NvZGVfdGVzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE2ZDU3ZTZhM2RhNmMxNTJiNDNkOTBlMmI5
ZjM1N2FhNWM3YmU3N2UuLmFjYjg3ZjFiNjRhOTc3M2RkN2ZhYWIzYjkzNDNiNzkzMjdlZDcwNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMS0wOC0yNSAgVGFrYXNoaSBUb3lvc2hp
bWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dlYlNvY2tldF0gV2ViU29j
a2V0OjpjbG9zZSBkaWRuJ3QgaGFuZGxlIGNvZGUgYW5kIHJlYXNvbiBhcmd1bWVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjkyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS5odG1sCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNv
Y2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYlNvY2tldDo6Y2xvc2VDYWxs
YmFjayk6CisgICAgICAgIEFkZCBjdXN0b20gYnJpZGdlIGZvciBXZWJTb2NrZXQ6OmNsb3NlKCku
CisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6Y2xvc2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjbG9z
ZSk6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzIGhhbmRsaW5nLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKToK
KyAgICAgICAgU2VuZCBhIGNsb3NlIGZyYW1lIHdpdGhvdXQgY29kZSBhbmQgcmVhc29uIG9uIHNl
cnZlciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2VzLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dENoYW5uZWw6OnByb2Nlc3NGcmFtZUhpeGllNzYpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3Nl
KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Lmg6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzIGhhbmRsaW5nLgorCiAy
MDExLTA4LTI1ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYlNvY2tldDogRml4IGluZGVudGF0aW9uIG9mIFdlYlNvY2tldCBoZWFkZXIgZmlsZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAppbmRl
eCBhZjVkYWNhNTU1ZTA4OWVjMTIyNThjNjE3MjJjNjA3Y2RmMzAxNmNhLi42NzNmYWI3NjRlNjM0
NTZlN2IxMzk1Nzk1ODk0YWNmMGViNDBmZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMzgsNyArMzgsOSBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNp
bmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNpbmNs
dWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwpAQCAtODUsNiArODcsMjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dlYlNvY2tldChFeGVj
U3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihleGVjLCBq
c0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgV2ViU29ja2V0LCB3ZWJTb2NrZXQuZ2V0KCkp
KTsKIH0KIAorSlNWYWx1ZSBKU1dlYlNvY2tldDo6Y2xvc2UoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gc3RhdGljX2Nhc3Q8V2ViU29ja2V0Kj4oaW1wbCgp
KTsKKyAgICBpbnQgYXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oZXhlYy0+YXJndW1l
bnRDb3VudCgpKTsKKyAgICBpbnQgY29kZSA9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRD
b2RlTm90U3BlY2lmaWVkOworICAgIFN0cmluZyByZWFzb24gPSAiIjsKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA+PSAxKSB7CisgICAgICAgIC8vIFtDbGFtcF0gaW4gb3B0aW9uYWwgdW5zaWduZWQg
c2hvcnQgY29kZS4KKyAgICAgICAgSlNWYWx1ZSB2ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
ICAgIGRvdWJsZSB4ID0gdi50b051bWJlcihleGVjKTsKKyAgICAgICAgaWYgKCFpc25hbih4KSkK
KyAgICAgICAgICAgIHggPSBjbGFtcFRvKHgsIDAsIDB4ZmZmZik7CisgICAgICAgIGNvZGUgPSBj
bGFtcFRvSW50ZWdlcih4KTsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnQgPj0gMikKKyAgICAg
ICAgICAgIC8vIGluIG9wdGlvbmFsIERPTVN0cmluZyByZWFzb24KKyAgICAgICAgICAgIHJlYXNv
biA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKSk7Cisg
ICAgfQorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHdlYlNvY2tldC0+Y2xvc2UoY29k
ZSwgcmVhc29uLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tl
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2Nr
ZXRDdXN0b20uY3BwCmluZGV4IDU4YTI3ZTdmYTEzZGI5ZmEyZGRjM2QyZmVkM2Y3ZTg5N2ZjOTc1
ZDUuLmM3YzliY2I2ZjkxZjg3M2EyMzU2MWY0ZDUxYWZjMTg5MzBlNDM5ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9t
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC00MCw4ICs0MCwxMCBAQAogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJW
OFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2luY2x1ZGUgIldlYlNvY2tl
dENoYW5uZWwuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwOCw2ICsx
MTAsMjkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0Ojpjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICByZXR1cm4gYXJncy5Ib2xkZXIo
KTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0OjpjbG9zZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQg
PSB0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudCA9IGFyZ3Mu
TGVuZ3RoKCk7CisgICAgaW50IGNvZGUgPSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29k
ZU5vdFNwZWNpZmllZDsKKyAgICBTdHJpbmcgcmVhc29uID0gIiI7CisgICAgaWYgKGFyZ3VtZW50
Q291bnQgPj0gMSkgeworICAgICAgICAvLyBbQ2xhbXBdIGluIG9wdGlvbmFsIHVuc2lnbmVkIHNo
b3J0IGNvZGUuCisgICAgICBkb3VibGUgeCA9IGFyZ3NbMF0tPk51bWJlclZhbHVlKCk7CisgICAg
ICAgIGlmICghaXNuYW4oeCkpCisgICAgICAgICAgICB4ID0gY2xhbXBUbyh4LCAwLCAweGZmZmYp
OworICAgICAgICBjb2RlID0gY2xhbXBUb0ludGVnZXIoeCk7CisgICAgICAgIGlmIChhcmd1bWVu
dENvdW50ID49IDIpCisgICAgICAgICAgICAvLyBpbiBvcHRpb25hbCBET01TdHJpbmcgcmVhc29u
CisgICAgICAgICAgICByZWFzb24gPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXS0+VG9TdHJpbmco
KSk7CisgICAgfQorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHdlYlNvY2tldC0+Y2xv
c2UoY29kZSwgcmVhc29uLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihlYyk7CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKwogfSAgLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgK
aW5kZXggY2Q5Y2UyNTJhNGNkNWJkNjdhNzM5Y2ZjNTMzMjcwOGUwZWQ0OGNmZS4uMDlmODFiNTA3
YTEwMDFkNmU3ZWE1OTE3MjExNmVhOWU5ZmY3YmQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSA9IDA7IC8v
IFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2Vk
LgogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogICAg
IHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbikgPSAwOwogICAgIC8vIExvZyB0aGUgcmVhc29uIHRleHQg
YW5kIGNsb3NlIHRoZSBjb25uZWN0aW9uLiBXaWxsIGNhbGwgZGlkQ2xvc2UoKS4KICAgICB2aXJ0
dWFsIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNjb25uZWN0KCkgPSAwOyAvLyBXaWxsIHN1cHByZXNzIGRpZENsb3NlKCkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggMTM5MjQ5YTY2ZjA2YTYzODFjZDFk
NmExYTlmM2IxNDA2ZTc3Yjc4Ni4uMWEwODBjMGE4NjdkMjk1MDRlNTg5NjZiZmY1YWVkYWFhMzcy
ZGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNTgsOSAr
MjU4LDIzIEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKIH0K
IAotdm9pZCBXZWJTb2NrZXQ6OmNsb3NlKCkKK3ZvaWQgV2ViU29ja2V0OjpjbG9zZShpbnQgY29k
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIiwgdGhpcyk7CisgICAgaWYgKGNvZGUgPT0gV2Vi
U29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQpCisgICAgICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIHdpdGhvdXQgY29kZSBhbmQgcmVhc29uIiwgdGhp
cyk7CisgICAgZWxzZSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3Nl
IHdpdGggY29kZSA9ICVkLCByZWFzb24gPSAlcyIsIHRoaXMsIGNvZGUsIHJlYXNvbi51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgaWYgKCEoY29kZSA9PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2
ZW50Q29kZU5vcm1hbENsb3N1cmUgfHwgMzAwMCA8PSBjb2RlICYmIGNvZGUgPD0gNDk5OSkpIHsK
KyAgICAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBpZiByZWFzb24gY29udGFpbnMgYW55IHVu
cGFpcmVkIHN1cnJvZ2F0ZXMsIHJhaXNlIFNZTlRBWF9FUlIuCisgICAgICAgIGlmIChyZWFzb24u
dXRmOCgpLmxlbmd0aCgpID4gMTIzKSB7CisgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAobV9zdGF0ZSA9
PSBDTE9TSU5HIHx8IG1fc3RhdGUgPT0gQ0xPU0VEKQogICAgICAgICByZXR1cm47CiAgICAgaWYg
KG1fc3RhdGUgPT0gQ09OTkVDVElORykgewpAQCAtMjczLDcgKzI4Nyw3IEBAIHZvaWQgV2ViU29j
a2V0OjpjbG9zZSgpCiAgICAgLy8gZGlkQ2xvc2Ugbm90aWZpY2F0aW9uIG1heSBiZSBhbHJlYWR5
IHF1ZXVlZCwgd2hpY2ggd2Ugd2lsbCBpbmFkdmVydGVudGx5IHByb2Nlc3Mgd2hpbGUgd2FpdGlu
ZyBmb3IgYnVmZmVyZWRBbW91bnQoKSB0byByZXR1cm4uCiAgICAgLy8gSW4gdGhpcyBjYXNlIG1f
Y2hhbm5lbCB3aWxsIGJlIHNldCB0byBudWxsIGR1cmluZyBkaWRDbG9zZSgpIGNhbGwsIHRodXMg
d2UgbmVlZCB0byB0ZXN0IHZhbGlkbmVzcyBvZiBtX2NoYW5uZWwgaGVyZS4KICAgICBpZiAobV9j
aGFubmVsKQotICAgICAgICBtX2NoYW5uZWwtPmNsb3NlKCk7CisgICAgICAgIG1fY2hhbm5lbC0+
Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAogY29uc3QgS1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggZjhlYjMzYjRmYTQ0
NjEwNjNhNTU4YmU1YmZkZDVmZDIxNDkzZmMwMS4uZmM0MDRmZWJlOTY5ODM5OGZiNzI4MDdkOGE0
MTQ3OTQ4ZTc5YzdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTY4
LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBjbG9zZSgpOworICAgIHZvaWQgY2xvc2Uo
aW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBj
b25zdCBLVVJMJiB1cmwoKSBjb25zdDsKICAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKaW5kZXggODFkNzU2M2YwN2M5MTQy
NzQ1ZjdmMjliMWNlMzI1NWY1NmE2ZWNlMi4uY2FkM2E2YmZhMWU2MjQ5MTQ2MThmMDNkYWY0ZDQ0
ZDE1N2ExM2ZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbApAQCAt
NjQsNyArNjQsNyBAQCBtb2R1bGUgd2Vic29ja2V0cyB7CiAgICAgICAgICAgICBzZXR0ZXIgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgW1JlcXVpcmVzQWxsQXJndW1lbnRzXSBib29s
ZWFuIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEpIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAg
ICB2b2lkIGNsb3NlKCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgY2xvc2UoaW4gW09wdGlvbmFs
XSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyByZWFzb24pIHJh
aXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQog
ICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA1NjI4NGU1
OTI5YmU1NWExMmQ5MmNjNjY2MzVlYjA2MWRmNDc2MGZkLi4zMmZjYTNiM2Y4OWJjZTFkOWUzYjQw
ZjBhYTRkNWM4ZTY4NzVmN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE2OSwxMyArMTY5LDEzIEBAIHVuc2lnbmVkIGxvbmcgV2Vi
U29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAogICAgIHJldHVybiBtX2hhbmRs
ZS0+YnVmZmVyZWRBbW91bnQoKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZSgp
Cit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJl
YXNvbikKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2UiLCB0
aGlzKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBpZiAoIW1faGFuZGxlKQogICAg
ICAgICByZXR1cm47Ci0gICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CisgICAgc3RhcnRDbG9z
aW5nSGFuZHNoYWtlKGNvZGUsIHJlYXNvbik7CiAgICAgaWYgKG1fY2xvc2luZyAmJiAhbV9jbG9z
aW5nVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9jbG9zaW5nVGltZXIuc3RhcnRPbmVTaG90
KDIgKiBUQ1BNYXhpbXVtU2VnbWVudExpZmV0aW1lKTsKIH0KQEAgLTQyMiw3ICs0MjIsNyBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hh
bm5lbD4qIHRpbWVyKQogICAgICAgICBkaWRDbG9zZVNvY2tldFN0cmVhbShtX2hhbmRsZS5nZXQo
KSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkK
K3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgY2xvc2luZyAlZCAlZCIsIHRoaXMsIG1fY2xvc2luZywgbV9yZWNlaXZlZENsb3NpbmdI
YW5kc2hha2UpOwogICAgIGlmIChtX2Nsb3NpbmcpCkBAIC00MzYsOSArNDM2LDE3IEBAIHZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKICAgICAgICAgICAgIG1f
aGFuZGxlLT5kaXNjb25uZWN0KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICB9IGVsc2UKLSAgICAgICAgZW5xdWV1ZVJhd0ZyYW1lKE9wQ29kZUNsb3NlLCAiIiwgMCk7IC8v
IEZJWE1FOiBTZW5kIHN0YXR1cyBjb2RlIGFuZCByZWFzb24gbWVzc2FnZS4KLQorICAgIH0gZWxz
ZSB7CisgICAgICAgIFZlY3RvcjxjaGFyPiBidWY7CisgICAgICAgIGlmICghbV9yZWNlaXZlZENs
b3NpbmdIYW5kc2hha2UpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5dGUgPSBj
b2RlID4+IDg7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxvd0J5dGUgPSBjb2RlOworICAg
ICAgICAgICAgYnVmLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPihoaWdoQnl0ZSkpOworICAgICAg
ICAgICAgYnVmLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPihsb3dCeXRlKSk7CisgICAgICAgICAg
ICBidWYuYXBwZW5kKHJlYXNvbi51dGY4KCkuZGF0YSgpLCByZWFzb24udXRmOCgpLmxlbmd0aCgp
KTsKKyAgICAgICAgfQorICAgICAgICBlbnF1ZXVlUmF3RnJhbWUoT3BDb2RlQ2xvc2UsIGJ1Zi5k
YXRhKCksIGJ1Zi5zaXplKCkpOworICAgIH0KICAgICBtX2Nsb3NpbmcgPSB0cnVlOwogICAgIGlm
IChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgp
OwpAQCAtNjQ1LDcgKzY1Myw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1l
KCkKICAgICAgICAgICAgIG1fY2xvc2VFdmVudFJlYXNvbiA9ICIiOwogICAgICAgICBza2lwQnVm
ZmVyKGZyYW1lLmZyYW1lRW5kIC0gbV9idWZmZXIpOwogICAgICAgICBtX3JlY2VpdmVkQ2xvc2lu
Z0hhbmRzaGFrZSA9IHRydWU7Ci0gICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOworICAg
ICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UobV9jbG9zZUV2ZW50Q29kZSwgbV9jbG9zZUV2ZW50
UmVhc29uKTsKICAgICAgICAgaWYgKG1fY2xvc2luZykgewogICAgICAgICAgICAgbV9vdXRnb2lu
Z0ZyYW1lUXVldWVTdGF0dXMgPSBPdXRnb2luZ0ZyYW1lUXVldWVDbG9zaW5nOwogICAgICAgICAg
ICAgcHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwpAQCAtNzI2LDcgKzczNCw3IEBAIGJvb2wg
V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lSGl4aWU3NigpCiAgICAgICAgICAgICBza2lw
QnVmZmVyKG5leHRGcmFtZSAtIG1fYnVmZmVyKTsKICAgICAgICAgICAgIGlmIChmcmFtZUJ5dGUg
PT0gMHhmZiAmJiAhbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgbV9yZWNlaXZlZENsb3NpbmdI
YW5kc2hha2UgPSB0cnVlOwotICAgICAgICAgICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgp
OworICAgICAgICAgICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgwLCAiIik7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fY2xvc2luZykKICAgICAgICAgICAgICAgICAgICAgbV9oYW5kbGUtPmNs
b3NlKCk7IC8vIGNsb3NlIGFmdGVyIHNlbmRpbmcgRkYgMDAuCiAgICAgICAgICAgICB9IGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5o
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggZGY0
ZmYzMjc0ODc4N2MyMjk3OWEyYTYwMzc2NTdiMDFiOWEwYWNiYS4uNDcyMWQ4MzlkYjljY2Q1NWEx
M2ExNmZjMWU2MDM2ZDNjZGFmZGFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U3RyaW5nIHN1YnByb3RvY29sKCk7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsgLy8gU3RhcnQgY2xvc2luZyBoYW5kc2hh
a2UuCisgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNv
bik7IC8vIFN0YXJ0IGNsb3NpbmcgaGFuZHNoYWtlLgogICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNv
bnN0IFN0cmluZyYgcmVhc29uKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpOwogCkBA
IC03Niw2ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKTsKIAogICAgIGVudW0gQ2xvc2VFdmVudENvZGUgeworICAgICAgICBDbG9z
ZUV2ZW50Q29kZU5vdFNwZWNpZmllZCA9IC0xLAogICAgICAgICBDbG9zZUV2ZW50Q29kZU5vcm1h
bENsb3N1cmUgPSAxMDAwLAogICAgICAgICBDbG9zZUV2ZW50Q29kZUdvaW5nQXdheSA9IDEwMDEs
CiAgICAgICAgIENsb3NlRXZlbnRDb2RlUHJvdG9jb2xFcnJvciA9IDEwMDIsCkBAIC0xMDAsNyAr
MTAxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNraXBCdWZmZXIoc2l6ZV90IGxlbik7CiAgICAg
Ym9vbCBwcm9jZXNzQnVmZmVyKCk7CiAgICAgdm9pZCByZXN1bWVUaW1lckZpcmVkKFRpbWVyPFdl
YlNvY2tldENoYW5uZWw+Kik7Ci0gICAgdm9pZCBzdGFydENsb3NpbmdIYW5kc2hha2UoKTsKKyAg
ICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFz
b24pOwogICAgIHZvaWQgY2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4q
KTsKIAogICAgIC8vIEh5YmktMTAgb3Bjb2Rlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAK
aW5kZXggOWRhYjgxMmZjODAxNWYzODlmNzQwOGQwZGVhN2NiZWNmOTYyODRmMy4uOGZlOTQ1OTE3
MmZmY2VmMzA0Yzc5NTEzZDFmOWE5OGQwYTMwOTU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTk0LDEwICs5NCwxMCBAQCB1bnNpZ25lZCBsb25nIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYnJp
ZGdlLT5idWZmZXJlZEFtb3VudCgpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjpjbG9zZSgpCit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgaWYgKG1fYnJp
ZGdlKQotICAgICAgICBtX2JyaWRnZS0+Y2xvc2UoKTsKKyAgICAgICAgbV9icmlkZ2UtPmNsb3Nl
KGNvZGUsIHJlYXNvbik7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCkBAIC0xODcsMTIgKzE4NywxMiBAQCB2b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpidWZmZXJlZEFtb3VudCgp
CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkR2V0QnVmZmVyZWRBbW91bnQsIG1fd29ya2Vy
Q2xpZW50V3JhcHBlciwgYnVmZmVyZWRBbW91bnQpLCBtX3Rhc2tNb2RlKTsKIH0KIAotdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y2xvc2UoKQordm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0
IFN0cmluZyYgcmVhc29uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYg
KCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQogICAgICAgICByZXR1cm47Ci0gICAgbV9tYWluV2Vi
U29ja2V0Q2hhbm5lbC0+Y2xvc2UoKTsKKyAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5jbG9z
ZShjb2RlLCByZWFzb24pOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpQZWVyOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKQpAQCAtMzgzLDE5ICszODMsMTkg
QEAgdW5zaWduZWQgbG9uZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdl
OjpidWZmZXJlZEFtb3VudCgpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBlZXIqIHBlZXIsIGludCBjb2RlLCBjb25zdCBTdHJpbmcmcmVhc29uKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5p
c0RvY3VtZW50KCkpOwogICAgIEFTU0VSVChwZWVyKTsKIAotICAgIHBlZXItPmNsb3NlKCk7Cisg
ICAgcGVlci0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjbG9zZSgpCit2b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJl
YXNvbikKIHsKICAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
VG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6bWFpblRocmVhZENsb3NlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlcikpKTsK
KyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlLCBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKG1fcGVlciksIGNvZGUsIHJlYXNvbikpOwogfQogCiB2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkRmFpbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCAwZGMzOGMzMmQ3ZjI3OWU2YTIwYTBjN2Q0MzM2Yzg4
ZWY0MWIyNjc3Li40M2EyMTZmNWEzMWJmMTAwZTZjN2QxNjNiZWFlNDc4M2IwM2Q2YmYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CisgICAgdmlydHVhbCB2b2lkIGNs
b3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgdmlydHVhbCB2b2lkIGZh
aWwoY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCk7
IC8vIFdpbGwgc3VwcHJlc3MgZGlkQ2xvc2UoKS4KICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgp
OwpAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3Qg
S1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgICAgICB2b2lkIHNlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgdm9pZCBidWZmZXJlZEFtb3VudCgpOwotICAgICAg
ICB2b2lkIGNsb3NlKCk7CisgICAgICAgIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmlu
ZyYgcmVhc29uKTsKICAgICAgICAgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAg
ICAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAgICAgICAgIHZvaWQgc3VzcGVuZCgpOwpAQCAtMTI1
LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOwogICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCk7Ci0gICAg
ICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb24pOwogICAgICAgICB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pOwog
ICAgICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKICAgICAgICAgdm9pZCBzdXNwZW5kKCk7CkBAIC0x
NjAsNyArMTYwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ29ubmVj
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmIHByb3RvY29sKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU2VuZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgc3RhdGlj
IHZvaWQgbWFpblRocmVhZEJ1ZmZlcmVkQW1vdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQ
ZWVyKik7Ci0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQZWVyKik7CisgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENsb3NlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsK
ICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkRmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGVlciosIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFk
RGVzdHJveShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwogICAgIHN0YXRpYyB2b2lk
IG1haW5UaHJlYWRTdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105340</attachid>
            <date>2011-08-26 02:58:52 -0700</date>
            <delta_ts>2011-08-31 02:54:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66925-20110826185850.patch</filename>
            <type>text/plain</type>
            <size>45312</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM4NTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NzMzY2JiOGQ0MjE5YWRhODRlYTE5
Yjc0ZTJmMTc0NWNmYjQ2YzRmLi5mOWQ5N2FhMmFjNzliOTkyMWE0ODY3ZjAxOWRkNTZkZjhmNDEx
YjgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMjUgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIFdlYlNvY2tl
dDo6Y2xvc2UgZGlkbid0IGhhbmRsZSBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2Ut
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qczogQWRkZWQuCisg
ICAgICAgIChwb3N0UmVzdWx0KToKKyAgICAgICAgKHRlc3RGYWlsZWQpOgorICAgICAgICAoZGVi
dWcpOgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVUcnVlKToKKyAgICAg
ICAgKHNob3VsZEJlRmFsc2UpOgorICAgICAgICAob25vcGVuKToKKyAgICAgICAgKG9uZXJyb3Ip
OgorICAgICAgICAob25jbG9zZSk6CisgICAgICAgIChvbm1lc3NhZ2UpOgorICAgICAgICAoc2V0
X2RlZmF1bHRzKToKKyAgICAgICAgKHJ1bl9jb2RlX3Rlc3QuZWxzZS53cy5vbmNsb3NlKToKKyAg
ICAgICAgKHJ1bl9jb2RlX3Rlc3QpOgorICAgICAgICAocnVuX2ludmFsaWRfc3RyaW5nX3Rlc3Qp
OgorICAgICAgICAocnVuX3JlYXNvbl90ZXN0LmVsc2Uud3Mub25jbG9zZSk6CisgICAgICAgIChy
dW5fcmVhc29uX3Rlc3QpOgorICAgICAgICAocnVuX2NvZGVfYW5kX3JlYXNvbl90ZXN0Lik6Cisg
ICAgICAgIChydW5fY29kZV9hbmRfcmVhc29uX3Rlc3QpOgorCiAyMDExLTA4LTI1ICBCZW4gV2Vs
bHMgIDxiZW53ZWxsc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGV4cGVjdGF0aW9u
cyB0byByZW1vdmUgY29uZmxpY3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODBkOTM0YjZkNThmM2Q4MDA0N2M0OWU1NDkyOWUxZTU4MTViNmRmZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Ut
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTA4IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDog
V2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQu
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhl
IGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhh
dmlvcnMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworaW52YWxpZCBjb2RlIHRlc3Q6
IDAKK2NvZGUgOTk5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlv
blByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9u
TmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMQorY29kZSAxMDAx
IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBE
T01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZh
bGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMgorY29kZSAyOTk5IG11c3QgY2F1c2Ug
SU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24u
cHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJy
CitpbnZhbGlkIGNvZGUgdGVzdDogMworY29kZSA1MDAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NF
U1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlz
IHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNv
ZGUgdGVzdDogNAorY29kZSA2NjUzNiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFT
UyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNT
IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDUK
K2NvZGUgNDI5NDk2ODI5NiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNl
cHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDYKK2NvZGUg
Mjk5OS45IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3Rv
ID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBp
cyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogNworY29kZSBOYU4gbXVzdCBj
YXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2Vw
dGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nl
c3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA4Citjb2RlIDAgbXVzdCBjYXVzZSBJTlZBTElEX0FD
Q0VTU19FUlIKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUg
aXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQg
Y29kZSB0ZXN0OiA5Citjb2RlIDEwMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFT
UyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNT
IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDEw
Citjb2RlIEluZmluaXR5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2Vw
dGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0
aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMTEKK2NvZGUg
LUluZmluaXR5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblBy
b3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFt
ZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMTIKK2NvZGUgTmFOIG11
c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01F
eGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlk
QWNjZXNzRXJyCitydW5fY29kZV90ZXN0OiBvbmNsb3NlKCkuCitQQVNTIGNsb3NlRXZlbnQuY29k
ZSBpcyBhYm5vcm1hbENsb3N1cmUKK3NraXAgaW52YWxpZCBzdHJpbmcgdGVzdAorcmVhc29uIHRl
c3Q6IDAKKyAgd2l0aCBpbnZhbGlkIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNAorcmVhc29uIDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQgbXVzdCBjYXVzZSBTWU5UQVhfRVJSCitQQVNTIHJlc3VsdCBpcyBmYWxzZQorUEFTUyBleGNl
cHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2Vw
dGlvbk5hbWUgaXMgc3ludGF4RXJyCityZWFzb24gdGVzdDogMQorICB3aXRoIGludmFsaWQgcmVh
c29uOiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMsKpCityZWFzb24gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTLCqSBtdXN0IGNhdXNlIFNZTlRBWF9FUlIK
K1BBU1MgcmVzdWx0IGlzIGZhbHNlCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRp
b24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBzeW50YXhFcnIKK3Jl
YXNvbiB0ZXN0OiAyCitydW5fcmVhc29uX3Rlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVu
dC5jb2RlIGlzIGFibm9ybWFsQ2xvc3VyZQorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK2Nsb3Nl
IGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9LLCBC
eWUhCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNv
ZGUgaXMgY29kZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK2NvZGUgYW5kIHJl
YXNvbiB0ZXN0OiAxCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDMw
MDAKKyAgcmVhc29uOiAzMDAwCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFT
UyBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFz
b24KK2NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAyCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBi
ZQorICBjb2RlICA6IDQwMDAKKyAgcmVhc29uOiBjb2RlIGlzIDQwMDAKK1BBU1MgY2xvc2VFdmVu
dC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIGNs
b3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDMKK2Nsb3Nl
IGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogNDk5OQorICByZWFzb246IMKpIEdv
b2dsZQorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgY2xvc2VFdmVudC5j
b2RlIGlzIGNvZGUKK1BBU1MgY2xvc2VFdmVudC5yZWFzb24gaXMgcmVhc29uCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZhYTU1MTEwZWIyYjM2YWZlMjUwODcwYmI1NTgwMmE5YjM4ZGYzNzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Ns
b3NlLmh0bWwKQEAgLTAsMCArMSwxOTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPgorZGVzY3JpcHRpb24oIlZlcmlmeSBXZWJTb2NrZXQ6OmNsb3NlIGJlaGF2aW9ycy4iKTsK
Kword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldl
YktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGV4Y2VwdGlv
bk5hbWU7Cit2YXIgZXhjZXB0aW9uUHJvdG87Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBjb2RlOwor
dmFyIHJlYXNvbjsKK3ZhciByZXN1bHQ7Cit2YXIgaW52YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElE
X0FDQ0VTU19FUlIiOwordmFyIHN5bnRheEVyciA9ICJTWU5UQVhfRVJSIjsKK3ZhciBub3JtYWxD
bG9zdXJlID0gMTAwMDsKK3ZhciBhYm5vcm1hbENsb3N1cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3
czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsK
K3ZhciB0ZXN0SWQ7CisKK3ZhciBjb2RlVGVzdENvZGVzID0gWworICAgIDk5OSwgMTAwMSwgMjk5
OSwgNTAwMCwgNjU1MzYgKyAxMDAwLCAweDEwMDAwMDAwMCArIDEwMDAsIDI5OTkuOSwgTmFOLCAi
MCIsICIxMDAiLCAxLzAsIC0xLzAsIDAvMCwKKyAgICAxMDAwLjAKK107CisKK3ZhciByZWFzb25U
ZXN0UmVhc29ucyA9IFsKKyAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCIsIC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyXHUwMGE5IiwgLy8gbGVuZ3RoIGlzIDEyMywgYnV0IDEyNCBCeXRlIGluIFVURi04CisgICAg
IjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMyIsIC8vIDEyMyBCeXRlCitdOworCit2YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBb
CisgICAgZmFsc2UsCisgICAgZmFsc2UsCisgICAgdHJ1ZSwKK107CisKK3ZhciBvbm9wZW4gPSBm
dW5jdGlvbiAoKQoreworICAgIHRlc3RGYWlsZWQoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9
OworCit2YXIgb25lcnJvciA9IGZ1bmN0aW9uICgpCit7CisgICAgdGVzdEZhaWxlZCgib25lcnJv
cigpIHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgb25jbG9zZSA9IGZ1bmN0aW9uICgpCit7Cisg
ICAgdGVzdEZhaWxlZCgib25jbG9zZSgpIHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgb25tZXNz
YWdlID0gZnVuY3Rpb24gKCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2Fs
bGVkLiIpOworfTsKKwordmFyIHNldF9kZWZhdWx0cyA9IGZ1bmN0aW9uICh3cykKK3sKKyAgICB3
cy5vbm9wZW4gPSBvbm9wZW47CisgICAgd3Mub25lcnJvciA9IG9uZXJyb3I7CisgICAgd3Mub25j
bG9zZSA9IG9uY2xvc2U7CisgICAgd3Mub25tZXNzYWdlID0gb25tZXNzYWdlOworfQorCit2YXIg
cnVuX2NvZGVfdGVzdCA9IGZ1bmN0aW9uICgpCit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVy
bCk7CisgICAgc2V0X2RlZmF1bHRzKHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgY29k
ZVRlc3RDb2Rlcy5sZW5ndGg7IGlkKyspIHsKKyAgICAgICAgaWYgKGNvZGVUZXN0Q29kZXNbaWRd
ICE9IG5vcm1hbENsb3N1cmUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJpbnZhbGlkIGNvZGUgdGVz
dDogIiArIGlkKTsKKyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBvbmNsb3NlOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCJydW5fY29kZV90ZXN0OiBvbmNsb3NlKCkuIik7
CisgICAgICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5vcm1hbENsb3N1cmUiKTsKKyAgICAgICAgICAgICAg
ICBpZiAoY2xvc2VFdmVudC5jb2RlID09IGFibm9ybWFsQ2xvc3VyZSkKKyAgICAgICAgICAgICAg
ICAgICAgcnVuX2ludmFsaWRfc3RyaW5nX3Rlc3QoKTsKKyAgICAgICAgICAgIH07CisgICAgICAg
IH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVUZXN0Q29kZXNbaWRd
KTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZGVidWcoImNvZGUgIiArIGNv
ZGVUZXN0Q29kZXNbaWRdICsgIiBtdXN0IGNhdXNlICIgKyBpbnZhbGlkQWNjZXNzRXJyKTsKKyAg
ICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAgICAgICAgICBleGNlcHRpb25Q
cm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJleGNlcHRpb25OYW1lIiwgImludmFsaWRBY2Nlc3NFcnIiKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKwordmFyIHJ1bl9pbnZhbGlkX3N0cmluZ190ZXN0ID0gZnVuY3Rpb24g
KCkKK3sKKyAgICAvLyBUT0RPKHRveW9zaGltKTogdW5wYWlyZWQgc3Vycm9nYXRlcyB0aHJvdyBT
WU5UQVhfRVJSCisgICAgZGVidWcoInNraXAgaW52YWxpZCBzdHJpbmcgdGVzdCIpOworICAgIHJ1
bl9yZWFzb25fdGVzdCgpOworfQorCit2YXIgcnVuX3JlYXNvbl90ZXN0ID0gZnVuY3Rpb24gKG5l
eHRfdGVzdCkKK3sKKyAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICBzZXRfZGVmYXVs
dHMod3MpOworICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCByZWFzb25UZXN0UmVhc29ucy5sZW5n
dGg7IGlkKyspIHsKKyAgICAgICAgZGVidWcoInJlYXNvbiB0ZXN0OiAiICsgaWQpOworICAgICAg
ICBpZiAoIXJlYXNvblRlc3RSZXN1bHRzW2lkXSkgeworICAgICAgICAgICAgZGVidWcoIiAgd2l0
aCBpbnZhbGlkIHJlYXNvbjogIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSk7CisgICAgICAgICAg
ICB3cy5vbmNsb3NlID0gb25jbG9zZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHdz
Lm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygicnVuX3JlYXNvbl90ZXN0OiBvbmNsb3NlKCkuIik7CisgICAgICAgICAgICAgICAgY2xv
c2VFdmVudCA9IGU7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIs
ICJhYm5vcm1hbENsb3N1cmUiKTsKKyAgICAgICAgICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2Rl
ID09IGFibm9ybWFsQ2xvc3VyZSkKKyAgICAgICAgICAgICAgICAgICAgcnVuX2NvZGVfYW5kX3Jl
YXNvbl90ZXN0KCk7CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICB3cy5jbG9zZShub3JtYWxDbG9zdXJlLCByZWFzb25UZXN0UmVhc29uc1tpZF0p
OworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBkZWJ1ZygicmVhc29uICIgKyBy
ZWFzb25UZXN0UmVhc29uc1tpZF0gKyAiIG11c3QgY2F1c2UgIiArIHN5bnRheEVycik7CisgICAg
ICAgICAgICByZXN1bHQgPSByZWFzb25UZXN0UmVzdWx0c1tpZF07CisgICAgICAgICAgICBleGNl
cHRpb25OYW1lID0gZS5uYW1lOworICAgICAgICAgICAgZXhjZXB0aW9uUHJvdG8gPSBPYmplY3Qu
Z2V0UHJvdG90eXBlT2YoZSk7CisgICAgICAgICAgICBzaG91bGRCZUZhbHNlKCJyZXN1bHQiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlv
bi5wcm90b3R5cGUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJleGNlcHRpb25OYW1lIiwgInN5
bnRheEVyciIpOworICAgICAgICB9CisgICAgfQorfQorCit2YXIgcnVuX2NvZGVfYW5kX3JlYXNv
bl90ZXN0ID0gZnVuY3Rpb24gKCkKK3sKKyAgICB2YXIgY29kZXMgPSBbCisgICAgICAgIDEwMDAs
CisgICAgICAgIDMwMDAsCisgICAgICAgIDQwMDAsCisgICAgICAgIDQ5OTkKKyAgICBdOworICAg
IHZhciByZWFzb25zID0gWworICAgICAgICAiT0ssIEJ5ZSEiLAorICAgICAgICAiMzAwMCIsCisg
ICAgICAgICJjb2RlIGlzIDQwMDAiLAorICAgICAgICAiXHUwMGE5IEdvb2dsZSIKKyAgICBdOwor
ICAgIChmdW5jdGlvbiB0ZXN0IChpZCkgeworICAgICAgICBkZWJ1ZygiY29kZSBhbmQgcmVhc29u
IHRlc3Q6ICIgKyBpZCk7CisgICAgICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAgICAg
ICBzZXRfZGVmYXVsdHMod3MpOworICAgICAgICB3cy5vbm9wZW4gPSBmdW5jdGlvbiAoKQorICAg
ICAgICB7CisgICAgICAgICAgICB3cy5jbG9zZShjb2Rlc1tpZF0sIHJlYXNvbnNbaWRdKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgIGNvZGUgPSBjb2Rlc1tpZF07
CisgICAgICAgICAgICByZWFzb24gPSByZWFzb25zW2lkXTsKKyAgICAgICAgICAgIGRlYnVnKCJj
bG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZSIpOworICAgICAgICAgICAgZGVidWcoIiAgY29k
ZSAgOiAiICsgY29kZSk7CisgICAgICAgICAgICBkZWJ1ZygiICByZWFzb246ICIgKyByZWFzb24p
OworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7CisgICAg
ICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImNvZGUiKTsKKyAgICAgICAgICAg
IHNob3VsZEJlKCJjbG9zZUV2ZW50LnJlYXNvbiIsICJyZWFzb24iKTsKKyAgICAgICAgICAgIGlm
ICgrK2lkICE9IGNvZGVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICB0ZXN0KGlkKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfTsK
KyAgICB9KSgwKTsKK30KKworcnVuX2NvZGVfdGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Ns
b3NlX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xvc2Vfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0NzBiYTVkZTBjNWVlMWU2MjFhODIyNzRmYmU0NTUx
NjE4ZWYwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2Nsb3NlX3dzaC5weQpAQCAtMCwwICsxLDU2IEBACisjIENvcHlyaWdo
dCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScK
KworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFz
cyAgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVx
dWVzdCk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFt
LnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIHVuaWNvZGUpOgorICAgICAgICAg
ICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKKyAg
ICAgICAgICAgIGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRf
bWVzc2FnZShsaW5lLCBiaW5hcnk9VHJ1ZSkKKworCitkZWYgd2ViX3NvY2tldF9wYXNzaXZlX2Ns
b3NpbmdfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHJldHVybiByZXF1ZXN0LndzX2Nsb3NlX2Nv
ZGUsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtl
cnMvY2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2E2OWU4
M2EyNjVmZWZiMjg3ZDZkNmQ3ZGRiYmI3ZTAyM2E2ODY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDk0IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2Vi
U29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNv
bm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlv
cnMgaW4gV29ya2VyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK2ludmFsaWQgY29k
ZSB0ZXN0OiAwCitjb2RlIDk5OSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQ
QVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBj
b2RlIHRlc3Q6IDEKK2NvZGUgMTAwMSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFT
UyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxp
ZCBjb2RlIHRlc3Q6IDIKK2NvZGUgMjk5OSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgor
UEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52
YWxpZCBjb2RlIHRlc3Q6IDMKK2NvZGUgNTAwMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VS
UgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0Vycgor
aW52YWxpZCBjb2RlIHRlc3Q6IDQKK2NvZGUgNjY1MzYgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VT
U19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NF
cnIKK2ludmFsaWQgY29kZSB0ZXN0OiA1Citjb2RlIDQyOTQ5NjgyOTYgbXVzdCBjYXVzZSBJTlZB
TElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFs
aWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA2Citjb2RlIDI5OTkuOSBtdXN0IGNhdXNl
IElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMg
aW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDcKK2NvZGUgTmFOIG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBp
cyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogOAorY29kZSAwIG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBp
cyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogOQorY29kZSAxMDAgbXVzdCBj
YXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1l
IGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiAxMAorY29kZSBJbmZpbml0
eSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDExCitjb2Rl
IC1JbmZpbml0eSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6
IDEyCitjb2RlIE5hTiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3
b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorcnVuX2NvZGVfdGVzdDog
b25jbG9zZSgpLgorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQuY29kZSBpcyBhYm5vcm1h
bENsb3N1cmUKK3NraXAgaW52YWxpZCBzdHJpbmcgdGVzdAorcmVhc29uIHRlc3Q6IDAKKyAgd2l0
aCBpbnZhbGlkIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNAorcmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQgbXVzdCBjYXVz
ZSBTWU5UQVhfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogcmVzdWx0IGlzIGZhbHNlCitQQVNTIFBB
U1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBzeW50YXhFcnIKK3JlYXNvbiB0ZXN0OiAxCisg
IHdpdGggaW52YWxpZCByZWFzb246IDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEywqkKK3JlYXNvbiAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMsKpIG11c3Qg
Y2F1c2UgU1lOVEFYX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IHJlc3VsdCBpcyBmYWxzZQorUEFT
UyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgc3ludGF4RXJyCityZWFzb24gdGVzdDog
MgorcnVuX3JlYXNvbl90ZXN0OiBvbmNsb3NlKCkuCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VF
dmVudC5jb2RlIGlzIGFibm9ybWFsQ2xvc3VyZQorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK2Ns
b3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9L
LCBCeWUhCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQ
QVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29y
a2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK2NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAx
CitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDMwMDAKKyAgcmVhc29u
OiAzMDAwCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQ
QVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29y
a2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK2NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAy
CitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDQwMDAKKyAgcmVhc29u
OiBjb2RlIGlzIDQwMDAKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQ
QVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgorY29kZSBhbmQgcmVhc29u
IHRlc3Q6IDMKK2Nsb3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogNDk5OQor
ICByZWFzb246IMKpIEdvb2dsZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQud2FzQ2xl
YW4gaXMgdHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQuY29kZSBpcyBjb2RlCitQ
QVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5yZWFzb24gaXMgcmVhc29uCitET05FCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Ns
b3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dv
cmtlcnMvY2xvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGM2NjIwZTg3NDBjNjY5YjFiMjEyZGI0ZGQx
YjkxMjQzZmVmMjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0bWwKQEAgLTAsMCArMSw0MCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+
PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlvcnMg
aW4gV29ya2VyLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFByb3RvY29sRW5hYmxlZCIsIDApOwor
CitmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgcHJlZml4KQoreworICAgIHJldHVybiBzdHIuaW5k
ZXhPZihwcmVmaXgpID09IDA7Cit9CisKK3ZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJj
ZXMvY2xvc2UuanMiKTsKK3dvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7Cisg
ICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGlmIChzdGFydHNXaXRoKG1lc3NhZ2Us
ICJQQVNTIikpCisgICAgICAgIHRlc3RQYXNzZWQobWVzc2FnZSk7CisgICAgZWxzZSBpZiAoc3Rh
cnRzV2l0aChtZXNzYWdlLCAiRkFJTCIpKQorICAgICAgICB0ZXN0RmFpbGVkKG1lc3NhZ2UpCisg
ICAgZWxzZQorICAgICAgICBkZWJ1ZyhtZXNzYWdlKTsKKyAgICBpZiAobWVzc2FnZSA9PT0gIkRP
TkUiKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
d29ya2Vycy9yZXNvdXJjZXMvY2xvc2UuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlh
Y2E2OWQ0ZThkZmFkMjNiYjk4NzQwYzY0YmEyMmM1ZjA2N2RiOGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVz
b3VyY2VzL2Nsb3NlLmpzCkBAIC0wLDAgKzEsMjA3IEBACitmdW5jdGlvbiBwb3N0UmVzdWx0KHJl
c3VsdCwgYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IHJlc3VsdCA/ICJQ
QVNTIiA6ICJGQUlMIjsKKyAgICBtZXNzYWdlICs9ICI6IHdvcmtlcjogIiArIGFjdHVhbCArICIg
aXMgIjsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgbWVzc2FnZSArPSAibm90ICI7CisgICAg
bWVzc2FnZSArPSBleHBlY3RlZDsKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlKTsKK30KKworZnVu
Y3Rpb24gdGVzdEZhaWxlZChtZXNzYWdlKQoreworICAgIHBvc3RNZXNzYWdlKCJGQUlMOiAiICsg
bWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIGRlYnVnKG1lc3NhZ2UpCit7CisgICAgcG9zdE1lc3Nh
Z2UobWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7
CisgICAgdmFyIF9yZXN1bHQgPSBldmFsKGFjdHVhbCArICIgPT0gIiArIGV4cGVjdGVkKTsKKyAg
ICBwb3N0UmVzdWx0KF9yZXN1bHQsIGFjdHVhbCwgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBz
aG91bGRCZVRydWUoYWN0dWFsKQoreworICAgIHNob3VsZEJlKGFjdHVhbCwgInRydWUiKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkQmVGYWxzZShhY3R1YWwpCit7CisgICAgc2hvdWxkQmUoYWN0dWFs
LCAiZmFsc2UiKTsKK30KKwordmFyIGV4Y2VwdGlvbk5hbWU7Cit2YXIgZXhjZXB0aW9uUHJvdG87
Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBjb2RlOwordmFyIHJlYXNvbjsKK3ZhciByZXN1bHQ7Cit2
YXIgaW52YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElEX0FDQ0VTU19FUlIiOwordmFyIHN5bnRheEVy
ciA9ICJTWU5UQVhfRVJSIjsKK3ZhciBub3JtYWxDbG9zdXJlID0gMTAwMDsKK3ZhciBhYm5vcm1h
bENsb3N1cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsKK3ZhciB0ZXN0SWQ7CisKK3ZhciBjb2RlVGVz
dENvZGVzID0gWworICAgIDk5OSwgMTAwMSwgMjk5OSwgNTAwMCwgNjU1MzYgKyAxMDAwLCAweDEw
MDAwMDAwMCArIDEwMDAsIDI5OTkuOSwgTmFOLCAiMCIsICIxMDAiLCAxLzAsIC0xLzAsIDAvMCwK
KyAgICAxMDAwLjAKK107CisKK3ZhciByZWFzb25UZXN0UmVhc29ucyA9IFsKKyAgICAiMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNCIsIC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyXHUwMGE5IiwgLy8gbGVuZ3RoIGlzIDEy
MywgYnV0IDEyNCBCeXRlIGluIFVURi04CisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMyIsIC8vIDEyMyBCeXRlCitd
OworCit2YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBbCisgICAgZmFsc2UsCisgICAgZmFsc2UsCisg
ICAgdHJ1ZSwKK107CisKK3ZhciBvbm9wZW4gPSBmdW5jdGlvbiAoKQoreworICAgIHRlc3RGYWls
ZWQoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgb25lcnJvciA9IGZ1bmN0aW9u
ICgpCit7CisgICAgdGVzdEZhaWxlZCgib25lcnJvcigpIHdhcyBjYWxsZWQuIik7Cit9OworCit2
YXIgb25jbG9zZSA9IGZ1bmN0aW9uICgpCit7CisgICAgdGVzdEZhaWxlZCgib25jbG9zZSgpIHdh
cyBjYWxsZWQuIik7Cit9OworCit2YXIgb25tZXNzYWdlID0gZnVuY3Rpb24gKCkKK3sKKyAgICB0
ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFyIHNldF9kZWZh
dWx0cyA9IGZ1bmN0aW9uICh3cykKK3sKKyAgICB3cy5vbm9wZW4gPSBvbm9wZW47CisgICAgd3Mu
b25lcnJvciA9IG9uZXJyb3I7CisgICAgd3Mub25jbG9zZSA9IG9uY2xvc2U7CisgICAgd3Mub25t
ZXNzYWdlID0gb25tZXNzYWdlOworfQorCit2YXIgcnVuX2NvZGVfdGVzdCA9IGZ1bmN0aW9uICgp
Cit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgc2V0X2RlZmF1bHRzKHdzKTsK
KyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgY29kZVRlc3RDb2Rlcy5sZW5ndGg7IGlkKyspIHsK
KyAgICAgICAgaWYgKGNvZGVUZXN0Q29kZXNbaWRdICE9IG5vcm1hbENsb3N1cmUpIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJpbnZhbGlkIGNvZGUgdGVzdDogIiArIGlkKTsKKyAgICAgICAgICAgIHdz
Lm9uY2xvc2UgPSBvbmNsb3NlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3Mub25j
bG9zZSA9IGZ1bmN0aW9uIChlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVn
KCJydW5fY29kZV90ZXN0OiBvbmNsb3NlKCkuIik7CisgICAgICAgICAgICAgICAgY2xvc2VFdmVu
dCA9IGU7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5v
cm1hbENsb3N1cmUiKTsKKyAgICAgICAgICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2RlID09IGFi
bm9ybWFsQ2xvc3VyZSkKKyAgICAgICAgICAgICAgICAgICAgcnVuX2ludmFsaWRfc3RyaW5nX3Rl
c3QoKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIHdzLmNsb3NlKGNvZGVUZXN0Q29kZXNbaWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgZGVidWcoImNvZGUgIiArIGNvZGVUZXN0Q29kZXNbaWRdICsgIiBtdXN0IGNh
dXNlICIgKyBpbnZhbGlkQWNjZXNzRXJyKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBl
Lm5hbWU7CisgICAgICAgICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVP
ZihlKTsKKyAgICAgICAgICAgIC8vc2hvdWxkQmVUcnVlKCJleGNlcHRpb25Qcm90byA9PT0gRE9N
RXhjZXB0aW9uLnByb3RvdHlwZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4Y2VwdGlvbk5h
bWUiLCAiaW52YWxpZEFjY2Vzc0VyciIpOworICAgICAgICB9CisgICAgfQorfQorCit2YXIgcnVu
X2ludmFsaWRfc3RyaW5nX3Rlc3QgPSBmdW5jdGlvbiAoKQoreworICAgIC8vIFRPRE8odG95b3No
aW0pOiB1bnBhaXJlZCBzdXJyb2dhdGVzIHRocm93IFNZTlRBWF9FUlIKKyAgICBkZWJ1Zygic2tp
cCBpbnZhbGlkIHN0cmluZyB0ZXN0Iik7CisgICAgcnVuX3JlYXNvbl90ZXN0KCk7Cit9CisKK3Zh
ciBydW5fcmVhc29uX3Rlc3QgPSBmdW5jdGlvbiAobmV4dF90ZXN0KQoreworICAgIHdzID0gbmV3
IFdlYlNvY2tldCh1cmwpOworICAgIHNldF9kZWZhdWx0cyh3cyk7CisgICAgZm9yICh2YXIgaWQg
PSAwOyBpZCA8IHJlYXNvblRlc3RSZWFzb25zLmxlbmd0aDsgaWQrKykgeworICAgICAgICBkZWJ1
ZygicmVhc29uIHRlc3Q6ICIgKyBpZCk7CisgICAgICAgIGlmICghcmVhc29uVGVzdFJlc3VsdHNb
aWRdKSB7CisgICAgICAgICAgICBkZWJ1ZygiICB3aXRoIGludmFsaWQgcmVhc29uOiAiICsgcmVh
c29uVGVzdFJlYXNvbnNbaWRdKTsKKyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBvbmNsb3NlOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCJydW5fcmVhc29uX3Rlc3Q6IG9u
Y2xvc2UoKS4iKTsKKyAgICAgICAgICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImFibm9ybWFsQ2xvc3VyZSIpOworICAg
ICAgICAgICAgICAgIGlmIChjbG9zZUV2ZW50LmNvZGUgPT0gYWJub3JtYWxDbG9zdXJlKQorICAg
ICAgICAgICAgICAgICAgICBydW5fY29kZV9hbmRfcmVhc29uX3Rlc3QoKTsKKyAgICAgICAgICAg
IH07CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKG5vcm1h
bENsb3N1cmUsIHJlYXNvblRlc3RSZWFzb25zW2lkXSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIGRlYnVnKCJyZWFzb24gIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSArICIg
bXVzdCBjYXVzZSAiICsgc3ludGF4RXJyKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlYXNvblRl
c3RSZXN1bHRzW2lkXTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAg
ICAgICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlRmFsc2UoInJlc3VsdCIpOworICAgICAgICAgICAgLy9zaG91bGRCZVRy
dWUoImV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIik7CisgICAgICAg
ICAgICBzaG91bGRCZSgiZXhjZXB0aW9uTmFtZSIsICJzeW50YXhFcnIiKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwordmFyIHJ1bl9jb2RlX2FuZF9yZWFzb25fdGVzdCA9IGZ1bmN0aW9uICgpCit7
CisgICAgdmFyIGNvZGVzID0gWworICAgICAgICAxMDAwLAorICAgICAgICAzMDAwLAorICAgICAg
ICA0MDAwLAorICAgICAgICA0OTk5CisgICAgXTsKKyAgICB2YXIgcmVhc29ucyA9IFsKKyAgICAg
ICAgIk9LLCBCeWUhIiwKKyAgICAgICAgIjMwMDAiLAorICAgICAgICAiY29kZSBpcyA0MDAwIiwK
KyAgICAgICAgIlx1MDBhOSBHb29nbGUiCisgICAgXTsKKyAgICAoZnVuY3Rpb24gdGVzdCAoaWQp
IHsKKyAgICAgICAgZGVidWcoImNvZGUgYW5kIHJlYXNvbiB0ZXN0OiAiICsgaWQpOworICAgICAg
ICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICAgICAgc2V0X2RlZmF1bHRzKHdzKTsKKyAg
ICAgICAgd3Mub25vcGVuID0gZnVuY3Rpb24gKCkKKyAgICAgICAgeworICAgICAgICAgICAgd3Mu
Y2xvc2UoY29kZXNbaWRdLCByZWFzb25zW2lkXSk7CisgICAgICAgIH07CisgICAgICAgIHdzLm9u
Y2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2xvc2VFdmVudCA9
IGU7CisgICAgICAgICAgICBjb2RlID0gY29kZXNbaWRdOworICAgICAgICAgICAgcmVhc29uID0g
cmVhc29uc1tpZF07CisgICAgICAgICAgICBkZWJ1ZygiY2xvc2UgY29kZSBhbmQgcmVhc29uIG11
c3QgYmUiKTsKKyAgICAgICAgICAgIGRlYnVnKCIgIGNvZGUgIDogIiArIGNvZGUpOworICAgICAg
ICAgICAgZGVidWcoIiAgcmVhc29uOiAiICsgcmVhc29uKTsKKyAgICAgICAgICAgIHNob3VsZEJl
VHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNsb3Nl
RXZlbnQuY29kZSIsICJjb2RlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5y
ZWFzb24iLCAicmVhc29uIik7CisgICAgICAgICAgICBpZiAoKytpZCAhPSBjb2Rlcy5sZW5ndGgp
CisgICAgICAgICAgICAgICAgdGVzdChpZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgcG9zdE1lc3NhZ2UoIkRPTkUiKTsKKyAgICAgICAgfTsKKyAgICB9KSgwKTsKK30KKwor
cnVuX2NvZGVfdGVzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE2ZDU3ZTZhM2RhNmMxNTJiNDNkOTBlMmI5
ZjM1N2FhNWM3YmU3N2UuLmFjYjg3ZjFiNjRhOTc3M2RkN2ZhYWIzYjkzNDNiNzkzMjdlZDcwNDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMS0wOC0yNSAgVGFrYXNoaSBUb3lvc2hp
bWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dlYlNvY2tldF0gV2ViU29j
a2V0OjpjbG9zZSBkaWRuJ3QgaGFuZGxlIGNvZGUgYW5kIHJlYXNvbiBhcmd1bWVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjkyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS5odG1sCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1dlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNv
Y2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYlNvY2tldDo6Y2xvc2VDYWxs
YmFjayk6CisgICAgICAgIEFkZCBjdXN0b20gYnJpZGdlIGZvciBXZWJTb2NrZXQ6OmNsb3NlKCku
CisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6Y2xvc2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjbG9z
ZSk6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzIGhhbmRsaW5nLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKToK
KyAgICAgICAgU2VuZCBhIGNsb3NlIGZyYW1lIHdpdGhvdXQgY29kZSBhbmQgcmVhc29uIG9uIHNl
cnZlciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2VzLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dENoYW5uZWw6OnByb2Nlc3NGcmFtZUhpeGllNzYpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3Nl
KToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Lmg6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzIGhhbmRsaW5nLgorCiAy
MDExLTA4LTI1ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYlNvY2tldDogRml4IGluZGVudGF0aW9uIG9mIFdlYlNvY2tldCBoZWFkZXIgZmlsZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAppbmRl
eCBhZjVkYWNhNTU1ZTA4OWVjMTIyNThjNjE3MjJjNjA3Y2RmMzAxNmNhLi42NzNmYWI3NjRlNjM0
NTZlN2IxMzk1Nzk1ODk0YWNmMGViNDBmZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMzgsNyArMzgsOSBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNp
bmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNpbmNs
dWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwpAQCAtODUsNiArODcsMjkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dlYlNvY2tldChFeGVj
U3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihleGVjLCBq
c0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgV2ViU29ja2V0LCB3ZWJTb2NrZXQuZ2V0KCkp
KTsKIH0KIAorSlNWYWx1ZSBKU1dlYlNvY2tldDo6Y2xvc2UoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gc3RhdGljX2Nhc3Q8V2ViU29ja2V0Kj4oaW1wbCgp
KTsKKyAgICBpbnQgYXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oZXhlYy0+YXJndW1l
bnRDb3VudCgpKTsKKyAgICBpbnQgY29kZSA9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRD
b2RlTm90U3BlY2lmaWVkOworICAgIFN0cmluZyByZWFzb24gPSAiIjsKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA+PSAxKSB7CisgICAgICAgIC8vIFtDbGFtcF0gaW4gb3B0aW9uYWwgdW5zaWduZWQg
c2hvcnQgY29kZS4KKyAgICAgICAgSlNWYWx1ZSB2ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAg
ICAgIGRvdWJsZSB4ID0gdi50b051bWJlcihleGVjKTsKKyAgICAgICAgaWYgKCFpc25hbih4KSkK
KyAgICAgICAgICAgIHggPSBjbGFtcFRvKHgsIDAsIDB4ZmZmZik7CisgICAgICAgIGNvZGUgPSBj
bGFtcFRvSW50ZWdlcih4KTsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnQgPj0gMikKKyAgICAg
ICAgICAgIC8vIGluIG9wdGlvbmFsIERPTVN0cmluZyByZWFzb24KKyAgICAgICAgICAgIHJlYXNv
biA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKSk7Cisg
ICAgfQorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHdlYlNvY2tldC0+Y2xvc2UoY29k
ZSwgcmVhc29uLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tl
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2Nr
ZXRDdXN0b20uY3BwCmluZGV4IDU4YTI3ZTdmYTEzZGI5ZmEyZGRjM2QyZmVkM2Y3ZTg5N2ZjOTc1
ZDUuLmM3YzliY2I2ZjkxZjg3M2EyMzU2MWY0ZDUxYWZjMTg5MzBlNDM5ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9t
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC00MCw4ICs0MCwxMCBAQAogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJW
OFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2luY2x1ZGUgIldlYlNvY2tl
dENoYW5uZWwuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwOCw2ICsx
MTAsMjkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0Ojpjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICByZXR1cm4gYXJncy5Ib2xkZXIo
KTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0OjpjbG9zZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQg
PSB0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudCA9IGFyZ3Mu
TGVuZ3RoKCk7CisgICAgaW50IGNvZGUgPSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29k
ZU5vdFNwZWNpZmllZDsKKyAgICBTdHJpbmcgcmVhc29uID0gIiI7CisgICAgaWYgKGFyZ3VtZW50
Q291bnQgPj0gMSkgeworICAgICAgICAvLyBbQ2xhbXBdIGluIG9wdGlvbmFsIHVuc2lnbmVkIHNo
b3J0IGNvZGUuCisgICAgICBkb3VibGUgeCA9IGFyZ3NbMF0tPk51bWJlclZhbHVlKCk7CisgICAg
ICAgIGlmICghaXNuYW4oeCkpCisgICAgICAgICAgICB4ID0gY2xhbXBUbyh4LCAwLCAweGZmZmYp
OworICAgICAgICBjb2RlID0gY2xhbXBUb0ludGVnZXIoeCk7CisgICAgICAgIGlmIChhcmd1bWVu
dENvdW50ID49IDIpCisgICAgICAgICAgICAvLyBpbiBvcHRpb25hbCBET01TdHJpbmcgcmVhc29u
CisgICAgICAgICAgICByZWFzb24gPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sxXS0+VG9TdHJpbmco
KSk7CisgICAgfQorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHdlYlNvY2tldC0+Y2xv
c2UoY29kZSwgcmVhc29uLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihlYyk7CisgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKK30KKwogfSAgLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgK
aW5kZXggY2Q5Y2UyNTJhNGNkNWJkNjdhNzM5Y2ZjNTMzMjcwOGUwZWQ0OGNmZS4uMDlmODFiNTA3
YTEwMDFkNmU3ZWE1OTE3MjExNmVhOWU5ZmY3YmQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNTQsNyAr
NTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKSA9IDA7IC8v
IFdpbGwgYmUgYXZhaWxhYmxlIGFmdGVyIGRpZENvbm5lY3QoKSBjYWxsYmFjayBpcyBpbnZva2Vk
LgogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogICAg
IHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0ID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgY2xvc2UoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbikgPSAwOwogICAgIC8vIExvZyB0aGUgcmVhc29uIHRleHQg
YW5kIGNsb3NlIHRoZSBjb25uZWN0aW9uLiBXaWxsIGNhbGwgZGlkQ2xvc2UoKS4KICAgICB2aXJ0
dWFsIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNjb25uZWN0KCkgPSAwOyAvLyBXaWxsIHN1cHByZXNzIGRpZENsb3NlKCkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggMTM5MjQ5YTY2ZjA2YTYzODFjZDFk
NmExYTlmM2IxNDA2ZTc3Yjc4Ni4uNmUyMzlhOTIxZDhlNjAyNDE0YzA1YzNmZDAyMjU4NjhhM2Ji
ZmFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNTgsOSAr
MjU4LDIzIEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIG1fY2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKIH0K
IAotdm9pZCBXZWJTb2NrZXQ6OmNsb3NlKCkKK3ZvaWQgV2ViU29ja2V0OjpjbG9zZShpbnQgY29k
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIiwgdGhpcyk7CisgICAgaWYgKGNvZGUgPT0gV2Vi
U29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQpCisgICAgICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIHdpdGhvdXQgY29kZSBhbmQgcmVhc29uIiwgdGhp
cyk7CisgICAgZWxzZSB7CisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3Nl
IHdpdGggY29kZSA9ICVkLCByZWFzb24gPSAlcyIsIHRoaXMsIGNvZGUsIHJlYXNvbi51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgaWYgKCEoY29kZSA9PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2
ZW50Q29kZU5vcm1hbENsb3N1cmUgfHwgKDMwMDAgPD0gY29kZSAmJiBjb2RlIDw9IDQ5OTkpKSkg
eworICAgICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IGlmIHJlYXNvbiBjb250YWlucyBhbnkg
dW5wYWlyZWQgc3Vycm9nYXRlcywgcmFpc2UgU1lOVEFYX0VSUi4KKyAgICAgICAgaWYgKHJlYXNv
bi51dGY4KCkubGVuZ3RoKCkgPiAxMjMpIHsKKyAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChtX3N0YXRl
ID09IENMT1NJTkcgfHwgbV9zdGF0ZSA9PSBDTE9TRUQpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAobV9zdGF0ZSA9PSBDT05ORUNUSU5HKSB7CkBAIC0yNzMsNyArMjg3LDcgQEAgdm9pZCBXZWJT
b2NrZXQ6OmNsb3NlKCkKICAgICAvLyBkaWRDbG9zZSBub3RpZmljYXRpb24gbWF5IGJlIGFscmVh
ZHkgcXVldWVkLCB3aGljaCB3ZSB3aWxsIGluYWR2ZXJ0ZW50bHkgcHJvY2VzcyB3aGlsZSB3YWl0
aW5nIGZvciBidWZmZXJlZEFtb3VudCgpIHRvIHJldHVybi4KICAgICAvLyBJbiB0aGlzIGNhc2Ug
bV9jaGFubmVsIHdpbGwgYmUgc2V0IHRvIG51bGwgZHVyaW5nIGRpZENsb3NlKCkgY2FsbCwgdGh1
cyB3ZSBuZWVkIHRvIHRlc3QgdmFsaWRuZXNzIG9mIG1fY2hhbm5lbCBoZXJlLgogICAgIGlmICht
X2NoYW5uZWwpCi0gICAgICAgIG1fY2hhbm5lbC0+Y2xvc2UoKTsKKyAgICAgICAgbV9jaGFubmVs
LT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCiBjb25zdCBLVVJMJiBXZWJTb2NrZXQ6OnVybCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5o
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCBmOGViMzNiNGZh
NDQ2MTA2M2E1NThiZTViZmRkNWZkMjE0OTNmYzAxLi5mYzQwNGZlYmU5Njk4Mzk4ZmI3MjgwN2Q4
YTQxNDc5NDhlNzljN2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
NjgsNyArNjgsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICB2b2lkIGNsb3NlKCk7CisgICAgdm9pZCBjbG9z
ZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAg
IGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OwogICAgIFN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAppbmRleCA4MWQ3NTYzZjA3Yzkx
NDI3NDVmN2YyOWIxY2UzMjU1ZjU2YTZlY2UyLi5jYWQzYTZiZmExZTYyNDkxNDYxOGYwM2RhZjRk
NDRkMTU3YTEzZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCkBA
IC02NCw3ICs2NCw3IEBAIG1vZHVsZSB3ZWJzb2NrZXRzIHsKICAgICAgICAgICAgIHNldHRlciBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICBbUmVxdWlyZXNBbGxBcmd1bWVudHNdIGJv
b2xlYW4gc2VuZChpbiBET01TdHJpbmcgZGF0YSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAg
ICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBjbG9zZShpbiBbT3B0aW9u
YWxdIHVuc2lnbmVkIHNob3J0IGNvZGUsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIHJlYXNvbikg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNl
CiAgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDU2Mjg0
ZTU5MjliZTU1YTEyZDkyY2M2NjYzNWViMDYxZGY0NzYwZmQuLjMyZmNhM2IzZjg5YmNlMWQ5ZTNi
NDBmMGFhNGQ1YzhlNjg3NWY3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTY5LDEzICsxNjksMTMgQEAgdW5zaWduZWQgbG9uZyBX
ZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faGFu
ZGxlLT5idWZmZXJlZEFtb3VudCgpOwogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3Nl
KCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBjbG9zZSIs
IHRoaXMpOwogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwogICAgIGlmICghbV9oYW5kbGUpCiAg
ICAgICAgIHJldHVybjsKLSAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoKTsKKyAgICBzdGFydENs
b3NpbmdIYW5kc2hha2UoY29kZSwgcmVhc29uKTsKICAgICBpZiAobV9jbG9zaW5nICYmICFtX2Ns
b3NpbmdUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2Nsb3NpbmdUaW1lci5zdGFydE9uZVNo
b3QoMiAqIFRDUE1heGltdW1TZWdtZW50TGlmZXRpbWUpOwogfQpAQCAtNDIyLDcgKzQyMiw3IEBA
IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRD
aGFubmVsPiogdGltZXIpCiAgICAgICAgIGRpZENsb3NlU29ja2V0U3RyZWFtKG1faGFuZGxlLmdl
dCgpKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2Uo
KQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2UoaW50IGNvZGUs
IGNvbnN0IFN0cmluZyYgcmVhc29uKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCBjbG9zaW5nICVkICVkIiwgdGhpcywgbV9jbG9zaW5nLCBtX3JlY2VpdmVkQ2xvc2lu
Z0hhbmRzaGFrZSk7CiAgICAgaWYgKG1fY2xvc2luZykKQEAgLTQzNiw5ICs0MzYsMTcgQEAgdm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2UoKQogICAgICAgICAgICAg
bV9oYW5kbGUtPmRpc2Nvbm5lY3QoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgIH0gZWxzZQotICAgICAgICBlbnF1ZXVlUmF3RnJhbWUoT3BDb2RlQ2xvc2UsICIiLCAwKTsg
Ly8gRklYTUU6IFNlbmQgc3RhdHVzIGNvZGUgYW5kIHJlYXNvbiBtZXNzYWdlLgotCisgICAgfSBl
bHNlIHsKKyAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZjsKKyAgICAgICAgaWYgKCFtX3JlY2VpdmVk
Q2xvc2luZ0hhbmRzaGFrZSkgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBoaWdoQnl0ZSA9
IGNvZGUgPj4gODsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbG93Qnl0ZSA9IGNvZGU7Cisg
ICAgICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KGhpZ2hCeXRlKSk7CisgICAg
ICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KGxvd0J5dGUpKTsKKyAgICAgICAg
ICAgIGJ1Zi5hcHBlbmQocmVhc29uLnV0ZjgoKS5kYXRhKCksIHJlYXNvbi51dGY4KCkubGVuZ3Ro
KCkpOworICAgICAgICB9CisgICAgICAgIGVucXVldWVSYXdGcmFtZShPcENvZGVDbG9zZSwgYnVm
LmRhdGEoKSwgYnVmLnNpemUoKSk7CisgICAgfQogICAgIG1fY2xvc2luZyA9IHRydWU7CiAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtl
KCk7CkBAIC02NDUsNyArNjUzLDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJh
bWUoKQogICAgICAgICAgICAgbV9jbG9zZUV2ZW50UmVhc29uID0gIiI7CiAgICAgICAgIHNraXBC
dWZmZXIoZnJhbWUuZnJhbWVFbmQgLSBtX2J1ZmZlcik7CiAgICAgICAgIG1fcmVjZWl2ZWRDbG9z
aW5nSGFuZHNoYWtlID0gdHJ1ZTsKLSAgICAgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7Cisg
ICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShtX2Nsb3NlRXZlbnRDb2RlLCBtX2Nsb3NlRXZl
bnRSZWFzb24pOwogICAgICAgICBpZiAobV9jbG9zaW5nKSB7CiAgICAgICAgICAgICBtX291dGdv
aW5nRnJhbWVRdWV1ZVN0YXR1cyA9IE91dGdvaW5nRnJhbWVRdWV1ZUNsb3Npbmc7CiAgICAgICAg
ICAgICBwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCk7CkBAIC03MjYsNyArNzM0LDcgQEAgYm9v
bCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWVIaXhpZTc2KCkKICAgICAgICAgICAgIHNr
aXBCdWZmZXIobmV4dEZyYW1lIC0gbV9idWZmZXIpOwogICAgICAgICAgICAgaWYgKGZyYW1lQnl0
ZSA9PSAweGZmICYmICFsZW5ndGgpIHsKICAgICAgICAgICAgICAgICBtX3JlY2VpdmVkQ2xvc2lu
Z0hhbmRzaGFrZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtl
KCk7CisgICAgICAgICAgICAgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKDAsICIiKTsKICAgICAg
ICAgICAgICAgICBpZiAobV9jbG9zaW5nKQogICAgICAgICAgICAgICAgICAgICBtX2hhbmRsZS0+
Y2xvc2UoKTsgLy8gY2xvc2UgYWZ0ZXIgc2VuZGluZyBGRiAwMC4KICAgICAgICAgICAgIH0gZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCBk
ZjRmZjMyNzQ4Nzg3YzIyOTc5YTJhNjAzNzY1N2IwMWI5YTBhY2JhLi40NzIxZDgzOWRiOWNjZDU1
YTEzYTE2ZmMxZTYwMzZkM2NkYWZkYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBTdHJpbmcgc3VicHJvdG9jb2woKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOyAvLyBTdGFydCBjbG9zaW5nIGhhbmRz
aGFrZS4KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVh
c29uKTsgLy8gU3RhcnQgY2xvc2luZyBoYW5kc2hha2UuCiAgICAgdmlydHVhbCB2b2lkIGZhaWwo
Y29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCk7CiAK
QEAgLTc2LDYgKzc2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpOwogCiAgICAgZW51bSBDbG9zZUV2ZW50Q29kZSB7CisgICAgICAgIENs
b3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkID0gLTEsCiAgICAgICAgIENsb3NlRXZlbnRDb2RlTm9y
bWFsQ2xvc3VyZSA9IDEwMDAsCiAgICAgICAgIENsb3NlRXZlbnRDb2RlR29pbmdBd2F5ID0gMTAw
MSwKICAgICAgICAgQ2xvc2VFdmVudENvZGVQcm90b2NvbEVycm9yID0gMTAwMiwKQEAgLTEwMCw3
ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVuKTsKICAg
ICBib29sIHByb2Nlc3NCdWZmZXIoKTsKICAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQoVGltZXI8
V2ViU29ja2V0Q2hhbm5lbD4qKTsKLSAgICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwor
ICAgIHZvaWQgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJl
YXNvbik7CiAgICAgdm9pZCBjbG9zaW5nVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVs
PiopOwogCiAgICAgLy8gSHliaS0xMCBvcGNvZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNw
cAppbmRleCA5ZGFiODEyZmM4MDE1ZjM4OWY3NDA4ZDBkZWE3Y2JlY2Y5NjI4NGYzLi44ZmU5NDU5
MTcyZmZjZWYzMDRjNzk1MTNkMWY5YTk4ZDBhMzA5NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmNwcApAQCAtOTQsMTAgKzk0LDEwIEBAIHVuc2lnbmVkIGxvbmcgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9i
cmlkZ2UtPmJ1ZmZlcmVkQW1vdW50KCk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OmNsb3NlKCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBpZiAobV9i
cmlkZ2UpCi0gICAgICAgIG1fYnJpZGdlLT5jbG9zZSgpOworICAgICAgICBtX2JyaWRnZS0+Y2xv
c2UoY29kZSwgcmVhc29uKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKQEAgLTE4NywxMiArMTg3LDEyIEBAIHZv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmJ1ZmZlcmVkQW1vdW50
KCkKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVh
dGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRHZXRCdWZmZXJlZEFtb3VudCwgbV93b3Jr
ZXJDbGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudCksIG1fdGFza01vZGUpOwogfQogCi12b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZSgpCit2b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZShpbnQgY29kZSwgY29u
c3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBp
ZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKLSAgICBtX21haW5X
ZWJTb2NrZXRDaGFubmVsLT5jbG9zZSgpOworICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmNs
b3NlKGNvZGUsIHJlYXNvbik7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlBlZXI6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCkBAIC0zODMsMTkgKzM4Mywx
OSBAQCB1bnNpZ25lZCBsb25nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlk
Z2U6OmJ1ZmZlcmVkQW1vdW50KCkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIpCit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGVlciogcGVlciwgaW50IGNvZGUsIGNvbnN0IFN0cmluZyZyZWFzb24pCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQt
PmlzRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHBlZXIpOwogCi0gICAgcGVlci0+Y2xvc2UoKTsK
KyAgICBwZWVyLT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3NlKCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uKQogewogICAgIEFTU0VSVChtX3BlZXIpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjptYWluVGhyZWFkQ2xvc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkp
OworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2so
JldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UsIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSwgY29kZSwgcmVhc29uKSk7CiB9CiAKIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRGYWlsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IFN0cmluZyYgcmVhc29uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDBkYzM4YzMyZDdmMjc5ZTZhMjBhMGM3ZDQzMzZj
ODhlZjQxYjI2NzcuLjQzYTIxNmY1YTMxYmYxMDBlNmM3ZDE2M2JlYWU0NzgzYjAzZDZiZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCk7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91
bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3Qo
KTsgLy8gV2lsbCBzdXBwcmVzcyBkaWRDbG9zZSgpLgogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5k
KCk7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY29ubmVjdChjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIHZvaWQgc2VuZChjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50KCk7Ci0gICAg
ICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb24pOwogICAgICAgICB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pOwog
ICAgICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKICAgICAgICAgdm9pZCBzdXNwZW5kKCk7CkBAIC0x
MjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICAgICAgYm9vbCBzZW5kKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKTsKLSAg
ICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBT
dHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbik7
CiAgICAgICAgIHZvaWQgZGlzY29ubmVjdCgpOwogICAgICAgICB2b2lkIHN1c3BlbmQoKTsKQEAg
LTE2MCw3ICsxNjAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDb25u
ZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0
cmluZyYgcHJvdG9jb2wpOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5kKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBzdGF0
aWMgdm9pZCBtYWluVGhyZWFkQnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBlZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBlZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2xvc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24p
OwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRGYWlsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQZWVyKiwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJl
YWREZXN0cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7CiAgICAgc3RhdGljIHZv
aWQgbWFpblRocmVhZFN1c3BlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105763</attachid>
            <date>2011-08-31 02:54:39 -0700</date>
            <delta_ts>2011-08-31 04:22:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66925-20110831185437.patch</filename>
            <type>text/plain</type>
            <size>46886</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQxNjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YTUzNTQ0ODQ5ZTRiYTJjNjE5NGNj
Yzc1ZDFlMDJhYWI4YTIwMDA0Li5jMGNlYWM3MGEzM2ViNDEzNDdjZjI2NzJlNjllOTRiNzYwOTg1
NGM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMzEgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIEltcGxlbWVu
dCBXZWJTb2NrZXQ6OmNsb3NlKCkgY29kZSBhbmQgcmVhc29uIGhhbmRsaW5nLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvY2xvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qczogQWRkZWQuCisgICAg
ICAgIChwb3N0UmVzdWx0KToKKyAgICAgICAgKHRlc3RGYWlsZWQpOgorICAgICAgICAoZGVidWcp
OgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVUcnVlKToKKyAgICAgICAg
KHNob3VsZEJlRmFsc2UpOgorICAgICAgICAob25vcGVuKToKKyAgICAgICAgKG9uZXJyb3IpOgor
ICAgICAgICAob25jbG9zZSk6CisgICAgICAgIChvbm1lc3NhZ2UpOgorICAgICAgICAoc2V0X2Rl
ZmF1bHRzKToKKyAgICAgICAgKHJ1bl9jb2RlX3Rlc3QuZWxzZS53cy5vbmNsb3NlKToKKyAgICAg
ICAgKHJ1bl9jb2RlX3Rlc3QpOgorICAgICAgICAocnVuX2ludmFsaWRfc3RyaW5nX3Rlc3QpOgor
ICAgICAgICAocnVuX3JlYXNvbl90ZXN0LmVsc2Uud3Mub25jbG9zZSk6CisgICAgICAgIChydW5f
cmVhc29uX3Rlc3QpOgorICAgICAgICAocnVuX2NvZGVfYW5kX3JlYXNvbl90ZXN0Lik6CisgICAg
ICAgIChydW5fY29kZV9hbmRfcmVhc29uX3Rlc3QpOgorCiAyMDExLTA4LTMxICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJl
dmlld2VkLCByZWJhc2VsaW5lIGFub3RoZXIgbXVsdGljb2wgdGVzdCBleHBlY3RhdGlvbi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xv
c2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9jbG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODBkOTM0YjZkNThmM2Q4MDA0N2M0
OWU1NDkyOWUxZTU4MTViNmRmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTA4IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZv
cmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNo
ZWQuCitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlvcnMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworaW52YWxpZCBjb2RlIHRlc3Q6IDAKK2NvZGUgOTk5IG11c3QgY2F1c2Ug
SU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24u
cHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJy
CitpbnZhbGlkIGNvZGUgdGVzdDogMQorY29kZSAxMDAxIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NF
U1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlz
IHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNv
ZGUgdGVzdDogMgorY29kZSAyOTk5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNT
IGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1Mg
ZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMwor
Y29kZSA1MDAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblBy
b3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFt
ZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogNAorY29kZSA2NjUzNiBt
dXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9N
RXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxp
ZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDUKK2NvZGUgNDI5NDk2ODI5NiBtdXN0IGNh
dXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0
aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vz
c0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDYKK2NvZGUgMjk5OS45IG11c3QgY2F1c2UgSU5WQUxJ
RF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90
eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZh
bGlkIGNvZGUgdGVzdDogNworY29kZSBOYU4gbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIK
K1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQor
UEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0
OiA4Citjb2RlIDAgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9u
UHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25O
YW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA5Citjb2RlIDEwMCBt
dXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9N
RXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxp
ZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDEwCitjb2RlIEluZmluaXR5IG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRp
b24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNz
RXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMTEKK2NvZGUgLUluZmluaXR5IG11c3QgY2F1c2UgSU5W
QUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJv
dG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitp
bnZhbGlkIGNvZGUgdGVzdDogMTIKK2NvZGUgTmFOIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1Nf
RVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRy
dWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitydW5fY29kZV90ZXN0
OiBvbmNsb3NlKCkuCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBhYm5vcm1hbENsb3N1cmUKK3Nr
aXAgaW52YWxpZCBzdHJpbmcgdGVzdAorcmVhc29uIHRlc3Q6IDAKKyAgd2l0aCBpbnZhbGlkIHJl
YXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNAorcmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQgbXVzdCBjYXVzZSBTWU5UQVhfRVJS
CitQQVNTIHJlc3VsdCBpcyBmYWxzZQorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0
aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgc3ludGF4RXJyCity
ZWFzb24gdGVzdDogMQorICB3aXRoIGludmFsaWQgcmVhc29uOiAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMsKpCityZWFzb24g
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTLCqSBtdXN0IGNhdXNlIFNZTlRBWF9FUlIKK1BBU1MgcmVzdWx0IGlzIGZhbHNlCitQ
QVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BB
U1MgZXhjZXB0aW9uTmFtZSBpcyBzeW50YXhFcnIKK3JlYXNvbiB0ZXN0OiAyCitydW5fcmVhc29u
X3Rlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGFibm9ybWFsQ2xvc3Vy
ZQorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK2Nsb3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJl
CisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9LLCBCeWUhCitQQVNTIGNsb3NlRXZlbnQud2Fz
Q2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBjbG9zZUV2
ZW50LnJlYXNvbiBpcyByZWFzb24KK2NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAxCitjbG9zZSBjb2Rl
IGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDMwMDAKKyAgcmVhc29uOiAzMDAwCitQQVNT
IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgY29k
ZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK2NvZGUgYW5kIHJlYXNvbiB0ZXN0
OiAyCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDQwMDAKKyAgcmVh
c29uOiBjb2RlIGlzIDQwMDAKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNT
IGNsb3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNv
bgorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDMKK2Nsb3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJl
CisgIGNvZGUgIDogNDk5OQorICByZWFzb246IMKpIEdvb2dsZQorUEFTUyBjbG9zZUV2ZW50Lndh
c0NsZWFuIGlzIHRydWUKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgY2xvc2VF
dmVudC5yZWFzb24gaXMgcmVhc29uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllYjc1ZGRmY2ExZjgwODIw
ZmEzMGZiMDRhOTI4NDA3OTIwYzkwZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwKQEAgLTAsMCArMSwxOTMg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIlZlcmlm
eSBXZWJTb2NrZXQ6OmNsb3NlIGJlaGF2aW9ycy4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGV4Y2VwdGlvbk5hbWU7Cit2YXIgZXhjZXB0aW9uUHJv
dG87Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBjb2RlOwordmFyIHJlYXNvbjsKK3ZhciByZXN1bHQ7
Cit2YXIgaW52YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElEX0FDQ0VTU19FUlIiOwordmFyIHN5bnRh
eEVyciA9ICJTWU5UQVhfRVJSIjsKK3ZhciBub3JtYWxDbG9zdXJlID0gMTAwMDsKK3ZhciBhYm5v
cm1hbENsb3N1cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsKK3ZhciB0ZXN0SWQ7CisKK3ZhciBjb2Rl
VGVzdENvZGVzID0gWworICAgIDk5OSwgMTAwMSwgMjk5OSwgNTAwMCwgNjU1MzYgKyAxMDAwLCAw
eDEwMDAwMDAwMCArIDEwMDAsIDI5OTkuOSwgTmFOLCAiMCIsICIxMDAiLCAxLzAsIC0xLzAsIDAv
MCwKKyAgICAxMDAwLjAKK107CisKK3ZhciByZWFzb25UZXN0UmVhc29ucyA9IFsKKyAgICAiMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNCIsIC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyXHUwMGE5IiwgLy8gbGVuZ3RoIGlz
IDEyMywgYnV0IDEyNCBCeXRlIGluIFVURi04CisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMyIsIC8vIDEyMyBCeXRl
CitdOworCit2YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBbCisgICAgZmFsc2UsCisgICAgZmFsc2Us
CisgICAgdHJ1ZSwKK107CisKK3ZhciBvbm9wZW4gPSBmdW5jdGlvbiAoKQoreworICAgIHRlc3RG
YWlsZWQoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgb25lcnJvciA9IGZ1bmN0
aW9uICgpCit7CisgICAgdGVzdEZhaWxlZCgib25lcnJvcigpIHdhcyBjYWxsZWQuIik7Cit9Owor
Cit2YXIgb25jbG9zZSA9IGZ1bmN0aW9uICgpCit7CisgICAgdGVzdEZhaWxlZCgib25jbG9zZSgp
IHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgb25tZXNzYWdlID0gZnVuY3Rpb24gKCkKK3sKKyAg
ICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFyIHNldF9k
ZWZhdWx0cyA9IGZ1bmN0aW9uICh3cykKK3sKKyAgICB3cy5vbm9wZW4gPSBvbm9wZW47CisgICAg
d3Mub25lcnJvciA9IG9uZXJyb3I7CisgICAgd3Mub25jbG9zZSA9IG9uY2xvc2U7CisgICAgd3Mu
b25tZXNzYWdlID0gb25tZXNzYWdlOworfQorCit2YXIgcnVuX2NvZGVfdGVzdCA9IGZ1bmN0aW9u
ICgpCit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgc2V0X2RlZmF1bHRzKHdz
KTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgY29kZVRlc3RDb2Rlcy5sZW5ndGg7IGlkKysp
IHsKKyAgICAgICAgaWYgKGNvZGVUZXN0Q29kZXNbaWRdICE9IG5vcm1hbENsb3N1cmUpIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJpbnZhbGlkIGNvZGUgdGVzdDogIiArIGlkKTsKKyAgICAgICAgICAg
IHdzLm9uY2xvc2UgPSBvbmNsb3NlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3Mu
b25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRl
YnVnKCJydW5fY29kZV90ZXN0OiBvbmNsb3NlKCkuIik7CisgICAgICAgICAgICAgICAgY2xvc2VF
dmVudCA9IGU7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJh
Ym5vcm1hbENsb3N1cmUiKTsKKyAgICAgICAgICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2RlID09
IGFibm9ybWFsQ2xvc3VyZSkKKyAgICAgICAgICAgICAgICAgICAgcnVuX2ludmFsaWRfc3RyaW5n
X3Rlc3QoKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIHdzLmNsb3NlKGNvZGVUZXN0Q29kZXNbaWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICAgICAgZGVidWcoImNvZGUgIiArIGNvZGVUZXN0Q29kZXNbaWRdICsgIiBtdXN0
IGNhdXNlICIgKyBpbnZhbGlkQWNjZXNzRXJyKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUg
PSBlLm5hbWU7CisgICAgICAgICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5
cGVPZihlKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZXhjZXB0aW9uUHJvdG8gPT09IERP
TUV4Y2VwdGlvbi5wcm90b3R5cGUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJleGNlcHRpb25O
YW1lIiwgImludmFsaWRBY2Nlc3NFcnIiKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordmFyIHJ1
bl9pbnZhbGlkX3N0cmluZ190ZXN0ID0gZnVuY3Rpb24gKCkKK3sKKyAgICAvLyBUT0RPOiB1bnBh
aXJlZCBzdXJyb2dhdGVzIHRocm93IFNZTlRBWF9FUlIKKyAgICBkZWJ1Zygic2tpcCBpbnZhbGlk
IHN0cmluZyB0ZXN0Iik7CisgICAgcnVuX3JlYXNvbl90ZXN0KCk7Cit9CisKK3ZhciBydW5fcmVh
c29uX3Rlc3QgPSBmdW5jdGlvbiAobmV4dF90ZXN0KQoreworICAgIHdzID0gbmV3IFdlYlNvY2tl
dCh1cmwpOworICAgIHNldF9kZWZhdWx0cyh3cyk7CisgICAgZm9yICh2YXIgaWQgPSAwOyBpZCA8
IHJlYXNvblRlc3RSZWFzb25zLmxlbmd0aDsgaWQrKykgeworICAgICAgICBkZWJ1ZygicmVhc29u
IHRlc3Q6ICIgKyBpZCk7CisgICAgICAgIGlmICghcmVhc29uVGVzdFJlc3VsdHNbaWRdKSB7Cisg
ICAgICAgICAgICBkZWJ1ZygiICB3aXRoIGludmFsaWQgcmVhc29uOiAiICsgcmVhc29uVGVzdFJl
YXNvbnNbaWRdKTsKKyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBvbmNsb3NlOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCJydW5fcmVhc29uX3Rlc3Q6IG9uY2xvc2UoKS4i
KTsKKyAgICAgICAgICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImFibm9ybWFsQ2xvc3VyZSIpOworICAgICAgICAgICAg
ICAgIGlmIChjbG9zZUV2ZW50LmNvZGUgPT0gYWJub3JtYWxDbG9zdXJlKQorICAgICAgICAgICAg
ICAgICAgICBydW5fY29kZV9hbmRfcmVhc29uX3Rlc3QoKTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKG5vcm1hbENsb3N1cmUs
IHJlYXNvblRlc3RSZWFzb25zW2lkXSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJyZWFzb24gIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSArICIgbXVzdCBjYXVz
ZSAiICsgc3ludGF4RXJyKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlYXNvblRlc3RSZXN1bHRz
W2lkXTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAgICAgICAgICBl
eGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlRmFsc2UoInJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleGNlcHRp
b25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImV4Y2VwdGlvbk5hbWUiLCAic3ludGF4RXJyIik7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZhciBydW5fY29kZV9hbmRfcmVhc29uX3Rlc3QgPSBmdW5jdGlvbiAoKQoreworICAgIHZhciBj
b2RlcyA9IFsKKyAgICAgICAgMTAwMCwKKyAgICAgICAgMzAwMCwKKyAgICAgICAgNDAwMCwKKyAg
ICAgICAgNDk5OQorICAgIF07CisgICAgdmFyIHJlYXNvbnMgPSBbCisgICAgICAgICJPSywgQnll
ISIsCisgICAgICAgICIzMDAwIiwKKyAgICAgICAgImNvZGUgaXMgNDAwMCIsCisgICAgICAgICJc
dTAwYTkgR29vZ2xlIgorICAgIF07CisgICAgKGZ1bmN0aW9uIHRlc3QgKGlkKSB7CisgICAgICAg
IGRlYnVnKCJjb2RlIGFuZCByZWFzb24gdGVzdDogIiArIGlkKTsKKyAgICAgICAgd3MgPSBuZXcg
V2ViU29ja2V0KHVybCk7CisgICAgICAgIHNldF9kZWZhdWx0cyh3cyk7CisgICAgICAgIHdzLm9u
b3BlbiA9IGZ1bmN0aW9uICgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVz
W2lkXSwgcmVhc29uc1tpZF0pOworICAgICAgICB9OworICAgICAgICB3cy5vbmNsb3NlID0gZnVu
Y3Rpb24gKGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAg
ICAgICAgY29kZSA9IGNvZGVzW2lkXTsKKyAgICAgICAgICAgIHJlYXNvbiA9IHJlYXNvbnNbaWRd
OworICAgICAgICAgICAgZGVidWcoImNsb3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlIik7Cisg
ICAgICAgICAgICBkZWJ1ZygiICBjb2RlICA6ICIgKyBjb2RlKTsKKyAgICAgICAgICAgIGRlYnVn
KCIgIHJlYXNvbjogIiArIHJlYXNvbik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImNsb3Nl
RXZlbnQud2FzQ2xlYW4iKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LmNvZGUi
LCAiY29kZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQucmVhc29uIiwgInJl
YXNvbiIpOworICAgICAgICAgICAgaWYgKCsraWQgIT0gY29kZXMubGVuZ3RoKQorICAgICAgICAg
ICAgICAgIHRlc3QoaWQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9OworICAgIH0pKDApOworfQorCitydW5fY29kZV90ZXN0KCk7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZV93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIwMmQ2NjI2
N2UyOTRjZTgzOTc3ZGFjNjRmMDc1OTgxNzA1NjQ3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5CkBAIC0w
LDAgKzEsNTMgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitfR09PREJZ
RV9NRVNTQUdFID0gdSdHb29kYnllJworCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZShyZXF1ZXN0KToKKyAgICBwYXNzICAjIEFsd2F5cyBhY2NlcHQuCisKKworZGVmIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBs
aW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgbGlu
ZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGlzaW5zdGFuY2UobGlu
ZSwgdW5pY29kZSk6CisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2Uo
bGluZSwgYmluYXJ5PUZhbHNlKQorICAgICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNT
QUdFOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
cmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQorCisKK2Rl
ZiB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcmV0
dXJuIHJlcXVlc3Qud3NfY2xvc2VfY29kZSwgcmVxdWVzdC53c19jbG9zZV9yZWFzb24KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vy
cy9jbG9zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjYTY5ZTgz
YTI2NWZlZmIyODdkNmQ2ZDdkZGJiYjdlMDIzYTY4NjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsOTQgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBXZWJT
b2NrZXQgaXMgY2xvc2VkIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAwOiBXZWJTb2NrZXQgaXMgY2xvc2VkIGJlZm9yZSB0aGUgY29u
bmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KK1ZlcmlmeSBXZWJTb2NrZXQ6OmNsb3NlIGJlaGF2aW9y
cyBpbiBXb3JrZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworaW52YWxpZCBjb2Rl
IHRlc3Q6IDAKK2NvZGUgOTk5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBB
U1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNv
ZGUgdGVzdDogMQorY29kZSAxMDAxIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNT
IFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlk
IGNvZGUgdGVzdDogMgorY29kZSAyOTk5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQ
QVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZh
bGlkIGNvZGUgdGVzdDogMworY29kZSA1MDAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJS
CitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitp
bnZhbGlkIGNvZGUgdGVzdDogNAorY29kZSA2NjUzNiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNT
X0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0Vy
cgoraW52YWxpZCBjb2RlIHRlc3Q6IDUKK2NvZGUgNDI5NDk2ODI5NiBtdXN0IGNhdXNlIElOVkFM
SURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxp
ZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDYKK2NvZGUgMjk5OS45IG11c3QgY2F1c2Ug
SU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBp
bnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogNworY29kZSBOYU4gbXVzdCBjYXVz
ZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlz
IGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA4Citjb2RlIDAgbXVzdCBjYXVz
ZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlz
IGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA5Citjb2RlIDEwMCBtdXN0IGNh
dXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUg
aXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDEwCitjb2RlIEluZmluaXR5
IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0
aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMTEKK2NvZGUg
LUluZmluaXR5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtl
cjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDog
MTIKK2NvZGUgTmFOIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdv
cmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitydW5fY29kZV90ZXN0OiBv
bmNsb3NlKCkuCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlzIGFibm9ybWFs
Q2xvc3VyZQorc2tpcCBpbnZhbGlkIHN0cmluZyB0ZXN0CityZWFzb24gdGVzdDogMAorICB3aXRo
IGludmFsaWQgcmVhc29uOiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0CityZWFzb24gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCBtdXN0IGNhdXNl
IFNZTlRBWF9FUlIKK1BBU1MgUEFTUzogd29ya2VyOiByZXN1bHQgaXMgZmFsc2UKK1BBU1MgUEFT
Uzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIHN5bnRheEVycgorcmVhc29uIHRlc3Q6IDEKKyAg
d2l0aCBpbnZhbGlkIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTLCqQorcmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEywqkgbXVzdCBj
YXVzZSBTWU5UQVhfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogcmVzdWx0IGlzIGZhbHNlCitQQVNT
IFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBzeW50YXhFcnIKK3JlYXNvbiB0ZXN0OiAy
CitydW5fcmVhc29uX3Rlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2
ZW50LmNvZGUgaXMgYWJub3JtYWxDbG9zdXJlCitjb2RlIGFuZCByZWFzb24gdGVzdDogMAorY2xv
c2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUKKyAgY29kZSAgOiAxMDAwCisgIHJlYXNvbjogT0ss
IEJ5ZSEKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BB
U1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDEK
K2Nsb3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogMzAwMAorICByZWFzb246
IDMwMDAKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BB
U1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDIK
K2Nsb3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogNDAwMAorICByZWFzb246
IGNvZGUgaXMgNDAwMAorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMg
dHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIFBB
U1M6IHdvcmtlcjogY2xvc2VFdmVudC5yZWFzb24gaXMgcmVhc29uCitjb2RlIGFuZCByZWFzb24g
dGVzdDogMworY2xvc2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUKKyAgY29kZSAgOiA0OTk5Cisg
IHJlYXNvbjogwqkgR29vZ2xlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC53YXNDbGVh
biBpcyB0cnVlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BB
U1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK0RPTkUKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xv
c2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29y
a2Vycy9jbG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0YzY2MjBlODc0MGM2NjliMWIyMTJkYjRkZDFi
OTEyNDNmZWYyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbApAQCAtMCwwICsxLDQwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorZGVzY3JpcHRpb24oIlZlcmlmeSBXZWJTb2NrZXQ6OmNsb3NlIGJlaGF2aW9ycyBp
biBXb3JrZXIuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisK
K2Z1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyLCBwcmVmaXgpCit7CisgICAgcmV0dXJuIHN0ci5pbmRl
eE9mKHByZWZpeCkgPT0gMDsKK30KKwordmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNl
cy9jbG9zZS5qcyIpOword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkKK3sKKyAg
ICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgaWYgKHN0YXJ0c1dpdGgobWVzc2FnZSwg
IlBBU1MiKSkKKyAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgICBlbHNlIGlmIChzdGFy
dHNXaXRoKG1lc3NhZ2UsICJGQUlMIikpCisgICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSkKKyAg
ICBlbHNlCisgICAgICAgIGRlYnVnKG1lc3NhZ2UpOworICAgIGlmIChtZXNzYWdlID09PSAiRE9O
RSIpCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93
b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVi
NjRjYTU2N2JmNDBhZDc0ODFkNDhmYzU0YmU4ZTZiNDE3NGUxMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNv
dXJjZXMvY2xvc2UuanMKQEAgLTAsMCArMSwyMDUgQEAKK2Z1bmN0aW9uIHBvc3RSZXN1bHQocmVz
dWx0LCBhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIHZhciBtZXNzYWdlID0gcmVzdWx0ID8gIlBB
U1MiIDogIkZBSUwiOworICAgIG1lc3NhZ2UgKz0gIjogd29ya2VyOiAiICsgYWN0dWFsICsgIiBp
cyAiOworICAgIGlmICghcmVzdWx0KQorICAgICAgICBtZXNzYWdlICs9ICJub3QgIjsKKyAgICBt
ZXNzYWdlICs9IGV4cGVjdGVkOworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UpOworfQorCitmdW5j
dGlvbiB0ZXN0RmFpbGVkKG1lc3NhZ2UpCit7CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6ICIgKyBt
ZXNzYWdlKTsKK30KKworZnVuY3Rpb24gZGVidWcobWVzc2FnZSkKK3sKKyAgICBwb3N0TWVzc2Fn
ZShtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sK
KyAgICB2YXIgX3Jlc3VsdCA9IGV2YWwoYWN0dWFsICsgIiA9PSAiICsgZXhwZWN0ZWQpOworICAg
IHBvc3RSZXN1bHQoX3Jlc3VsdCwgYWN0dWFsLCBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZEJlVHJ1ZShhY3R1YWwpCit7CisgICAgc2hvdWxkQmUoYWN0dWFsLCAidHJ1ZSIpOworfQor
CitmdW5jdGlvbiBzaG91bGRCZUZhbHNlKGFjdHVhbCkKK3sKKyAgICBzaG91bGRCZShhY3R1YWws
ICJmYWxzZSIpOworfQorCit2YXIgZXhjZXB0aW9uTmFtZTsKK3ZhciBleGNlcHRpb25Qcm90bzsK
K3ZhciBjbG9zZUV2ZW50OwordmFyIGNvZGU7Cit2YXIgcmVhc29uOwordmFyIHJlc3VsdDsKK3Zh
ciBpbnZhbGlkQWNjZXNzRXJyID0gIklOVkFMSURfQUNDRVNTX0VSUiI7Cit2YXIgc3ludGF4RXJy
ID0gIlNZTlRBWF9FUlIiOwordmFyIG5vcm1hbENsb3N1cmUgPSAxMDAwOwordmFyIGFibm9ybWFs
Q2xvc3VyZSA9IDEwMDY7Cit2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xvc2UiOwordmFyIHdzOwordmFyIHRlc3RJZDsKKwordmFyIGNvZGVUZXN0
Q29kZXMgPSBbCisgICAgOTk5LCAxMDAxLCAyOTk5LCA1MDAwLCA2NTUzNiArIDEwMDAsIDB4MTAw
MDAwMDAwICsgMTAwMCwgMjk5OS45LCBOYU4sICIwIiwgIjEwMCIsIDEvMCwgLTEvMCwgMC8wLAor
ICAgIDEwMDAuMAorXTsKKwordmFyIHJlYXNvblRlc3RSZWFzb25zID0gWworICAgICIxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0IiwgLy8gMTI0IEJ5dGUKKyAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTJcdTAwYTkiLCAvLyBsZW5ndGggaXMgMTIz
LCBidXQgMTI0IEJ5dGUgaW4gVVRGLTgKKyAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzIiwgLy8gMTIzIEJ5dGUKK107
CisKK3ZhciByZWFzb25UZXN0UmVzdWx0cyA9IFsKKyAgICBmYWxzZSwKKyAgICBmYWxzZSwKKyAg
ICB0cnVlLAorXTsKKwordmFyIG9ub3BlbiA9IGZ1bmN0aW9uICgpCit7CisgICAgdGVzdEZhaWxl
ZCgib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3ZhciBvbmVycm9yID0gZnVuY3Rpb24g
KCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJvbmVycm9yKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3Zh
ciBvbmNsb3NlID0gZnVuY3Rpb24gKCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJvbmNsb3NlKCkgd2Fz
IGNhbGxlZC4iKTsKK307CisKK3ZhciBvbm1lc3NhZ2UgPSBmdW5jdGlvbiAoKQoreworICAgIHRl
c3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgc2V0X2RlZmF1
bHRzID0gZnVuY3Rpb24gKHdzKQoreworICAgIHdzLm9ub3BlbiA9IG9ub3BlbjsKKyAgICB3cy5v
bmVycm9yID0gb25lcnJvcjsKKyAgICB3cy5vbmNsb3NlID0gb25jbG9zZTsKKyAgICB3cy5vbm1l
c3NhZ2UgPSBvbm1lc3NhZ2U7Cit9CisKK3ZhciBydW5fY29kZV90ZXN0ID0gZnVuY3Rpb24gKCkK
K3sKKyAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICBzZXRfZGVmYXVsdHMod3MpOwor
ICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCBjb2RlVGVzdENvZGVzLmxlbmd0aDsgaWQrKykgewor
ICAgICAgICBpZiAoY29kZVRlc3RDb2Rlc1tpZF0gIT0gbm9ybWFsQ2xvc3VyZSkgeworICAgICAg
ICAgICAgZGVidWcoImludmFsaWQgY29kZSB0ZXN0OiAiICsgaWQpOworICAgICAgICAgICAgd3Mu
b25jbG9zZSA9IG9uY2xvc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3cy5vbmNs
b3NlID0gZnVuY3Rpb24gKGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVidWco
InJ1bl9jb2RlX3Rlc3Q6IG9uY2xvc2UoKS4iKTsKKyAgICAgICAgICAgICAgICBjbG9zZUV2ZW50
ID0gZTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImFibm9y
bWFsQ2xvc3VyZSIpOworICAgICAgICAgICAgICAgIGlmIChjbG9zZUV2ZW50LmNvZGUgPT0gYWJu
b3JtYWxDbG9zdXJlKQorICAgICAgICAgICAgICAgICAgICBydW5faW52YWxpZF9zdHJpbmdfdGVz
dCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAg
ICAgd3MuY2xvc2UoY29kZVRlc3RDb2Rlc1tpZF0pOworICAgICAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgICAgICBkZWJ1ZygiY29kZSAiICsgY29kZVRlc3RDb2Rlc1tpZF0gKyAiIG11c3QgY2F1
c2UgIiArIGludmFsaWRBY2Nlc3NFcnIpOworICAgICAgICAgICAgZXhjZXB0aW9uTmFtZSA9IGUu
bmFtZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9m
KGUpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4Y2VwdGlvbk5hbWUiLCAiaW52YWxpZEFjY2Vz
c0VyciIpOworICAgICAgICB9CisgICAgfQorfQorCit2YXIgcnVuX2ludmFsaWRfc3RyaW5nX3Rl
c3QgPSBmdW5jdGlvbiAoKQoreworICAgIC8vIFRPRE86IHVucGFpcmVkIHN1cnJvZ2F0ZXMgdGhy
b3cgU1lOVEFYX0VSUgorICAgIGRlYnVnKCJza2lwIGludmFsaWQgc3RyaW5nIHRlc3QiKTsKKyAg
ICBydW5fcmVhc29uX3Rlc3QoKTsKK30KKwordmFyIHJ1bl9yZWFzb25fdGVzdCA9IGZ1bmN0aW9u
IChuZXh0X3Rlc3QpCit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgc2V0X2Rl
ZmF1bHRzKHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgcmVhc29uVGVzdFJlYXNvbnMu
bGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGRlYnVnKCJyZWFzb24gdGVzdDogIiArIGlkKTsKKyAg
ICAgICAgaWYgKCFyZWFzb25UZXN0UmVzdWx0c1tpZF0pIHsKKyAgICAgICAgICAgIGRlYnVnKCIg
IHdpdGggaW52YWxpZCByZWFzb246ICIgKyByZWFzb25UZXN0UmVhc29uc1tpZF0pOworICAgICAg
ICAgICAgd3Mub25jbG9zZSA9IG9uY2xvc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZGVidWcoInJ1bl9yZWFzb25fdGVzdDogb25jbG9zZSgpLiIpOworICAgICAgICAgICAgICAg
IGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LmNv
ZGUiLCAiYWJub3JtYWxDbG9zdXJlIik7CisgICAgICAgICAgICAgICAgaWYgKGNsb3NlRXZlbnQu
Y29kZSA9PSBhYm5vcm1hbENsb3N1cmUpCisgICAgICAgICAgICAgICAgICAgIHJ1bl9jb2RlX2Fu
ZF9yZWFzb25fdGVzdCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICB0cnkg
eworICAgICAgICAgICAgd3MuY2xvc2Uobm9ybWFsQ2xvc3VyZSwgcmVhc29uVGVzdFJlYXNvbnNb
aWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZGVidWcoInJlYXNvbiAi
ICsgcmVhc29uVGVzdFJlYXNvbnNbaWRdICsgIiBtdXN0IGNhdXNlICIgKyBzeW50YXhFcnIpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gcmVhc29uVGVzdFJlc3VsdHNbaWRdOworICAgICAgICAgICAg
ZXhjZXB0aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblByb3RvID0gT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKGUpOworICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgicmVzdWx0
Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiZXhjZXB0aW9uTmFtZSIsICJzeW50YXhFcnIiKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwordmFyIHJ1bl9jb2RlX2FuZF9yZWFzb25fdGVzdCA9IGZ1
bmN0aW9uICgpCit7CisgICAgdmFyIGNvZGVzID0gWworICAgICAgICAxMDAwLAorICAgICAgICAz
MDAwLAorICAgICAgICA0MDAwLAorICAgICAgICA0OTk5CisgICAgXTsKKyAgICB2YXIgcmVhc29u
cyA9IFsKKyAgICAgICAgIk9LLCBCeWUhIiwKKyAgICAgICAgIjMwMDAiLAorICAgICAgICAiY29k
ZSBpcyA0MDAwIiwKKyAgICAgICAgIlx1MDBhOSBHb29nbGUiCisgICAgXTsKKyAgICAoZnVuY3Rp
b24gdGVzdCAoaWQpIHsKKyAgICAgICAgZGVidWcoImNvZGUgYW5kIHJlYXNvbiB0ZXN0OiAiICsg
aWQpOworICAgICAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICAgICAgc2V0X2RlZmF1
bHRzKHdzKTsKKyAgICAgICAgd3Mub25vcGVuID0gZnVuY3Rpb24gKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgd3MuY2xvc2UoY29kZXNbaWRdLCByZWFzb25zW2lkXSk7CisgICAgICAgIH07Cisg
ICAgICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgeworICAgICAgICAgICAg
Y2xvc2VFdmVudCA9IGU7CisgICAgICAgICAgICBjb2RlID0gY29kZXNbaWRdOworICAgICAgICAg
ICAgcmVhc29uID0gcmVhc29uc1tpZF07CisgICAgICAgICAgICBkZWJ1ZygiY2xvc2UgY29kZSBh
bmQgcmVhc29uIG11c3QgYmUiKTsKKyAgICAgICAgICAgIGRlYnVnKCIgIGNvZGUgIDogIiArIGNv
ZGUpOworICAgICAgICAgICAgZGVidWcoIiAgcmVhc29uOiAiICsgcmVhc29uKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJjb2RlIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y2xvc2VFdmVudC5yZWFzb24iLCAicmVhc29uIik7CisgICAgICAgICAgICBpZiAoKytpZCAhPSBj
b2Rlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgdGVzdChpZCk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkRPTkUiKTsKKyAgICAgICAgfTsKKyAgICB9
KSgwKTsKK30KKworcnVuX2NvZGVfdGVzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUwYWJlM2ExYTRhZjM1
YmM3ZTY0Nzc2MDU2ODQwNmIyYmZkZDcwMjIuLmYyOTkzMzU3MTMwNmI4OTE0NzhkYTRmZjkzZTU2
YzQ4YjVjMTQyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMS0wOC0zMSAgVGFr
YXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dlYlNv
Y2tldF0gSW1wbGVtZW50IFdlYlNvY2tldDo6Y2xvc2UoKSBjb2RlIGFuZCByZWFzb24gaGFuZGxp
bmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njky
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rz
OiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS5odG1sCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYlNvY2tldDo6
Y2xvc2VDYWxsYmFjayk6CisgICAgICAgIEFkZCBjdXN0b20gYnJpZGdlIGZvciBXZWJTb2NrZXQ6
OmNsb3NlKCkuCisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAgICAqIHdlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpjbG9zZSk6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzIGhhbmRs
aW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKToKKyAgICAgICAgU2VuZCBhIGNsb3NlIGZyYW1lIHdpdGhvdXQgY29kZSBhbmQgcmVh
c29uIG9uIHNlcnZlciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2VzLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZUhpeGllNzYpOgorICAgICAgICAqIHdlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlk
Z2U6OmNsb3NlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmg6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzIGhhbmRs
aW5nLgorCiAyMDExLTA4LTMxICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYlNvY2tldDogTG9hZCBCbG9iIGluIFdlYlNvY2tldENoYW5uZWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCBh
ZjVkYWNhNTU1ZTA4OWVjMTIyNThjNjE3MjJjNjA3Y2RmMzAxNmNhLi43YTQ5YWRhMjk3YzQ4ZDRh
ZDRiMDMxNmZkMTE1ZTc3ZWU3ZDY0Y2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMzUsMTAgKzM1LDEzIEBACiAKICNpbmNsdWRlICJKU1dlYlNvY2tl
dC5oIgogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNp
bmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNpbmNs
dWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwpAQCAtODUsNiArODgsMzggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dlYlNvY2tldChFeGVj
U3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihleGVjLCBq
c0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgV2ViU29ja2V0LCB3ZWJTb2NrZXQuZ2V0KCkp
KTsKIH0KIAorSlNWYWx1ZSBKU1dlYlNvY2tldDo6Y2xvc2UoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gc3RhdGljX2Nhc3Q8V2ViU29ja2V0Kj4oaW1wbCgp
KTsKKyAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAg
ICBpbnQgY29kZSA9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVk
OworICAgIFN0cmluZyByZWFzb24gPSAiIjsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA+PSAxKSB7
CisgICAgICAgIC8vIFtDbGFtcF0gaW4gb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgY29kZS4KKyAg
ICAgICAgSlNWYWx1ZSB2ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgICAgIGRvdWJsZSB4ID0g
di50b051bWJlcihleGVjKTsKKyAgICAgICAgZG91YmxlIG1heFZhbHVlID0gc3RhdGljX2Nhc3Q8
ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOworICAgICAgICBk
b3VibGUgbWluVmFsdWUgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDE2X3Q+OjptaW4oKSk7CisgICAgICAgIGlmIChpc25hbih4KSkKKyAgICAgICAgICAgIHgg
PSAwLjA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHggPSBjbGFtcFRvKHgsIG1pblZhbHVl
LCBtYXhWYWx1ZSk7CisgICAgICAgIGNvZGUgPSBjbGFtcFRvSW50ZWdlcih4KTsKKyAgICAgICAg
aWYgKGFyZ3VtZW50Q291bnQgPj0gMikgeworICAgICAgICAgICAgLy8gaW4gb3B0aW9uYWwgRE9N
U3RyaW5nIHJlYXNvbgorICAgICAgICAgICAgcmVhc29uID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMt
PmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBTWU5U
QVhfRVJSKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB3
ZWJTb2NrZXQtPmNsb3NlKGNvZGUsIHJlYXNvbiwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCA1OGEyN2U3ZmExM2RiOWZhMmRk
YzNkMmZlZDNmN2U4OTdmYzk3NWQ1Li5mNGU0YjEwNTlmNmM2OGVhYjFkZDk2OTFjODg0ZjlkMWUw
YmI5ZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsMTQgKzM0LDE3IEBACiAKICNpbmNsdWRlICJW
OFdlYlNvY2tldC5oIgogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV29y
a2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgor
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDgsNiArMTExLDM4IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYlNvY2tldDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzCiAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYlNvY2tldDo6Y2xvc2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gdG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CisgICAgaW50IGFyZ3VtZW50Q291bnQgPSBhcmdzLkxlbmd0aCgpOworICAgIGludCBjb2RlID0g
V2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQ7CisgICAgU3RyaW5n
IHJlYXNvbiA9ICIiOworICAgIGlmIChhcmd1bWVudENvdW50ID49IDEpIHsKKyAgICAgICAgLy8g
W0NsYW1wXSBpbiBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBjb2RlLgorICAgICAgICBkb3VibGUg
eCA9IGFyZ3NbMF0tPk51bWJlclZhbHVlKCk7CisgICAgICAgIGRvdWJsZSBtYXhWYWx1ZSA9IHN0
YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKTsK
KyAgICAgICAgZG91YmxlIG1pblZhbHVlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQxNl90Pjo6bWluKCkpOworICAgICAgICBpZiAoaXNuYW4oeCkpCisgICAg
ICAgICAgICB4ID0gMC4wOworICAgICAgICBlbHNlCisgICAgICAgICAgICB4ID0gY2xhbXBUbyh4
LCBtaW5WYWx1ZSwgbWF4VmFsdWUpOworICAgICAgICBjb2RlID0gY2xhbXBUb0ludGVnZXIoeCk7
CisgICAgICAgIGlmIChhcmd1bWVudENvdW50ID49IDIpIHsKKyAgICAgICAgICAgIC8vIGluIG9w
dGlvbmFsIERPTVN0cmluZyByZWFzb24KKyAgICAgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRj
aDsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gcmVhc29uVmFsdWUgPSBhcmdz
WzFdLT5Ub1N0cmluZygpOworICAgICAgICAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNoLkV4Y2VwdGlvbigpKTsK
KyAgICAgICAgICAgIHJlYXNvbiA9IHRvV2ViQ29yZVN0cmluZyhyZWFzb25WYWx1ZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2ViU29ja2V0LT5j
bG9zZShjb2RlLCByZWFzb24sIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKGVjKTsKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCiB9ICAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAppbmRleCBjZDljZTI1MmE0Y2Q1YmQ2N2E3MzljZmM1MzMyNzA4ZTBlZDQ4Y2ZlLi4wOWY4MWI1
MDdhMTAwMWQ2ZTdlYTU5MTcyMTE2ZWE5ZTlmZjdiZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsg
Ly8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9r
ZWQuCiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAg
ICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CiAgICAgLy8gTG9nIHRoZSByZWFzb24gdGV4
dCBhbmQgY2xvc2UgdGhlIGNvbm5lY3Rpb24uIFdpbGwgY2FsbCBkaWRDbG9zZSgpLgogICAgIHZp
cnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2Nvbm5lY3QoKSA9IDA7IC8vIFdpbGwgc3VwcHJlc3MgZGlkQ2xvc2UoKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBkYzlhYmJhZjRjNDZhZWQ2OTgy
YTY3NmQzOTVkODM2ODg1ZjMxYmY1Li4yNGIxNmY0N2YwNDM3MGRlODljN2U2NzkxMTMxYjk0NmU4
NGYzY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTYwLDYg
KzYwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjb25zdCBzaXplX3QgbWF4UmVhc29u
U2l6ZUluQnl0ZXMgPSAxMjM7CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkUHJvdG9jb2xD
aGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQogewogICAgIC8vIEh5YmktMTAgc2F5cyAiKFN1YnBy
b3RvY29sIHN0cmluZyBtdXN0IGNvbnNpc3Qgb2YpIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFUr
MDAyMSB0byBVKzAwN0Ugbm90IGluY2x1ZGluZwpAQCAtMjYyLDkgKzI2NCwyMyBAQCBib29sIFdl
YlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQobWVzc2FnZSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0
OjpjbG9zZSgpCit2b2lkIFdlYlNvY2tldDo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dCAlcCBjbG9zZSIsIHRoaXMpOworICAgIGlmIChjb2RlID09IFdlYlNvY2tldENoYW5uZWw6OkNs
b3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkKQorICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dCAlcCBjbG9zZSB3aXRob3V0IGNvZGUgYW5kIHJlYXNvbiIsIHRoaXMpOworICAgIGVsc2Ugewor
ICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjbG9zZSB3aXRoIGNvZGUgPSAlZCwg
cmVhc29uID0gJXMiLCB0aGlzLCBjb2RlLCByZWFzb24udXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IGlmICghKGNvZGUgPT0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3JtYWxDbG9z
dXJlIHx8IChXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU1pbmltdW1Vc2VyRGVmaW5l
ZCA8PSBjb2RlICYmIGNvZGUgPD0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVNYXhp
bXVtVXNlckRlZmluZWQpKSkgeworICAgICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IGlmIHJl
YXNvbiBjb250YWlucyBhbnkgdW5wYWlyZWQgc3Vycm9nYXRlcywgcmFpc2UgU1lOVEFYX0VSUi4K
KyAgICAgICAgaWYgKHJlYXNvbi51dGY4KCkubGVuZ3RoKCkgPiBtYXhSZWFzb25TaXplSW5CeXRl
cykgeworICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0lORyB8fCBtX3N0YXRl
ID09IENMT1NFRCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJ
TkcpIHsKQEAgLTI3Nyw3ICsyOTMsNyBAQCB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoKQogICAgIC8v
IGRpZENsb3NlIG5vdGlmaWNhdGlvbiBtYXkgYmUgYWxyZWFkeSBxdWV1ZWQsIHdoaWNoIHdlIHdp
bGwgaW5hZHZlcnRlbnRseSBwcm9jZXNzIHdoaWxlIHdhaXRpbmcgZm9yIGJ1ZmZlcmVkQW1vdW50
KCkgdG8gcmV0dXJuLgogICAgIC8vIEluIHRoaXMgY2FzZSBtX2NoYW5uZWwgd2lsbCBiZSBzZXQg
dG8gbnVsbCBkdXJpbmcgZGlkQ2xvc2UoKSBjYWxsLCB0aHVzIHdlIG5lZWQgdG8gdGVzdCB2YWxp
ZG5lc3Mgb2YgbV9jaGFubmVsIGhlcmUuCiAgICAgaWYgKG1fY2hhbm5lbCkKLSAgICAgICAgbV9j
aGFubmVsLT5jbG9zZSgpOworICAgICAgICBtX2NoYW5uZWwtPmNsb3NlKGNvZGUsIHJlYXNvbik7
CiB9CiAKIGNvbnN0IEtVUkwmIFdlYlNvY2tldDo6dXJsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IDU2ZTIwMDZjMDEzNzE4ZmUxNDg4ZDcyM2M1MWUwOThh
NDIzYTFmYmYuLjFkZDU2YTJmNDQ4Nzk4YWY4N2I3YzgxOWMyNTE1YjMxODc2OGUyYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsK
IAotICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29u
c3Q7CiAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaWRsCmluZGV4IDgxZDc1NjNmMDdjOTE0Mjc0NWY3ZjI5YjFjZTMyNTVmNTZh
NmVjZTIuLmNhZDNhNmJmYTFlNjI0OTE0NjE4ZjAzZGFmNGQ0NGQxNTdhMTNmZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKQEAgLTY0LDcgKzY0LDcgQEAgbW9kdWxl
IHdlYnNvY2tldHMgewogICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwog
CiAgICAgICAgIFtSZXF1aXJlc0FsbEFyZ3VtZW50c10gYm9vbGVhbiBzZW5kKGluIERPTVN0cmlu
ZyBkYXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCBjbG9zZSgpOworICAg
ICAgICBbQ3VzdG9tXSB2b2lkIGNsb3NlKGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgY29k
ZSwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgcmVhc29uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
IAogICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICAgICAgdm9pZCBhZGRFdmVu
dExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNjY3MmZkZDRjYmMzM2FmMzQyZGQxN2E4Yzhj
NjFjZGNiOWQ4NTBkMy4uNzAyZDA3YjM4MjUzZTA0ZmE1YWI5ZDc0ZThlMGJhMmYxZjk5ZjNjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBA
IC0xNzgsMTMgKzE3OCwxMyBAQCB1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZl
cmVkQW1vdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9oYW5kbGUtPmJ1ZmZlcmVkQW1vdW50KCk7
CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQordm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NlIiwgdGhpcyk7CiAgICAgQVNTRVJUKCFt
X3N1c3BlbmRlZCk7CiAgICAgaWYgKCFtX2hhbmRsZSkKICAgICAgICAgcmV0dXJuOwotICAgIHN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOworICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShjb2RlLCBy
ZWFzb24pOwogICAgIGlmIChtX2Nsb3NpbmcgJiYgIW1fY2xvc2luZ1RpbWVyLmlzQWN0aXZlKCkp
CiAgICAgICAgIG1fY2xvc2luZ1RpbWVyLnN0YXJ0T25lU2hvdCgyICogVENQTWF4aW11bVNlZ21l
bnRMaWZldGltZSk7CiB9CkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpyZXN1bWVUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENoYW5uZWw+KiB0aW1lcikKICAgICAg
ICAgZGlkQ2xvc2VTb2NrZXRTdHJlYW0obV9oYW5kbGUuZ2V0KCkpOwogfQogCi12b2lkIFdlYlNv
Y2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCit2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24p
CiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgJWQgJWQi
LCB0aGlzLCBtX2Nsb3NpbmcsIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlKTsKICAgICBpZiAo
bV9jbG9zaW5nKQpAQCAtNDgyLDkgKzQ4MiwxNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAgICAgICAgICAgICBtX2hhbmRsZS0+ZGlzY29ubmVjdCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIGVu
cXVldWVSYXdGcmFtZShPcENvZGVDbG9zZSwgIiIsIDApOyAvLyBGSVhNRTogU2VuZCBzdGF0dXMg
Y29kZSBhbmQgcmVhc29uIG1lc3NhZ2UuCi0KKyAgICB9IGVsc2UgeworICAgICAgICBWZWN0b3I8
Y2hhcj4gYnVmOworICAgICAgICBpZiAoIW1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlKSB7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGhpZ2hCeXRlID0gY29kZSA+PiA4OworICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBsb3dCeXRlID0gY29kZTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQo
c3RhdGljX2Nhc3Q8Y2hhcj4oaGlnaEJ5dGUpKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoc3Rh
dGljX2Nhc3Q8Y2hhcj4obG93Qnl0ZSkpOworICAgICAgICAgICAgYnVmLmFwcGVuZChyZWFzb24u
dXRmOCgpLmRhdGEoKSwgcmVhc29uLnV0ZjgoKS5sZW5ndGgoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgZW5xdWV1ZVJhd0ZyYW1lKE9wQ29kZUNsb3NlLCBidWYuZGF0YSgpLCBidWYuc2l6ZSgpKTsK
KyAgICB9CiAgICAgbV9jbG9zaW5nID0gdHJ1ZTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
IG1fY2xpZW50LT5kaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKTsKQEAgLTY5MCw3ICs2OTgsNyBA
QCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgpCiAgICAgICAgICAgICBtX2Ns
b3NlRXZlbnRSZWFzb24gPSAiIjsKICAgICAgICAgc2tpcEJ1ZmZlcihmcmFtZS5mcmFtZUVuZCAt
IG1fYnVmZmVyKTsKICAgICAgICAgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UgPSB0cnVlOwot
ICAgICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoKTsKKyAgICAgICAgc3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKG1fY2xvc2VFdmVudENvZGUsIG1fY2xvc2VFdmVudFJlYXNvbik7CiAgICAgICAgIGlm
IChtX2Nsb3NpbmcpIHsKICAgICAgICAgICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlU3RhdHVzID0g
T3V0Z29pbmdGcmFtZVF1ZXVlQ2xvc2luZzsKICAgICAgICAgICAgIHByb2Nlc3NPdXRnb2luZ0Zy
YW1lUXVldWUoKTsKQEAgLTc3MSw3ICs3NzksNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnBy
b2Nlc3NGcmFtZUhpeGllNzYoKQogICAgICAgICAgICAgc2tpcEJ1ZmZlcihuZXh0RnJhbWUgLSBt
X2J1ZmZlcik7CiAgICAgICAgICAgICBpZiAoZnJhbWVCeXRlID09IDB4ZmYgJiYgIWxlbmd0aCkg
ewogICAgICAgICAgICAgICAgIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoKTsKKyAgICAgICAgICAgICAgICBz
dGFydENsb3NpbmdIYW5kc2hha2UoQ2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQsICIiKTsKICAg
ICAgICAgICAgICAgICBpZiAobV9jbG9zaW5nKQogICAgICAgICAgICAgICAgICAgICBtX2hhbmRs
ZS0+Y2xvc2UoKTsgLy8gY2xvc2UgYWZ0ZXIgc2VuZGluZyBGRiAwMC4KICAgICAgICAgICAgIH0g
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAppbmRl
eCA0MDA0OTkxMDZkNzlmOWE4NDUzYjE5N2M1MDViZmZjMzMxN2RlODgzLi45NzAzMTYyM2NjMjY2
ZTZkYWFkZTcyNTFiZGUxMTU3NjEyM2I2NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTdHJpbmcgc3VicHJvdG9jb2woKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3Vu
dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOyAvLyBTdGFydCBjbG9zaW5nIGhh
bmRzaGFrZS4KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uKTsgLy8gU3RhcnQgY2xvc2luZyBoYW5kc2hha2UuCiAgICAgdmlydHVhbCB2b2lkIGZh
aWwoY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCk7
CiAKQEAgLTgzLDYgKzgzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpOwogCiAgICAgZW51bSBDbG9zZUV2ZW50Q29kZSB7CisgICAgICAg
IENsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkID0gLTEsCiAgICAgICAgIENsb3NlRXZlbnRDb2Rl
Tm9ybWFsQ2xvc3VyZSA9IDEwMDAsCiAgICAgICAgIENsb3NlRXZlbnRDb2RlR29pbmdBd2F5ID0g
MTAwMSwKICAgICAgICAgQ2xvc2VFdmVudENvZGVQcm90b2NvbEVycm9yID0gMTAwMiwKQEAgLTkw
LDcgKzkxLDkgQEAgcHVibGljOgogICAgICAgICBDbG9zZUV2ZW50Q29kZUZyYW1lVG9vTGFyZ2Ug
PSAxMDA0LAogICAgICAgICBDbG9zZUV2ZW50Q29kZU5vU3RhdHVzUmN2ZCA9IDEwMDUsCiAgICAg
ICAgIENsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9zdXJlID0gMTAwNiwKLSAgICAgICAgQ2xvc2VF
dmVudENvZGVJbnZhbGlkVVRGOCA9IDEwMDcKKyAgICAgICAgQ2xvc2VFdmVudENvZGVJbnZhbGlk
VVRGOCA9IDEwMDcsCisgICAgICAgIENsb3NlRXZlbnRDb2RlTWluaW11bVVzZXJEZWZpbmVkID0g
MzAwMCwKKyAgICAgICAgQ2xvc2VFdmVudENvZGVNYXhpbXVtVXNlckRlZmluZWQgPSA0OTk5CiAg
ICAgfTsKIAogI2lmIEVOQUJMRShCTE9CKQpAQCAtMTE1LDcgKzExOCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBza2lwQnVmZmVyKHNpemVfdCBsZW4pOwogICAgIGJvb2wgcHJvY2Vzc0J1ZmZlcigp
OwogICAgIHZvaWQgcmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiopOwot
ICAgIHZvaWQgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CisgICAgdm9pZCBzdGFydENsb3NpbmdI
YW5kc2hha2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICB2b2lkIGNsb3Np
bmdUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENoYW5uZWw+Kik7CiAKICAgICAvLyBIeWJpLTEw
IG9wY29kZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDU2Zjk3YWFkMDBmN2E2
NDE5NmM4ZmJjZjg1ZDFiZTUzYjQ4YTc0ZjcuLjQ0OTg4ZjY1NjJiMTI0MjFhMGY0MDA3MDRlYmMw
NzYwZWJiMDI0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCkBAIC05NCwxMCArOTQs
MTAgQEAgdW5zaWduZWQgbG9uZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6YnVm
ZmVyZWRBbW91bnQoKSBjb25zdAogICAgIHJldHVybiBtX2JyaWRnZS0+YnVmZmVyZWRBbW91bnQo
KTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQor
dm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoaW50IGNvZGUsIGNv
bnN0IFN0cmluZyYgcmVhc29uKQogewogICAgIGlmIChtX2JyaWRnZSkKLSAgICAgICAgbV9icmlk
Z2UtPmNsb3NlKCk7CisgICAgICAgIG1fYnJpZGdlLT5jbG9zZShjb2RlLCByZWFzb24pOwogfQog
CiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpmYWlsKGNvbnN0IFN0cmlu
ZyYgcmVhc29uKQpAQCAtMTg3LDEyICsxODcsMTIgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6YnVmZmVyZWRBbW91bnQoKQogICAgIG1fbG9hZGVyUHJveHku
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2Vy
Q29udGV4dERpZEdldEJ1ZmZlcmVkQW1vdW50LCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGJ1ZmZl
cmVkQW1vdW50KSwgbV90YXNrTW9kZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlBlZXI6OmNsb3NlKCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlBlZXI6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmICghbV9tYWluV2ViU29ja2V0Q2hh
bm5lbCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmNsb3Nl
KCk7CisgICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0K
IAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZmFpbChjb25z
dCBTdHJpbmcmIHJlYXNvbikKQEAgLTM5NSwxOSArMzk1LDE5IEBAIHVuc2lnbmVkIGxvbmcgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6YnVmZmVyZWRBbW91bnQoKQog
ICAgIHJldHVybiAwOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjptYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciog
cGVlcikKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRD
bG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBpbnQgY29k
ZSwgY29uc3QgU3RyaW5nJnJlYXNvbikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBB
U1NFUlQocGVlcik7CiAKLSAgICBwZWVyLT5jbG9zZSgpOworICAgIHBlZXItPmNsb3NlKGNvZGUs
IHJlYXNvbik7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJy
aWRnZTo6Y2xvc2UoKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJp
ZGdlOjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgQVNTRVJU
KG1fcGVlcik7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxi
YWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9z
ZSwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3BlZXIpKSk7CisgICAgbV9sb2FkZXJQcm94eS5w
b3N0VGFza1RvTG9hZGVyKGNyZWF0ZUNhbGxiYWNrVGFzaygmV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZSwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhtX3Bl
ZXIpLCBjb2RlLCByZWFzb24pKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGVlciogcGVlciwgY29uc3QgU3RyaW5nJiByZWFzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgK
aW5kZXggYTQ4YThhMTlkN2MyMDg4YzEyZDljMTc2MjJiMjAxNTM3MjUxMTRmOC4uYThkMTMzZDNj
ZGY4MWU3MmE4N2RiNThhNjg1ZmUxYTEyMmE0YjMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc3VicHJvdG9j
b2woKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAg
IHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBjbG9zZSgpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJiByZWFzb24pOwogICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVh
c29uKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpOyAvLyBXaWxsIHN1cHByZXNzIGRp
ZENsb3NlKCkuCiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoKTsKQEAgLTk0LDcgKzk0LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
IHByb3RvY29sKTsKICAgICAgICAgdm9pZCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAg
ICAgICAgIHZvaWQgYnVmZmVyZWRBbW91bnQoKTsKLSAgICAgICAgdm9pZCBjbG9zZSgpOworICAg
ICAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAg
IHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgZGlzY29ubmVj
dCgpOwogICAgICAgICB2b2lkIHN1c3BlbmQoKTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBwcml2YXRl
OgogICAgICAgICB2b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9j
b2wpOwogICAgICAgICBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAg
dW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCgpOwotICAgICAgICB2b2lkIGNsb3NlKCk7Cisg
ICAgICAgIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICAg
ICAgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICAgICAgdm9pZCBkaXNjb25u
ZWN0KCk7CiAgICAgICAgIHZvaWQgc3VzcGVuZCgpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENvbm5lY3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBlZXIqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAg
c3RhdGljIHZvaWQgbWFpblRocmVhZFNlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIq
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRCdWZm
ZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwotICAgIHN0YXRpYyB2
b2lkIG1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOworICAg
IHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVl
ciosIGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgc3RhdGljIHZvaWQgbWFp
blRocmVhZEZhaWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBTdHJpbmcm
IHJlYXNvbik7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBlZXIqKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU3VzcGVuZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105767</attachid>
            <date>2011-08-31 04:22:43 -0700</date>
            <delta_ts>2011-09-01 00:14:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66925-20110831202241.patch</filename>
            <type>text/plain</type>
            <size>46924</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQxNjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YTUzNTQ0ODQ5ZTRiYTJjNjE5NGNj
Yzc1ZDFlMDJhYWI4YTIwMDA0Li5jMGNlYWM3MGEzM2ViNDEzNDdjZjI2NzJlNjllOTRiNzYwOTg1
NGM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMzEgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIEltcGxlbWVu
dCBXZWJTb2NrZXQ6OmNsb3NlKCkgY29kZSBhbmQgcmVhc29uIGhhbmRsaW5nLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvY2xvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qczogQWRkZWQuCisgICAg
ICAgIChwb3N0UmVzdWx0KToKKyAgICAgICAgKHRlc3RGYWlsZWQpOgorICAgICAgICAoZGVidWcp
OgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVUcnVlKToKKyAgICAgICAg
KHNob3VsZEJlRmFsc2UpOgorICAgICAgICAob25vcGVuKToKKyAgICAgICAgKG9uZXJyb3IpOgor
ICAgICAgICAob25jbG9zZSk6CisgICAgICAgIChvbm1lc3NhZ2UpOgorICAgICAgICAoc2V0X2Rl
ZmF1bHRzKToKKyAgICAgICAgKHJ1bl9jb2RlX3Rlc3QuZWxzZS53cy5vbmNsb3NlKToKKyAgICAg
ICAgKHJ1bl9jb2RlX3Rlc3QpOgorICAgICAgICAocnVuX2ludmFsaWRfc3RyaW5nX3Rlc3QpOgor
ICAgICAgICAocnVuX3JlYXNvbl90ZXN0LmVsc2Uud3Mub25jbG9zZSk6CisgICAgICAgIChydW5f
cmVhc29uX3Rlc3QpOgorICAgICAgICAocnVuX2NvZGVfYW5kX3JlYXNvbl90ZXN0Lik6CisgICAg
ICAgIChydW5fY29kZV9hbmRfcmVhc29uX3Rlc3QpOgorCiAyMDExLTA4LTMxICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJl
dmlld2VkLCByZWJhc2VsaW5lIGFub3RoZXIgbXVsdGljb2wgdGVzdCBleHBlY3RhdGlvbi4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xv
c2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9jbG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODBkOTM0YjZkNThmM2Q4MDA0N2M0
OWU1NDkyOWUxZTU4MTViNmRmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTA4IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZv
cmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNo
ZWQuCitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlvcnMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworaW52YWxpZCBjb2RlIHRlc3Q6IDAKK2NvZGUgOTk5IG11c3QgY2F1c2Ug
SU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24u
cHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJy
CitpbnZhbGlkIGNvZGUgdGVzdDogMQorY29kZSAxMDAxIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NF
U1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlz
IHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNv
ZGUgdGVzdDogMgorY29kZSAyOTk5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNT
IGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1Mg
ZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMwor
Y29kZSA1MDAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblBy
b3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFt
ZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogNAorY29kZSA2NjUzNiBt
dXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9N
RXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxp
ZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDUKK2NvZGUgNDI5NDk2ODI5NiBtdXN0IGNh
dXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0
aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vz
c0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDYKK2NvZGUgMjk5OS45IG11c3QgY2F1c2UgSU5WQUxJ
RF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90
eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZh
bGlkIGNvZGUgdGVzdDogNworY29kZSBOYU4gbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIK
K1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQor
UEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0
OiA4Citjb2RlIDAgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgZXhjZXB0aW9u
UHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25O
YW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA5Citjb2RlIDEwMCBt
dXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9N
RXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxp
ZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDEwCitjb2RlIEluZmluaXR5IG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRp
b24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNz
RXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMTEKK2NvZGUgLUluZmluaXR5IG11c3QgY2F1c2UgSU5W
QUxJRF9BQ0NFU1NfRVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJv
dG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitp
bnZhbGlkIGNvZGUgdGVzdDogMTIKK2NvZGUgTmFOIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1Nf
RVJSCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRy
dWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitydW5fY29kZV90ZXN0
OiBvbmNsb3NlKCkuCitQQVNTIGNsb3NlRXZlbnQuY29kZSBpcyBhYm5vcm1hbENsb3N1cmUKK3Nr
aXAgaW52YWxpZCBzdHJpbmcgdGVzdAorcmVhc29uIHRlc3Q6IDAKKyAgd2l0aCBpbnZhbGlkIHJl
YXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNAorcmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQgbXVzdCBjYXVzZSBTWU5UQVhfRVJS
CitQQVNTIHJlc3VsdCBpcyBmYWxzZQorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0
aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgc3ludGF4RXJyCity
ZWFzb24gdGVzdDogMQorICB3aXRoIGludmFsaWQgcmVhc29uOiAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMsKpCityZWFzb24g
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTLCqSBtdXN0IGNhdXNlIFNZTlRBWF9FUlIKK1BBU1MgcmVzdWx0IGlzIGZhbHNlCitQ
QVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BB
U1MgZXhjZXB0aW9uTmFtZSBpcyBzeW50YXhFcnIKK3JlYXNvbiB0ZXN0OiAyCitydW5fcmVhc29u
X3Rlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGFibm9ybWFsQ2xvc3Vy
ZQorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK2Nsb3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJl
CisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9LLCBCeWUhCitQQVNTIGNsb3NlRXZlbnQud2Fz
Q2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBjbG9zZUV2
ZW50LnJlYXNvbiBpcyByZWFzb24KK2NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAxCitjbG9zZSBjb2Rl
IGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDMwMDAKKyAgcmVhc29uOiAzMDAwCitQQVNT
IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgY29k
ZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK2NvZGUgYW5kIHJlYXNvbiB0ZXN0
OiAyCitjbG9zZSBjb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDQwMDAKKyAgcmVh
c29uOiBjb2RlIGlzIDQwMDAKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNT
IGNsb3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNv
bgorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDMKK2Nsb3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJl
CisgIGNvZGUgIDogNDk5OQorICByZWFzb246IMKpIEdvb2dsZQorUEFTUyBjbG9zZUV2ZW50Lndh
c0NsZWFuIGlzIHRydWUKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgY2xvc2VF
dmVudC5yZWFzb24gaXMgcmVhc29uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllYjc1ZGRmY2ExZjgwODIw
ZmEzMGZiMDRhOTI4NDA3OTIwYzkwZjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwKQEAgLTAsMCArMSwxOTMg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8u
Li9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIlZlcmlm
eSBXZWJTb2NrZXQ6OmNsb3NlIGJlaGF2aW9ycy4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90
b2NvbEVuYWJsZWQiLCAwKTsKKwordmFyIGV4Y2VwdGlvbk5hbWU7Cit2YXIgZXhjZXB0aW9uUHJv
dG87Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBjb2RlOwordmFyIHJlYXNvbjsKK3ZhciByZXN1bHQ7
Cit2YXIgaW52YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElEX0FDQ0VTU19FUlIiOwordmFyIHN5bnRh
eEVyciA9ICJTWU5UQVhfRVJSIjsKK3ZhciBub3JtYWxDbG9zdXJlID0gMTAwMDsKK3ZhciBhYm5v
cm1hbENsb3N1cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsKK3ZhciB0ZXN0SWQ7CisKK3ZhciBjb2Rl
VGVzdENvZGVzID0gWworICAgIDk5OSwgMTAwMSwgMjk5OSwgNTAwMCwgNjU1MzYgKyAxMDAwLCAw
eDEwMDAwMDAwMCArIDEwMDAsIDI5OTkuOSwgTmFOLCAiMCIsICIxMDAiLCAxLzAsIC0xLzAsIDAv
MCwKKyAgICAxMDAwLjAKK107CisKK3ZhciByZWFzb25UZXN0UmVhc29ucyA9IFsKKyAgICAiMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNCIsIC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyXHUwMGE5IiwgLy8gbGVuZ3RoIGlz
IDEyMywgYnV0IDEyNCBCeXRlIGluIFVURi04CisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMyIsIC8vIDEyMyBCeXRl
CitdOworCit2YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBbCisgICAgZmFsc2UsCisgICAgZmFsc2Us
CisgICAgdHJ1ZSwKK107CisKK3ZhciBvbm9wZW4gPSBmdW5jdGlvbiAoKQoreworICAgIHRlc3RG
YWlsZWQoIm9ub3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgb25lcnJvciA9IGZ1bmN0
aW9uICgpCit7CisgICAgdGVzdEZhaWxlZCgib25lcnJvcigpIHdhcyBjYWxsZWQuIik7Cit9Owor
Cit2YXIgb25jbG9zZSA9IGZ1bmN0aW9uICgpCit7CisgICAgdGVzdEZhaWxlZCgib25jbG9zZSgp
IHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgb25tZXNzYWdlID0gZnVuY3Rpb24gKCkKK3sKKyAg
ICB0ZXN0RmFpbGVkKCJvbm1lc3NhZ2UoKSB3YXMgY2FsbGVkLiIpOworfTsKKwordmFyIHNldF9k
ZWZhdWx0cyA9IGZ1bmN0aW9uICh3cykKK3sKKyAgICB3cy5vbm9wZW4gPSBvbm9wZW47CisgICAg
d3Mub25lcnJvciA9IG9uZXJyb3I7CisgICAgd3Mub25jbG9zZSA9IG9uY2xvc2U7CisgICAgd3Mu
b25tZXNzYWdlID0gb25tZXNzYWdlOworfQorCit2YXIgcnVuX2NvZGVfdGVzdCA9IGZ1bmN0aW9u
ICgpCit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgc2V0X2RlZmF1bHRzKHdz
KTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgY29kZVRlc3RDb2Rlcy5sZW5ndGg7IGlkKysp
IHsKKyAgICAgICAgaWYgKGNvZGVUZXN0Q29kZXNbaWRdICE9IG5vcm1hbENsb3N1cmUpIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJpbnZhbGlkIGNvZGUgdGVzdDogIiArIGlkKTsKKyAgICAgICAgICAg
IHdzLm9uY2xvc2UgPSBvbmNsb3NlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3Mu
b25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRl
YnVnKCJydW5fY29kZV90ZXN0OiBvbmNsb3NlKCkuIik7CisgICAgICAgICAgICAgICAgY2xvc2VF
dmVudCA9IGU7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJh
Ym5vcm1hbENsb3N1cmUiKTsKKyAgICAgICAgICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2RlID09
IGFibm9ybWFsQ2xvc3VyZSkKKyAgICAgICAgICAgICAgICAgICAgcnVuX2ludmFsaWRfc3RyaW5n
X3Rlc3QoKTsKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIHdzLmNsb3NlKGNvZGVUZXN0Q29kZXNbaWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICAgICAgZGVidWcoImNvZGUgIiArIGNvZGVUZXN0Q29kZXNbaWRdICsgIiBtdXN0
IGNhdXNlICIgKyBpbnZhbGlkQWNjZXNzRXJyKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUg
PSBlLm5hbWU7CisgICAgICAgICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5
cGVPZihlKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZXhjZXB0aW9uUHJvdG8gPT09IERP
TUV4Y2VwdGlvbi5wcm90b3R5cGUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJleGNlcHRpb25O
YW1lIiwgImludmFsaWRBY2Nlc3NFcnIiKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordmFyIHJ1
bl9pbnZhbGlkX3N0cmluZ190ZXN0ID0gZnVuY3Rpb24gKCkKK3sKKyAgICAvLyBUT0RPOiB1bnBh
aXJlZCBzdXJyb2dhdGVzIHRocm93IFNZTlRBWF9FUlIKKyAgICBkZWJ1Zygic2tpcCBpbnZhbGlk
IHN0cmluZyB0ZXN0Iik7CisgICAgcnVuX3JlYXNvbl90ZXN0KCk7Cit9CisKK3ZhciBydW5fcmVh
c29uX3Rlc3QgPSBmdW5jdGlvbiAobmV4dF90ZXN0KQoreworICAgIHdzID0gbmV3IFdlYlNvY2tl
dCh1cmwpOworICAgIHNldF9kZWZhdWx0cyh3cyk7CisgICAgZm9yICh2YXIgaWQgPSAwOyBpZCA8
IHJlYXNvblRlc3RSZWFzb25zLmxlbmd0aDsgaWQrKykgeworICAgICAgICBkZWJ1ZygicmVhc29u
IHRlc3Q6ICIgKyBpZCk7CisgICAgICAgIGlmICghcmVhc29uVGVzdFJlc3VsdHNbaWRdKSB7Cisg
ICAgICAgICAgICBkZWJ1ZygiICB3aXRoIGludmFsaWQgcmVhc29uOiAiICsgcmVhc29uVGVzdFJl
YXNvbnNbaWRdKTsKKyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBvbmNsb3NlOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCJydW5fcmVhc29uX3Rlc3Q6IG9uY2xvc2UoKS4i
KTsKKyAgICAgICAgICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgICAgICBzaG91
bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImFibm9ybWFsQ2xvc3VyZSIpOworICAgICAgICAgICAg
ICAgIGlmIChjbG9zZUV2ZW50LmNvZGUgPT0gYWJub3JtYWxDbG9zdXJlKQorICAgICAgICAgICAg
ICAgICAgICBydW5fY29kZV9hbmRfcmVhc29uX3Rlc3QoKTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKG5vcm1hbENsb3N1cmUs
IHJlYXNvblRlc3RSZWFzb25zW2lkXSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJyZWFzb24gIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSArICIgbXVzdCBjYXVz
ZSAiICsgc3ludGF4RXJyKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlYXNvblRlc3RSZXN1bHRz
W2lkXTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAgICAgICAgICBl
eGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlRmFsc2UoInJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleGNlcHRp
b25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSIpOworICAgICAgICAgICAgc2hvdWxk
QmUoImV4Y2VwdGlvbk5hbWUiLCAic3ludGF4RXJyIik7CisgICAgICAgIH0KKyAgICB9Cit9CisK
K3ZhciBydW5fY29kZV9hbmRfcmVhc29uX3Rlc3QgPSBmdW5jdGlvbiAoKQoreworICAgIHZhciBj
b2RlcyA9IFsKKyAgICAgICAgMTAwMCwKKyAgICAgICAgMzAwMCwKKyAgICAgICAgNDAwMCwKKyAg
ICAgICAgNDk5OQorICAgIF07CisgICAgdmFyIHJlYXNvbnMgPSBbCisgICAgICAgICJPSywgQnll
ISIsCisgICAgICAgICIzMDAwIiwKKyAgICAgICAgImNvZGUgaXMgNDAwMCIsCisgICAgICAgICJc
dTAwYTkgR29vZ2xlIgorICAgIF07CisgICAgKGZ1bmN0aW9uIHRlc3QgKGlkKSB7CisgICAgICAg
IGRlYnVnKCJjb2RlIGFuZCByZWFzb24gdGVzdDogIiArIGlkKTsKKyAgICAgICAgd3MgPSBuZXcg
V2ViU29ja2V0KHVybCk7CisgICAgICAgIHNldF9kZWZhdWx0cyh3cyk7CisgICAgICAgIHdzLm9u
b3BlbiA9IGZ1bmN0aW9uICgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVz
W2lkXSwgcmVhc29uc1tpZF0pOworICAgICAgICB9OworICAgICAgICB3cy5vbmNsb3NlID0gZnVu
Y3Rpb24gKGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAg
ICAgICAgY29kZSA9IGNvZGVzW2lkXTsKKyAgICAgICAgICAgIHJlYXNvbiA9IHJlYXNvbnNbaWRd
OworICAgICAgICAgICAgZGVidWcoImNsb3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlIik7Cisg
ICAgICAgICAgICBkZWJ1ZygiICBjb2RlICA6ICIgKyBjb2RlKTsKKyAgICAgICAgICAgIGRlYnVn
KCIgIHJlYXNvbjogIiArIHJlYXNvbik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImNsb3Nl
RXZlbnQud2FzQ2xlYW4iKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LmNvZGUi
LCAiY29kZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQucmVhc29uIiwgInJl
YXNvbiIpOworICAgICAgICAgICAgaWYgKCsraWQgIT0gY29kZXMubGVuZ3RoKQorICAgICAgICAg
ICAgICAgIHRlc3QoaWQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9OworICAgIH0pKDApOworfQorCitydW5fY29kZV90ZXN0KCk7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZV93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIwMmQ2NjI2
N2UyOTRjZTgzOTc3ZGFjNjRmMDc1OTgxNzA1NjQ3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5CkBAIC0w
LDAgKzEsNTMgQEAKKyMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitfR09PREJZ
RV9NRVNTQUdFID0gdSdHb29kYnllJworCisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZShyZXF1ZXN0KToKKyAgICBwYXNzICAjIEFsd2F5cyBhY2NlcHQuCisKKworZGVmIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBs
aW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgbGlu
ZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGlzaW5zdGFuY2UobGlu
ZSwgdW5pY29kZSk6CisgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2Uo
bGluZSwgYmluYXJ5PUZhbHNlKQorICAgICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNT
QUdFOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
cmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQorCisKK2Rl
ZiB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcmV0
dXJuIHJlcXVlc3Qud3NfY2xvc2VfY29kZSwgcmVxdWVzdC53c19jbG9zZV9yZWFzb24KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vy
cy9jbG9zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjYTY5ZTgz
YTI2NWZlZmIyODdkNmQ2ZDdkZGJiYjdlMDIzYTY4NjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsOTQgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBXZWJT
b2NrZXQgaXMgY2xvc2VkIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAwOiBXZWJTb2NrZXQgaXMgY2xvc2VkIGJlZm9yZSB0aGUgY29u
bmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KK1ZlcmlmeSBXZWJTb2NrZXQ6OmNsb3NlIGJlaGF2aW9y
cyBpbiBXb3JrZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworaW52YWxpZCBjb2Rl
IHRlc3Q6IDAKK2NvZGUgOTk5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBB
U1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNv
ZGUgdGVzdDogMQorY29kZSAxMDAxIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNT
IFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlk
IGNvZGUgdGVzdDogMgorY29kZSAyOTk5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQ
QVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZh
bGlkIGNvZGUgdGVzdDogMworY29kZSA1MDAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJS
CitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitp
bnZhbGlkIGNvZGUgdGVzdDogNAorY29kZSA2NjUzNiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNT
X0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0Vy
cgoraW52YWxpZCBjb2RlIHRlc3Q6IDUKK2NvZGUgNDI5NDk2ODI5NiBtdXN0IGNhdXNlIElOVkFM
SURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxp
ZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDYKK2NvZGUgMjk5OS45IG11c3QgY2F1c2Ug
SU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBp
bnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogNworY29kZSBOYU4gbXVzdCBjYXVz
ZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlz
IGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA4Citjb2RlIDAgbXVzdCBjYXVz
ZSBJTlZBTElEX0FDQ0VTU19FUlIKK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlz
IGludmFsaWRBY2Nlc3NFcnIKK2ludmFsaWQgY29kZSB0ZXN0OiA5Citjb2RlIDEwMCBtdXN0IGNh
dXNlIElOVkFMSURfQUNDRVNTX0VSUgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUg
aXMgaW52YWxpZEFjY2Vzc0VycgoraW52YWxpZCBjb2RlIHRlc3Q6IDEwCitjb2RlIEluZmluaXR5
IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0
aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDogMTEKK2NvZGUg
LUluZmluaXR5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdvcmtl
cjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitpbnZhbGlkIGNvZGUgdGVzdDog
MTIKK2NvZGUgTmFOIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSCitQQVNTIFBBU1M6IHdv
cmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitydW5fY29kZV90ZXN0OiBv
bmNsb3NlKCkuCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlzIGFibm9ybWFs
Q2xvc3VyZQorc2tpcCBpbnZhbGlkIHN0cmluZyB0ZXN0CityZWFzb24gdGVzdDogMAorICB3aXRo
IGludmFsaWQgcmVhc29uOiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0CityZWFzb24gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCBtdXN0IGNhdXNl
IFNZTlRBWF9FUlIKK1BBU1MgUEFTUzogd29ya2VyOiByZXN1bHQgaXMgZmFsc2UKK1BBU1MgUEFT
Uzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIHN5bnRheEVycgorcmVhc29uIHRlc3Q6IDEKKyAg
d2l0aCBpbnZhbGlkIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTLCqQorcmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEywqkgbXVzdCBj
YXVzZSBTWU5UQVhfRVJSCitQQVNTIFBBU1M6IHdvcmtlcjogcmVzdWx0IGlzIGZhbHNlCitQQVNT
IFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBzeW50YXhFcnIKK3JlYXNvbiB0ZXN0OiAy
CitydW5fcmVhc29uX3Rlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2
ZW50LmNvZGUgaXMgYWJub3JtYWxDbG9zdXJlCitjb2RlIGFuZCByZWFzb24gdGVzdDogMAorY2xv
c2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUKKyAgY29kZSAgOiAxMDAwCisgIHJlYXNvbjogT0ss
IEJ5ZSEKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BB
U1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDEK
K2Nsb3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogMzAwMAorICByZWFzb246
IDMwMDAKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BB
U1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgorY29kZSBhbmQgcmVhc29uIHRlc3Q6IDIK
K2Nsb3NlIGNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUgIDogNDAwMAorICByZWFzb246
IGNvZGUgaXMgNDAwMAorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMg
dHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIFBB
U1M6IHdvcmtlcjogY2xvc2VFdmVudC5yZWFzb24gaXMgcmVhc29uCitjb2RlIGFuZCByZWFzb24g
dGVzdDogMworY2xvc2UgY29kZSBhbmQgcmVhc29uIG11c3QgYmUKKyAgY29kZSAgOiA0OTk5Cisg
IHJlYXNvbjogwqkgR29vZ2xlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC53YXNDbGVh
biBpcyB0cnVlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BB
U1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK0RPTkUKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xv
c2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29y
a2Vycy9jbG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0YzY2MjBlODc0MGM2NjliMWIyMTJkYjRkZDFi
OTEyNDNmZWYyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbApAQCAtMCwwICsxLDQwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorZGVzY3JpcHRpb24oIlZlcmlmeSBXZWJTb2NrZXQ6OmNsb3NlIGJlaGF2aW9ycyBp
biBXb3JrZXIuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CisK
K2Z1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyLCBwcmVmaXgpCit7CisgICAgcmV0dXJuIHN0ci5pbmRl
eE9mKHByZWZpeCkgPT0gMDsKK30KKwordmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNl
cy9jbG9zZS5qcyIpOword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkKK3sKKyAg
ICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgaWYgKHN0YXJ0c1dpdGgobWVzc2FnZSwg
IlBBU1MiKSkKKyAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgICBlbHNlIGlmIChzdGFy
dHNXaXRoKG1lc3NhZ2UsICJGQUlMIikpCisgICAgICAgIHRlc3RGYWlsZWQobWVzc2FnZSkKKyAg
ICBlbHNlCisgICAgICAgIGRlYnVnKG1lc3NhZ2UpOworICAgIGlmIChtZXNzYWdlID09PSAiRE9O
RSIpCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93
b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTVi
NjRjYTU2N2JmNDBhZDc0ODFkNDhmYzU0YmU4ZTZiNDE3NGUxMgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNv
dXJjZXMvY2xvc2UuanMKQEAgLTAsMCArMSwyMDUgQEAKK2Z1bmN0aW9uIHBvc3RSZXN1bHQocmVz
dWx0LCBhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIHZhciBtZXNzYWdlID0gcmVzdWx0ID8gIlBB
U1MiIDogIkZBSUwiOworICAgIG1lc3NhZ2UgKz0gIjogd29ya2VyOiAiICsgYWN0dWFsICsgIiBp
cyAiOworICAgIGlmICghcmVzdWx0KQorICAgICAgICBtZXNzYWdlICs9ICJub3QgIjsKKyAgICBt
ZXNzYWdlICs9IGV4cGVjdGVkOworICAgIHBvc3RNZXNzYWdlKG1lc3NhZ2UpOworfQorCitmdW5j
dGlvbiB0ZXN0RmFpbGVkKG1lc3NhZ2UpCit7CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6ICIgKyBt
ZXNzYWdlKTsKK30KKworZnVuY3Rpb24gZGVidWcobWVzc2FnZSkKK3sKKyAgICBwb3N0TWVzc2Fn
ZShtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sK
KyAgICB2YXIgX3Jlc3VsdCA9IGV2YWwoYWN0dWFsICsgIiA9PSAiICsgZXhwZWN0ZWQpOworICAg
IHBvc3RSZXN1bHQoX3Jlc3VsdCwgYWN0dWFsLCBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZEJlVHJ1ZShhY3R1YWwpCit7CisgICAgc2hvdWxkQmUoYWN0dWFsLCAidHJ1ZSIpOworfQor
CitmdW5jdGlvbiBzaG91bGRCZUZhbHNlKGFjdHVhbCkKK3sKKyAgICBzaG91bGRCZShhY3R1YWws
ICJmYWxzZSIpOworfQorCit2YXIgZXhjZXB0aW9uTmFtZTsKK3ZhciBleGNlcHRpb25Qcm90bzsK
K3ZhciBjbG9zZUV2ZW50OwordmFyIGNvZGU7Cit2YXIgcmVhc29uOwordmFyIHJlc3VsdDsKK3Zh
ciBpbnZhbGlkQWNjZXNzRXJyID0gIklOVkFMSURfQUNDRVNTX0VSUiI7Cit2YXIgc3ludGF4RXJy
ID0gIlNZTlRBWF9FUlIiOwordmFyIG5vcm1hbENsb3N1cmUgPSAxMDAwOwordmFyIGFibm9ybWFs
Q2xvc3VyZSA9IDEwMDY7Cit2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvY2xvc2UiOwordmFyIHdzOwordmFyIHRlc3RJZDsKKwordmFyIGNvZGVUZXN0
Q29kZXMgPSBbCisgICAgOTk5LCAxMDAxLCAyOTk5LCA1MDAwLCA2NTUzNiArIDEwMDAsIDB4MTAw
MDAwMDAwICsgMTAwMCwgMjk5OS45LCBOYU4sICIwIiwgIjEwMCIsIDEvMCwgLTEvMCwgMC8wLAor
ICAgIDEwMDAuMAorXTsKKwordmFyIHJlYXNvblRlc3RSZWFzb25zID0gWworICAgICIxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0IiwgLy8gMTI0IEJ5dGUKKyAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTJcdTAwYTkiLCAvLyBsZW5ndGggaXMgMTIz
LCBidXQgMTI0IEJ5dGUgaW4gVVRGLTgKKyAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzIiwgLy8gMTIzIEJ5dGUKK107
CisKK3ZhciByZWFzb25UZXN0UmVzdWx0cyA9IFsKKyAgICBmYWxzZSwKKyAgICBmYWxzZSwKKyAg
ICB0cnVlLAorXTsKKwordmFyIG9ub3BlbiA9IGZ1bmN0aW9uICgpCit7CisgICAgdGVzdEZhaWxl
ZCgib25vcGVuKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3ZhciBvbmVycm9yID0gZnVuY3Rpb24g
KCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJvbmVycm9yKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK3Zh
ciBvbmNsb3NlID0gZnVuY3Rpb24gKCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJvbmNsb3NlKCkgd2Fz
IGNhbGxlZC4iKTsKK307CisKK3ZhciBvbm1lc3NhZ2UgPSBmdW5jdGlvbiAoKQoreworICAgIHRl
c3RGYWlsZWQoIm9ubWVzc2FnZSgpIHdhcyBjYWxsZWQuIik7Cit9OworCit2YXIgc2V0X2RlZmF1
bHRzID0gZnVuY3Rpb24gKHdzKQoreworICAgIHdzLm9ub3BlbiA9IG9ub3BlbjsKKyAgICB3cy5v
bmVycm9yID0gb25lcnJvcjsKKyAgICB3cy5vbmNsb3NlID0gb25jbG9zZTsKKyAgICB3cy5vbm1l
c3NhZ2UgPSBvbm1lc3NhZ2U7Cit9CisKK3ZhciBydW5fY29kZV90ZXN0ID0gZnVuY3Rpb24gKCkK
K3sKKyAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICBzZXRfZGVmYXVsdHMod3MpOwor
ICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCBjb2RlVGVzdENvZGVzLmxlbmd0aDsgaWQrKykgewor
ICAgICAgICBpZiAoY29kZVRlc3RDb2Rlc1tpZF0gIT0gbm9ybWFsQ2xvc3VyZSkgeworICAgICAg
ICAgICAgZGVidWcoImludmFsaWQgY29kZSB0ZXN0OiAiICsgaWQpOworICAgICAgICAgICAgd3Mu
b25jbG9zZSA9IG9uY2xvc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3cy5vbmNs
b3NlID0gZnVuY3Rpb24gKGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVidWco
InJ1bl9jb2RlX3Rlc3Q6IG9uY2xvc2UoKS4iKTsKKyAgICAgICAgICAgICAgICBjbG9zZUV2ZW50
ID0gZTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImFibm9y
bWFsQ2xvc3VyZSIpOworICAgICAgICAgICAgICAgIGlmIChjbG9zZUV2ZW50LmNvZGUgPT0gYWJu
b3JtYWxDbG9zdXJlKQorICAgICAgICAgICAgICAgICAgICBydW5faW52YWxpZF9zdHJpbmdfdGVz
dCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAg
ICAgd3MuY2xvc2UoY29kZVRlc3RDb2Rlc1tpZF0pOworICAgICAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgICAgICBkZWJ1ZygiY29kZSAiICsgY29kZVRlc3RDb2Rlc1tpZF0gKyAiIG11c3QgY2F1
c2UgIiArIGludmFsaWRBY2Nlc3NFcnIpOworICAgICAgICAgICAgZXhjZXB0aW9uTmFtZSA9IGUu
bmFtZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9m
KGUpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4Y2VwdGlvbk5hbWUiLCAiaW52YWxpZEFjY2Vz
c0VyciIpOworICAgICAgICB9CisgICAgfQorfQorCit2YXIgcnVuX2ludmFsaWRfc3RyaW5nX3Rl
c3QgPSBmdW5jdGlvbiAoKQoreworICAgIC8vIFRPRE86IHVucGFpcmVkIHN1cnJvZ2F0ZXMgdGhy
b3cgU1lOVEFYX0VSUgorICAgIGRlYnVnKCJza2lwIGludmFsaWQgc3RyaW5nIHRlc3QiKTsKKyAg
ICBydW5fcmVhc29uX3Rlc3QoKTsKK30KKwordmFyIHJ1bl9yZWFzb25fdGVzdCA9IGZ1bmN0aW9u
IChuZXh0X3Rlc3QpCit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgc2V0X2Rl
ZmF1bHRzKHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgcmVhc29uVGVzdFJlYXNvbnMu
bGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGRlYnVnKCJyZWFzb24gdGVzdDogIiArIGlkKTsKKyAg
ICAgICAgaWYgKCFyZWFzb25UZXN0UmVzdWx0c1tpZF0pIHsKKyAgICAgICAgICAgIGRlYnVnKCIg
IHdpdGggaW52YWxpZCByZWFzb246ICIgKyByZWFzb25UZXN0UmVhc29uc1tpZF0pOworICAgICAg
ICAgICAgd3Mub25jbG9zZSA9IG9uY2xvc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZGVidWcoInJ1bl9yZWFzb25fdGVzdDogb25jbG9zZSgpLiIpOworICAgICAgICAgICAgICAg
IGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LmNv
ZGUiLCAiYWJub3JtYWxDbG9zdXJlIik7CisgICAgICAgICAgICAgICAgaWYgKGNsb3NlRXZlbnQu
Y29kZSA9PSBhYm5vcm1hbENsb3N1cmUpCisgICAgICAgICAgICAgICAgICAgIHJ1bl9jb2RlX2Fu
ZF9yZWFzb25fdGVzdCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICB0cnkg
eworICAgICAgICAgICAgd3MuY2xvc2Uobm9ybWFsQ2xvc3VyZSwgcmVhc29uVGVzdFJlYXNvbnNb
aWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZGVidWcoInJlYXNvbiAi
ICsgcmVhc29uVGVzdFJlYXNvbnNbaWRdICsgIiBtdXN0IGNhdXNlICIgKyBzeW50YXhFcnIpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gcmVhc29uVGVzdFJlc3VsdHNbaWRdOworICAgICAgICAgICAg
ZXhjZXB0aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblByb3RvID0gT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKGUpOworICAgICAgICAgICAgc2hvdWxkQmVGYWxzZSgicmVzdWx0
Iik7CisgICAgICAgICAgICBzaG91bGRCZSgiZXhjZXB0aW9uTmFtZSIsICJzeW50YXhFcnIiKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwordmFyIHJ1bl9jb2RlX2FuZF9yZWFzb25fdGVzdCA9IGZ1
bmN0aW9uICgpCit7CisgICAgdmFyIGNvZGVzID0gWworICAgICAgICAxMDAwLAorICAgICAgICAz
MDAwLAorICAgICAgICA0MDAwLAorICAgICAgICA0OTk5CisgICAgXTsKKyAgICB2YXIgcmVhc29u
cyA9IFsKKyAgICAgICAgIk9LLCBCeWUhIiwKKyAgICAgICAgIjMwMDAiLAorICAgICAgICAiY29k
ZSBpcyA0MDAwIiwKKyAgICAgICAgIlx1MDBhOSBHb29nbGUiCisgICAgXTsKKyAgICAoZnVuY3Rp
b24gdGVzdCAoaWQpIHsKKyAgICAgICAgZGVidWcoImNvZGUgYW5kIHJlYXNvbiB0ZXN0OiAiICsg
aWQpOworICAgICAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICAgICAgc2V0X2RlZmF1
bHRzKHdzKTsKKyAgICAgICAgd3Mub25vcGVuID0gZnVuY3Rpb24gKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgd3MuY2xvc2UoY29kZXNbaWRdLCByZWFzb25zW2lkXSk7CisgICAgICAgIH07Cisg
ICAgICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgeworICAgICAgICAgICAg
Y2xvc2VFdmVudCA9IGU7CisgICAgICAgICAgICBjb2RlID0gY29kZXNbaWRdOworICAgICAgICAg
ICAgcmVhc29uID0gcmVhc29uc1tpZF07CisgICAgICAgICAgICBkZWJ1ZygiY2xvc2UgY29kZSBh
bmQgcmVhc29uIG11c3QgYmUiKTsKKyAgICAgICAgICAgIGRlYnVnKCIgIGNvZGUgIDogIiArIGNv
ZGUpOworICAgICAgICAgICAgZGVidWcoIiAgcmVhc29uOiAiICsgcmVhc29uKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAgICAgICAgICAgc2hv
dWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJjb2RlIik7CisgICAgICAgICAgICBzaG91bGRCZSgi
Y2xvc2VFdmVudC5yZWFzb24iLCAicmVhc29uIik7CisgICAgICAgICAgICBpZiAoKytpZCAhPSBj
b2Rlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgdGVzdChpZCk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkRPTkUiKTsKKyAgICAgICAgfTsKKyAgICB9
KSgwKTsKK30KKworcnVuX2NvZGVfdGVzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUwYWJlM2ExYTRhZjM1
YmM3ZTY0Nzc2MDU2ODQwNmIyYmZkZDcwMjIuLmYyOTkzMzU3MTMwNmI4OTE0NzhkYTRmZjkzZTU2
YzQ4YjVjMTQyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMS0wOC0zMSAgVGFr
YXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1dlYlNv
Y2tldF0gSW1wbGVtZW50IFdlYlNvY2tldDo6Y2xvc2UoKSBjb2RlIGFuZCByZWFzb24gaGFuZGxp
bmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njky
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rz
OiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwKKyAgICAgICAgICAg
ICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS5odG1sCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1dlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYlNvY2tldDo6
Y2xvc2VDYWxsYmFjayk6CisgICAgICAgIEFkZCBjdXN0b20gYnJpZGdlIGZvciBXZWJTb2NrZXQ6
OmNsb3NlKCkuCisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAgICAqIHdlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpjbG9zZSk6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzIGhhbmRs
aW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKToKKyAgICAgICAgU2VuZCBhIGNsb3NlIGZyYW1lIHdpdGhvdXQgY29kZSBhbmQgcmVh
c29uIG9uIHNlcnZlciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2VzLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZUhpeGllNzYpOgorICAgICAgICAqIHdlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlk
Z2U6OmNsb3NlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmg6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJndW1lbnRzIGhhbmRs
aW5nLgorCiAyMDExLTA4LTMxICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYlNvY2tldDogTG9hZCBCbG9iIGluIFdlYlNvY2tldENoYW5uZWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCBh
ZjVkYWNhNTU1ZTA4OWVjMTIyNThjNjE3MjJjNjA3Y2RmMzAxNmNhLi43YTQ5YWRhMjk3YzQ4ZDRh
ZDRiMDMxNmZkMTE1ZTc3ZWU3ZDY0Y2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dApAQCAtMzUsMTAgKzM1LDEzIEBACiAKICNpbmNsdWRlICJKU1dlYlNvY2tl
dC5oIgogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNp
bmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNpbmNs
dWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwpAQCAtODUsNiArODgsMzggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dlYlNvY2tldChFeGVj
U3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihleGVjLCBq
c0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgV2ViU29ja2V0LCB3ZWJTb2NrZXQuZ2V0KCkp
KTsKIH0KIAorSlNWYWx1ZSBKU1dlYlNvY2tldDo6Y2xvc2UoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gc3RhdGljX2Nhc3Q8V2ViU29ja2V0Kj4oaW1wbCgp
KTsKKyAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAg
ICBpbnQgY29kZSA9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVk
OworICAgIFN0cmluZyByZWFzb24gPSAiIjsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA+PSAxKSB7
CisgICAgICAgIC8vIFtDbGFtcF0gaW4gb3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgY29kZS4KKyAg
ICAgICAgSlNWYWx1ZSB2ID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgICAgIGRvdWJsZSB4ID0g
di50b051bWJlcihleGVjKTsKKyAgICAgICAgZG91YmxlIG1heFZhbHVlID0gc3RhdGljX2Nhc3Q8
ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOworICAgICAgICBk
b3VibGUgbWluVmFsdWUgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDE2X3Q+OjptaW4oKSk7CisgICAgICAgIGlmIChpc25hbih4KSkKKyAgICAgICAgICAgIHgg
PSAwLjA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHggPSBjbGFtcFRvKHgsIG1pblZhbHVl
LCBtYXhWYWx1ZSk7CisgICAgICAgIGNvZGUgPSBjbGFtcFRvSW50ZWdlcih4KTsKKyAgICAgICAg
aWYgKGFyZ3VtZW50Q291bnQgPj0gMikgeworICAgICAgICAgICAgLy8gaW4gb3B0aW9uYWwgRE9N
U3RyaW5nIHJlYXNvbgorICAgICAgICAgICAgcmVhc29uID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMt
PmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBTWU5U
QVhfRVJSKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB3
ZWJTb2NrZXQtPmNsb3NlKGNvZGUsIHJlYXNvbiwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCA1OGEyN2U3ZmExM2RiOWZhMmRk
YzNkMmZlZDNmN2U4OTdmYzk3NWQ1Li5mNGU0YjEwNTlmNmM2OGVhYjFkZDk2OTFjODg0ZjlkMWUw
YmI5ZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsMTQgKzM0LDE3IEBACiAKICNpbmNsdWRlICJW
OFdlYlNvY2tldC5oIgogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNp
bmNsdWRlICJWOFByb3h5LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV29y
a2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oIgor
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDgsNiArMTExLDM4IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYlNvY2tldDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzCiAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYlNvY2tldDo6Y2xvc2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gdG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CisgICAgaW50IGFyZ3VtZW50Q291bnQgPSBhcmdzLkxlbmd0aCgpOworICAgIGludCBjb2RlID0g
V2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQ7CisgICAgU3RyaW5n
IHJlYXNvbiA9ICIiOworICAgIGlmIChhcmd1bWVudENvdW50ID49IDEpIHsKKyAgICAgICAgLy8g
W0NsYW1wXSBpbiBvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCBjb2RlLgorICAgICAgICBkb3VibGUg
eCA9IGFyZ3NbMF0tPk51bWJlclZhbHVlKCk7CisgICAgICAgIGRvdWJsZSBtYXhWYWx1ZSA9IHN0
YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKTsK
KyAgICAgICAgZG91YmxlIG1pblZhbHVlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVy
aWNfbGltaXRzPHVpbnQxNl90Pjo6bWluKCkpOworICAgICAgICBpZiAoaXNuYW4oeCkpCisgICAg
ICAgICAgICB4ID0gMC4wOworICAgICAgICBlbHNlCisgICAgICAgICAgICB4ID0gY2xhbXBUbyh4
LCBtaW5WYWx1ZSwgbWF4VmFsdWUpOworICAgICAgICBjb2RlID0gY2xhbXBUb0ludGVnZXIoeCk7
CisgICAgICAgIGlmIChhcmd1bWVudENvdW50ID49IDIpIHsKKyAgICAgICAgICAgIC8vIGluIG9w
dGlvbmFsIERPTVN0cmluZyByZWFzb24KKyAgICAgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRj
aDsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gcmVhc29uVmFsdWUgPSBhcmdz
WzFdLT5Ub1N0cmluZygpOworICAgICAgICAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNoLkV4Y2VwdGlvbigpKTsK
KyAgICAgICAgICAgIHJlYXNvbiA9IHRvV2ViQ29yZVN0cmluZyhyZWFzb25WYWx1ZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2ViU29ja2V0LT5j
bG9zZShjb2RlLCByZWFzb24sIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKGVjKTsKKyAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCiB9ICAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aAppbmRleCBjZDljZTI1MmE0Y2Q1YmQ2N2E3MzljZmM1MzMyNzA4ZTBlZDQ4Y2ZlLi4wOWY4MWI1
MDdhMTAwMWQ2ZTdlYTU5MTcyMTE2ZWE5ZTlmZjdiZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsg
Ly8gV2lsbCBiZSBhdmFpbGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9r
ZWQuCiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAg
ICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNv
ZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CiAgICAgLy8gTG9nIHRoZSByZWFzb24gdGV4
dCBhbmQgY2xvc2UgdGhlIGNvbm5lY3Rpb24uIFdpbGwgY2FsbCBkaWRDbG9zZSgpLgogICAgIHZp
cnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2Nvbm5lY3QoKSA9IDA7IC8vIFdpbGwgc3VwcHJlc3MgZGlkQ2xvc2UoKS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCBkYzlhYmJhZjRjNDZhZWQ2OTgy
YTY3NmQzOTVkODM2ODg1ZjMxYmY1Li4yNGIxNmY0N2YwNDM3MGRlODljN2U2NzkxMTMxYjk0NmU4
NGYzY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTYwLDYg
KzYwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjb25zdCBzaXplX3QgbWF4UmVhc29u
U2l6ZUluQnl0ZXMgPSAxMjM7CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkUHJvdG9jb2xD
aGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQogewogICAgIC8vIEh5YmktMTAgc2F5cyAiKFN1YnBy
b3RvY29sIHN0cmluZyBtdXN0IGNvbnNpc3Qgb2YpIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFUr
MDAyMSB0byBVKzAwN0Ugbm90IGluY2x1ZGluZwpAQCAtMjYyLDkgKzI2NCwyMyBAQCBib29sIFdl
YlNvY2tldDo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIHJldHVybiBtX2NoYW5uZWwtPnNlbmQobWVzc2FnZSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0
OjpjbG9zZSgpCit2b2lkIFdlYlNvY2tldDo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYg
cmVhc29uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dCAlcCBjbG9zZSIsIHRoaXMpOworICAgIGlmIChjb2RlID09IFdlYlNvY2tldENoYW5uZWw6OkNs
b3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkKQorICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dCAlcCBjbG9zZSB3aXRob3V0IGNvZGUgYW5kIHJlYXNvbiIsIHRoaXMpOworICAgIGVsc2Ugewor
ICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjbG9zZSB3aXRoIGNvZGUgPSAlZCwg
cmVhc29uID0gJXMiLCB0aGlzLCBjb2RlLCByZWFzb24udXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IGlmICghKGNvZGUgPT0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3JtYWxDbG9z
dXJlIHx8IChXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU1pbmltdW1Vc2VyRGVmaW5l
ZCA8PSBjb2RlICYmIGNvZGUgPD0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVNYXhp
bXVtVXNlckRlZmluZWQpKSkgeworICAgICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IGlmIHJl
YXNvbiBjb250YWlucyBhbnkgdW5wYWlyZWQgc3Vycm9nYXRlcywgcmFpc2UgU1lOVEFYX0VSUi4K
KyAgICAgICAgaWYgKHJlYXNvbi51dGY4KCkubGVuZ3RoKCkgPiBtYXhSZWFzb25TaXplSW5CeXRl
cykgeworICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0lORyB8fCBtX3N0YXRl
ID09IENMT1NFRCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJ
TkcpIHsKQEAgLTI3Nyw3ICsyOTMsNyBAQCB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoKQogICAgIC8v
IGRpZENsb3NlIG5vdGlmaWNhdGlvbiBtYXkgYmUgYWxyZWFkeSBxdWV1ZWQsIHdoaWNoIHdlIHdp
bGwgaW5hZHZlcnRlbnRseSBwcm9jZXNzIHdoaWxlIHdhaXRpbmcgZm9yIGJ1ZmZlcmVkQW1vdW50
KCkgdG8gcmV0dXJuLgogICAgIC8vIEluIHRoaXMgY2FzZSBtX2NoYW5uZWwgd2lsbCBiZSBzZXQg
dG8gbnVsbCBkdXJpbmcgZGlkQ2xvc2UoKSBjYWxsLCB0aHVzIHdlIG5lZWQgdG8gdGVzdCB2YWxp
ZG5lc3Mgb2YgbV9jaGFubmVsIGhlcmUuCiAgICAgaWYgKG1fY2hhbm5lbCkKLSAgICAgICAgbV9j
aGFubmVsLT5jbG9zZSgpOworICAgICAgICBtX2NoYW5uZWwtPmNsb3NlKGNvZGUsIHJlYXNvbik7
CiB9CiAKIGNvbnN0IEtVUkwmIFdlYlNvY2tldDo6dXJsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IDU2ZTIwMDZjMDEzNzE4ZmUxNDg4ZDcyM2M1MWUwOThh
NDIzYTFmYmYuLjFkZDU2YTJmNDQ4Nzk4YWY4N2I3YzgxOWMyNTE1YjMxODc2OGUyYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsK
IAotICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29u
c3Q7CiAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaWRsCmluZGV4IDgxZDc1NjNmMDdjOTE0Mjc0NWY3ZjI5YjFjZTMyNTVmNTZh
NmVjZTIuLmNhZDNhNmJmYTFlNjI0OTE0NjE4ZjAzZGFmNGQ0NGQxNTdhMTNmZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5pZGwKQEAgLTY0LDcgKzY0LDcgQEAgbW9kdWxl
IHdlYnNvY2tldHMgewogICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwog
CiAgICAgICAgIFtSZXF1aXJlc0FsbEFyZ3VtZW50c10gYm9vbGVhbiBzZW5kKGluIERPTVN0cmlu
ZyBkYXRhKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCBjbG9zZSgpOworICAg
ICAgICBbQ3VzdG9tXSB2b2lkIGNsb3NlKGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgY29k
ZSwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgcmVhc29uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
IAogICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICAgICAgdm9pZCBhZGRFdmVu
dExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNjY3MmZkZDRjYmMzM2FmMzQyZGQxN2E4Yzhj
NjFjZGNiOWQ4NTBkMy4uMjAwN2U2ZGI4Mzg1ZmE2ZjM2NmRhYmIyNGYyMTc3NWRhMzRkZThlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBA
IC0xNzgsMTMgKzE3OCwxMyBAQCB1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZl
cmVkQW1vdW50KCkgY29uc3QKICAgICByZXR1cm4gbV9oYW5kbGUtPmJ1ZmZlcmVkQW1vdW50KCk7
CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQordm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NlIiwgdGhpcyk7CiAgICAgQVNTRVJUKCFt
X3N1c3BlbmRlZCk7CiAgICAgaWYgKCFtX2hhbmRsZSkKICAgICAgICAgcmV0dXJuOwotICAgIHN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOworICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShjb2RlLCBy
ZWFzb24pOwogICAgIGlmIChtX2Nsb3NpbmcgJiYgIW1fY2xvc2luZ1RpbWVyLmlzQWN0aXZlKCkp
CiAgICAgICAgIG1fY2xvc2luZ1RpbWVyLnN0YXJ0T25lU2hvdCgyICogVENQTWF4aW11bVNlZ21l
bnRMaWZldGltZSk7CiB9CkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpyZXN1bWVUaW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENoYW5uZWw+KiB0aW1lcikKICAgICAg
ICAgZGlkQ2xvc2VTb2NrZXRTdHJlYW0obV9oYW5kbGUuZ2V0KCkpOwogfQogCi12b2lkIFdlYlNv
Y2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCit2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24p
CiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgJWQgJWQi
LCB0aGlzLCBtX2Nsb3NpbmcsIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlKTsKICAgICBpZiAo
bV9jbG9zaW5nKQpAQCAtNDgyLDkgKzQ4MiwxNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCiAgICAgICAgICAgICBtX2hhbmRsZS0+ZGlzY29ubmVjdCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIGVu
cXVldWVSYXdGcmFtZShPcENvZGVDbG9zZSwgIiIsIDApOyAvLyBGSVhNRTogU2VuZCBzdGF0dXMg
Y29kZSBhbmQgcmVhc29uIG1lc3NhZ2UuCi0KKyAgICB9IGVsc2UgeworICAgICAgICBWZWN0b3I8
Y2hhcj4gYnVmOworICAgICAgICBpZiAoIW1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlICYmIGNv
ZGUgIT0gQ2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQpIHsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgaGlnaEJ5dGUgPSBjb2RlID4+IDg7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxv
d0J5dGUgPSBjb2RlOworICAgICAgICAgICAgYnVmLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPiho
aWdoQnl0ZSkpOworICAgICAgICAgICAgYnVmLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPihsb3dC
eXRlKSk7CisgICAgICAgICAgICBidWYuYXBwZW5kKHJlYXNvbi51dGY4KCkuZGF0YSgpLCByZWFz
b24udXRmOCgpLmxlbmd0aCgpKTsKKyAgICAgICAgfQorICAgICAgICBlbnF1ZXVlUmF3RnJhbWUo
T3BDb2RlQ2xvc2UsIGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOworICAgIH0KICAgICBtX2Nsb3Np
bmcgPSB0cnVlOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSgpOwpAQCAtNjkwLDcgKzY5OCw3IEBAIGJvb2wgV2ViU29ja2V0Q2hh
bm5lbDo6cHJvY2Vzc0ZyYW1lKCkKICAgICAgICAgICAgIG1fY2xvc2VFdmVudFJlYXNvbiA9ICIi
OwogICAgICAgICBza2lwQnVmZmVyKGZyYW1lLmZyYW1lRW5kIC0gbV9idWZmZXIpOwogICAgICAg
ICBtX3JlY2VpdmVkQ2xvc2luZ0hhbmRzaGFrZSA9IHRydWU7Ci0gICAgICAgIHN0YXJ0Q2xvc2lu
Z0hhbmRzaGFrZSgpOworICAgICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UobV9jbG9zZUV2ZW50
Q29kZSwgbV9jbG9zZUV2ZW50UmVhc29uKTsKICAgICAgICAgaWYgKG1fY2xvc2luZykgewogICAg
ICAgICAgICAgbV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPSBPdXRnb2luZ0ZyYW1lUXVldWVD
bG9zaW5nOwogICAgICAgICAgICAgcHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwpAQCAtNzcx
LDcgKzc3OSw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lSGl4aWU3Nigp
CiAgICAgICAgICAgICBza2lwQnVmZmVyKG5leHRGcmFtZSAtIG1fYnVmZmVyKTsKICAgICAgICAg
ICAgIGlmIChmcmFtZUJ5dGUgPT0gMHhmZiAmJiAhbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAg
bV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UgPSB0cnVlOwotICAgICAgICAgICAgICAgIHN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSgpOworICAgICAgICAgICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFr
ZShDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCwgIiIpOwogICAgICAgICAgICAgICAgIGlmICht
X2Nsb3NpbmcpCiAgICAgICAgICAgICAgICAgICAgIG1faGFuZGxlLT5jbG9zZSgpOyAvLyBjbG9z
ZSBhZnRlciBzZW5kaW5nIEZGIDAwLgogICAgICAgICAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDQwMDQ5OTEwNmQ3OWY5YTg0
NTNiMTk3YzUwNWJmZmMzMzE3ZGU4ODMuLjk3MDMxNjIzY2MyNjZlNmRhYWRlNzI1MWJkZTExNTc2
MTIzYjY1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90
b2NvbCgpOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAg
ICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIGNsb3NlKCk7IC8vIFN0YXJ0IGNsb3NpbmcgaGFuZHNoYWtlLgorICAgIHZpcnR1
YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOyAvLyBTdGFydCBj
bG9zaW5nIGhhbmRzaGFrZS4KICAgICB2aXJ0dWFsIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJl
YXNvbik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKTsKIApAQCAtODMsNiArODMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7
CiAKICAgICBlbnVtIENsb3NlRXZlbnRDb2RlIHsKKyAgICAgICAgQ2xvc2VFdmVudENvZGVOb3RT
cGVjaWZpZWQgPSAtMSwKICAgICAgICAgQ2xvc2VFdmVudENvZGVOb3JtYWxDbG9zdXJlID0gMTAw
MCwKICAgICAgICAgQ2xvc2VFdmVudENvZGVHb2luZ0F3YXkgPSAxMDAxLAogICAgICAgICBDbG9z
ZUV2ZW50Q29kZVByb3RvY29sRXJyb3IgPSAxMDAyLApAQCAtOTAsNyArOTEsOSBAQCBwdWJsaWM6
CiAgICAgICAgIENsb3NlRXZlbnRDb2RlRnJhbWVUb29MYXJnZSA9IDEwMDQsCiAgICAgICAgIENs
b3NlRXZlbnRDb2RlTm9TdGF0dXNSY3ZkID0gMTAwNSwKICAgICAgICAgQ2xvc2VFdmVudENvZGVB
Ym5vcm1hbENsb3N1cmUgPSAxMDA2LAotICAgICAgICBDbG9zZUV2ZW50Q29kZUludmFsaWRVVEY4
ID0gMTAwNworICAgICAgICBDbG9zZUV2ZW50Q29kZUludmFsaWRVVEY4ID0gMTAwNywKKyAgICAg
ICAgQ2xvc2VFdmVudENvZGVNaW5pbXVtVXNlckRlZmluZWQgPSAzMDAwLAorICAgICAgICBDbG9z
ZUV2ZW50Q29kZU1heGltdW1Vc2VyRGVmaW5lZCA9IDQ5OTkKICAgICB9OwogCiAjaWYgRU5BQkxF
KEJMT0IpCkBAIC0xMTUsNyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNraXBCdWZmZXIo
c2l6ZV90IGxlbik7CiAgICAgYm9vbCBwcm9jZXNzQnVmZmVyKCk7CiAgICAgdm9pZCByZXN1bWVU
aW1lckZpcmVkKFRpbWVyPFdlYlNvY2tldENoYW5uZWw+Kik7Ci0gICAgdm9pZCBzdGFydENsb3Np
bmdIYW5kc2hha2UoKTsKKyAgICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwg
Y29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHZvaWQgY2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8
V2ViU29ja2V0Q2hhbm5lbD4qKTsKIAogICAgIC8vIEh5YmktMTAgb3Bjb2Rlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNTZmOTdhYWQwMGY3YTY0MTk2YzhmYmNmODVkMWJlNTNi
NDhhNzRmNy4uNDQ5ODhmNjU2MmIxMjQyMWEwZjQwMDcwNGViYzA3NjBlYmIwMjRkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTk0LDEwICs5NCwxMCBAQCB1bnNpZ25lZCBsb25n
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fYnJpZGdlLT5idWZmZXJlZEFtb3VudCgpOwogfQogCi12b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjbG9zZSgpCit2b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24p
CiB7CiAgICAgaWYgKG1fYnJpZGdlKQotICAgICAgICBtX2JyaWRnZS0+Y2xvc2UoKTsKKyAgICAg
ICAgbV9icmlkZ2UtPmNsb3NlKGNvZGUsIHJlYXNvbik7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCkBAIC0xODcs
MTIgKzE4NywxMiBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpidWZmZXJlZEFtb3VudCgpCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkR2V0QnVmZmVy
ZWRBbW91bnQsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgYnVmZmVyZWRBbW91bnQpLCBtX3Rhc2tN
b2RlKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
Y2xvc2UoKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y2xv
c2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+Y2xvc2UoKTsKKyAgICBtX21haW5XZWJT
b2NrZXRDaGFubmVsLT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCiB2b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKQpA
QCAtMzk1LDE5ICszOTUsMTkgQEAgdW5zaWduZWQgbG9uZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6QnJpZGdlOjpidWZmZXJlZEFtb3VudCgpCiAgICAgcmV0dXJuIDA7CiB9CiAK
LXZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyKQordm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGludCBjb2RlLCBjb25zdCBTdHJpbmcmcmVh
c29uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VSVChwZWVyKTsKIAotICAg
IHBlZXItPmNsb3NlKCk7CisgICAgcGVlci0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAotdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjbG9zZSgpCit2b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3NlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlLCBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKG1fcGVlcikpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRo
cmVhZENsb3NlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlciksIGNvZGUsIHJlYXNvbikp
OwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFk
RmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBT
dHJpbmcmIHJlYXNvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBhNDhhOGExOWQ3YzIw
ODhjMTJkOWMxNzYyMmIyMDE1MzcyNTExNGY4Li5hOGQxMzNkM2NkZjgxZTcyYTg3ZGI1OGE2ODVm
ZTFhMTIyYTRiMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02NSw3ICs2NSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpOwogICAgIHZpcnR1YWwg
Ym9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBs
b25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAg
ICAgdmlydHVhbCB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNjb25uZWN0KCk7IC8vIFdpbGwgc3VwcHJlc3MgZGlkQ2xvc2UoKS4KICAgICB2aXJ0
dWFsIHZvaWQgc3VzcGVuZCgpOwpAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogICAgICAgICB2
b2lkIGNvbm5lY3QoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgICAg
ICB2b2lkIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgdm9pZCBidWZmZXJl
ZEFtb3VudCgpOwotICAgICAgICB2b2lkIGNsb3NlKCk7CisgICAgICAgIHZvaWQgY2xvc2UoaW50
IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICAgICAgdm9pZCBmYWlsKGNvbnN0IFN0
cmluZyYgcmVhc29uKTsKICAgICAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAgICAgICAgIHZvaWQg
c3VzcGVuZCgpOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY29u
bmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIGJvb2wg
c2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZl
cmVkQW1vdW50KCk7Ci0gICAgICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgdm9pZCBjbG9zZShp
bnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgICAgICB2b2lkIGZhaWwoY29uc3Qg
U3RyaW5nJiByZWFzb24pOwogICAgICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKICAgICAgICAgdm9p
ZCBzdXNwZW5kKCk7CkBAIC0xNjEsNyArMTYxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBtYWluVGhyZWFkQ29ubmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhy
ZWFkU2VuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZEJ1ZmZlcmVkQW1vdW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7Ci0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENsb3Nl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7CisgICAgc3RhdGljIHZvaWQgbWFpblRo
cmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgaW50IGNvZGUsIGNvbnN0
IFN0cmluZyYgcmVhc29uKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkRmFpbChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICBzdGF0
aWMgdm9pZCBtYWluVGhyZWFkRGVzdHJveShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciop
OwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQZWVyKik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105909</attachid>
            <date>2011-09-01 00:14:41 -0700</date>
            <delta_ts>2011-09-01 00:46:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66925-20110901161439.patch</filename>
            <type>text/plain</type>
            <size>46681</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQxNjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YTUzNTQ0ODQ5ZTRiYTJjNjE5NGNj
Yzc1ZDFlMDJhYWI4YTIwMDA0Li5lMDZlNDQ4NzhhMjA3NGY1MDg2ZGVlMTc5NTZmODIwMzZiMjNj
ODMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMzEgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIEltcGxlbWVu
dCBXZWJTb2NrZXQ6OmNsb3NlKCkgY29kZSBhbmQgcmVhc29uIGhhbmRsaW5nLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvY2xvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qczogQWRkZWQuCisgICAg
ICAgIChwb3N0UmVzdWx0KToKKyAgICAgICAgKHRlc3RGYWlsZWQpOgorICAgICAgICAoZGVidWcp
OgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVUcnVlKToKKyAgICAgICAg
KHNob3VsZEJlRmFsc2UpOgorICAgICAgICAoaGFuZGxlT3Blbik6CisgICAgICAgIChoYW5kbGVF
cnJvcik6CisgICAgICAgIChoYW5kbGVDbG9zZSk6CisgICAgICAgIChoYW5kbGVNZXNzYWdlKToK
KyAgICAgICAgKHNldERlZmF1bHRIYW5kbGVycyk6CisgICAgICAgIChydW5Db2RlVGVzdC5lbHNl
LndzLm9uY2xvc2UpOgorICAgICAgICAocnVuQ29kZVRlc3QpOgorICAgICAgICAocnVuSW52YWxp
ZFN0cmluZ1Rlc3QpOgorICAgICAgICAocnVuUmVhc29uVGVzdC5lbHNlLndzLm9uY2xvc2UpOgor
ICAgICAgICAocnVuUmVhc29uVGVzdCk6CisgICAgICAgIChydW5Db2RlQW5kUmVhc29uVGVzdC4p
OgorICAgICAgICAocnVuQ29kZUFuZFJlYXNvblRlc3QpOgorCiAyMDExLTA4LTMxICBBbGV4YW5k
ZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBV
bnJldmlld2VkLCByZWJhc2VsaW5lIGFub3RoZXIgbXVsdGljb2wgdGVzdCBleHBlY3RhdGlvbi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYzOTczOTUzYzhjNjQxMzI4
NmQxYmJjZmQyMmI2OTg5Nzg0ZWJkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTA4IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBi
ZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJs
aXNoZWQuCitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlvcnMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworSW52YWxpZCBjb2RlIHRlc3Q6IDAKK0NvZGUgOTk5IG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0
aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vz
c0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDEKK0NvZGUgMTAwMSBtdXN0IGNhdXNlIElOVkFMSURf
QUNDRVNTX0VSUi4KK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5
cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFs
aWQgY29kZSB0ZXN0OiAyCitDb2RlIDI5OTkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIu
CitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUK
K1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVz
dDogMworQ29kZSA1MDAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNl
cHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDQKK0NvZGUg
NjY1MzYgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIGV4Y2VwdGlvblByb3Rv
ID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBp
cyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogNQorQ29kZSA0Mjk0OTY4Mjk2
IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0g
RE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52
YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDYKK0NvZGUgMjk5OS45IG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0
aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vz
c0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDcKK0NvZGUgTmFOIG11c3QgY2F1c2UgSU5WQUxJRF9B
Q0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlw
ZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxp
ZCBjb2RlIHRlc3Q6IDgKK0NvZGUgMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BB
U1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFT
UyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiA5
CitDb2RlIDEwMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgZXhjZXB0aW9u
UHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25O
YW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxMAorQ29kZSBJbmZp
bml0eSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgZXhjZXB0aW9uUHJvdG8g
PT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlz
IGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxMQorQ29kZSAtSW5maW5pdHkg
bXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBE
T01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZh
bGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMTIKK0NvZGUgTmFOIG11c3QgY2F1c2Ug
SU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9u
LnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0Vy
cgorcnVuQ29kZVRlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGFibm9y
bWFsQ2xvc3VyZQorU2tpcCBpbnZhbGlkIHN0cmluZyB0ZXN0LgorUmVhc29uIHRlc3Q6IDAKKyAg
d2l0aCBpbnZhbGlkIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNAorUmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQgbXVzdCBj
YXVzZSBTWU5UQVhfRVJSLgorUEFTUyByZXN1bHQgaXMgZmFsc2UKK1BBU1MgZXhjZXB0aW9uUHJv
dG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1l
IGlzIHN5bnRheEVycgorUmVhc29uIHRlc3Q6IDEKKyAgd2l0aCBpbnZhbGlkIHJlYXNvbjogMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTLCqQorUmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEywqkgbXVzdCBjYXVzZSBTWU5UQVhfRVJSLgorUEFTUyBy
ZXN1bHQgaXMgZmFsc2UKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90
b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIHN5bnRheEVycgorUmVhc29uIHRl
c3Q6IDIKK3J1blJlYXNvblRlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlz
IGFibm9ybWFsQ2xvc3VyZQorQ29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK0NvZGUgYW5kIHJlYXNv
biBtdXN0IGJlCisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9LLCBCeWUhCitQQVNTIGNsb3Nl
RXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFT
UyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAxCitD
b2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDMwMDAKKyAgcmVhc29uOiAzMDAwCitQ
QVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMg
Y29kZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0
ZXN0OiAyCitDb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDQwMDAKKyAgcmVhc29u
OiBjb2RlIGlzIDQwMDAKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIGNs
b3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgor
Q29kZSBhbmQgcmVhc29uIHRlc3Q6IDMKK0NvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUg
IDogNDk5OQorICByZWFzb246IMKpIEdvb2dsZQorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IHRydWUKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgY2xvc2VFdmVudC5yZWFz
b24gaXMgcmVhc29uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0YzNmYmIxZGE4MWQyZTAyNGQ0MjAzMTI4
M2EzMjA0YzVmM2YyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwKQEAgLTAsMCArMSwxOTMgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIlZlcmlmeSBXZWJTb2Nr
ZXQ6OmNsb3NlIGJlaGF2aW9ycy4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQiLCAwKTsKKwordmFyIGV4Y2VwdGlvbk5hbWU7Cit2YXIgZXhjZXB0aW9uUHJvdG87Cit2YXIg
Y2xvc2VFdmVudDsKK3ZhciBjb2RlOwordmFyIHJlYXNvbjsKK3ZhciByZXN1bHQ7Cit2YXIgaW52
YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElEX0FDQ0VTU19FUlIiOwordmFyIHN5bnRheEVyciA9ICJT
WU5UQVhfRVJSIjsKK3ZhciBub3JtYWxDbG9zdXJlID0gMTAwMDsKK3ZhciBhYm5vcm1hbENsb3N1
cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsKK3ZhciB0ZXN0SWQ7CisKK3ZhciBjb2RlVGVzdENvZGVz
ID0gWworICAgIDk5OSwgMTAwMSwgMjk5OSwgNTAwMCwgNjU1MzYgKyAxMDAwLCAweDEwMDAwMDAw
MCArIDEwMDAsIDI5OTkuOSwgTmFOLCAiMCIsICIxMDAiLCAxLzAsIC0xLzAsIDAvMCwKKyAgICAx
MDAwLjAKK107CisKK3ZhciByZWFzb25UZXN0UmVhc29ucyA9IFsKKyAgICAiMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCIs
IC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyXHUwMGE5IiwgLy8gbGVuZ3RoIGlzIDEyMywgYnV0
IDEyNCBCeXRlIGluIFVURi04CisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMyIsIC8vIDEyMyBCeXRlCitdOworCit2
YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBbCisgICAgZmFsc2UsCisgICAgZmFsc2UsCisgICAgdHJ1
ZSwKK107CisKK2Z1bmN0aW9uIGhhbmRsZU9wZW4oKQoreworICAgIHRlc3RGYWlsZWQoImhhbmRs
ZU9wZW4oKSB3YXMgY2FsbGVkLiIpOworfQorCitmdW5jdGlvbiBoYW5kbGVFcnJvcigpCit7Cisg
ICAgdGVzdEZhaWxlZCgiaGFuZGxlRXJyb3IoKSB3YXMgY2FsbGVkLiIpOworfQorCitmdW5jdGlv
biBoYW5kbGVDbG9zZSgpCit7CisgICAgdGVzdEZhaWxlZCgiaGFuZGxlQ2xvc2UoKSB3YXMgY2Fs
bGVkLiIpOworfQorCitmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKCkKK3sKKyAgICB0ZXN0RmFpbGVk
KCJoYW5kbGVNZXNzYWdlKCkgd2FzIGNhbGxlZC4iKTsKK30KKworZnVuY3Rpb24gc2V0RGVmYXVs
dEhhbmRsZXJzKHdzKQoreworICAgIHdzLm9ub3BlbiA9IGhhbmRsZU9wZW47CisgICAgd3Mub25l
cnJvciA9IGhhbmRsZUVycm9yOworICAgIHdzLm9uY2xvc2UgPSBoYW5kbGVDbG9zZTsKKyAgICB3
cy5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdlOworfQorCitmdW5jdGlvbiBydW5Db2RlVGVzdCgp
Cit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgc2V0RGVmYXVsdEhhbmRsZXJz
KHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgY29kZVRlc3RDb2Rlcy5sZW5ndGg7IGlk
KyspIHsKKyAgICAgICAgaWYgKGNvZGVUZXN0Q29kZXNbaWRdICE9IG5vcm1hbENsb3N1cmUpIHsK
KyAgICAgICAgICAgIGRlYnVnKCJJbnZhbGlkIGNvZGUgdGVzdDogIiArIGlkKTsKKyAgICAgICAg
ICAgIHdzLm9uY2xvc2UgPSBoYW5kbGVDbG9zZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygicnVuQ29kZVRlc3Q6IG9uY2xvc2UoKS4iKTsKKyAgICAgICAgICAgICAgICBj
bG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2Rl
IiwgImFibm9ybWFsQ2xvc3VyZSIpOworICAgICAgICAgICAgICAgIGlmIChjbG9zZUV2ZW50LmNv
ZGUgPT0gYWJub3JtYWxDbG9zdXJlKQorICAgICAgICAgICAgICAgICAgICBydW5JbnZhbGlkU3Ry
aW5nVGVzdCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAg
ICAgICAgICAgd3MuY2xvc2UoY29kZVRlc3RDb2Rlc1tpZF0pOworICAgICAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgICAgICBkZWJ1ZygiQ29kZSAiICsgY29kZVRlc3RDb2Rlc1tpZF0gKyAiIG11
c3QgY2F1c2UgIiArIGludmFsaWRBY2Nlc3NFcnIgKyAnLicpOworICAgICAgICAgICAgZXhjZXB0
aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblByb3RvID0gT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKGUpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleGNlcHRpb25Qcm90
byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4
Y2VwdGlvbk5hbWUiLCAiaW52YWxpZEFjY2Vzc0VyciIpOworICAgICAgICB9CisgICAgfQorfQor
CitmdW5jdGlvbiBydW5JbnZhbGlkU3RyaW5nVGVzdCgpCit7CisgICAgLy8gVE9ETzogdW5wYWly
ZWQgc3Vycm9nYXRlcyB0aHJvdyBTWU5UQVhfRVJSCisgICAgZGVidWcoIlNraXAgaW52YWxpZCBz
dHJpbmcgdGVzdC4iKTsKKyAgICBydW5SZWFzb25UZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJ1blJl
YXNvblRlc3QoKQoreworICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAgIHNldERlZmF1
bHRIYW5kbGVycyh3cyk7CisgICAgZm9yICh2YXIgaWQgPSAwOyBpZCA8IHJlYXNvblRlc3RSZWFz
b25zLmxlbmd0aDsgaWQrKykgeworICAgICAgICBkZWJ1ZygiUmVhc29uIHRlc3Q6ICIgKyBpZCk7
CisgICAgICAgIGlmICghcmVhc29uVGVzdFJlc3VsdHNbaWRdKSB7CisgICAgICAgICAgICBkZWJ1
ZygiICB3aXRoIGludmFsaWQgcmVhc29uOiAiICsgcmVhc29uVGVzdFJlYXNvbnNbaWRdKTsKKyAg
ICAgICAgICAgIHdzLm9uY2xvc2UgPSBoYW5kbGVDbG9zZTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBkZWJ1ZygicnVuUmVhc29uVGVzdDogb25jbG9zZSgpLiIpOworICAgICAgICAg
ICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJjbG9zZUV2
ZW50LmNvZGUiLCAiYWJub3JtYWxDbG9zdXJlIik7CisgICAgICAgICAgICAgICAgaWYgKGNsb3Nl
RXZlbnQuY29kZSA9PSBhYm5vcm1hbENsb3N1cmUpCisgICAgICAgICAgICAgICAgICAgIHJ1bkNv
ZGVBbmRSZWFzb25UZXN0KCk7CisgICAgICAgICAgICB9OworICAgICAgICB9CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICB3cy5jbG9zZShub3JtYWxDbG9zdXJlLCByZWFzb25UZXN0UmVhc29u
c1tpZF0pOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiUmVhc29u
ICIgKyByZWFzb25UZXN0UmVhc29uc1tpZF0gKyAiIG11c3QgY2F1c2UgIiArIHN5bnRheEVyciAr
ICcuJyk7CisgICAgICAgICAgICByZXN1bHQgPSByZWFzb25UZXN0UmVzdWx0c1tpZF07CisgICAg
ICAgICAgICBleGNlcHRpb25OYW1lID0gZS5uYW1lOworICAgICAgICAgICAgZXhjZXB0aW9uUHJv
dG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CisgICAgICAgICAgICBzaG91bGRCZUZhbHNl
KCJyZXN1bHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiZXhjZXB0aW9uUHJvdG8gPT09
IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJleGNlcHRp
b25OYW1lIiwgInN5bnRheEVyciIpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBy
dW5Db2RlQW5kUmVhc29uVGVzdCgpCit7CisgICAgdmFyIGNvZGVzID0gWworICAgICAgICAxMDAw
LAorICAgICAgICAzMDAwLAorICAgICAgICA0MDAwLAorICAgICAgICA0OTk5CisgICAgXTsKKyAg
ICB2YXIgcmVhc29ucyA9IFsKKyAgICAgICAgIk9LLCBCeWUhIiwKKyAgICAgICAgIjMwMDAiLAor
ICAgICAgICAiY29kZSBpcyA0MDAwIiwKKyAgICAgICAgIlx1MDBhOSBHb29nbGUiCisgICAgXTsK
KyAgICAoZnVuY3Rpb24gdGVzdCAoaWQpIHsKKyAgICAgICAgZGVidWcoIkNvZGUgYW5kIHJlYXNv
biB0ZXN0OiAiICsgaWQpOworICAgICAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICAg
ICAgc2V0RGVmYXVsdEhhbmRsZXJzKHdzKTsKKyAgICAgICAgd3Mub25vcGVuID0gZnVuY3Rpb24g
KCkKKyAgICAgICAgeworICAgICAgICAgICAgd3MuY2xvc2UoY29kZXNbaWRdLCByZWFzb25zW2lk
XSk7CisgICAgICAgIH07CisgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAgICAgICAgICBjb2RlID0gY29k
ZXNbaWRdOworICAgICAgICAgICAgcmVhc29uID0gcmVhc29uc1tpZF07CisgICAgICAgICAgICBk
ZWJ1ZygiQ29kZSBhbmQgcmVhc29uIG11c3QgYmUiKTsKKyAgICAgICAgICAgIGRlYnVnKCIgIGNv
ZGUgIDogIiArIGNvZGUpOworICAgICAgICAgICAgZGVidWcoIiAgcmVhc29uOiAiICsgcmVhc29u
KTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJjb2RlIik7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY2xvc2VFdmVudC5yZWFzb24iLCAicmVhc29uIik7CisgICAgICAgICAgICBp
ZiAoKytpZCAhPSBjb2Rlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgdGVzdChpZCk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH07
CisgICAgfSkoMCk7Cit9CisKK3J1bkNvZGVUZXN0KCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xv
c2Vfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9j
bG9zZV93c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWIwMmQ2NjI2N2UyOTRjZTgzOTc3ZGFjNjRmMDc1OTgx
NzA1NjQ3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5CkBAIC0wLDAgKzEsNTMgQEAKKyMgQ29weXJpZ2h0
IDIwMTEsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisKK2ltcG9ydCBsb2dnaW5nCitfR09PREJZRV9NRVNTQUdFID0gdSdHb29kYnllJwor
CisKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNz
ICAjIEFsd2F5cyBhY2NlcHQuCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1
ZXN0KToKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0u
cmVjZWl2ZV9tZXNzYWdlKCkKKyAgICAgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgIGlmIGlzaW5zdGFuY2UobGluZSwgdW5pY29kZSk6CisgICAgICAgICAg
ICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQorICAg
ICAgICAgICAgaWYgbGluZSA9PSBfR09PREJZRV9NRVNTQUdFOgorICAgICAgICAgICAgICAgIHJl
dHVybgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9t
ZXNzYWdlKGxpbmUsIGJpbmFyeT1UcnVlKQorCisKK2RlZiB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xv
c2luZ19oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcmV0dXJuIHJlcXVlc3Qud3NfY2xvc2VfY29k
ZSwgcmVxdWVzdC53c19jbG9zZV9yZWFzb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2Ut
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NDc1YjE3MGExNThhNGI5YjU3OTkyODhiMTE0OTI3
NWFmNGE5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOTQg
QEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBXZWJTb2NrZXQgaXMgY2xvc2VkIGJlZm9yZSB0
aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBX
ZWJTb2NrZXQgaXMgY2xvc2VkIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4K
K1ZlcmlmeSBXZWJTb2NrZXQ6OmNsb3NlIGJlaGF2aW9ycyBpbiBXb3JrZXIuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworSW52YWxpZCBjb2RlIHRlc3Q6IDAKK0NvZGUgOTk5IG11c3Qg
Y2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5h
bWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDEKK0NvZGUgMTAwMSBt
dXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRp
b25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAyCitDb2RlIDI5
OTkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhj
ZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMworQ29k
ZSA1MDAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBQQVNTOiB3b3JrZXI6
IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDQK
K0NvZGUgNjY1MzYgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIFBBU1M6IHdv
cmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVz
dDogNQorQ29kZSA0Mjk0OTY4Mjk2IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFT
UyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxp
ZCBjb2RlIHRlc3Q6IDYKK0NvZGUgMjk5OS45IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJS
LgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0Vycgor
SW52YWxpZCBjb2RlIHRlc3Q6IDcKK0NvZGUgTmFOIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1Nf
RVJSLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0Vy
cgorSW52YWxpZCBjb2RlIHRlc3Q6IDgKK0NvZGUgMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNT
X0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NF
cnIKK0ludmFsaWQgY29kZSB0ZXN0OiA5CitDb2RlIDEwMCBtdXN0IGNhdXNlIElOVkFMSURfQUND
RVNTX0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nl
c3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxMAorQ29kZSBJbmZpbml0eSBtdXN0IGNhdXNlIElO
VkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGlu
dmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxMQorQ29kZSAtSW5maW5pdHkgbXVz
dCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9u
TmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMTIKK0NvZGUgTmFO
IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorcnVuQ29kZVRlc3Q6IG9uY2xvc2UoKS4KK1BB
U1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LmNvZGUgaXMgYWJub3JtYWxDbG9zdXJlCitTa2lw
IGludmFsaWQgc3RyaW5nIHRlc3QuCitSZWFzb24gdGVzdDogMAorICB3aXRoIGludmFsaWQgcmVh
c29uOiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0CitSZWFzb24gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCBtdXN0IGNhdXNlIFNZTlRBWF9FUlIu
CitQQVNTIFBBU1M6IHdvcmtlcjogcmVzdWx0IGlzIGZhbHNlCitQQVNTIFBBU1M6IHdvcmtlcjog
ZXhjZXB0aW9uTmFtZSBpcyBzeW50YXhFcnIKK1JlYXNvbiB0ZXN0OiAxCisgIHdpdGggaW52YWxp
ZCByZWFzb246IDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEywqkKK1JlYXNvbiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMsKpIG11c3QgY2F1c2UgU1lOVEFY
X0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiByZXN1bHQgaXMgZmFsc2UKK1BBU1MgUEFTUzogd29y
a2VyOiBleGNlcHRpb25OYW1lIGlzIHN5bnRheEVycgorUmVhc29uIHRlc3Q6IDIKK3J1blJlYXNv
blRlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LmNvZGUgaXMg
YWJub3JtYWxDbG9zdXJlCitDb2RlIGFuZCByZWFzb24gdGVzdDogMAorQ29kZSBhbmQgcmVhc29u
IG11c3QgYmUKKyAgY29kZSAgOiAxMDAwCisgIHJlYXNvbjogT0ssIEJ5ZSEKK1BBU1MgUEFTUzog
d29ya2VyOiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBj
bG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQucmVh
c29uIGlzIHJlYXNvbgorQ29kZSBhbmQgcmVhc29uIHRlc3Q6IDEKK0NvZGUgYW5kIHJlYXNvbiBt
dXN0IGJlCisgIGNvZGUgIDogMzAwMAorICByZWFzb246IDMwMDAKK1BBU1MgUEFTUzogd29ya2Vy
OiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2
ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQucmVhc29uIGlz
IHJlYXNvbgorQ29kZSBhbmQgcmVhc29uIHRlc3Q6IDIKK0NvZGUgYW5kIHJlYXNvbiBtdXN0IGJl
CisgIGNvZGUgIDogNDAwMAorICByZWFzb246IGNvZGUgaXMgNDAwMAorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3Nl
RXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5yZWFzb24g
aXMgcmVhc29uCitDb2RlIGFuZCByZWFzb24gdGVzdDogMworQ29kZSBhbmQgcmVhc29uIG11c3Qg
YmUKKyAgY29kZSAgOiA0OTk5CisgIHJlYXNvbjogwqkgR29vZ2xlCitQQVNTIFBBU1M6IHdvcmtl
cjogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VF
dmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBp
cyByZWFzb24KK0RPTkUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9jbG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0YzY2MjBl
ODc0MGM2NjliMWIyMTJkYjRkZDFiOTEyNDNmZWYyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRt
bApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIlZlcmlmeSBXZWJTb2Nr
ZXQ6OmNsb3NlIGJlaGF2aW9ycyBpbiBXb3JrZXIuIik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJv
dG9jb2xFbmFibGVkIiwgMCk7CisKK2Z1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyLCBwcmVmaXgpCit7
CisgICAgcmV0dXJuIHN0ci5pbmRleE9mKHByZWZpeCkgPT0gMDsKK30KKwordmFyIHdvcmtlciA9
IG5ldyBXb3JrZXIoInJlc291cmNlcy9jbG9zZS5qcyIpOword29ya2VyLm9ubWVzc2FnZSA9IGZ1
bmN0aW9uIChldmVudCkKK3sKKyAgICB2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGE7CisgICAgaWYg
KHN0YXJ0c1dpdGgobWVzc2FnZSwgIlBBU1MiKSkKKyAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdl
KTsKKyAgICBlbHNlIGlmIChzdGFydHNXaXRoKG1lc3NhZ2UsICJGQUlMIikpCisgICAgICAgIHRl
c3RGYWlsZWQobWVzc2FnZSkKKyAgICBlbHNlCisgICAgICAgIGRlYnVnKG1lc3NhZ2UpOworICAg
IGlmIChtZXNzYWdlID09PSAiRE9ORSIpCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworfTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xv
c2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDRjZjBlNmY1YmYzOTUwNTM2MGYwMmMxOTIyNTEyOTE2MmEwMDE1
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UuanMKQEAgLTAsMCArMSwyMDUgQEAKK2Z1
bmN0aW9uIHBvc3RSZXN1bHQocmVzdWx0LCBhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIHZhciBt
ZXNzYWdlID0gcmVzdWx0ID8gIlBBU1MiIDogIkZBSUwiOworICAgIG1lc3NhZ2UgKz0gIjogd29y
a2VyOiAiICsgYWN0dWFsICsgIiBpcyAiOworICAgIGlmICghcmVzdWx0KQorICAgICAgICBtZXNz
YWdlICs9ICJub3QgIjsKKyAgICBtZXNzYWdlICs9IGV4cGVjdGVkOworICAgIHBvc3RNZXNzYWdl
KG1lc3NhZ2UpOworfQorCitmdW5jdGlvbiB0ZXN0RmFpbGVkKG1lc3NhZ2UpCit7CisgICAgcG9z
dE1lc3NhZ2UoIkZBSUw6ICIgKyBtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gZGVidWcobWVzc2Fn
ZSkKK3sKKyAgICBwb3N0TWVzc2FnZShtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICB2YXIgX3Jlc3VsdCA9IGV2YWwoYWN0dWFsICsgIiA9
PSAiICsgZXhwZWN0ZWQpOworICAgIHBvc3RSZXN1bHQoX3Jlc3VsdCwgYWN0dWFsLCBleHBlY3Rl
ZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlVHJ1ZShhY3R1YWwpCit7CisgICAgc2hvdWxkQmUo
YWN0dWFsLCAidHJ1ZSIpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUZhbHNlKGFjdHVhbCkKK3sK
KyAgICBzaG91bGRCZShhY3R1YWwsICJmYWxzZSIpOworfQorCit2YXIgZXhjZXB0aW9uTmFtZTsK
K3ZhciBleGNlcHRpb25Qcm90bzsKK3ZhciBjbG9zZUV2ZW50OwordmFyIGNvZGU7Cit2YXIgcmVh
c29uOwordmFyIHJlc3VsdDsKK3ZhciBpbnZhbGlkQWNjZXNzRXJyID0gIklOVkFMSURfQUNDRVNT
X0VSUiI7Cit2YXIgc3ludGF4RXJyID0gIlNZTlRBWF9FUlIiOwordmFyIG5vcm1hbENsb3N1cmUg
PSAxMDAwOwordmFyIGFibm9ybWFsQ2xvc3VyZSA9IDEwMDY7Cit2YXIgdXJsID0gIndzOi8vMTI3
LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UiOwordmFyIHdzOwordmFyIHRl
c3RJZDsKKwordmFyIGNvZGVUZXN0Q29kZXMgPSBbCisgICAgOTk5LCAxMDAxLCAyOTk5LCA1MDAw
LCA2NTUzNiArIDEwMDAsIDB4MTAwMDAwMDAwICsgMTAwMCwgMjk5OS45LCBOYU4sICIwIiwgIjEw
MCIsIDEvMCwgLTEvMCwgMC8wLAorICAgIDEwMDAuMAorXTsKKwordmFyIHJlYXNvblRlc3RSZWFz
b25zID0gWworICAgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0IiwgLy8gMTI0IEJ5dGUKKyAgICAiMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTJcdTAw
YTkiLCAvLyBsZW5ndGggaXMgMTIzLCBidXQgMTI0IEJ5dGUgaW4gVVRGLTgKKyAgICAiMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzIiwgLy8gMTIzIEJ5dGUKK107CisKK3ZhciByZWFzb25UZXN0UmVzdWx0cyA9IFsKKyAgICBm
YWxzZSwKKyAgICBmYWxzZSwKKyAgICB0cnVlLAorXTsKKworZnVuY3Rpb24gaGFuZGxlT3Blbigp
Cit7CisgICAgdGVzdEZhaWxlZCgiaGFuZGxlT3BlbigpIHdhcyBjYWxsZWQuIik7Cit9OworCitm
dW5jdGlvbiBoYW5kbGVFcnJvcigpCit7CisgICAgdGVzdEZhaWxlZCgiaGFuZGxlRXJyb3IoKSB3
YXMgY2FsbGVkLiIpOworfTsKKworZnVuY3Rpb24gaGFuZGxlQ2xvc2UoKQoreworICAgIHRlc3RG
YWlsZWQoImhhbmRsZUNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKK307CisKK2Z1bmN0aW9uIGhhbmRs
ZU1lc3NhZ2UoKQoreworICAgIHRlc3RGYWlsZWQoImhhbmRsZU1lc3NhZ2UoKSB3YXMgY2FsbGVk
LiIpOworfTsKKworZnVuY3Rpb24gc2V0RGVmYXVsdEhhbmRsZXJzKHdzKQoreworICAgIHdzLm9u
b3BlbiA9IGhhbmRsZU9wZW47CisgICAgd3Mub25lcnJvciA9IGhhbmRsZUVycm9yOworICAgIHdz
Lm9uY2xvc2UgPSBoYW5kbGVDbG9zZTsKKyAgICB3cy5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdl
OworfQorCitmdW5jdGlvbiBydW5Db2RlVGVzdCgpCit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0
KHVybCk7CisgICAgc2V0RGVmYXVsdEhhbmRsZXJzKHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7
IGlkIDwgY29kZVRlc3RDb2Rlcy5sZW5ndGg7IGlkKyspIHsKKyAgICAgICAgaWYgKGNvZGVUZXN0
Q29kZXNbaWRdICE9IG5vcm1hbENsb3N1cmUpIHsKKyAgICAgICAgICAgIGRlYnVnKCJJbnZhbGlk
IGNvZGUgdGVzdDogIiArIGlkKTsKKyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBoYW5kbGVDbG9z
ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAo
ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygicnVuQ29kZVRlc3Q6IG9u
Y2xvc2UoKS4iKTsKKyAgICAgICAgICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImFibm9ybWFsQ2xvc3VyZSIpOworICAg
ICAgICAgICAgICAgIGlmIChjbG9zZUV2ZW50LmNvZGUgPT0gYWJub3JtYWxDbG9zdXJlKQorICAg
ICAgICAgICAgICAgICAgICBydW5JbnZhbGlkU3RyaW5nVGVzdCgpOworICAgICAgICAgICAgfTsK
KyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgd3MuY2xvc2UoY29kZVRlc3RD
b2Rlc1tpZF0pOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBkZWJ1ZygiQ29k
ZSAiICsgY29kZVRlc3RDb2Rlc1tpZF0gKyAiIG11c3QgY2F1c2UgIiArIGludmFsaWRBY2Nlc3NF
cnIgKyAnLicpOworICAgICAgICAgICAgZXhjZXB0aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAg
ICAgIGV4Y2VwdGlvblByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImV4Y2VwdGlvbk5hbWUiLCAiaW52YWxpZEFjY2Vzc0VyciIpOworICAgICAg
ICB9CisgICAgfQorfQorCitmdW5jdGlvbiBydW5JbnZhbGlkU3RyaW5nVGVzdCgpCit7CisgICAg
Ly8gVE9ETzogdW5wYWlyZWQgc3Vycm9nYXRlcyB0aHJvdyBTWU5UQVhfRVJSCisgICAgZGVidWco
IlNraXAgaW52YWxpZCBzdHJpbmcgdGVzdC4iKTsKKyAgICBydW5SZWFzb25UZXN0KCk7Cit9CisK
K2Z1bmN0aW9uIHJ1blJlYXNvblRlc3QoKQoreworICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwp
OworICAgIHNldERlZmF1bHRIYW5kbGVycyh3cyk7CisgICAgZm9yICh2YXIgaWQgPSAwOyBpZCA8
IHJlYXNvblRlc3RSZWFzb25zLmxlbmd0aDsgaWQrKykgeworICAgICAgICBkZWJ1ZygiUmVhc29u
IHRlc3Q6ICIgKyBpZCk7CisgICAgICAgIGlmICghcmVhc29uVGVzdFJlc3VsdHNbaWRdKSB7Cisg
ICAgICAgICAgICBkZWJ1ZygiICB3aXRoIGludmFsaWQgcmVhc29uOiAiICsgcmVhc29uVGVzdFJl
YXNvbnNbaWRdKTsKKyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBoYW5kbGVDbG9zZTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygicnVuUmVhc29uVGVzdDogb25jbG9zZSgp
LiIpOworICAgICAgICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJjbG9zZUV2ZW50LmNvZGUiLCAiYWJub3JtYWxDbG9zdXJlIik7CisgICAgICAgICAg
ICAgICAgaWYgKGNsb3NlRXZlbnQuY29kZSA9PSBhYm5vcm1hbENsb3N1cmUpCisgICAgICAgICAg
ICAgICAgICAgIHJ1bkNvZGVBbmRSZWFzb25UZXN0KCk7CisgICAgICAgICAgICB9OworICAgICAg
ICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB3cy5jbG9zZShub3JtYWxDbG9zdXJlLCBy
ZWFzb25UZXN0UmVhc29uc1tpZF0pOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAg
ICBkZWJ1ZygiUmVhc29uICIgKyByZWFzb25UZXN0UmVhc29uc1tpZF0gKyAiIG11c3QgY2F1c2Ug
IiArIHN5bnRheEVyciArICcuJyk7CisgICAgICAgICAgICByZXN1bHQgPSByZWFzb25UZXN0UmVz
dWx0c1tpZF07CisgICAgICAgICAgICBleGNlcHRpb25OYW1lID0gZS5uYW1lOworICAgICAgICAg
ICAgZXhjZXB0aW9uUHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7CisgICAgICAgICAg
ICBzaG91bGRCZUZhbHNlKCJyZXN1bHQiKTsKKyAgICAgICAgICAgIHNob3VsZEJlKCJleGNlcHRp
b25OYW1lIiwgInN5bnRheEVyciIpOworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBy
dW5Db2RlQW5kUmVhc29uVGVzdCgpCit7CisgICAgdmFyIGNvZGVzID0gWworICAgICAgICAxMDAw
LAorICAgICAgICAzMDAwLAorICAgICAgICA0MDAwLAorICAgICAgICA0OTk5CisgICAgXTsKKyAg
ICB2YXIgcmVhc29ucyA9IFsKKyAgICAgICAgIk9LLCBCeWUhIiwKKyAgICAgICAgIjMwMDAiLAor
ICAgICAgICAiY29kZSBpcyA0MDAwIiwKKyAgICAgICAgIlx1MDBhOSBHb29nbGUiCisgICAgXTsK
KyAgICAoZnVuY3Rpb24gdGVzdCAoaWQpIHsKKyAgICAgICAgZGVidWcoIkNvZGUgYW5kIHJlYXNv
biB0ZXN0OiAiICsgaWQpOworICAgICAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICAg
ICAgc2V0RGVmYXVsdEhhbmRsZXJzKHdzKTsKKyAgICAgICAgd3Mub25vcGVuID0gZnVuY3Rpb24g
KCkKKyAgICAgICAgeworICAgICAgICAgICAgd3MuY2xvc2UoY29kZXNbaWRdLCByZWFzb25zW2lk
XSk7CisgICAgICAgIH07CisgICAgICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAgICAgICAgICBjb2RlID0gY29k
ZXNbaWRdOworICAgICAgICAgICAgcmVhc29uID0gcmVhc29uc1tpZF07CisgICAgICAgICAgICBk
ZWJ1ZygiQ29kZSBhbmQgcmVhc29uIG11c3QgYmUiKTsKKyAgICAgICAgICAgIGRlYnVnKCIgIGNv
ZGUgIDogIiArIGNvZGUpOworICAgICAgICAgICAgZGVidWcoIiAgcmVhc29uOiAiICsgcmVhc29u
KTsKKyAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY2xvc2VFdmVudC53YXNDbGVhbiIpOworICAg
ICAgICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJjb2RlIik7CisgICAgICAgICAg
ICBzaG91bGRCZSgiY2xvc2VFdmVudC5yZWFzb24iLCAicmVhc29uIik7CisgICAgICAgICAgICBp
ZiAoKytpZCAhPSBjb2Rlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgdGVzdChpZCk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2UoIkRPTkUiKTsKKyAgICAg
ICAgfTsKKyAgICB9KSgwKTsKK30KKworcnVuQ29kZVRlc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1MGFi
ZTNhMWE0YWYzNWJjN2U2NDc3NjA1Njg0MDZiMmJmZGQ3MDIyLi5mMjk5MzM1NzEzMDZiODkxNDc4
ZGE0ZmY5M2U1NmM0OGI1YzE0MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEt
MDgtMzEgIFRha2FzaGkgVG95b3NoaW1hICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtXZWJTb2NrZXRdIEltcGxlbWVudCBXZWJTb2NrZXQ6OmNsb3NlKCkgY29kZSBhbmQgcmVh
c29uIGhhbmRsaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjY5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0czogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9jbG9zZS5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xv
c2UuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhX
ZWJTb2NrZXQ6OmNsb3NlQ2FsbGJhY2spOgorICAgICAgICBBZGQgY3VzdG9tIGJyaWRnZSBmb3Ig
V2ViU29ja2V0OjpjbG9zZSgpLgorICAgICAgICAqIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dl
YlNvY2tldC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmlkbDoKKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbDo6Y2xvc2UpOgorICAgICAgICBBZGQgY29kZSBhbmQgcmVhc29uIGFyZ3Vt
ZW50cyBoYW5kbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnN0YXJ0
Q2xvc2luZ0hhbmRzaGFrZSk6CisgICAgICAgIFNlbmQgYSBjbG9zZSBmcmFtZSB3aXRob3V0IGNv
ZGUgYW5kIHJlYXNvbiBvbiBzZXJ2ZXIgaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlcy4KKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWVIaXhpZTc2KToKKyAgICAg
ICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpjbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJl
YWRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6QnJpZGdlOjpjbG9zZSk6CisgICAgICAgICogd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICBBZGQgY29kZSBhbmQgcmVhc29uIGFyZ3Vt
ZW50cyBoYW5kbGluZy4KKwogMjAxMS0wOC0zMSAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBXZWJTb2NrZXQ6IExvYWQgQmxvYiBpbiBXZWJTb2NrZXRDaGFu
bmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5j
cHAKaW5kZXggYWY1ZGFjYTU1NWUwODllYzEyMjU4YzYxNzIyYzYwN2NkZjMwMTZjYS4uMDExYTBm
MjY5ZGY4OWUyOGRiNTdjMTI5NGFjY2E1MWI0YTUxMzk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM1LDEwICszNSwxMyBAQAogCiAjaW5jbHVkZSAi
SlNXZWJTb2NrZXQuaCIKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0
LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTg1LDYgKzg4LDM2IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNXZWJTb2NrZXRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNXZWJT
b2NrZXQoRXhlY1N0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShDUkVBVEVfRE9NX1dSQVBQ
RVIoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIFdlYlNvY2tldCwgd2ViU29j
a2V0LmdldCgpKSk7CiB9CiAKK0pTVmFsdWUgSlNXZWJTb2NrZXQ6OmNsb3NlKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBXZWJTb2NrZXQqIHdlYlNvY2tldCA9IHN0YXRpY19jYXN0PFdlYlNvY2tl
dCo+KGltcGwoKSk7CisgICAgc2l6ZV90IGFyZ3VtZW50Q291bnQgPSBleGVjLT5hcmd1bWVudENv
dW50KCk7CisgICAgaW50IGNvZGUgPSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5v
dFNwZWNpZmllZDsKKyAgICBTdHJpbmcgcmVhc29uID0gIiI7CisgICAgaWYgKGFyZ3VtZW50Q291
bnQgPj0gMSkgeworICAgICAgICBKU1ZhbHVlIHYgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICAg
ICAgZG91YmxlIHggPSB2LnRvTnVtYmVyKGV4ZWMpOworICAgICAgICBkb3VibGUgbWF4VmFsdWUg
PSBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptYXgo
KSk7CisgICAgICAgIGRvdWJsZSBtaW5WYWx1ZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1pbigpKTsKKyAgICAgICAgaWYgKGlzbmFuKHgpKQor
ICAgICAgICAgICAgeCA9IDAuMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgeCA9IGNsYW1w
VG8oeCwgbWluVmFsdWUsIG1heFZhbHVlKTsKKyAgICAgICAgY29kZSA9IGNsYW1wVG9JbnRlZ2Vy
KHgpOworICAgICAgICBpZiAoYXJndW1lbnRDb3VudCA+PSAyKSB7CisgICAgICAgICAgICByZWFz
b24gPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYykpOwor
ICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIpOworICAgICAgICAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHdlYlNvY2tldC0+Y2xvc2UoY29kZSwgcmVhc29uLCBl
Yyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3Bw
CmluZGV4IDU4YTI3ZTdmYTEzZGI5ZmEyZGRjM2QyZmVkM2Y3ZTg5N2ZjOTc1ZDUuLmQxNDNiZTIx
MWU5YjBlYzgyYTRhYzIwMThkNjI0MjlmMDMwZGRmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCwx
NCArMzQsMTcgQEAKIAogI2luY2x1ZGUgIlY4V2ViU29ja2V0LmgiCiAKKyNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKICNpbmNsdWRlICJW
OFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2luY2x1ZGUgIldlYlNvY2tl
dENoYW5uZWwuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwOCw2ICsx
MTEsMzYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0Ojpjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICByZXR1cm4gYXJncy5Ib2xkZXIo
KTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViU29ja2V0OjpjbG9zZUNhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQg
PSB0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudCA9IGFyZ3Mu
TGVuZ3RoKCk7CisgICAgaW50IGNvZGUgPSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29k
ZU5vdFNwZWNpZmllZDsKKyAgICBTdHJpbmcgcmVhc29uID0gIiI7CisgICAgaWYgKGFyZ3VtZW50
Q291bnQgPj0gMSkgeworICAgICAgICBkb3VibGUgeCA9IGFyZ3NbMF0tPk51bWJlclZhbHVlKCk7
CisgICAgICAgIGRvdWJsZSBtYXhWYWx1ZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MTZfdD46Om1heCgpKTsKKyAgICAgICAgZG91YmxlIG1pblZhbHVlID0g
c3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWluKCkp
OworICAgICAgICBpZiAoaXNuYW4oeCkpCisgICAgICAgICAgICB4ID0gMC4wOworICAgICAgICBl
bHNlCisgICAgICAgICAgICB4ID0gY2xhbXBUbyh4LCBtaW5WYWx1ZSwgbWF4VmFsdWUpOworICAg
ICAgICBjb2RlID0gY2xhbXBUb0ludGVnZXIoeCk7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50
ID49IDIpIHsKKyAgICAgICAgICAgIHY4OjpUcnlDYXRjaCB0cnlDYXRjaDsKKyAgICAgICAgICAg
IHY4OjpIYW5kbGU8djg6OlN0cmluZz4gcmVhc29uVmFsdWUgPSBhcmdzWzFdLT5Ub1N0cmluZygp
OworICAgICAgICAgICAgaWYgKHRyeUNhdGNoLkhhc0NhdWdodCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKHRyeUNhdGNoLkV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJl
YXNvbiA9IHRvV2ViQ29yZVN0cmluZyhyZWFzb25WYWx1ZSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2ViU29ja2V0LT5jbG9zZShjb2RlLCByZWFz
b24sIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVjKTsKKyAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBjZDljZTI1
MmE0Y2Q1YmQ2N2E3MzljZmM1MzMyNzA4ZTBlZDQ4Y2ZlLi4wOWY4MWI1MDdhMTAwMWQ2ZTdlYTU5
MTcyMTE2ZWE5ZTlmZjdiZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpID0gMDsgLy8gV2lsbCBiZSBhdmFp
bGFibGUgYWZ0ZXIgZGlkQ29ubmVjdCgpIGNhbGxiYWNrIGlzIGludm9rZWQuCiAgICAgdmlydHVh
bCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB1bnNp
Z25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBj
bG9zZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmlu
ZyYgcmVhc29uKSA9IDA7CiAgICAgLy8gTG9nIHRoZSByZWFzb24gdGV4dCBhbmQgY2xvc2UgdGhl
IGNvbm5lY3Rpb24uIFdpbGwgY2FsbCBkaWRDbG9zZSgpLgogICAgIHZpcnR1YWwgdm9pZCBmYWls
KGNvbnN0IFN0cmluZyYgcmVhc29uKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3Qo
KSA9IDA7IC8vIFdpbGwgc3VwcHJlc3MgZGlkQ2xvc2UoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmNwcAppbmRleCBkYzlhYmJhZjRjNDZhZWQ2OTgyYTY3NmQzOTVkODM2ODg1
ZjMxYmY1Li4yNGIxNmY0N2YwNDM3MGRlODljN2U2NzkxMTMxYjk0NmU4NGYzY2ZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTYwLDYgKzYwLDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjb25zdCBzaXplX3QgbWF4UmVhc29uU2l6ZUluQnl0ZXMgPSAx
MjM7CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkUHJvdG9jb2xDaGFyYWN0ZXIoVUNoYXIg
Y2hhcmFjdGVyKQogewogICAgIC8vIEh5YmktMTAgc2F5cyAiKFN1YnByb3RvY29sIHN0cmluZyBt
dXN0IGNvbnNpc3Qgb2YpIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFUrMDAyMSB0byBVKzAwN0Ug
bm90IGluY2x1ZGluZwpAQCAtMjYyLDkgKzI2NCwyMyBAQCBib29sIFdlYlNvY2tldDo6c2VuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiBtX2No
YW5uZWwtPnNlbmQobWVzc2FnZSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0OjpjbG9zZSgpCit2b2lk
IFdlYlNvY2tldDo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjbG9zZSIsIHRo
aXMpOworICAgIGlmIChjb2RlID09IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlTm90
U3BlY2lmaWVkKQorICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBjbG9zZSB3aXRo
b3V0IGNvZGUgYW5kIHJlYXNvbiIsIHRoaXMpOworICAgIGVsc2UgeworICAgICAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldCAlcCBjbG9zZSB3aXRoIGNvZGUgPSAlZCwgcmVhc29uID0gJXMiLCB0
aGlzLCBjb2RlLCByZWFzb24udXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlmICghKGNvZGUgPT0g
V2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVOb3JtYWxDbG9zdXJlIHx8IChXZWJTb2Nr
ZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU1pbmltdW1Vc2VyRGVmaW5lZCA8PSBjb2RlICYmIGNv
ZGUgPD0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVNYXhpbXVtVXNlckRlZmluZWQp
KSkgeworICAgICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IGlmIHJlYXNvbiBjb250YWlucyBh
bnkgdW5wYWlyZWQgc3Vycm9nYXRlcywgcmFpc2UgU1lOVEFYX0VSUi4KKyAgICAgICAgaWYgKHJl
YXNvbi51dGY4KCkubGVuZ3RoKCkgPiBtYXhSZWFzb25TaXplSW5CeXRlcykgeworICAgICAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCiAgICAgaWYgKG1fc3RhdGUgPT0gQ0xPU0lORyB8fCBtX3N0YXRlID09IENMT1NFRCkKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKQEAgLTI3Nyw3
ICsyOTMsNyBAQCB2b2lkIFdlYlNvY2tldDo6Y2xvc2UoKQogICAgIC8vIGRpZENsb3NlIG5vdGlm
aWNhdGlvbiBtYXkgYmUgYWxyZWFkeSBxdWV1ZWQsIHdoaWNoIHdlIHdpbGwgaW5hZHZlcnRlbnRs
eSBwcm9jZXNzIHdoaWxlIHdhaXRpbmcgZm9yIGJ1ZmZlcmVkQW1vdW50KCkgdG8gcmV0dXJuLgog
ICAgIC8vIEluIHRoaXMgY2FzZSBtX2NoYW5uZWwgd2lsbCBiZSBzZXQgdG8gbnVsbCBkdXJpbmcg
ZGlkQ2xvc2UoKSBjYWxsLCB0aHVzIHdlIG5lZWQgdG8gdGVzdCB2YWxpZG5lc3Mgb2YgbV9jaGFu
bmVsIGhlcmUuCiAgICAgaWYgKG1fY2hhbm5lbCkKLSAgICAgICAgbV9jaGFubmVsLT5jbG9zZSgp
OworICAgICAgICBtX2NoYW5uZWwtPmNsb3NlKGNvZGUsIHJlYXNvbik7CiB9CiAKIGNvbnN0IEtV
UkwmIFdlYlNvY2tldDo6dXJsKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5oCmluZGV4IDU2ZTIwMDZjMDEzNzE4ZmUxNDg4ZDcyM2M1MWUwOThhNDIzYTFmYmYuLjFkZDU2
YTJmNDQ4Nzk4YWY4N2I3YzgxOWMyNTE1YjMxODc2OGUyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2Vu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZvaWQgY2xv
c2UoKTsKKyAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CiAgICAgU3RhdGUg
cmVhZHlTdGF0ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRs
CmluZGV4IDgxZDc1NjNmMDdjOTE0Mjc0NWY3ZjI5YjFjZTMyNTVmNTZhNmVjZTIuLmNhZDNhNmJm
YTFlNjI0OTE0NjE4ZjAzZGFmNGQ0NGQxNTdhMTNmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5pZGwKQEAgLTY0LDcgKzY0LDcgQEAgbW9kdWxlIHdlYnNvY2tldHMgewog
ICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIFtSZXF1
aXJlc0FsbEFyZ3VtZW50c10gYm9vbGVhbiBzZW5kKGluIERPTVN0cmluZyBkYXRhKSByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKLSAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICBbQ3VzdG9tXSB2
b2lkIGNsb3NlKGluIFtPcHRpb25hbF0gdW5zaWduZWQgc2hvcnQgY29kZSwgaW4gW09wdGlvbmFs
XSBET01TdHJpbmcgcmVhc29uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICAvLyBF
dmVudFRhcmdldCBpbnRlcmZhY2UKICAgICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERP
TVN0cmluZyB0eXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5jcHAKaW5kZXggNjY3MmZkZDRjYmMzM2FmMzQyZGQxN2E4YzhjNjFjZGNiOWQ4NTBkMy4u
MjAwN2U2ZGI4Mzg1ZmE2ZjM2NmRhYmIyNGYyMTc3NWRhMzRkZThlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNzgsMTMgKzE3OCwx
MyBAQCB1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29u
c3QKICAgICByZXR1cm4gbV9oYW5kbGUtPmJ1ZmZlcmVkQW1vdW50KCk7CiB9CiAKLXZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6Y2xvc2UoKQordm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZShpbnQg
Y29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXRDaGFubmVsICVwIGNsb3NlIiwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAg
ICAgaWYgKCFtX2hhbmRsZSkKICAgICAgICAgcmV0dXJuOwotICAgIHN0YXJ0Q2xvc2luZ0hhbmRz
aGFrZSgpOworICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShjb2RlLCByZWFzb24pOwogICAgIGlm
IChtX2Nsb3NpbmcgJiYgIW1fY2xvc2luZ1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fY2xv
c2luZ1RpbWVyLnN0YXJ0T25lU2hvdCgyICogVENQTWF4aW11bVNlZ21lbnRMaWZldGltZSk7CiB9
CkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpyZXN1bWVUaW1lckZp
cmVkKFRpbWVyPFdlYlNvY2tldENoYW5uZWw+KiB0aW1lcikKICAgICAgICAgZGlkQ2xvc2VTb2Nr
ZXRTdHJlYW0obV9oYW5kbGUuZ2V0KCkpOwogfQogCi12b2lkIFdlYlNvY2tldENoYW5uZWw6OnN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OnN0YXJ0Q2xvc2lu
Z0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgJWQgJWQiLCB0aGlzLCBtX2Nsb3Np
bmcsIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlKTsKICAgICBpZiAobV9jbG9zaW5nKQpAQCAt
NDgyLDkgKzQ4MiwxNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRz
aGFrZSgpCiAgICAgICAgICAgICBtX2hhbmRsZS0+ZGlzY29ubmVjdCgpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIGVucXVldWVSYXdGcmFtZShP
cENvZGVDbG9zZSwgIiIsIDApOyAvLyBGSVhNRTogU2VuZCBzdGF0dXMgY29kZSBhbmQgcmVhc29u
IG1lc3NhZ2UuCi0KKyAgICB9IGVsc2UgeworICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmOworICAg
ICAgICBpZiAoIW1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlICYmIGNvZGUgIT0gQ2xvc2VFdmVu
dENvZGVOb3RTcGVjaWZpZWQpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgaGlnaEJ5dGUg
PSBjb2RlID4+IDg7CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxvd0J5dGUgPSBjb2RlOwor
ICAgICAgICAgICAgYnVmLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPihoaWdoQnl0ZSkpOworICAg
ICAgICAgICAgYnVmLmFwcGVuZChzdGF0aWNfY2FzdDxjaGFyPihsb3dCeXRlKSk7CisgICAgICAg
ICAgICBidWYuYXBwZW5kKHJlYXNvbi51dGY4KCkuZGF0YSgpLCByZWFzb24udXRmOCgpLmxlbmd0
aCgpKTsKKyAgICAgICAgfQorICAgICAgICBlbnF1ZXVlUmF3RnJhbWUoT3BDb2RlQ2xvc2UsIGJ1
Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOworICAgIH0KICAgICBtX2Nsb3NpbmcgPSB0cnVlOwogICAg
IGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFr
ZSgpOwpAQCAtNjkwLDcgKzY5OCw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0Zy
YW1lKCkKICAgICAgICAgICAgIG1fY2xvc2VFdmVudFJlYXNvbiA9ICIiOwogICAgICAgICBza2lw
QnVmZmVyKGZyYW1lLmZyYW1lRW5kIC0gbV9idWZmZXIpOwogICAgICAgICBtX3JlY2VpdmVkQ2xv
c2luZ0hhbmRzaGFrZSA9IHRydWU7Ci0gICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwor
ICAgICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UobV9jbG9zZUV2ZW50Q29kZSwgbV9jbG9zZUV2
ZW50UmVhc29uKTsKICAgICAgICAgaWYgKG1fY2xvc2luZykgewogICAgICAgICAgICAgbV9vdXRn
b2luZ0ZyYW1lUXVldWVTdGF0dXMgPSBPdXRnb2luZ0ZyYW1lUXVldWVDbG9zaW5nOwogICAgICAg
ICAgICAgcHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwpAQCAtNzcxLDcgKzc3OSw3IEBAIGJv
b2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lSGl4aWU3NigpCiAgICAgICAgICAgICBz
a2lwQnVmZmVyKG5leHRGcmFtZSAtIG1fYnVmZmVyKTsKICAgICAgICAgICAgIGlmIChmcmFtZUJ5
dGUgPT0gMHhmZiAmJiAhbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgbV9yZWNlaXZlZENsb3Np
bmdIYW5kc2hha2UgPSB0cnVlOwotICAgICAgICAgICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFr
ZSgpOworICAgICAgICAgICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShDbG9zZUV2ZW50Q29k
ZU5vdFNwZWNpZmllZCwgIiIpOwogICAgICAgICAgICAgICAgIGlmIChtX2Nsb3NpbmcpCiAgICAg
ICAgICAgICAgICAgICAgIG1faGFuZGxlLT5jbG9zZSgpOyAvLyBjbG9zZSBhZnRlciBzZW5kaW5n
IEZGIDAwLgogICAgICAgICAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDQwMDQ5OTEwNmQ3OWY5YTg0NTNiMTk3YzUwNWJmZmMz
MzE3ZGU4ODMuLjk3MDMxNjIzY2MyNjZlNmRhYWRlNzI1MWJkZTExNTc2MTIzYjY1NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02Nyw3ICs2
Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpOwogICAgIHZp
cnR1YWwgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCB1bnNp
Z25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3Nl
KCk7IC8vIFN0YXJ0IGNsb3NpbmcgaGFuZHNoYWtlLgorICAgIHZpcnR1YWwgdm9pZCBjbG9zZShp
bnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOyAvLyBTdGFydCBjbG9zaW5nIGhhbmRzaGFr
ZS4KICAgICB2aXJ0dWFsIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgdmly
dHVhbCB2b2lkIGRpc2Nvbm5lY3QoKTsKIApAQCAtODMsNiArODMsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNvY2tldFN0cmVh
bUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKICAgICBlbnVtIENs
b3NlRXZlbnRDb2RlIHsKKyAgICAgICAgQ2xvc2VFdmVudENvZGVOb3RTcGVjaWZpZWQgPSAtMSwK
ICAgICAgICAgQ2xvc2VFdmVudENvZGVOb3JtYWxDbG9zdXJlID0gMTAwMCwKICAgICAgICAgQ2xv
c2VFdmVudENvZGVHb2luZ0F3YXkgPSAxMDAxLAogICAgICAgICBDbG9zZUV2ZW50Q29kZVByb3Rv
Y29sRXJyb3IgPSAxMDAyLApAQCAtOTAsNyArOTEsOSBAQCBwdWJsaWM6CiAgICAgICAgIENsb3Nl
RXZlbnRDb2RlRnJhbWVUb29MYXJnZSA9IDEwMDQsCiAgICAgICAgIENsb3NlRXZlbnRDb2RlTm9T
dGF0dXNSY3ZkID0gMTAwNSwKICAgICAgICAgQ2xvc2VFdmVudENvZGVBYm5vcm1hbENsb3N1cmUg
PSAxMDA2LAotICAgICAgICBDbG9zZUV2ZW50Q29kZUludmFsaWRVVEY4ID0gMTAwNworICAgICAg
ICBDbG9zZUV2ZW50Q29kZUludmFsaWRVVEY4ID0gMTAwNywKKyAgICAgICAgQ2xvc2VFdmVudENv
ZGVNaW5pbXVtVXNlckRlZmluZWQgPSAzMDAwLAorICAgICAgICBDbG9zZUV2ZW50Q29kZU1heGlt
dW1Vc2VyRGVmaW5lZCA9IDQ5OTkKICAgICB9OwogCiAjaWYgRU5BQkxFKEJMT0IpCkBAIC0xMTUs
NyArMTE4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNraXBCdWZmZXIoc2l6ZV90IGxlbik7CiAg
ICAgYm9vbCBwcm9jZXNzQnVmZmVyKCk7CiAgICAgdm9pZCByZXN1bWVUaW1lckZpcmVkKFRpbWVy
PFdlYlNvY2tldENoYW5uZWw+Kik7Ci0gICAgdm9pZCBzdGFydENsb3NpbmdIYW5kc2hha2UoKTsK
KyAgICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb24pOwogICAgIHZvaWQgY2xvc2luZ1RpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5l
bD4qKTsKIAogICAgIC8vIEh5YmktMTAgb3Bjb2Rlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggNTZmOTdhYWQwMGY3YTY0MTk2YzhmYmNmODVkMWJlNTNiNDhhNzRmNy4uNDQ5ODhm
NjU2MmIxMjQyMWEwZjQwMDcwNGViYzA3NjBlYmIwMjRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHAKQEAgLTk0LDEwICs5NCwxMCBAQCB1bnNpZ25lZCBsb25nIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
YnJpZGdlLT5idWZmZXJlZEFtb3VudCgpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpjbG9zZSgpCit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgaWYgKG1f
YnJpZGdlKQotICAgICAgICBtX2JyaWRnZS0+Y2xvc2UoKTsKKyAgICAgICAgbV9icmlkZ2UtPmNs
b3NlKGNvZGUsIHJlYXNvbik7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCkBAIC0xODcsMTIgKzE4NywxMiBAQCB2
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpidWZmZXJlZEFtb3Vu
dCgpCiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkR2V0QnVmZmVyZWRBbW91bnQsIG1fd29y
a2VyQ2xpZW50V3JhcHBlciwgYnVmZmVyZWRBbW91bnQpLCBtX3Rhc2tNb2RlKTsKIH0KIAotdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y2xvc2UoKQordm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y2xvc2UoaW50IGNvZGUsIGNv
bnN0IFN0cmluZyYgcmVhc29uKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
aWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQogICAgICAgICByZXR1cm47Ci0gICAgbV9tYWlu
V2ViU29ja2V0Q2hhbm5lbC0+Y2xvc2UoKTsKKyAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5j
bG9zZShjb2RlLCByZWFzb24pOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpQZWVyOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKQpAQCAtMzk1LDE5ICszOTUs
MTkgQEAgdW5zaWduZWQgbG9uZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJp
ZGdlOjpidWZmZXJlZEFtb3VudCgpCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBlZXIqIHBlZXIsIGludCBjb2RlLCBjb25zdCBTdHJpbmcmcmVhc29uKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LT5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VSVChwZWVyKTsKIAotICAgIHBlZXItPmNsb3NlKCk7
CisgICAgcGVlci0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjbG9zZSgpCit2b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbikKIHsKICAgICBBU1NFUlQobV9wZWVyKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RU
YXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNrKCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlcikp
KTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoY3JlYXRlQ2FsbGJhY2tUYXNr
KCZXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlLCBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKG1fcGVlciksIGNvZGUsIHJlYXNvbikpOwogfQogCiB2b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkRmFpbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBhNDhhOGExOWQ3YzIwODhjMTJkOWMxNzYyMmIy
MDE1MzcyNTExNGY4Li5hOGQxMzNkM2NkZjgxZTcyYTg3ZGI1OGE2ODVmZTFhMTIyYTRiMzFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpOwogICAgIHZpcnR1YWwgYm9vbCBzZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1v
dW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCk7CisgICAgdmlydHVhbCB2b2lk
IGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgdmlydHVhbCB2b2lk
IGZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0
KCk7IC8vIFdpbGwgc3VwcHJlc3MgZGlkQ2xvc2UoKS4KICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVu
ZCgpOwpAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIGNvbm5lY3QoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgICAgICB2b2lkIHNlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgdm9pZCBidWZmZXJlZEFtb3VudCgpOwotICAg
ICAgICB2b2lkIGNsb3NlKCk7CisgICAgICAgIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0
cmluZyYgcmVhc29uKTsKICAgICAgICAgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKTsK
ICAgICAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAgICAgICAgIHZvaWQgc3VzcGVuZCgpOwpAQCAt
MTI2LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIGJvb2wgc2VuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogICAgICAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCk7Ci0g
ICAgICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJiByZWFzb24pOwogICAgICAgICB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24p
OwogICAgICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKICAgICAgICAgdm9pZCBzdXNwZW5kKCk7CkBA
IC0xNjEsNyArMTYxLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ29u
bmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU2VuZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGVlciosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgc3Rh
dGljIHZvaWQgbWFpblRocmVhZEJ1ZmZlcmVkQW1vdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQZWVyKik7Ci0gICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQZWVyKik7CisgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENsb3NlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29u
KTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkRmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgUGVlciosIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhy
ZWFkRGVzdHJveShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGVlciopOwogICAgIHN0YXRpYyB2
b2lkIG1haW5UaHJlYWRTdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105915</attachid>
            <date>2011-09-01 00:43:56 -0700</date>
            <delta_ts>2011-09-01 22:00:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66925-20110901164355.patch</filename>
            <type>text/plain</type>
            <size>46683</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQxNjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YTUzNTQ0ODQ5ZTRiYTJjNjE5NGNj
Yzc1ZDFlMDJhYWI4YTIwMDA0Li5lMDZlNDQ4NzhhMjA3NGY1MDg2ZGVlMTc5NTZmODIwMzZiMjNj
ODMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMzEgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIEltcGxlbWVu
dCBXZWJTb2NrZXQ6OmNsb3NlKCkgY29kZSBhbmQgcmVhc29uIGhhbmRsaW5nLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvY2xvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qczogQWRkZWQuCisgICAg
ICAgIChwb3N0UmVzdWx0KToKKyAgICAgICAgKHRlc3RGYWlsZWQpOgorICAgICAgICAoZGVidWcp
OgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVUcnVlKToKKyAgICAgICAg
KHNob3VsZEJlRmFsc2UpOgorICAgICAgICAoaGFuZGxlT3Blbik6CisgICAgICAgIChoYW5kbGVF
cnJvcik6CisgICAgICAgIChoYW5kbGVDbG9zZSk6CisgICAgICAgIChoYW5kbGVNZXNzYWdlKToK
KyAgICAgICAgKHNldERlZmF1bHRIYW5kbGVycyk6CisgICAgICAgIChydW5Db2RlVGVzdC5lbHNl
LndzLm9uY2xvc2UpOgorICAgICAgICAocnVuQ29kZVRlc3QpOgorICAgICAgICAocnVuSW52YWxp
ZFN0cmluZ1Rlc3QpOgorICAgICAgICAocnVuUmVhc29uVGVzdC5lbHNlLndzLm9uY2xvc2UpOgor
ICAgICAgICAocnVuUmVhc29uVGVzdCk6CisgICAgICAgIChydW5Db2RlQW5kUmVhc29uVGVzdC4p
OgorICAgICAgICAocnVuQ29kZUFuZFJlYXNvblRlc3QpOgorCiAyMDExLTA4LTMxICBBbGV4YW5k
ZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBV
bnJldmlld2VkLCByZWJhc2VsaW5lIGFub3RoZXIgbXVsdGljb2wgdGVzdCBleHBlY3RhdGlvbi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYzOTczOTUzYzhjNjQxMzI4
NmQxYmJjZmQyMmI2OTg5Nzg0ZWJkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTA4IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBi
ZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJs
aXNoZWQuCitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlvcnMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworSW52YWxpZCBjb2RlIHRlc3Q6IDAKK0NvZGUgOTk5IG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0
aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vz
c0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDEKK0NvZGUgMTAwMSBtdXN0IGNhdXNlIElOVkFMSURf
QUNDRVNTX0VSUi4KK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5
cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFs
aWQgY29kZSB0ZXN0OiAyCitDb2RlIDI5OTkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIu
CitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUK
K1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVz
dDogMworQ29kZSA1MDAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNl
cHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDQKK0NvZGUg
NjY1MzYgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIGV4Y2VwdGlvblByb3Rv
ID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBp
cyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogNQorQ29kZSA0Mjk0OTY4Mjk2
IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0g
RE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52
YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDYKK0NvZGUgMjk5OS45IG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0
aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vz
c0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDcKK0NvZGUgTmFOIG11c3QgY2F1c2UgSU5WQUxJRF9B
Q0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlw
ZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxp
ZCBjb2RlIHRlc3Q6IDgKK0NvZGUgMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BB
U1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFT
UyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiA5
CitDb2RlIDEwMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgZXhjZXB0aW9u
UHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25O
YW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxMAorQ29kZSBJbmZp
bml0eSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgZXhjZXB0aW9uUHJvdG8g
PT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlz
IGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxMQorQ29kZSAtSW5maW5pdHkg
bXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBE
T01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZh
bGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMTIKK0NvZGUgTmFOIG11c3QgY2F1c2Ug
SU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9u
LnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0Vy
cgorcnVuQ29kZVRlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGFibm9y
bWFsQ2xvc3VyZQorU2tpcCBpbnZhbGlkIHN0cmluZyB0ZXN0LgorUmVhc29uIHRlc3Q6IDAKKyAg
d2l0aCBpbnZhbGlkIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNAorUmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQgbXVzdCBj
YXVzZSBTWU5UQVhfRVJSLgorUEFTUyByZXN1bHQgaXMgZmFsc2UKK1BBU1MgZXhjZXB0aW9uUHJv
dG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1l
IGlzIHN5bnRheEVycgorUmVhc29uIHRlc3Q6IDEKKyAgd2l0aCBpbnZhbGlkIHJlYXNvbjogMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTLCqQorUmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEywqkgbXVzdCBjYXVzZSBTWU5UQVhfRVJSLgorUEFTUyBy
ZXN1bHQgaXMgZmFsc2UKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90
b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIHN5bnRheEVycgorUmVhc29uIHRl
c3Q6IDIKK3J1blJlYXNvblRlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlz
IGFibm9ybWFsQ2xvc3VyZQorQ29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK0NvZGUgYW5kIHJlYXNv
biBtdXN0IGJlCisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9LLCBCeWUhCitQQVNTIGNsb3Nl
RXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFT
UyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAxCitD
b2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDMwMDAKKyAgcmVhc29uOiAzMDAwCitQ
QVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMg
Y29kZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0
ZXN0OiAyCitDb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDQwMDAKKyAgcmVhc29u
OiBjb2RlIGlzIDQwMDAKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIGNs
b3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgor
Q29kZSBhbmQgcmVhc29uIHRlc3Q6IDMKK0NvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUg
IDogNDk5OQorICByZWFzb246IMKpIEdvb2dsZQorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IHRydWUKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgY2xvc2VFdmVudC5yZWFz
b24gaXMgcmVhc29uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0YjgwNWZhNzc0ZWU0YTAxOTEwMjE5MzQ1
NDY2YTliZmUxYzVkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwKQEAgLTAsMCArMSwxOTMgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIlZlcmlmeSBXZWJTb2Nr
ZXQ6OmNsb3NlIGJlaGF2aW9ycy4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQiLCAwKTsKKwordmFyIGV4Y2VwdGlvbk5hbWU7Cit2YXIgZXhjZXB0aW9uUHJvdG87Cit2YXIg
Y2xvc2VFdmVudDsKK3ZhciBjb2RlOwordmFyIHJlYXNvbjsKK3ZhciByZXN1bHQ7Cit2YXIgaW52
YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElEX0FDQ0VTU19FUlIiOwordmFyIHN5bnRheEVyciA9ICJT
WU5UQVhfRVJSIjsKK3ZhciBub3JtYWxDbG9zdXJlID0gMTAwMDsKK3ZhciBhYm5vcm1hbENsb3N1
cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsKK3ZhciB0ZXN0SWQ7CisKK3ZhciBjb2RlVGVzdENvZGVz
ID0gWworICAgIDk5OSwgMTAwMSwgMjk5OSwgNTAwMCwgNjU1MzYgKyAxMDAwLCAweDEwMDAwMDAw
MCArIDEwMDAsIDI5OTkuOSwgTmFOLCAiMCIsICIxMDAiLCAxLzAsIC0xLzAsIDAvMCwKKyAgICAx
MDAwLjAKK107CisKK3ZhciByZWFzb25UZXN0UmVhc29ucyA9IFsKKyAgICAiMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCIs
IC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyXHUwMGE5IiwgLy8gbGVuZ3RoIGlzIDEyMywgYnV0
IDEyNCBCeXRlIGluIFVURi04CisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMyIsIC8vIDEyMyBCeXRlCitdOworCit2
YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBbCisgICAgZmFsc2UsCisgICAgZmFsc2UsCisgICAgdHJ1
ZSwKK107CisKK2Z1bmN0aW9uIGhhbmRsZU9wZW4oKQoreworICAgIHRlc3RGYWlsZWQoImhhbmRs
ZU9wZW4oKSB3YXMgY2FsbGVkLiIpOworfQorCitmdW5jdGlvbiBoYW5kbGVFcnJvcigpCit7Cisg
ICAgdGVzdEZhaWxlZCgiaGFuZGxlRXJyb3IoKSB3YXMgY2FsbGVkLiIpOworfQorCitmdW5jdGlv
biBoYW5kbGVDbG9zZSgpCit7CisgICAgdGVzdEZhaWxlZCgiaGFuZGxlQ2xvc2UoKSB3YXMgY2Fs
bGVkLiIpOworfQorCitmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKCkKK3sKKyAgICB0ZXN0RmFpbGVk
KCJoYW5kbGVNZXNzYWdlKCkgd2FzIGNhbGxlZC4iKTsKK30KKworZnVuY3Rpb24gc2V0RGVmYXVs
dEhhbmRsZXJzKHdzKQoreworICAgIHdzLm9ub3BlbiA9IGhhbmRsZU9wZW47CisgICAgd3Mub25l
cnJvciA9IGhhbmRsZUVycm9yOworICAgIHdzLm9uY2xvc2UgPSBoYW5kbGVDbG9zZTsKKyAgICB3
cy5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdlOworfQorCitmdW5jdGlvbiBydW5Db2RlVGVzdCgp
Cit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgc2V0RGVmYXVsdEhhbmRsZXJz
KHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgY29kZVRlc3RDb2Rlcy5sZW5ndGg7IGlk
KyspIHsKKyAgICAgICAgaWYgKGNvZGVUZXN0Q29kZXNbaWRdICE9IG5vcm1hbENsb3N1cmUpIHsK
KyAgICAgICAgICAgIGRlYnVnKCJJbnZhbGlkIGNvZGUgdGVzdDogIiArIGlkKTsKKyAgICAgICAg
ICAgIHdzLm9uY2xvc2UgPSBoYW5kbGVDbG9zZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygicnVuQ29kZVRlc3Q6IG9uY2xvc2UoKS4iKTsKKyAgICAgICAgICAgICAgICBj
bG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2Rl
IiwgImFibm9ybWFsQ2xvc3VyZSIpOworICAgICAgICAgICAgICAgIGlmIChjbG9zZUV2ZW50LmNv
ZGUgPT0gYWJub3JtYWxDbG9zdXJlKQorICAgICAgICAgICAgICAgICAgICBydW5JbnZhbGlkU3Ry
aW5nVGVzdCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAg
ICAgICAgICAgd3MuY2xvc2UoY29kZVRlc3RDb2Rlc1tpZF0pOworICAgICAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgICAgICBkZWJ1ZygiQ29kZSAiICsgY29kZVRlc3RDb2Rlc1tpZF0gKyAiIG11
c3QgY2F1c2UgIiArIGludmFsaWRBY2Nlc3NFcnIgKyAnLicpOworICAgICAgICAgICAgZXhjZXB0
aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblByb3RvID0gT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKGUpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleGNlcHRpb25Qcm90
byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4
Y2VwdGlvbk5hbWUiLCAiaW52YWxpZEFjY2Vzc0VyciIpOworICAgICAgICB9CisgICAgfQorfQor
CitmdW5jdGlvbiBydW5JbnZhbGlkU3RyaW5nVGVzdCgpCit7CisgICAgLy8gRklYTUU6IHVucGFp
cmVkIHN1cnJvZ2F0ZXMgdGhyb3cgU1lOVEFYX0VSUgorICAgIGRlYnVnKCJTa2lwIGludmFsaWQg
c3RyaW5nIHRlc3QuIik7CisgICAgcnVuUmVhc29uVGVzdCgpOworfQorCitmdW5jdGlvbiBydW5S
ZWFzb25UZXN0KCkKK3sKKyAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICBzZXREZWZh
dWx0SGFuZGxlcnMod3MpOworICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCByZWFzb25UZXN0UmVh
c29ucy5sZW5ndGg7IGlkKyspIHsKKyAgICAgICAgZGVidWcoIlJlYXNvbiB0ZXN0OiAiICsgaWQp
OworICAgICAgICBpZiAoIXJlYXNvblRlc3RSZXN1bHRzW2lkXSkgeworICAgICAgICAgICAgZGVi
dWcoIiAgd2l0aCBpbnZhbGlkIHJlYXNvbjogIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSk7Cisg
ICAgICAgICAgICB3cy5vbmNsb3NlID0gaGFuZGxlQ2xvc2U7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZGVidWcoInJ1blJlYXNvblRlc3Q6IG9uY2xvc2UoKS4iKTsKKyAgICAgICAg
ICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VF
dmVudC5jb2RlIiwgImFibm9ybWFsQ2xvc3VyZSIpOworICAgICAgICAgICAgICAgIGlmIChjbG9z
ZUV2ZW50LmNvZGUgPT0gYWJub3JtYWxDbG9zdXJlKQorICAgICAgICAgICAgICAgICAgICBydW5D
b2RlQW5kUmVhc29uVGVzdCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICB0
cnkgeworICAgICAgICAgICAgd3MuY2xvc2Uobm9ybWFsQ2xvc3VyZSwgcmVhc29uVGVzdFJlYXNv
bnNbaWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZGVidWcoIlJlYXNv
biAiICsgcmVhc29uVGVzdFJlYXNvbnNbaWRdICsgIiBtdXN0IGNhdXNlICIgKyBzeW50YXhFcnIg
KyAnLicpOworICAgICAgICAgICAgcmVzdWx0ID0gcmVhc29uVGVzdFJlc3VsdHNbaWRdOworICAg
ICAgICAgICAgZXhjZXB0aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblBy
b3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOworICAgICAgICAgICAgc2hvdWxkQmVGYWxz
ZSgicmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImV4Y2VwdGlvblByb3RvID09
PSBET01FeGNlcHRpb24ucHJvdG90eXBlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiZXhjZXB0
aW9uTmFtZSIsICJzeW50YXhFcnIiKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24g
cnVuQ29kZUFuZFJlYXNvblRlc3QoKQoreworICAgIHZhciBjb2RlcyA9IFsKKyAgICAgICAgMTAw
MCwKKyAgICAgICAgMzAwMCwKKyAgICAgICAgNDAwMCwKKyAgICAgICAgNDk5OQorICAgIF07Cisg
ICAgdmFyIHJlYXNvbnMgPSBbCisgICAgICAgICJPSywgQnllISIsCisgICAgICAgICIzMDAwIiwK
KyAgICAgICAgImNvZGUgaXMgNDAwMCIsCisgICAgICAgICJcdTAwYTkgR29vZ2xlIgorICAgIF07
CisgICAgKGZ1bmN0aW9uIHRlc3QgKGlkKSB7CisgICAgICAgIGRlYnVnKCJDb2RlIGFuZCByZWFz
b24gdGVzdDogIiArIGlkKTsKKyAgICAgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAg
ICAgIHNldERlZmF1bHRIYW5kbGVycyh3cyk7CisgICAgICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9u
ICgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVzW2lkXSwgcmVhc29uc1tp
ZF0pOworICAgICAgICB9OworICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgY29kZSA9IGNv
ZGVzW2lkXTsKKyAgICAgICAgICAgIHJlYXNvbiA9IHJlYXNvbnNbaWRdOworICAgICAgICAgICAg
ZGVidWcoIkNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlIik7CisgICAgICAgICAgICBkZWJ1ZygiICBj
b2RlICA6ICIgKyBjb2RlKTsKKyAgICAgICAgICAgIGRlYnVnKCIgIHJlYXNvbjogIiArIHJlYXNv
bik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LmNvZGUiLCAiY29kZSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImNsb3NlRXZlbnQucmVhc29uIiwgInJlYXNvbiIpOworICAgICAgICAgICAg
aWYgKCsraWQgIT0gY29kZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHRlc3QoaWQpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
OworICAgIH0pKDApOworfQorCitydW5Db2RlVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Ns
b3NlX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xvc2Vfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiMDJkNjYyNjdlMjk0Y2U4Mzk3N2RhYzY0ZjA3NTk4
MTcwNTY0N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2Nsb3NlX3dzaC5weQpAQCAtMCwwICsxLDUzIEBACisjIENvcHlyaWdo
dCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScK
KworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFz
cyAgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVx
dWVzdCk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFt
LnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIHVuaWNvZGUpOgorICAgICAgICAg
ICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKKyAg
ICAgICAgICAgIGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRf
bWVzc2FnZShsaW5lLCBiaW5hcnk9VHJ1ZSkKKworCitkZWYgd2ViX3NvY2tldF9wYXNzaXZlX2Ns
b3NpbmdfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHJldHVybiByZXF1ZXN0LndzX2Nsb3NlX2Nv
ZGUsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3Nl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzQ3NWIxNzBhMTU4YTRiOWI1Nzk5Mjg4YjExNDky
NzVhZjRhOTgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDk0
IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUg
dGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDog
V2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQu
CitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlvcnMgaW4gV29ya2VyLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK0ludmFsaWQgY29kZSB0ZXN0OiAwCitDb2RlIDk5OSBtdXN0
IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25O
YW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxCitDb2RlIDEwMDEg
bXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0
aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMgorQ29kZSAy
OTk5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4
Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDMKK0Nv
ZGUgNTAwMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgUEFTUzogd29ya2Vy
OiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiA0
CitDb2RlIDY2NTM2IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBQQVNTOiB3
b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRl
c3Q6IDUKK0NvZGUgNDI5NDk2ODI5NiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BB
U1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFs
aWQgY29kZSB0ZXN0OiA2CitDb2RlIDI5OTkuOSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VS
Ui4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIK
K0ludmFsaWQgY29kZSB0ZXN0OiA3CitDb2RlIE5hTiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNT
X0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NF
cnIKK0ludmFsaWQgY29kZSB0ZXN0OiA4CitDb2RlIDAgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VT
U19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNz
RXJyCitJbnZhbGlkIGNvZGUgdGVzdDogOQorQ29kZSAxMDAgbXVzdCBjYXVzZSBJTlZBTElEX0FD
Q0VTU19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNj
ZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMTAKK0NvZGUgSW5maW5pdHkgbXVzdCBjYXVzZSBJ
TlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBp
bnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMTEKK0NvZGUgLUluZmluaXR5IG11
c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlv
bk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDEyCitDb2RlIE5h
TiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNl
cHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK3J1bkNvZGVUZXN0OiBvbmNsb3NlKCkuCitQ
QVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlzIGFibm9ybWFsQ2xvc3VyZQorU2tp
cCBpbnZhbGlkIHN0cmluZyB0ZXN0LgorUmVhc29uIHRlc3Q6IDAKKyAgd2l0aCBpbnZhbGlkIHJl
YXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNAorUmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQgbXVzdCBjYXVzZSBTWU5UQVhfRVJS
LgorUEFTUyBQQVNTOiB3b3JrZXI6IHJlc3VsdCBpcyBmYWxzZQorUEFTUyBQQVNTOiB3b3JrZXI6
IGV4Y2VwdGlvbk5hbWUgaXMgc3ludGF4RXJyCitSZWFzb24gdGVzdDogMQorICB3aXRoIGludmFs
aWQgcmVhc29uOiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMsKpCitSZWFzb24gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTLCqSBtdXN0IGNhdXNlIFNZTlRB
WF9FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogcmVzdWx0IGlzIGZhbHNlCitQQVNTIFBBU1M6IHdv
cmtlcjogZXhjZXB0aW9uTmFtZSBpcyBzeW50YXhFcnIKK1JlYXNvbiB0ZXN0OiAyCitydW5SZWFz
b25UZXN0OiBvbmNsb3NlKCkuCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlz
IGFibm9ybWFsQ2xvc3VyZQorQ29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK0NvZGUgYW5kIHJlYXNv
biBtdXN0IGJlCisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9LLCBCeWUhCitQQVNTIFBBU1M6
IHdvcmtlcjogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIFBBU1M6IHdvcmtlcjog
Y2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LnJl
YXNvbiBpcyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAxCitDb2RlIGFuZCByZWFzb24g
bXVzdCBiZQorICBjb2RlICA6IDMwMDAKKyAgcmVhc29uOiAzMDAwCitQQVNTIFBBU1M6IHdvcmtl
cjogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VF
dmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBp
cyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAyCitDb2RlIGFuZCByZWFzb24gbXVzdCBi
ZQorICBjb2RlICA6IDQwMDAKKyAgcmVhc29uOiBjb2RlIGlzIDQwMDAKK1BBU1MgUEFTUzogd29y
a2VyOiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9z
ZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQucmVhc29u
IGlzIHJlYXNvbgorQ29kZSBhbmQgcmVhc29uIHRlc3Q6IDMKK0NvZGUgYW5kIHJlYXNvbiBtdXN0
IGJlCisgIGNvZGUgIDogNDk5OQorICByZWFzb246IMKpIEdvb2dsZQorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3Nl
RXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5yZWFzb24g
aXMgcmVhc29uCitET05FCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGM2NjIw
ZTg3NDBjNjY5YjFiMjEyZGI0ZGQxYjkxMjQzZmVmMjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0
bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgV2ViU29j
a2V0OjpjbG9zZSBiZWhhdmlvcnMgaW4gV29ya2VyLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDApOworCitmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgcHJlZml4KQor
eworICAgIHJldHVybiBzdHIuaW5kZXhPZihwcmVmaXgpID09IDA7Cit9CisKK3ZhciB3b3JrZXIg
PSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvY2xvc2UuanMiKTsKK3dvcmtlci5vbm1lc3NhZ2UgPSBm
dW5jdGlvbiAoZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGlm
IChzdGFydHNXaXRoKG1lc3NhZ2UsICJQQVNTIikpCisgICAgICAgIHRlc3RQYXNzZWQobWVzc2Fn
ZSk7CisgICAgZWxzZSBpZiAoc3RhcnRzV2l0aChtZXNzYWdlLCAiRkFJTCIpKQorICAgICAgICB0
ZXN0RmFpbGVkKG1lc3NhZ2UpCisgICAgZWxzZQorICAgICAgICBkZWJ1ZyhtZXNzYWdlKTsKKyAg
ICBpZiAobWVzc2FnZSA9PT0gIkRPTkUiKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Ns
b3NlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdmZDA2ZWYwNTRjYTUyMWYxODQ5MjI5M2U3M2E4Y2E2MmRkMDVm
ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLmpzCkBAIC0wLDAgKzEsMjA1IEBACitm
dW5jdGlvbiBwb3N0UmVzdWx0KHJlc3VsdCwgYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICB2YXIg
bWVzc2FnZSA9IHJlc3VsdCA/ICJQQVNTIiA6ICJGQUlMIjsKKyAgICBtZXNzYWdlICs9ICI6IHdv
cmtlcjogIiArIGFjdHVhbCArICIgaXMgIjsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgbWVz
c2FnZSArPSAibm90ICI7CisgICAgbWVzc2FnZSArPSBleHBlY3RlZDsKKyAgICBwb3N0TWVzc2Fn
ZShtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gdGVzdEZhaWxlZChtZXNzYWdlKQoreworICAgIHBv
c3RNZXNzYWdlKCJGQUlMOiAiICsgbWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIGRlYnVnKG1lc3Nh
Z2UpCit7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgdmFyIF9yZXN1bHQgPSBldmFsKGFjdHVhbCArICIg
PT0gIiArIGV4cGVjdGVkKTsKKyAgICBwb3N0UmVzdWx0KF9yZXN1bHQsIGFjdHVhbCwgZXhwZWN0
ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZVRydWUoYWN0dWFsKQoreworICAgIHNob3VsZEJl
KGFjdHVhbCwgInRydWUiKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVGYWxzZShhY3R1YWwpCit7
CisgICAgc2hvdWxkQmUoYWN0dWFsLCAiZmFsc2UiKTsKK30KKwordmFyIGV4Y2VwdGlvbk5hbWU7
Cit2YXIgZXhjZXB0aW9uUHJvdG87Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBjb2RlOwordmFyIHJl
YXNvbjsKK3ZhciByZXN1bHQ7Cit2YXIgaW52YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElEX0FDQ0VT
U19FUlIiOwordmFyIHN5bnRheEVyciA9ICJTWU5UQVhfRVJSIjsKK3ZhciBub3JtYWxDbG9zdXJl
ID0gMTAwMDsKK3ZhciBhYm5vcm1hbENsb3N1cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3czovLzEy
Ny4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsKK3ZhciB0
ZXN0SWQ7CisKK3ZhciBjb2RlVGVzdENvZGVzID0gWworICAgIDk5OSwgMTAwMSwgMjk5OSwgNTAw
MCwgNjU1MzYgKyAxMDAwLCAweDEwMDAwMDAwMCArIDEwMDAsIDI5OTkuOSwgTmFOLCAiMCIsICIx
MDAiLCAxLzAsIC0xLzAsIDAvMCwKKyAgICAxMDAwLjAKK107CisKK3ZhciByZWFzb25UZXN0UmVh
c29ucyA9IFsKKyAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCIsIC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyXHUw
MGE5IiwgLy8gbGVuZ3RoIGlzIDEyMywgYnV0IDEyNCBCeXRlIGluIFVURi04CisgICAgIjEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMyIsIC8vIDEyMyBCeXRlCitdOworCit2YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBbCisgICAg
ZmFsc2UsCisgICAgZmFsc2UsCisgICAgdHJ1ZSwKK107CisKK2Z1bmN0aW9uIGhhbmRsZU9wZW4o
KQoreworICAgIHRlc3RGYWlsZWQoImhhbmRsZU9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKwor
ZnVuY3Rpb24gaGFuZGxlRXJyb3IoKQoreworICAgIHRlc3RGYWlsZWQoImhhbmRsZUVycm9yKCkg
d2FzIGNhbGxlZC4iKTsKK307CisKK2Z1bmN0aW9uIGhhbmRsZUNsb3NlKCkKK3sKKyAgICB0ZXN0
RmFpbGVkKCJoYW5kbGVDbG9zZSgpIHdhcyBjYWxsZWQuIik7Cit9OworCitmdW5jdGlvbiBoYW5k
bGVNZXNzYWdlKCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJoYW5kbGVNZXNzYWdlKCkgd2FzIGNhbGxl
ZC4iKTsKK307CisKK2Z1bmN0aW9uIHNldERlZmF1bHRIYW5kbGVycyh3cykKK3sKKyAgICB3cy5v
bm9wZW4gPSBoYW5kbGVPcGVuOworICAgIHdzLm9uZXJyb3IgPSBoYW5kbGVFcnJvcjsKKyAgICB3
cy5vbmNsb3NlID0gaGFuZGxlQ2xvc2U7CisgICAgd3Mub25tZXNzYWdlID0gaGFuZGxlTWVzc2Fn
ZTsKK30KKworZnVuY3Rpb24gcnVuQ29kZVRlc3QoKQoreworICAgIHdzID0gbmV3IFdlYlNvY2tl
dCh1cmwpOworICAgIHNldERlZmF1bHRIYW5kbGVycyh3cyk7CisgICAgZm9yICh2YXIgaWQgPSAw
OyBpZCA8IGNvZGVUZXN0Q29kZXMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGlmIChjb2RlVGVz
dENvZGVzW2lkXSAhPSBub3JtYWxDbG9zdXJlKSB7CisgICAgICAgICAgICBkZWJ1ZygiSW52YWxp
ZCBjb2RlIHRlc3Q6ICIgKyBpZCk7CisgICAgICAgICAgICB3cy5vbmNsb3NlID0gaGFuZGxlQ2xv
c2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24g
KGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVidWcoInJ1bkNvZGVUZXN0OiBv
bmNsb3NlKCkuIik7CisgICAgICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5vcm1hbENsb3N1cmUiKTsKKyAg
ICAgICAgICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2RlID09IGFibm9ybWFsQ2xvc3VyZSkKKyAg
ICAgICAgICAgICAgICAgICAgcnVuSW52YWxpZFN0cmluZ1Rlc3QoKTsKKyAgICAgICAgICAgIH07
CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVUZXN0
Q29kZXNbaWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZGVidWcoIkNv
ZGUgIiArIGNvZGVUZXN0Q29kZXNbaWRdICsgIiBtdXN0IGNhdXNlICIgKyBpbnZhbGlkQWNjZXNz
RXJyICsgJy4nKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAgICAg
ICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJleGNlcHRpb25OYW1lIiwgImludmFsaWRBY2Nlc3NFcnIiKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuSW52YWxpZFN0cmluZ1Rlc3QoKQoreworICAg
IC8vIEZJWE1FOiB1bnBhaXJlZCBzdXJyb2dhdGVzIHRocm93IFNZTlRBWF9FUlIKKyAgICBkZWJ1
ZygiU2tpcCBpbnZhbGlkIHN0cmluZyB0ZXN0LiIpOworICAgIHJ1blJlYXNvblRlc3QoKTsKK30K
KworZnVuY3Rpb24gcnVuUmVhc29uVGVzdCgpCit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVy
bCk7CisgICAgc2V0RGVmYXVsdEhhbmRsZXJzKHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlk
IDwgcmVhc29uVGVzdFJlYXNvbnMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGRlYnVnKCJSZWFz
b24gdGVzdDogIiArIGlkKTsKKyAgICAgICAgaWYgKCFyZWFzb25UZXN0UmVzdWx0c1tpZF0pIHsK
KyAgICAgICAgICAgIGRlYnVnKCIgIHdpdGggaW52YWxpZCByZWFzb246ICIgKyByZWFzb25UZXN0
UmVhc29uc1tpZF0pOworICAgICAgICAgICAgd3Mub25jbG9zZSA9IGhhbmRsZUNsb3NlOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCJydW5SZWFzb25UZXN0OiBvbmNsb3Nl
KCkuIik7CisgICAgICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5vcm1hbENsb3N1cmUiKTsKKyAgICAgICAg
ICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2RlID09IGFibm9ybWFsQ2xvc3VyZSkKKyAgICAgICAg
ICAgICAgICAgICAgcnVuQ29kZUFuZFJlYXNvblRlc3QoKTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKG5vcm1hbENsb3N1cmUs
IHJlYXNvblRlc3RSZWFzb25zW2lkXSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJSZWFzb24gIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSArICIgbXVzdCBjYXVz
ZSAiICsgc3ludGF4RXJyICsgJy4nKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlYXNvblRlc3RS
ZXN1bHRzW2lkXTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAgICAg
ICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlRmFsc2UoInJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4Y2Vw
dGlvbk5hbWUiLCAic3ludGF4RXJyIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHJ1bkNvZGVBbmRSZWFzb25UZXN0KCkKK3sKKyAgICB2YXIgY29kZXMgPSBbCisgICAgICAgIDEw
MDAsCisgICAgICAgIDMwMDAsCisgICAgICAgIDQwMDAsCisgICAgICAgIDQ5OTkKKyAgICBdOwor
ICAgIHZhciByZWFzb25zID0gWworICAgICAgICAiT0ssIEJ5ZSEiLAorICAgICAgICAiMzAwMCIs
CisgICAgICAgICJjb2RlIGlzIDQwMDAiLAorICAgICAgICAiXHUwMGE5IEdvb2dsZSIKKyAgICBd
OworICAgIChmdW5jdGlvbiB0ZXN0IChpZCkgeworICAgICAgICBkZWJ1ZygiQ29kZSBhbmQgcmVh
c29uIHRlc3Q6ICIgKyBpZCk7CisgICAgICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAg
ICAgICBzZXREZWZhdWx0SGFuZGxlcnMod3MpOworICAgICAgICB3cy5vbm9wZW4gPSBmdW5jdGlv
biAoKQorICAgICAgICB7CisgICAgICAgICAgICB3cy5jbG9zZShjb2Rlc1tpZF0sIHJlYXNvbnNb
aWRdKTsKKyAgICAgICAgfTsKKyAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAg
ICAgICB7CisgICAgICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgIGNvZGUgPSBj
b2Rlc1tpZF07CisgICAgICAgICAgICByZWFzb24gPSByZWFzb25zW2lkXTsKKyAgICAgICAgICAg
IGRlYnVnKCJDb2RlIGFuZCByZWFzb24gbXVzdCBiZSIpOworICAgICAgICAgICAgZGVidWcoIiAg
Y29kZSAgOiAiICsgY29kZSk7CisgICAgICAgICAgICBkZWJ1ZygiICByZWFzb246ICIgKyByZWFz
b24pOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImNvZGUiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LnJlYXNvbiIsICJyZWFzb24iKTsKKyAgICAgICAgICAg
IGlmICgrK2lkICE9IGNvZGVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICB0ZXN0KGlkKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZSgiRE9ORSIpOworICAg
ICAgICB9OworICAgIH0pKDApOworfQorCitydW5Db2RlVGVzdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUw
YWJlM2ExYTRhZjM1YmM3ZTY0Nzc2MDU2ODQwNmIyYmZkZDcwMjIuLmYyOTkzMzU3MTMwNmI4OTE0
NzhkYTRmZjkzZTU2YzQ4YjVjMTQyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAx
MS0wOC0zMSAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW1dlYlNvY2tldF0gSW1wbGVtZW50IFdlYlNvY2tldDo6Y2xvc2UoKSBjb2RlIGFuZCBy
ZWFzb24gaGFuZGxpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjkyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9j
bG9zZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1dlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFdlYlNvY2tldDo6Y2xvc2VDYWxsYmFjayk6CisgICAgICAgIEFkZCBjdXN0b20gYnJpZGdlIGZv
ciBXZWJTb2NrZXQ6OmNsb3NlKCkuCisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAqIHdlYnNvY2tldHMv
V2ViU29ja2V0Lmg6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsOjpjbG9zZSk6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJn
dW1lbnRzIGhhbmRsaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3Rh
cnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgU2VuZCBhIGNsb3NlIGZyYW1lIHdpdGhvdXQg
Y29kZSBhbmQgcmVhc29uIG9uIHNlcnZlciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2VzLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZUhpeGllNzYpOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNsb3NlKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRo
cmVhZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpCcmlkZ2U6OmNsb3NlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJn
dW1lbnRzIGhhbmRsaW5nLgorCiAyMDExLTA4LTMxICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYlNvY2tldDogTG9hZCBCbG9iIGluIFdlYlNvY2tldENo
YW5uZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9t
LmNwcAppbmRleCBhZjVkYWNhNTU1ZTA4OWVjMTIyNThjNjE3MjJjNjA3Y2RmMzAxNmNhLi4wMTFh
MGYyNjlkZjg5ZTI4ZGI1N2MxMjk0YWNjYTUxYjRhNTEzOTkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzUsMTAgKzM1LDEzIEBACiAKICNpbmNsdWRl
ICJKU1dlYlNvY2tldC5oIgogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJTb2Nr
ZXQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8cnVudGltZS9F
cnJvci5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtODUsNiArODgsMzYgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dl
YlNvY2tldChFeGVjU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JB
UFBFUihleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgV2ViU29ja2V0LCB3ZWJT
b2NrZXQuZ2V0KCkpKTsKIH0KIAorSlNWYWx1ZSBKU1dlYlNvY2tldDo6Y2xvc2UoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gc3RhdGljX2Nhc3Q8V2ViU29j
a2V0Kj4oaW1wbCgpKTsKKyAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50
Q291bnQoKTsKKyAgICBpbnQgY29kZSA9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2Rl
Tm90U3BlY2lmaWVkOworICAgIFN0cmluZyByZWFzb24gPSAiIjsKKyAgICBpZiAoYXJndW1lbnRD
b3VudCA+PSAxKSB7CisgICAgICAgIEpTVmFsdWUgdiA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAg
ICAgICBkb3VibGUgeCA9IHYudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIGRvdWJsZSBtYXhWYWx1
ZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1h
eCgpKTsKKyAgICAgICAgZG91YmxlIG1pblZhbHVlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWluKCkpOworICAgICAgICBpZiAoaXNuYW4oeCkp
CisgICAgICAgICAgICB4ID0gMC4wOworICAgICAgICBlbHNlCisgICAgICAgICAgICB4ID0gY2xh
bXBUbyh4LCBtaW5WYWx1ZSwgbWF4VmFsdWUpOworICAgICAgICBjb2RlID0gY2xhbXBUb0ludGVn
ZXIoeCk7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50ID49IDIpIHsKKyAgICAgICAgICAgIHJl
YXNvbiA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKSk7
CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgU1lOVEFYX0VSUik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2ViU29ja2V0LT5jbG9zZShjb2RlLCByZWFzb24s
IGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5j
cHAKaW5kZXggNThhMjdlN2ZhMTNkYjlmYTJkZGMzZDJmZWQzZjdlODk3ZmM5NzVkNS4uZDE0M2Jl
MjExZTliMGVjODJhNGFjMjAxOGQ2MjQyOWYwMzBkZGYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM0
LDE0ICszNCwxNyBAQAogCiAjaW5jbHVkZSAiVjhXZWJTb2NrZXQuaCIKIAorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUg
IlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCisjaW5jbHVkZSAiV2ViU29j
a2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA4LDYg
KzExMSwzNiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIHJldHVybiBhcmdzLkhvbGRl
cigpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNsb3NlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBXZWJTb2NrZXQqIHdlYlNvY2tl
dCA9IHRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIGludCBhcmd1bWVudENvdW50ID0gYXJn
cy5MZW5ndGgoKTsKKyAgICBpbnQgY29kZSA9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRD
b2RlTm90U3BlY2lmaWVkOworICAgIFN0cmluZyByZWFzb24gPSAiIjsKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA+PSAxKSB7CisgICAgICAgIGRvdWJsZSB4ID0gYXJnc1swXS0+TnVtYmVyVmFsdWUo
KTsKKyAgICAgICAgZG91YmxlIG1heFZhbHVlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOworICAgICAgICBkb3VibGUgbWluVmFsdWUg
PSBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptaW4o
KSk7CisgICAgICAgIGlmIChpc25hbih4KSkKKyAgICAgICAgICAgIHggPSAwLjA7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHggPSBjbGFtcFRvKHgsIG1pblZhbHVlLCBtYXhWYWx1ZSk7Cisg
ICAgICAgIGNvZGUgPSBjbGFtcFRvSW50ZWdlcih4KTsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291
bnQgPj0gMikgeworICAgICAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiByZWFzb25WYWx1ZSA9IGFyZ3NbMV0tPlRvU3RyaW5n
KCk7CisgICAgICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2guRXhjZXB0aW9uKCkpOworICAgICAgICAgICAg
cmVhc29uID0gdG9XZWJDb3JlU3RyaW5nKHJlYXNvblZhbHVlKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB3ZWJTb2NrZXQtPmNsb3NlKGNvZGUsIHJl
YXNvbiwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwor
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGNkOWNl
MjUyYTRjZDViZDY3YTczOWNmYzUzMzI3MDhlMGVkNDhjZmUuLjA5ZjgxYjUwN2ExMDAxZDZlN2Vh
NTkxNzIxMTZlYTllOWZmN2JkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgPSAwOyAvLyBXaWxsIGJlIGF2
YWlsYWJsZSBhZnRlciBkaWRDb25uZWN0KCkgY2FsbGJhY2sgaXMgaW52b2tlZC4KICAgICB2aXJ0
dWFsIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGNsb3NlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb24pID0gMDsKICAgICAvLyBMb2cgdGhlIHJlYXNvbiB0ZXh0IGFuZCBjbG9zZSB0
aGUgY29ubmVjdGlvbi4gV2lsbCBjYWxsIGRpZENsb3NlKCkuCiAgICAgdmlydHVhbCB2b2lkIGZh
aWwoY29uc3QgU3RyaW5nJiByZWFzb24pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVj
dCgpID0gMDsgLy8gV2lsbCBzdXBwcmVzcyBkaWRDbG9zZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGRjOWFiYmFmNGM0NmFlZDY5ODJhNjc2ZDM5NWQ4MzY4
ODVmMzFiZjUuLjI0YjE2ZjQ3ZjA0MzcwZGU4OWM3ZTY3OTExMzFiOTQ2ZTg0ZjNjZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNjAsNiArNjAsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NvbnN0IHNpemVfdCBtYXhSZWFzb25TaXplSW5CeXRlcyA9
IDEyMzsKKwogc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRQcm90b2NvbENoYXJhY3RlcihVQ2hh
ciBjaGFyYWN0ZXIpCiB7CiAgICAgLy8gSHliaS0xMCBzYXlzICIoU3VicHJvdG9jb2wgc3RyaW5n
IG11c3QgY29uc2lzdCBvZikgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgVSswMDIxIHRvIFUrMDA3
RSBub3QgaW5jbHVkaW5nCkBAIC0yNjIsOSArMjY0LDIzIEBAIGJvb2wgV2ViU29ja2V0OjpzZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIG1f
Y2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmNsb3NlKCkKK3Zv
aWQgV2ViU29ja2V0OjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIiwg
dGhpcyk7CisgICAgaWYgKGNvZGUgPT0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVO
b3RTcGVjaWZpZWQpCisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIHdp
dGhvdXQgY29kZSBhbmQgcmVhc29uIiwgdGhpcyk7CisgICAgZWxzZSB7CisgICAgICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIHdpdGggY29kZSA9ICVkLCByZWFzb24gPSAlcyIs
IHRoaXMsIGNvZGUsIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKCEoY29kZSA9
PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5vcm1hbENsb3N1cmUgfHwgKFdlYlNv
Y2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlTWluaW11bVVzZXJEZWZpbmVkIDw9IGNvZGUgJiYg
Y29kZSA8PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU1heGltdW1Vc2VyRGVmaW5l
ZCkpKSB7CisgICAgICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogaWYgcmVhc29uIGNvbnRhaW5z
IGFueSB1bnBhaXJlZCBzdXJyb2dhdGVzLCByYWlzZSBTWU5UQVhfRVJSLgorICAgICAgICBpZiAo
cmVhc29uLnV0ZjgoKS5sZW5ndGgoKSA+IG1heFJlYXNvblNpemVJbkJ5dGVzKSB7CisgICAgICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TSU5HIHx8IG1fc3RhdGUgPT0gQ0xPU0VEKQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKG1fc3RhdGUgPT0gQ09OTkVDVElORykgewpAQCAtMjc3
LDcgKzI5Myw3IEBAIHZvaWQgV2ViU29ja2V0OjpjbG9zZSgpCiAgICAgLy8gZGlkQ2xvc2Ugbm90
aWZpY2F0aW9uIG1heSBiZSBhbHJlYWR5IHF1ZXVlZCwgd2hpY2ggd2Ugd2lsbCBpbmFkdmVydGVu
dGx5IHByb2Nlc3Mgd2hpbGUgd2FpdGluZyBmb3IgYnVmZmVyZWRBbW91bnQoKSB0byByZXR1cm4u
CiAgICAgLy8gSW4gdGhpcyBjYXNlIG1fY2hhbm5lbCB3aWxsIGJlIHNldCB0byBudWxsIGR1cmlu
ZyBkaWRDbG9zZSgpIGNhbGwsIHRodXMgd2UgbmVlZCB0byB0ZXN0IHZhbGlkbmVzcyBvZiBtX2No
YW5uZWwgaGVyZS4KICAgICBpZiAobV9jaGFubmVsKQotICAgICAgICBtX2NoYW5uZWwtPmNsb3Nl
KCk7CisgICAgICAgIG1fY2hhbm5lbC0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAogY29uc3Qg
S1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKaW5kZXggNTZlMjAwNmMwMTM3MThmZTE0ODhkNzIzYzUxZTA5OGE0MjNhMWZiZi4uMWRk
NTZhMmY0NDg3OThhZjg3YjdjODE5YzI1MTViMzE4NzY4ZTJjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBz
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBj
bG9zZSgpOworICAgIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBF
eGNlcHRpb25Db2RlJik7CiAKICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKICAgICBTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5p
ZGwKaW5kZXggODFkNzU2M2YwN2M5MTQyNzQ1ZjdmMjliMWNlMzI1NWY1NmE2ZWNlMi4uY2FkM2E2
YmZhMWU2MjQ5MTQ2MThmMDNkYWY0ZDQ0ZDE1N2ExM2ZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmlkbApAQCAtNjQsNyArNjQsNyBAQCBtb2R1bGUgd2Vic29ja2V0cyB7
CiAgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgW1Jl
cXVpcmVzQWxsQXJndW1lbnRzXSBib29sZWFuIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEpIHJhaXNl
cyhET01FeGNlcHRpb24pOwotICAgICAgICB2b2lkIGNsb3NlKCk7CisgICAgICAgIFtDdXN0b21d
IHZvaWQgY2xvc2UoaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBpbiBbT3B0aW9u
YWxdIERPTVN0cmluZyByZWFzb24pIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIC8v
IEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4g
RE9NU3RyaW5nIHR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAppbmRleCA2NjcyZmRkNGNiYzMzYWYzNDJkZDE3YThjOGM2MWNkY2I5ZDg1MGQz
Li4yMDA3ZTZkYjgzODVmYTZmMzY2ZGFiYjI0ZjIxNzc1ZGEzNGRlOGVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE3OCwxMyArMTc4
LDEzIEBAIHVuc2lnbmVkIGxvbmcgV2ViU29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRBbW91bnQoKSBj
b25zdAogICAgIHJldHVybiBtX2hhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsKIH0KIAotdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpjbG9zZSgpCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKGlu
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNv
Y2tldENoYW5uZWwgJXAgY2xvc2UiLCB0aGlzKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsK
ICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm47Ci0gICAgc3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKCk7CisgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKGNvZGUsIHJlYXNvbik7CiAgICAg
aWYgKG1fY2xvc2luZyAmJiAhbV9jbG9zaW5nVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9j
bG9zaW5nVGltZXIuc3RhcnRPbmVTaG90KDIgKiBUQ1BNYXhpbXVtU2VnbWVudExpZmV0aW1lKTsK
IH0KQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVy
RmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKQogICAgICAgICBkaWRDbG9zZVNv
Y2tldFN0cmVhbShtX2hhbmRsZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
c3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9z
aW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2luZyAlZCAlZCIsIHRoaXMsIG1fY2xv
c2luZywgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UpOwogICAgIGlmIChtX2Nsb3NpbmcpCkBA
IC00ODIsOSArNDgyLDE3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKCkKICAgICAgICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgZW5xdWV1ZVJhd0ZyYW1l
KE9wQ29kZUNsb3NlLCAiIiwgMCk7IC8vIEZJWE1FOiBTZW5kIHN0YXR1cyBjb2RlIGFuZCByZWFz
b24gbWVzc2FnZS4KLQorICAgIH0gZWxzZSB7CisgICAgICAgIFZlY3RvcjxjaGFyPiBidWY7Cisg
ICAgICAgIGlmICghbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UgJiYgY29kZSAhPSBDbG9zZUV2
ZW50Q29kZU5vdFNwZWNpZmllZCkgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBoaWdoQnl0
ZSA9IGNvZGUgPj4gODsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbG93Qnl0ZSA9IGNvZGU7
CisgICAgICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KGhpZ2hCeXRlKSk7Cisg
ICAgICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KGxvd0J5dGUpKTsKKyAgICAg
ICAgICAgIGJ1Zi5hcHBlbmQocmVhc29uLnV0ZjgoKS5kYXRhKCksIHJlYXNvbi51dGY4KCkubGVu
Z3RoKCkpOworICAgICAgICB9CisgICAgICAgIGVucXVldWVSYXdGcmFtZShPcENvZGVDbG9zZSwg
YnVmLmRhdGEoKSwgYnVmLnNpemUoKSk7CisgICAgfQogICAgIG1fY2xvc2luZyA9IHRydWU7CiAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNo
YWtlKCk7CkBAIC02OTAsNyArNjk4LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNz
RnJhbWUoKQogICAgICAgICAgICAgbV9jbG9zZUV2ZW50UmVhc29uID0gIiI7CiAgICAgICAgIHNr
aXBCdWZmZXIoZnJhbWUuZnJhbWVFbmQgLSBtX2J1ZmZlcik7CiAgICAgICAgIG1fcmVjZWl2ZWRD
bG9zaW5nSGFuZHNoYWtlID0gdHJ1ZTsKLSAgICAgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7
CisgICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShtX2Nsb3NlRXZlbnRDb2RlLCBtX2Nsb3Nl
RXZlbnRSZWFzb24pOwogICAgICAgICBpZiAobV9jbG9zaW5nKSB7CiAgICAgICAgICAgICBtX291
dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9IE91dGdvaW5nRnJhbWVRdWV1ZUNsb3Npbmc7CiAgICAg
ICAgICAgICBwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCk7CkBAIC03NzEsNyArNzc5LDcgQEAg
Ym9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWVIaXhpZTc2KCkKICAgICAgICAgICAg
IHNraXBCdWZmZXIobmV4dEZyYW1lIC0gbV9idWZmZXIpOwogICAgICAgICAgICAgaWYgKGZyYW1l
Qnl0ZSA9PSAweGZmICYmICFsZW5ndGgpIHsKICAgICAgICAgICAgICAgICBtX3JlY2VpdmVkQ2xv
c2luZ0hhbmRzaGFrZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc3RhcnRDbG9zaW5nSGFuZHNo
YWtlKCk7CisgICAgICAgICAgICAgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKENsb3NlRXZlbnRD
b2RlTm90U3BlY2lmaWVkLCAiIik7CiAgICAgICAgICAgICAgICAgaWYgKG1fY2xvc2luZykKICAg
ICAgICAgICAgICAgICAgICAgbV9oYW5kbGUtPmNsb3NlKCk7IC8vIGNsb3NlIGFmdGVyIHNlbmRp
bmcgRkYgMDAuCiAgICAgICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggNDAwNDk5MTA2ZDc5ZjlhODQ1M2IxOTdjNTA1YmZm
YzMzMTdkZTg4My4uOTcwMzE2MjNjYzI2NmU2ZGFhZGU3MjUxYmRlMTE1NzYxMjNiNjU0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY3LDcg
KzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCk7CiAgICAg
dmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xv
c2UoKTsgLy8gU3RhcnQgY2xvc2luZyBoYW5kc2hha2UuCisgICAgdmlydHVhbCB2b2lkIGNsb3Nl
KGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7IC8vIFN0YXJ0IGNsb3NpbmcgaGFuZHNo
YWtlLgogICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpOwogCkBAIC04Myw2ICs4Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU29ja2V0U3Ry
ZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAogICAgIGVudW0g
Q2xvc2VFdmVudENvZGUgeworICAgICAgICBDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCA9IC0x
LAogICAgICAgICBDbG9zZUV2ZW50Q29kZU5vcm1hbENsb3N1cmUgPSAxMDAwLAogICAgICAgICBD
bG9zZUV2ZW50Q29kZUdvaW5nQXdheSA9IDEwMDEsCiAgICAgICAgIENsb3NlRXZlbnRDb2RlUHJv
dG9jb2xFcnJvciA9IDEwMDIsCkBAIC05MCw3ICs5MSw5IEBAIHB1YmxpYzoKICAgICAgICAgQ2xv
c2VFdmVudENvZGVGcmFtZVRvb0xhcmdlID0gMTAwNCwKICAgICAgICAgQ2xvc2VFdmVudENvZGVO
b1N0YXR1c1JjdmQgPSAxMDA1LAogICAgICAgICBDbG9zZUV2ZW50Q29kZUFibm9ybWFsQ2xvc3Vy
ZSA9IDEwMDYsCi0gICAgICAgIENsb3NlRXZlbnRDb2RlSW52YWxpZFVURjggPSAxMDA3CisgICAg
ICAgIENsb3NlRXZlbnRDb2RlSW52YWxpZFVURjggPSAxMDA3LAorICAgICAgICBDbG9zZUV2ZW50
Q29kZU1pbmltdW1Vc2VyRGVmaW5lZCA9IDMwMDAsCisgICAgICAgIENsb3NlRXZlbnRDb2RlTWF4
aW11bVVzZXJEZWZpbmVkID0gNDk5OQogICAgIH07CiAKICNpZiBFTkFCTEUoQkxPQikKQEAgLTEx
NSw3ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVuKTsK
ICAgICBib29sIHByb2Nlc3NCdWZmZXIoKTsKICAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQoVGlt
ZXI8V2ViU29ja2V0Q2hhbm5lbD4qKTsKLSAgICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgp
OworICAgIHZvaWQgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbik7CiAgICAgdm9pZCBjbG9zaW5nVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFu
bmVsPiopOwogCiAgICAgLy8gSHliaS0xMCBvcGNvZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcAppbmRleCA1NmY5N2FhZDAwZjdhNjQxOTZjOGZiY2Y4NWQxYmU1M2I0OGE3NGY3Li40NDk4
OGY2NTYyYjEyNDIxYTBmNDAwNzA0ZWJjMDc2MGViYjAyNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtOTQsMTAgKzk0LDEwIEBAIHVuc2lnbmVkIGxvbmcgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKICAgICByZXR1cm4g
bV9icmlkZ2UtPmJ1ZmZlcmVkQW1vdW50KCk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OmNsb3NlKCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBpZiAo
bV9icmlkZ2UpCi0gICAgICAgIG1fYnJpZGdlLT5jbG9zZSgpOworICAgICAgICBtX2JyaWRnZS0+
Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKQEAgLTE4NywxMiArMTg3LDEyIEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmJ1ZmZlcmVkQW1v
dW50KCkKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChj
cmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRHZXRCdWZmZXJlZEFtb3VudCwgbV93
b3JrZXJDbGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudCksIG1fdGFza01vZGUpOwogfQogCi12
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZSgpCit2b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZShpbnQgY29kZSwg
Y29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKLSAgICBtX21h
aW5XZWJTb2NrZXRDaGFubmVsLT5jbG9zZSgpOworICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwt
PmNsb3NlKGNvZGUsIHJlYXNvbik7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlBlZXI6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCkBAIC0zOTUsMTkgKzM5
NSwxOSBAQCB1bnNpZ25lZCBsb25nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OmJ1ZmZlcmVkQW1vdW50KCkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIpCit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGVlciogcGVlciwgaW50IGNvZGUsIGNvbnN0IFN0cmluZyZyZWFzb24pCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHBlZXIpOwogCi0gICAgcGVlci0+Y2xvc2Uo
KTsKKyAgICBwZWVyLT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCi12b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3NlKCkKK3ZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmlu
ZyYgcmVhc29uKQogewogICAgIEFTU0VSVChtX3BlZXIpOwotICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVy
KSkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rh
c2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UsIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSwgY29kZSwgcmVhc29uKSk7CiB9CiAKIHZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRGYWlsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IFN0cmluZyYgcmVhc29u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGE0OGE4YTE5ZDdjMjA4OGMxMmQ5YzE3NjIy
YjIwMTUzNzI1MTE0ZjguLmE4ZDEzM2QzY2RmODFlNzJhODdkYjU4YTY4NWZlMWExMjJhNGIzMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCk7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRB
bW91bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICB2aXJ0dWFsIHZv
aWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5l
Y3QoKTsgLy8gV2lsbCBzdXBwcmVzcyBkaWRDbG9zZSgpLgogICAgIHZpcnR1YWwgdm9pZCBzdXNw
ZW5kKCk7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY29ubmVjdChj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIHZvaWQgc2VuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50KCk7Ci0g
ICAgICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJiByZWFzb24pOwogICAgICAgICB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24p
OwogICAgICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKICAgICAgICAgdm9pZCBzdXNwZW5kKCk7CkBA
IC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICAgICAgYm9vbCBzZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKTsK
LSAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNv
bik7CiAgICAgICAgIHZvaWQgZGlzY29ubmVjdCgpOwogICAgICAgICB2b2lkIHN1c3BlbmQoKTsK
QEAgLTE2MSw3ICsxNjEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRD
b25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wpOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5kKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBz
dGF0aWMgdm9pZCBtYWluVGhyZWFkQnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBlZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBlZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2xvc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFz
b24pOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRGYWlsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQZWVyKiwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHN0YXRpYyB2b2lkIG1haW5U
aHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7CiAgICAgc3RhdGlj
IHZvaWQgbWFpblRocmVhZFN1c3BlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106092</attachid>
            <date>2011-09-01 22:00:57 -0700</date>
            <delta_ts>2011-09-01 22:24:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66925-20110902140055.patch</filename>
            <type>text/plain</type>
            <size>46911</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQxNjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YTUzNTQ0ODQ5ZTRiYTJjNjE5NGNj
Yzc1ZDFlMDJhYWI4YTIwMDA0Li5lMDZlNDQ4NzhhMjA3NGY1MDg2ZGVlMTc5NTZmODIwMzZiMjNj
ODMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMzEgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIEltcGxlbWVu
dCBXZWJTb2NrZXQ6OmNsb3NlKCkgY29kZSBhbmQgcmVhc29uIGhhbmRsaW5nLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvY2xvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qczogQWRkZWQuCisgICAg
ICAgIChwb3N0UmVzdWx0KToKKyAgICAgICAgKHRlc3RGYWlsZWQpOgorICAgICAgICAoZGVidWcp
OgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVUcnVlKToKKyAgICAgICAg
KHNob3VsZEJlRmFsc2UpOgorICAgICAgICAoaGFuZGxlT3Blbik6CisgICAgICAgIChoYW5kbGVF
cnJvcik6CisgICAgICAgIChoYW5kbGVDbG9zZSk6CisgICAgICAgIChoYW5kbGVNZXNzYWdlKToK
KyAgICAgICAgKHNldERlZmF1bHRIYW5kbGVycyk6CisgICAgICAgIChydW5Db2RlVGVzdC5lbHNl
LndzLm9uY2xvc2UpOgorICAgICAgICAocnVuQ29kZVRlc3QpOgorICAgICAgICAocnVuSW52YWxp
ZFN0cmluZ1Rlc3QpOgorICAgICAgICAocnVuUmVhc29uVGVzdC5lbHNlLndzLm9uY2xvc2UpOgor
ICAgICAgICAocnVuUmVhc29uVGVzdCk6CisgICAgICAgIChydW5Db2RlQW5kUmVhc29uVGVzdC4p
OgorICAgICAgICAocnVuQ29kZUFuZFJlYXNvblRlc3QpOgorCiAyMDExLTA4LTMxICBBbGV4YW5k
ZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBV
bnJldmlld2VkLCByZWJhc2VsaW5lIGFub3RoZXIgbXVsdGljb2wgdGVzdCBleHBlY3RhdGlvbi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYzOTczOTUzYzhjNjQxMzI4
NmQxYmJjZmQyMmI2OTg5Nzg0ZWJkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTA4IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBi
ZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJs
aXNoZWQuCitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlvcnMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworSW52YWxpZCBjb2RlIHRlc3Q6IDAKK0NvZGUgOTk5IG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0
aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vz
c0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDEKK0NvZGUgMTAwMSBtdXN0IGNhdXNlIElOVkFMSURf
QUNDRVNTX0VSUi4KK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5
cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFs
aWQgY29kZSB0ZXN0OiAyCitDb2RlIDI5OTkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIu
CitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUK
K1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVz
dDogMworQ29kZSA1MDAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNl
cHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDQKK0NvZGUg
NjY1MzYgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIGV4Y2VwdGlvblByb3Rv
ID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBp
cyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogNQorQ29kZSA0Mjk0OTY4Mjk2
IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0g
RE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52
YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDYKK0NvZGUgMjk5OS45IG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0
aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vz
c0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDcKK0NvZGUgTmFOIG11c3QgY2F1c2UgSU5WQUxJRF9B
Q0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlw
ZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxp
ZCBjb2RlIHRlc3Q6IDgKK0NvZGUgMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BB
U1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFT
UyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiA5
CitDb2RlIDEwMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgZXhjZXB0aW9u
UHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25O
YW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxMAorQ29kZSBJbmZp
bml0eSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgZXhjZXB0aW9uUHJvdG8g
PT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlz
IGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxMQorQ29kZSAtSW5maW5pdHkg
bXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBE
T01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZh
bGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMTIKK0NvZGUgTmFOIG11c3QgY2F1c2Ug
SU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9u
LnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0Vy
cgorcnVuQ29kZVRlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGFibm9y
bWFsQ2xvc3VyZQorU2tpcCBpbnZhbGlkIHN0cmluZyB0ZXN0LgorUmVhc29uIHRlc3Q6IDAKKyAg
d2l0aCBpbnZhbGlkIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNAorUmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQgbXVzdCBj
YXVzZSBTWU5UQVhfRVJSLgorUEFTUyByZXN1bHQgaXMgZmFsc2UKK1BBU1MgZXhjZXB0aW9uUHJv
dG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1l
IGlzIHN5bnRheEVycgorUmVhc29uIHRlc3Q6IDEKKyAgd2l0aCBpbnZhbGlkIHJlYXNvbjogMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTLCqQorUmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEywqkgbXVzdCBjYXVzZSBTWU5UQVhfRVJSLgorUEFTUyBy
ZXN1bHQgaXMgZmFsc2UKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90
b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIHN5bnRheEVycgorUmVhc29uIHRl
c3Q6IDIKK3J1blJlYXNvblRlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlz
IGFibm9ybWFsQ2xvc3VyZQorQ29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK0NvZGUgYW5kIHJlYXNv
biBtdXN0IGJlCisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9LLCBCeWUhCitQQVNTIGNsb3Nl
RXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFT
UyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAxCitD
b2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDMwMDAKKyAgcmVhc29uOiAzMDAwCitQ
QVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMg
Y29kZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0
ZXN0OiAyCitDb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDQwMDAKKyAgcmVhc29u
OiBjb2RlIGlzIDQwMDAKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIGNs
b3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgor
Q29kZSBhbmQgcmVhc29uIHRlc3Q6IDMKK0NvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUg
IDogNDk5OQorICByZWFzb246IMKpIEdvb2dsZQorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IHRydWUKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgY2xvc2VFdmVudC5yZWFz
b24gaXMgcmVhc29uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0YjgwNWZhNzc0ZWU0YTAxOTEwMjE5MzQ1
NDY2YTliZmUxYzVkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwKQEAgLTAsMCArMSwxOTMgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIlZlcmlmeSBXZWJTb2Nr
ZXQ6OmNsb3NlIGJlaGF2aW9ycy4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQiLCAwKTsKKwordmFyIGV4Y2VwdGlvbk5hbWU7Cit2YXIgZXhjZXB0aW9uUHJvdG87Cit2YXIg
Y2xvc2VFdmVudDsKK3ZhciBjb2RlOwordmFyIHJlYXNvbjsKK3ZhciByZXN1bHQ7Cit2YXIgaW52
YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElEX0FDQ0VTU19FUlIiOwordmFyIHN5bnRheEVyciA9ICJT
WU5UQVhfRVJSIjsKK3ZhciBub3JtYWxDbG9zdXJlID0gMTAwMDsKK3ZhciBhYm5vcm1hbENsb3N1
cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsKK3ZhciB0ZXN0SWQ7CisKK3ZhciBjb2RlVGVzdENvZGVz
ID0gWworICAgIDk5OSwgMTAwMSwgMjk5OSwgNTAwMCwgNjU1MzYgKyAxMDAwLCAweDEwMDAwMDAw
MCArIDEwMDAsIDI5OTkuOSwgTmFOLCAiMCIsICIxMDAiLCAxLzAsIC0xLzAsIDAvMCwKKyAgICAx
MDAwLjAKK107CisKK3ZhciByZWFzb25UZXN0UmVhc29ucyA9IFsKKyAgICAiMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCIs
IC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyXHUwMGE5IiwgLy8gbGVuZ3RoIGlzIDEyMywgYnV0
IDEyNCBCeXRlIGluIFVURi04CisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMyIsIC8vIDEyMyBCeXRlCitdOworCit2
YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBbCisgICAgZmFsc2UsCisgICAgZmFsc2UsCisgICAgdHJ1
ZSwKK107CisKK2Z1bmN0aW9uIGhhbmRsZU9wZW4oKQoreworICAgIHRlc3RGYWlsZWQoImhhbmRs
ZU9wZW4oKSB3YXMgY2FsbGVkLiIpOworfQorCitmdW5jdGlvbiBoYW5kbGVFcnJvcigpCit7Cisg
ICAgdGVzdEZhaWxlZCgiaGFuZGxlRXJyb3IoKSB3YXMgY2FsbGVkLiIpOworfQorCitmdW5jdGlv
biBoYW5kbGVDbG9zZSgpCit7CisgICAgdGVzdEZhaWxlZCgiaGFuZGxlQ2xvc2UoKSB3YXMgY2Fs
bGVkLiIpOworfQorCitmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKCkKK3sKKyAgICB0ZXN0RmFpbGVk
KCJoYW5kbGVNZXNzYWdlKCkgd2FzIGNhbGxlZC4iKTsKK30KKworZnVuY3Rpb24gc2V0RGVmYXVs
dEhhbmRsZXJzKHdzKQoreworICAgIHdzLm9ub3BlbiA9IGhhbmRsZU9wZW47CisgICAgd3Mub25l
cnJvciA9IGhhbmRsZUVycm9yOworICAgIHdzLm9uY2xvc2UgPSBoYW5kbGVDbG9zZTsKKyAgICB3
cy5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdlOworfQorCitmdW5jdGlvbiBydW5Db2RlVGVzdCgp
Cit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgc2V0RGVmYXVsdEhhbmRsZXJz
KHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgY29kZVRlc3RDb2Rlcy5sZW5ndGg7IGlk
KyspIHsKKyAgICAgICAgaWYgKGNvZGVUZXN0Q29kZXNbaWRdICE9IG5vcm1hbENsb3N1cmUpIHsK
KyAgICAgICAgICAgIGRlYnVnKCJJbnZhbGlkIGNvZGUgdGVzdDogIiArIGlkKTsKKyAgICAgICAg
ICAgIHdzLm9uY2xvc2UgPSBoYW5kbGVDbG9zZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygicnVuQ29kZVRlc3Q6IG9uY2xvc2UoKS4iKTsKKyAgICAgICAgICAgICAgICBj
bG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2Rl
IiwgImFibm9ybWFsQ2xvc3VyZSIpOworICAgICAgICAgICAgICAgIGlmIChjbG9zZUV2ZW50LmNv
ZGUgPT0gYWJub3JtYWxDbG9zdXJlKQorICAgICAgICAgICAgICAgICAgICBydW5JbnZhbGlkU3Ry
aW5nVGVzdCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAg
ICAgICAgICAgd3MuY2xvc2UoY29kZVRlc3RDb2Rlc1tpZF0pOworICAgICAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgICAgICBkZWJ1ZygiQ29kZSAiICsgY29kZVRlc3RDb2Rlc1tpZF0gKyAiIG11
c3QgY2F1c2UgIiArIGludmFsaWRBY2Nlc3NFcnIgKyAnLicpOworICAgICAgICAgICAgZXhjZXB0
aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblByb3RvID0gT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKGUpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleGNlcHRpb25Qcm90
byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4
Y2VwdGlvbk5hbWUiLCAiaW52YWxpZEFjY2Vzc0VyciIpOworICAgICAgICB9CisgICAgfQorfQor
CitmdW5jdGlvbiBydW5JbnZhbGlkU3RyaW5nVGVzdCgpCit7CisgICAgLy8gRklYTUU6IHVucGFp
cmVkIHN1cnJvZ2F0ZXMgdGhyb3cgU1lOVEFYX0VSUgorICAgIGRlYnVnKCJTa2lwIGludmFsaWQg
c3RyaW5nIHRlc3QuIik7CisgICAgcnVuUmVhc29uVGVzdCgpOworfQorCitmdW5jdGlvbiBydW5S
ZWFzb25UZXN0KCkKK3sKKyAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICBzZXREZWZh
dWx0SGFuZGxlcnMod3MpOworICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCByZWFzb25UZXN0UmVh
c29ucy5sZW5ndGg7IGlkKyspIHsKKyAgICAgICAgZGVidWcoIlJlYXNvbiB0ZXN0OiAiICsgaWQp
OworICAgICAgICBpZiAoIXJlYXNvblRlc3RSZXN1bHRzW2lkXSkgeworICAgICAgICAgICAgZGVi
dWcoIiAgd2l0aCBpbnZhbGlkIHJlYXNvbjogIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSk7Cisg
ICAgICAgICAgICB3cy5vbmNsb3NlID0gaGFuZGxlQ2xvc2U7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZGVidWcoInJ1blJlYXNvblRlc3Q6IG9uY2xvc2UoKS4iKTsKKyAgICAgICAg
ICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VF
dmVudC5jb2RlIiwgImFibm9ybWFsQ2xvc3VyZSIpOworICAgICAgICAgICAgICAgIGlmIChjbG9z
ZUV2ZW50LmNvZGUgPT0gYWJub3JtYWxDbG9zdXJlKQorICAgICAgICAgICAgICAgICAgICBydW5D
b2RlQW5kUmVhc29uVGVzdCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICB0
cnkgeworICAgICAgICAgICAgd3MuY2xvc2Uobm9ybWFsQ2xvc3VyZSwgcmVhc29uVGVzdFJlYXNv
bnNbaWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZGVidWcoIlJlYXNv
biAiICsgcmVhc29uVGVzdFJlYXNvbnNbaWRdICsgIiBtdXN0IGNhdXNlICIgKyBzeW50YXhFcnIg
KyAnLicpOworICAgICAgICAgICAgcmVzdWx0ID0gcmVhc29uVGVzdFJlc3VsdHNbaWRdOworICAg
ICAgICAgICAgZXhjZXB0aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblBy
b3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOworICAgICAgICAgICAgc2hvdWxkQmVGYWxz
ZSgicmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImV4Y2VwdGlvblByb3RvID09
PSBET01FeGNlcHRpb24ucHJvdG90eXBlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiZXhjZXB0
aW9uTmFtZSIsICJzeW50YXhFcnIiKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24g
cnVuQ29kZUFuZFJlYXNvblRlc3QoKQoreworICAgIHZhciBjb2RlcyA9IFsKKyAgICAgICAgMTAw
MCwKKyAgICAgICAgMzAwMCwKKyAgICAgICAgNDAwMCwKKyAgICAgICAgNDk5OQorICAgIF07Cisg
ICAgdmFyIHJlYXNvbnMgPSBbCisgICAgICAgICJPSywgQnllISIsCisgICAgICAgICIzMDAwIiwK
KyAgICAgICAgImNvZGUgaXMgNDAwMCIsCisgICAgICAgICJcdTAwYTkgR29vZ2xlIgorICAgIF07
CisgICAgKGZ1bmN0aW9uIHRlc3QgKGlkKSB7CisgICAgICAgIGRlYnVnKCJDb2RlIGFuZCByZWFz
b24gdGVzdDogIiArIGlkKTsKKyAgICAgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAg
ICAgIHNldERlZmF1bHRIYW5kbGVycyh3cyk7CisgICAgICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9u
ICgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVzW2lkXSwgcmVhc29uc1tp
ZF0pOworICAgICAgICB9OworICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgY29kZSA9IGNv
ZGVzW2lkXTsKKyAgICAgICAgICAgIHJlYXNvbiA9IHJlYXNvbnNbaWRdOworICAgICAgICAgICAg
ZGVidWcoIkNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlIik7CisgICAgICAgICAgICBkZWJ1ZygiICBj
b2RlICA6ICIgKyBjb2RlKTsKKyAgICAgICAgICAgIGRlYnVnKCIgIHJlYXNvbjogIiArIHJlYXNv
bik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LmNvZGUiLCAiY29kZSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImNsb3NlRXZlbnQucmVhc29uIiwgInJlYXNvbiIpOworICAgICAgICAgICAg
aWYgKCsraWQgIT0gY29kZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHRlc3QoaWQpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
OworICAgIH0pKDApOworfQorCitydW5Db2RlVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Ns
b3NlX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xvc2Vfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiMDJkNjYyNjdlMjk0Y2U4Mzk3N2RhYzY0ZjA3NTk4
MTcwNTY0N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2Nsb3NlX3dzaC5weQpAQCAtMCwwICsxLDUzIEBACisjIENvcHlyaWdo
dCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScK
KworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFz
cyAgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVx
dWVzdCk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFt
LnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIHVuaWNvZGUpOgorICAgICAgICAg
ICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKKyAg
ICAgICAgICAgIGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRf
bWVzc2FnZShsaW5lLCBiaW5hcnk9VHJ1ZSkKKworCitkZWYgd2ViX3NvY2tldF9wYXNzaXZlX2Ns
b3NpbmdfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHJldHVybiByZXF1ZXN0LndzX2Nsb3NlX2Nv
ZGUsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3Nl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzQ3NWIxNzBhMTU4YTRiOWI1Nzk5Mjg4YjExNDky
NzVhZjRhOTgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDk0
IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUg
dGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDog
V2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQu
CitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlvcnMgaW4gV29ya2VyLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK0ludmFsaWQgY29kZSB0ZXN0OiAwCitDb2RlIDk5OSBtdXN0
IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25O
YW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxCitDb2RlIDEwMDEg
bXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0
aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMgorQ29kZSAy
OTk5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4
Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDMKK0Nv
ZGUgNTAwMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgUEFTUzogd29ya2Vy
OiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiA0
CitDb2RlIDY2NTM2IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBQQVNTOiB3
b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRl
c3Q6IDUKK0NvZGUgNDI5NDk2ODI5NiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BB
U1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFs
aWQgY29kZSB0ZXN0OiA2CitDb2RlIDI5OTkuOSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VS
Ui4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIK
K0ludmFsaWQgY29kZSB0ZXN0OiA3CitDb2RlIE5hTiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNT
X0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NF
cnIKK0ludmFsaWQgY29kZSB0ZXN0OiA4CitDb2RlIDAgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VT
U19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNz
RXJyCitJbnZhbGlkIGNvZGUgdGVzdDogOQorQ29kZSAxMDAgbXVzdCBjYXVzZSBJTlZBTElEX0FD
Q0VTU19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNj
ZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMTAKK0NvZGUgSW5maW5pdHkgbXVzdCBjYXVzZSBJ
TlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBp
bnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMTEKK0NvZGUgLUluZmluaXR5IG11
c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlv
bk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDEyCitDb2RlIE5h
TiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNl
cHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK3J1bkNvZGVUZXN0OiBvbmNsb3NlKCkuCitQ
QVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlzIGFibm9ybWFsQ2xvc3VyZQorU2tp
cCBpbnZhbGlkIHN0cmluZyB0ZXN0LgorUmVhc29uIHRlc3Q6IDAKKyAgd2l0aCBpbnZhbGlkIHJl
YXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNAorUmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQgbXVzdCBjYXVzZSBTWU5UQVhfRVJS
LgorUEFTUyBQQVNTOiB3b3JrZXI6IHJlc3VsdCBpcyBmYWxzZQorUEFTUyBQQVNTOiB3b3JrZXI6
IGV4Y2VwdGlvbk5hbWUgaXMgc3ludGF4RXJyCitSZWFzb24gdGVzdDogMQorICB3aXRoIGludmFs
aWQgcmVhc29uOiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMsKpCitSZWFzb24gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTLCqSBtdXN0IGNhdXNlIFNZTlRB
WF9FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogcmVzdWx0IGlzIGZhbHNlCitQQVNTIFBBU1M6IHdv
cmtlcjogZXhjZXB0aW9uTmFtZSBpcyBzeW50YXhFcnIKK1JlYXNvbiB0ZXN0OiAyCitydW5SZWFz
b25UZXN0OiBvbmNsb3NlKCkuCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlz
IGFibm9ybWFsQ2xvc3VyZQorQ29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK0NvZGUgYW5kIHJlYXNv
biBtdXN0IGJlCisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9LLCBCeWUhCitQQVNTIFBBU1M6
IHdvcmtlcjogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIFBBU1M6IHdvcmtlcjog
Y2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LnJl
YXNvbiBpcyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAxCitDb2RlIGFuZCByZWFzb24g
bXVzdCBiZQorICBjb2RlICA6IDMwMDAKKyAgcmVhc29uOiAzMDAwCitQQVNTIFBBU1M6IHdvcmtl
cjogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VF
dmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBp
cyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAyCitDb2RlIGFuZCByZWFzb24gbXVzdCBi
ZQorICBjb2RlICA6IDQwMDAKKyAgcmVhc29uOiBjb2RlIGlzIDQwMDAKK1BBU1MgUEFTUzogd29y
a2VyOiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9z
ZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQucmVhc29u
IGlzIHJlYXNvbgorQ29kZSBhbmQgcmVhc29uIHRlc3Q6IDMKK0NvZGUgYW5kIHJlYXNvbiBtdXN0
IGJlCisgIGNvZGUgIDogNDk5OQorICByZWFzb246IMKpIEdvb2dsZQorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3Nl
RXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5yZWFzb24g
aXMgcmVhc29uCitET05FCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGM2NjIw
ZTg3NDBjNjY5YjFiMjEyZGI0ZGQxYjkxMjQzZmVmMjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0
bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgV2ViU29j
a2V0OjpjbG9zZSBiZWhhdmlvcnMgaW4gV29ya2VyLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDApOworCitmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgcHJlZml4KQor
eworICAgIHJldHVybiBzdHIuaW5kZXhPZihwcmVmaXgpID09IDA7Cit9CisKK3ZhciB3b3JrZXIg
PSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvY2xvc2UuanMiKTsKK3dvcmtlci5vbm1lc3NhZ2UgPSBm
dW5jdGlvbiAoZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGlm
IChzdGFydHNXaXRoKG1lc3NhZ2UsICJQQVNTIikpCisgICAgICAgIHRlc3RQYXNzZWQobWVzc2Fn
ZSk7CisgICAgZWxzZSBpZiAoc3RhcnRzV2l0aChtZXNzYWdlLCAiRkFJTCIpKQorICAgICAgICB0
ZXN0RmFpbGVkKG1lc3NhZ2UpCisgICAgZWxzZQorICAgICAgICBkZWJ1ZyhtZXNzYWdlKTsKKyAg
ICBpZiAobWVzc2FnZSA9PT0gIkRPTkUiKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Ns
b3NlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdmZDA2ZWYwNTRjYTUyMWYxODQ5MjI5M2U3M2E4Y2E2MmRkMDVm
ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLmpzCkBAIC0wLDAgKzEsMjA1IEBACitm
dW5jdGlvbiBwb3N0UmVzdWx0KHJlc3VsdCwgYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICB2YXIg
bWVzc2FnZSA9IHJlc3VsdCA/ICJQQVNTIiA6ICJGQUlMIjsKKyAgICBtZXNzYWdlICs9ICI6IHdv
cmtlcjogIiArIGFjdHVhbCArICIgaXMgIjsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgbWVz
c2FnZSArPSAibm90ICI7CisgICAgbWVzc2FnZSArPSBleHBlY3RlZDsKKyAgICBwb3N0TWVzc2Fn
ZShtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gdGVzdEZhaWxlZChtZXNzYWdlKQoreworICAgIHBv
c3RNZXNzYWdlKCJGQUlMOiAiICsgbWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIGRlYnVnKG1lc3Nh
Z2UpCit7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgdmFyIF9yZXN1bHQgPSBldmFsKGFjdHVhbCArICIg
PT0gIiArIGV4cGVjdGVkKTsKKyAgICBwb3N0UmVzdWx0KF9yZXN1bHQsIGFjdHVhbCwgZXhwZWN0
ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZVRydWUoYWN0dWFsKQoreworICAgIHNob3VsZEJl
KGFjdHVhbCwgInRydWUiKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVGYWxzZShhY3R1YWwpCit7
CisgICAgc2hvdWxkQmUoYWN0dWFsLCAiZmFsc2UiKTsKK30KKwordmFyIGV4Y2VwdGlvbk5hbWU7
Cit2YXIgZXhjZXB0aW9uUHJvdG87Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBjb2RlOwordmFyIHJl
YXNvbjsKK3ZhciByZXN1bHQ7Cit2YXIgaW52YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElEX0FDQ0VT
U19FUlIiOwordmFyIHN5bnRheEVyciA9ICJTWU5UQVhfRVJSIjsKK3ZhciBub3JtYWxDbG9zdXJl
ID0gMTAwMDsKK3ZhciBhYm5vcm1hbENsb3N1cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3czovLzEy
Ny4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsKK3ZhciB0
ZXN0SWQ7CisKK3ZhciBjb2RlVGVzdENvZGVzID0gWworICAgIDk5OSwgMTAwMSwgMjk5OSwgNTAw
MCwgNjU1MzYgKyAxMDAwLCAweDEwMDAwMDAwMCArIDEwMDAsIDI5OTkuOSwgTmFOLCAiMCIsICIx
MDAiLCAxLzAsIC0xLzAsIDAvMCwKKyAgICAxMDAwLjAKK107CisKK3ZhciByZWFzb25UZXN0UmVh
c29ucyA9IFsKKyAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCIsIC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyXHUw
MGE5IiwgLy8gbGVuZ3RoIGlzIDEyMywgYnV0IDEyNCBCeXRlIGluIFVURi04CisgICAgIjEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMyIsIC8vIDEyMyBCeXRlCitdOworCit2YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBbCisgICAg
ZmFsc2UsCisgICAgZmFsc2UsCisgICAgdHJ1ZSwKK107CisKK2Z1bmN0aW9uIGhhbmRsZU9wZW4o
KQoreworICAgIHRlc3RGYWlsZWQoImhhbmRsZU9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKwor
ZnVuY3Rpb24gaGFuZGxlRXJyb3IoKQoreworICAgIHRlc3RGYWlsZWQoImhhbmRsZUVycm9yKCkg
d2FzIGNhbGxlZC4iKTsKK307CisKK2Z1bmN0aW9uIGhhbmRsZUNsb3NlKCkKK3sKKyAgICB0ZXN0
RmFpbGVkKCJoYW5kbGVDbG9zZSgpIHdhcyBjYWxsZWQuIik7Cit9OworCitmdW5jdGlvbiBoYW5k
bGVNZXNzYWdlKCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJoYW5kbGVNZXNzYWdlKCkgd2FzIGNhbGxl
ZC4iKTsKK307CisKK2Z1bmN0aW9uIHNldERlZmF1bHRIYW5kbGVycyh3cykKK3sKKyAgICB3cy5v
bm9wZW4gPSBoYW5kbGVPcGVuOworICAgIHdzLm9uZXJyb3IgPSBoYW5kbGVFcnJvcjsKKyAgICB3
cy5vbmNsb3NlID0gaGFuZGxlQ2xvc2U7CisgICAgd3Mub25tZXNzYWdlID0gaGFuZGxlTWVzc2Fn
ZTsKK30KKworZnVuY3Rpb24gcnVuQ29kZVRlc3QoKQoreworICAgIHdzID0gbmV3IFdlYlNvY2tl
dCh1cmwpOworICAgIHNldERlZmF1bHRIYW5kbGVycyh3cyk7CisgICAgZm9yICh2YXIgaWQgPSAw
OyBpZCA8IGNvZGVUZXN0Q29kZXMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGlmIChjb2RlVGVz
dENvZGVzW2lkXSAhPSBub3JtYWxDbG9zdXJlKSB7CisgICAgICAgICAgICBkZWJ1ZygiSW52YWxp
ZCBjb2RlIHRlc3Q6ICIgKyBpZCk7CisgICAgICAgICAgICB3cy5vbmNsb3NlID0gaGFuZGxlQ2xv
c2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24g
KGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVidWcoInJ1bkNvZGVUZXN0OiBv
bmNsb3NlKCkuIik7CisgICAgICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5vcm1hbENsb3N1cmUiKTsKKyAg
ICAgICAgICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2RlID09IGFibm9ybWFsQ2xvc3VyZSkKKyAg
ICAgICAgICAgICAgICAgICAgcnVuSW52YWxpZFN0cmluZ1Rlc3QoKTsKKyAgICAgICAgICAgIH07
CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVUZXN0
Q29kZXNbaWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZGVidWcoIkNv
ZGUgIiArIGNvZGVUZXN0Q29kZXNbaWRdICsgIiBtdXN0IGNhdXNlICIgKyBpbnZhbGlkQWNjZXNz
RXJyICsgJy4nKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAgICAg
ICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJleGNlcHRpb25OYW1lIiwgImludmFsaWRBY2Nlc3NFcnIiKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuSW52YWxpZFN0cmluZ1Rlc3QoKQoreworICAg
IC8vIEZJWE1FOiB1bnBhaXJlZCBzdXJyb2dhdGVzIHRocm93IFNZTlRBWF9FUlIKKyAgICBkZWJ1
ZygiU2tpcCBpbnZhbGlkIHN0cmluZyB0ZXN0LiIpOworICAgIHJ1blJlYXNvblRlc3QoKTsKK30K
KworZnVuY3Rpb24gcnVuUmVhc29uVGVzdCgpCit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVy
bCk7CisgICAgc2V0RGVmYXVsdEhhbmRsZXJzKHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlk
IDwgcmVhc29uVGVzdFJlYXNvbnMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGRlYnVnKCJSZWFz
b24gdGVzdDogIiArIGlkKTsKKyAgICAgICAgaWYgKCFyZWFzb25UZXN0UmVzdWx0c1tpZF0pIHsK
KyAgICAgICAgICAgIGRlYnVnKCIgIHdpdGggaW52YWxpZCByZWFzb246ICIgKyByZWFzb25UZXN0
UmVhc29uc1tpZF0pOworICAgICAgICAgICAgd3Mub25jbG9zZSA9IGhhbmRsZUNsb3NlOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCJydW5SZWFzb25UZXN0OiBvbmNsb3Nl
KCkuIik7CisgICAgICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5vcm1hbENsb3N1cmUiKTsKKyAgICAgICAg
ICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2RlID09IGFibm9ybWFsQ2xvc3VyZSkKKyAgICAgICAg
ICAgICAgICAgICAgcnVuQ29kZUFuZFJlYXNvblRlc3QoKTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKG5vcm1hbENsb3N1cmUs
IHJlYXNvblRlc3RSZWFzb25zW2lkXSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJSZWFzb24gIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSArICIgbXVzdCBjYXVz
ZSAiICsgc3ludGF4RXJyICsgJy4nKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlYXNvblRlc3RS
ZXN1bHRzW2lkXTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAgICAg
ICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlRmFsc2UoInJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4Y2Vw
dGlvbk5hbWUiLCAic3ludGF4RXJyIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHJ1bkNvZGVBbmRSZWFzb25UZXN0KCkKK3sKKyAgICB2YXIgY29kZXMgPSBbCisgICAgICAgIDEw
MDAsCisgICAgICAgIDMwMDAsCisgICAgICAgIDQwMDAsCisgICAgICAgIDQ5OTkKKyAgICBdOwor
ICAgIHZhciByZWFzb25zID0gWworICAgICAgICAiT0ssIEJ5ZSEiLAorICAgICAgICAiMzAwMCIs
CisgICAgICAgICJjb2RlIGlzIDQwMDAiLAorICAgICAgICAiXHUwMGE5IEdvb2dsZSIKKyAgICBd
OworICAgIChmdW5jdGlvbiB0ZXN0IChpZCkgeworICAgICAgICBkZWJ1ZygiQ29kZSBhbmQgcmVh
c29uIHRlc3Q6ICIgKyBpZCk7CisgICAgICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAg
ICAgICBzZXREZWZhdWx0SGFuZGxlcnMod3MpOworICAgICAgICB3cy5vbm9wZW4gPSBmdW5jdGlv
biAoKQorICAgICAgICB7CisgICAgICAgICAgICB3cy5jbG9zZShjb2Rlc1tpZF0sIHJlYXNvbnNb
aWRdKTsKKyAgICAgICAgfTsKKyAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAg
ICAgICB7CisgICAgICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgIGNvZGUgPSBj
b2Rlc1tpZF07CisgICAgICAgICAgICByZWFzb24gPSByZWFzb25zW2lkXTsKKyAgICAgICAgICAg
IGRlYnVnKCJDb2RlIGFuZCByZWFzb24gbXVzdCBiZSIpOworICAgICAgICAgICAgZGVidWcoIiAg
Y29kZSAgOiAiICsgY29kZSk7CisgICAgICAgICAgICBkZWJ1ZygiICByZWFzb246ICIgKyByZWFz
b24pOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImNvZGUiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LnJlYXNvbiIsICJyZWFzb24iKTsKKyAgICAgICAgICAg
IGlmICgrK2lkICE9IGNvZGVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICB0ZXN0KGlkKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZSgiRE9ORSIpOworICAg
ICAgICB9OworICAgIH0pKDApOworfQorCitydW5Db2RlVGVzdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUw
YWJlM2ExYTRhZjM1YmM3ZTY0Nzc2MDU2ODQwNmIyYmZkZDcwMjIuLmYyOTkzMzU3MTMwNmI4OTE0
NzhkYTRmZjkzZTU2YzQ4YjVjMTQyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAx
MS0wOC0zMSAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW1dlYlNvY2tldF0gSW1wbGVtZW50IFdlYlNvY2tldDo6Y2xvc2UoKSBjb2RlIGFuZCBy
ZWFzb24gaGFuZGxpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjkyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9j
bG9zZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1dlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFdlYlNvY2tldDo6Y2xvc2VDYWxsYmFjayk6CisgICAgICAgIEFkZCBjdXN0b20gYnJpZGdlIGZv
ciBXZWJTb2NrZXQ6OmNsb3NlKCkuCisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAqIHdlYnNvY2tldHMv
V2ViU29ja2V0Lmg6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsOjpjbG9zZSk6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJn
dW1lbnRzIGhhbmRsaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3Rh
cnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgU2VuZCBhIGNsb3NlIGZyYW1lIHdpdGhvdXQg
Y29kZSBhbmQgcmVhc29uIG9uIHNlcnZlciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2VzLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZUhpeGllNzYpOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNsb3NlKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRo
cmVhZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpCcmlkZ2U6OmNsb3NlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJn
dW1lbnRzIGhhbmRsaW5nLgorCiAyMDExLTA4LTMxICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYlNvY2tldDogTG9hZCBCbG9iIGluIFdlYlNvY2tldENo
YW5uZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9t
LmNwcAppbmRleCBhZjVkYWNhNTU1ZTA4OWVjMTIyNThjNjE3MjJjNjA3Y2RmMzAxNmNhLi42YjM1
OThiMmRmZmFhYjM3Mjg2NTFmMGI1YzY2MWRlMDYxMDI2Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzUsMTAgKzM1LDEzIEBACiAKICNpbmNsdWRl
ICJKU1dlYlNvY2tldC5oIgogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJTb2Nr
ZXQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8cnVudGltZS9F
cnJvci5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtODUsNiArODgsMzggQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dl
YlNvY2tldChFeGVjU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JB
UFBFUihleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgV2ViU29ja2V0LCB3ZWJT
b2NrZXQuZ2V0KCkpKTsKIH0KIAorSlNWYWx1ZSBKU1dlYlNvY2tldDo6Y2xvc2UoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW1wbGVtZW50IFtDbGFtcF0gZm9y
IElETCBiaW5kaW5nIGNvZGUgZ2VuZXJhdG9yLCBhbmQKKyAgICAvLyByZW1vdmUgdGhpcyBjdXN0
b20gbWV0aG9kLgorICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gc3RhdGljX2Nhc3Q8V2ViU29j
a2V0Kj4oaW1wbCgpKTsKKyAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50
Q291bnQoKTsKKyAgICBpbnQgY29kZSA9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2Rl
Tm90U3BlY2lmaWVkOworICAgIFN0cmluZyByZWFzb24gPSAiIjsKKyAgICBpZiAoYXJndW1lbnRD
b3VudCA+PSAxKSB7CisgICAgICAgIEpTVmFsdWUgdiA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAg
ICAgICBkb3VibGUgeCA9IHYudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIGRvdWJsZSBtYXhWYWx1
ZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1h
eCgpKTsKKyAgICAgICAgZG91YmxlIG1pblZhbHVlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWluKCkpOworICAgICAgICBpZiAoaXNuYW4oeCkp
CisgICAgICAgICAgICB4ID0gMC4wOworICAgICAgICBlbHNlCisgICAgICAgICAgICB4ID0gY2xh
bXBUbyh4LCBtaW5WYWx1ZSwgbWF4VmFsdWUpOworICAgICAgICBjb2RlID0gY2xhbXBUb0ludGVn
ZXIoeCk7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50ID49IDIpIHsKKyAgICAgICAgICAgIHJl
YXNvbiA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKSk7
CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgU1lOVEFYX0VSUik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2ViU29ja2V0LT5jbG9zZShjb2RlLCByZWFzb24s
IGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5j
cHAKaW5kZXggNThhMjdlN2ZhMTNkYjlmYTJkZGMzZDJmZWQzZjdlODk3ZmM5NzVkNS4uMjhhOTVl
ZDRkYjM3YWI5ODUzMjI0OGFkM2NjMzc2Y2E5MDcwNjQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM0
LDE0ICszNCwxNyBAQAogCiAjaW5jbHVkZSAiVjhXZWJTb2NrZXQuaCIKIAorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUg
IlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCisjaW5jbHVkZSAiV2ViU29j
a2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA4LDYg
KzExMSwzOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIHJldHVybiBhcmdzLkhvbGRl
cigpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNsb3NlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGltcGxlbWVudCBbQ2xhbXBdIGZvciBJREwgYmluZGluZyBjb2RlIGdlbmVyYXRvciwgYW5kCisg
ICAgLy8gcmVtb3ZlIHRoaXMgY3VzdG9tIG1ldGhvZC4KKyAgICBXZWJTb2NrZXQqIHdlYlNvY2tl
dCA9IHRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIGludCBhcmd1bWVudENvdW50ID0gYXJn
cy5MZW5ndGgoKTsKKyAgICBpbnQgY29kZSA9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRD
b2RlTm90U3BlY2lmaWVkOworICAgIFN0cmluZyByZWFzb24gPSAiIjsKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA+PSAxKSB7CisgICAgICAgIGRvdWJsZSB4ID0gYXJnc1swXS0+TnVtYmVyVmFsdWUo
KTsKKyAgICAgICAgZG91YmxlIG1heFZhbHVlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOworICAgICAgICBkb3VibGUgbWluVmFsdWUg
PSBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptaW4o
KSk7CisgICAgICAgIGlmIChpc25hbih4KSkKKyAgICAgICAgICAgIHggPSAwLjA7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHggPSBjbGFtcFRvKHgsIG1pblZhbHVlLCBtYXhWYWx1ZSk7Cisg
ICAgICAgIGNvZGUgPSBjbGFtcFRvSW50ZWdlcih4KTsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291
bnQgPj0gMikgeworICAgICAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiByZWFzb25WYWx1ZSA9IGFyZ3NbMV0tPlRvU3RyaW5n
KCk7CisgICAgICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2guRXhjZXB0aW9uKCkpOworICAgICAgICAgICAg
cmVhc29uID0gdG9XZWJDb3JlU3RyaW5nKHJlYXNvblZhbHVlKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB3ZWJTb2NrZXQtPmNsb3NlKGNvZGUsIHJl
YXNvbiwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwor
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGNkOWNl
MjUyYTRjZDViZDY3YTczOWNmYzUzMzI3MDhlMGVkNDhjZmUuLjA5ZjgxYjUwN2ExMDAxZDZlN2Vh
NTkxNzIxMTZlYTllOWZmN2JkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgPSAwOyAvLyBXaWxsIGJlIGF2
YWlsYWJsZSBhZnRlciBkaWRDb25uZWN0KCkgY2FsbGJhY2sgaXMgaW52b2tlZC4KICAgICB2aXJ0
dWFsIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGNsb3NlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb24pID0gMDsKICAgICAvLyBMb2cgdGhlIHJlYXNvbiB0ZXh0IGFuZCBjbG9zZSB0
aGUgY29ubmVjdGlvbi4gV2lsbCBjYWxsIGRpZENsb3NlKCkuCiAgICAgdmlydHVhbCB2b2lkIGZh
aWwoY29uc3QgU3RyaW5nJiByZWFzb24pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVj
dCgpID0gMDsgLy8gV2lsbCBzdXBwcmVzcyBkaWRDbG9zZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGRjOWFiYmFmNGM0NmFlZDY5ODJhNjc2ZDM5NWQ4MzY4
ODVmMzFiZjUuLjI0YjE2ZjQ3ZjA0MzcwZGU4OWM3ZTY3OTExMzFiOTQ2ZTg0ZjNjZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNjAsNiArNjAsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NvbnN0IHNpemVfdCBtYXhSZWFzb25TaXplSW5CeXRlcyA9
IDEyMzsKKwogc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRQcm90b2NvbENoYXJhY3RlcihVQ2hh
ciBjaGFyYWN0ZXIpCiB7CiAgICAgLy8gSHliaS0xMCBzYXlzICIoU3VicHJvdG9jb2wgc3RyaW5n
IG11c3QgY29uc2lzdCBvZikgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgVSswMDIxIHRvIFUrMDA3
RSBub3QgaW5jbHVkaW5nCkBAIC0yNjIsOSArMjY0LDIzIEBAIGJvb2wgV2ViU29ja2V0OjpzZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIG1f
Y2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmNsb3NlKCkKK3Zv
aWQgV2ViU29ja2V0OjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIiwg
dGhpcyk7CisgICAgaWYgKGNvZGUgPT0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVO
b3RTcGVjaWZpZWQpCisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIHdp
dGhvdXQgY29kZSBhbmQgcmVhc29uIiwgdGhpcyk7CisgICAgZWxzZSB7CisgICAgICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIHdpdGggY29kZSA9ICVkLCByZWFzb24gPSAlcyIs
IHRoaXMsIGNvZGUsIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKCEoY29kZSA9
PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5vcm1hbENsb3N1cmUgfHwgKFdlYlNv
Y2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlTWluaW11bVVzZXJEZWZpbmVkIDw9IGNvZGUgJiYg
Y29kZSA8PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU1heGltdW1Vc2VyRGVmaW5l
ZCkpKSB7CisgICAgICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogaWYgcmVhc29uIGNvbnRhaW5z
IGFueSB1bnBhaXJlZCBzdXJyb2dhdGVzLCByYWlzZSBTWU5UQVhfRVJSLgorICAgICAgICBpZiAo
cmVhc29uLnV0ZjgoKS5sZW5ndGgoKSA+IG1heFJlYXNvblNpemVJbkJ5dGVzKSB7CisgICAgICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TSU5HIHx8IG1fc3RhdGUgPT0gQ0xPU0VEKQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKG1fc3RhdGUgPT0gQ09OTkVDVElORykgewpAQCAtMjc3
LDcgKzI5Myw3IEBAIHZvaWQgV2ViU29ja2V0OjpjbG9zZSgpCiAgICAgLy8gZGlkQ2xvc2Ugbm90
aWZpY2F0aW9uIG1heSBiZSBhbHJlYWR5IHF1ZXVlZCwgd2hpY2ggd2Ugd2lsbCBpbmFkdmVydGVu
dGx5IHByb2Nlc3Mgd2hpbGUgd2FpdGluZyBmb3IgYnVmZmVyZWRBbW91bnQoKSB0byByZXR1cm4u
CiAgICAgLy8gSW4gdGhpcyBjYXNlIG1fY2hhbm5lbCB3aWxsIGJlIHNldCB0byBudWxsIGR1cmlu
ZyBkaWRDbG9zZSgpIGNhbGwsIHRodXMgd2UgbmVlZCB0byB0ZXN0IHZhbGlkbmVzcyBvZiBtX2No
YW5uZWwgaGVyZS4KICAgICBpZiAobV9jaGFubmVsKQotICAgICAgICBtX2NoYW5uZWwtPmNsb3Nl
KCk7CisgICAgICAgIG1fY2hhbm5lbC0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAogY29uc3Qg
S1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKaW5kZXggNTZlMjAwNmMwMTM3MThmZTE0ODhkNzIzYzUxZTA5OGE0MjNhMWZiZi4uMWRk
NTZhMmY0NDg3OThhZjg3YjdjODE5YzI1MTViMzE4NzY4ZTJjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBz
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBj
bG9zZSgpOworICAgIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBF
eGNlcHRpb25Db2RlJik7CiAKICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKICAgICBTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5p
ZGwKaW5kZXggODFkNzU2M2YwN2M5MTQyNzQ1ZjdmMjliMWNlMzI1NWY1NmE2ZWNlMi4uY2FkM2E2
YmZhMWU2MjQ5MTQ2MThmMDNkYWY0ZDQ0ZDE1N2ExM2ZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmlkbApAQCAtNjQsNyArNjQsNyBAQCBtb2R1bGUgd2Vic29ja2V0cyB7
CiAgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgW1Jl
cXVpcmVzQWxsQXJndW1lbnRzXSBib29sZWFuIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEpIHJhaXNl
cyhET01FeGNlcHRpb24pOwotICAgICAgICB2b2lkIGNsb3NlKCk7CisgICAgICAgIFtDdXN0b21d
IHZvaWQgY2xvc2UoaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBjb2RlLCBpbiBbT3B0aW9u
YWxdIERPTVN0cmluZyByZWFzb24pIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIC8v
IEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4g
RE9NU3RyaW5nIHR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAppbmRleCA2NjcyZmRkNGNiYzMzYWYzNDJkZDE3YThjOGM2MWNkY2I5ZDg1MGQz
Li4yMDA3ZTZkYjgzODVmYTZmMzY2ZGFiYjI0ZjIxNzc1ZGEzNGRlOGVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE3OCwxMyArMTc4
LDEzIEBAIHVuc2lnbmVkIGxvbmcgV2ViU29ja2V0Q2hhbm5lbDo6YnVmZmVyZWRBbW91bnQoKSBj
b25zdAogICAgIHJldHVybiBtX2hhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsKIH0KIAotdm9pZCBX
ZWJTb2NrZXRDaGFubmVsOjpjbG9zZSgpCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKGlu
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNv
Y2tldENoYW5uZWwgJXAgY2xvc2UiLCB0aGlzKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsK
ICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm47Ci0gICAgc3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKCk7CisgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKGNvZGUsIHJlYXNvbik7CiAgICAg
aWYgKG1fY2xvc2luZyAmJiAhbV9jbG9zaW5nVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9j
bG9zaW5nVGltZXIuc3RhcnRPbmVTaG90KDIgKiBUQ1BNYXhpbXVtU2VnbWVudExpZmV0aW1lKTsK
IH0KQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVy
RmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKQogICAgICAgICBkaWRDbG9zZVNv
Y2tldFN0cmVhbShtX2hhbmRsZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
c3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKK3ZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9z
aW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2luZyAlZCAlZCIsIHRoaXMsIG1fY2xv
c2luZywgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UpOwogICAgIGlmIChtX2Nsb3NpbmcpCkBA
IC00ODIsOSArNDgyLDE3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKCkKICAgICAgICAgICAgIG1faGFuZGxlLT5kaXNjb25uZWN0KCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgZW5xdWV1ZVJhd0ZyYW1l
KE9wQ29kZUNsb3NlLCAiIiwgMCk7IC8vIEZJWE1FOiBTZW5kIHN0YXR1cyBjb2RlIGFuZCByZWFz
b24gbWVzc2FnZS4KLQorICAgIH0gZWxzZSB7CisgICAgICAgIFZlY3RvcjxjaGFyPiBidWY7Cisg
ICAgICAgIGlmICghbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UgJiYgY29kZSAhPSBDbG9zZUV2
ZW50Q29kZU5vdFNwZWNpZmllZCkgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBoaWdoQnl0
ZSA9IGNvZGUgPj4gODsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbG93Qnl0ZSA9IGNvZGU7
CisgICAgICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KGhpZ2hCeXRlKSk7Cisg
ICAgICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KGxvd0J5dGUpKTsKKyAgICAg
ICAgICAgIGJ1Zi5hcHBlbmQocmVhc29uLnV0ZjgoKS5kYXRhKCksIHJlYXNvbi51dGY4KCkubGVu
Z3RoKCkpOworICAgICAgICB9CisgICAgICAgIGVucXVldWVSYXdGcmFtZShPcENvZGVDbG9zZSwg
YnVmLmRhdGEoKSwgYnVmLnNpemUoKSk7CisgICAgfQogICAgIG1fY2xvc2luZyA9IHRydWU7CiAg
ICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGlkU3RhcnRDbG9zaW5nSGFuZHNo
YWtlKCk7CkBAIC02OTAsNyArNjk4LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNz
RnJhbWUoKQogICAgICAgICAgICAgbV9jbG9zZUV2ZW50UmVhc29uID0gIiI7CiAgICAgICAgIHNr
aXBCdWZmZXIoZnJhbWUuZnJhbWVFbmQgLSBtX2J1ZmZlcik7CiAgICAgICAgIG1fcmVjZWl2ZWRD
bG9zaW5nSGFuZHNoYWtlID0gdHJ1ZTsKLSAgICAgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7
CisgICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShtX2Nsb3NlRXZlbnRDb2RlLCBtX2Nsb3Nl
RXZlbnRSZWFzb24pOwogICAgICAgICBpZiAobV9jbG9zaW5nKSB7CiAgICAgICAgICAgICBtX291
dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9IE91dGdvaW5nRnJhbWVRdWV1ZUNsb3Npbmc7CiAgICAg
ICAgICAgICBwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCk7CkBAIC03NzEsNyArNzc5LDcgQEAg
Ym9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWVIaXhpZTc2KCkKICAgICAgICAgICAg
IHNraXBCdWZmZXIobmV4dEZyYW1lIC0gbV9idWZmZXIpOwogICAgICAgICAgICAgaWYgKGZyYW1l
Qnl0ZSA9PSAweGZmICYmICFsZW5ndGgpIHsKICAgICAgICAgICAgICAgICBtX3JlY2VpdmVkQ2xv
c2luZ0hhbmRzaGFrZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgc3RhcnRDbG9zaW5nSGFuZHNo
YWtlKCk7CisgICAgICAgICAgICAgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKENsb3NlRXZlbnRD
b2RlTm90U3BlY2lmaWVkLCAiIik7CiAgICAgICAgICAgICAgICAgaWYgKG1fY2xvc2luZykKICAg
ICAgICAgICAgICAgICAgICAgbV9oYW5kbGUtPmNsb3NlKCk7IC8vIGNsb3NlIGFmdGVyIHNlbmRp
bmcgRkYgMDAuCiAgICAgICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggNDAwNDk5MTA2ZDc5ZjlhODQ1M2IxOTdjNTA1YmZm
YzMzMTdkZTg4My4uOTcwMzE2MjNjYzI2NmU2ZGFhZGU3MjUxYmRlMTE1NzYxMjNiNjU0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY3LDcg
KzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCk7CiAgICAg
dmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xv
c2UoKTsgLy8gU3RhcnQgY2xvc2luZyBoYW5kc2hha2UuCisgICAgdmlydHVhbCB2b2lkIGNsb3Nl
KGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7IC8vIFN0YXJ0IGNsb3NpbmcgaGFuZHNo
YWtlLgogICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpOwogCkBAIC04Myw2ICs4Myw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU29ja2V0U3Ry
ZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAogICAgIGVudW0g
Q2xvc2VFdmVudENvZGUgeworICAgICAgICBDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCA9IC0x
LAogICAgICAgICBDbG9zZUV2ZW50Q29kZU5vcm1hbENsb3N1cmUgPSAxMDAwLAogICAgICAgICBD
bG9zZUV2ZW50Q29kZUdvaW5nQXdheSA9IDEwMDEsCiAgICAgICAgIENsb3NlRXZlbnRDb2RlUHJv
dG9jb2xFcnJvciA9IDEwMDIsCkBAIC05MCw3ICs5MSw5IEBAIHB1YmxpYzoKICAgICAgICAgQ2xv
c2VFdmVudENvZGVGcmFtZVRvb0xhcmdlID0gMTAwNCwKICAgICAgICAgQ2xvc2VFdmVudENvZGVO
b1N0YXR1c1JjdmQgPSAxMDA1LAogICAgICAgICBDbG9zZUV2ZW50Q29kZUFibm9ybWFsQ2xvc3Vy
ZSA9IDEwMDYsCi0gICAgICAgIENsb3NlRXZlbnRDb2RlSW52YWxpZFVURjggPSAxMDA3CisgICAg
ICAgIENsb3NlRXZlbnRDb2RlSW52YWxpZFVURjggPSAxMDA3LAorICAgICAgICBDbG9zZUV2ZW50
Q29kZU1pbmltdW1Vc2VyRGVmaW5lZCA9IDMwMDAsCisgICAgICAgIENsb3NlRXZlbnRDb2RlTWF4
aW11bVVzZXJEZWZpbmVkID0gNDk5OQogICAgIH07CiAKICNpZiBFTkFCTEUoQkxPQikKQEAgLTEx
NSw3ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2tpcEJ1ZmZlcihzaXplX3QgbGVuKTsK
ICAgICBib29sIHByb2Nlc3NCdWZmZXIoKTsKICAgICB2b2lkIHJlc3VtZVRpbWVyRmlyZWQoVGlt
ZXI8V2ViU29ja2V0Q2hhbm5lbD4qKTsKLSAgICB2b2lkIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgp
OworICAgIHZvaWQgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbik7CiAgICAgdm9pZCBjbG9zaW5nVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFu
bmVsPiopOwogCiAgICAgLy8gSHliaS0xMCBvcGNvZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcAppbmRleCA1NmY5N2FhZDAwZjdhNjQxOTZjOGZiY2Y4NWQxYmU1M2I0OGE3NGY3Li40NDk4
OGY2NTYyYjEyNDIxYTBmNDAwNzA0ZWJjMDc2MGViYjAyNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtOTQsMTAgKzk0LDEwIEBAIHVuc2lnbmVkIGxvbmcgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50KCkgY29uc3QKICAgICByZXR1cm4g
bV9icmlkZ2UtPmJ1ZmZlcmVkQW1vdW50KCk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OmNsb3NlKCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAgICBpZiAo
bV9icmlkZ2UpCi0gICAgICAgIG1fYnJpZGdlLT5jbG9zZSgpOworICAgICAgICBtX2JyaWRnZS0+
Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKQEAgLTE4NywxMiArMTg3LDEyIEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmJ1ZmZlcmVkQW1v
dW50KCkKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChj
cmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRHZXRCdWZmZXJlZEFtb3VudCwgbV93
b3JrZXJDbGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudCksIG1fdGFza01vZGUpOwogfQogCi12
b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZSgpCit2b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZShpbnQgY29kZSwg
Y29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKLSAgICBtX21h
aW5XZWJTb2NrZXRDaGFubmVsLT5jbG9zZSgpOworICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwt
PmNsb3NlKGNvZGUsIHJlYXNvbik7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlBlZXI6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCkBAIC0zOTUsMTkgKzM5
NSwxOSBAQCB1bnNpZ25lZCBsb25nIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OmJ1ZmZlcmVkQW1vdW50KCkKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZENsb3NlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIpCit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGVlciogcGVlciwgaW50IGNvZGUsIGNvbnN0IFN0cmluZyZyZWFzb24pCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHBlZXIpOwogCi0gICAgcGVlci0+Y2xvc2Uo
KTsKKyAgICBwZWVyLT5jbG9zZShjb2RlLCByZWFzb24pOwogfQogCi12b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3NlKCkKK3ZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmlu
ZyYgcmVhc29uKQogewogICAgIEFTU0VSVChtX3BlZXIpOwotICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVy
KSkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rh
c2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UsIEFs
bG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSwgY29kZSwgcmVhc29uKSk7CiB9CiAKIHZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRGYWlsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IFN0cmluZyYgcmVhc29u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGE0OGE4YTE5ZDdjMjA4OGMxMmQ5YzE3NjIy
YjIwMTUzNzI1MTE0ZjguLmE4ZDEzM2QzY2RmODFlNzJhODdkYjU4YTY4NWZlMWExMjJhNGIzMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCk7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRB
bW91bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKICAgICB2aXJ0dWFsIHZv
aWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5l
Y3QoKTsgLy8gV2lsbCBzdXBwcmVzcyBkaWRDbG9zZSgpLgogICAgIHZpcnR1YWwgdm9pZCBzdXNw
ZW5kKCk7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY29ubmVjdChj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7CiAgICAgICAgIHZvaWQgc2VuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2b2lkIGJ1ZmZlcmVkQW1vdW50KCk7Ci0g
ICAgICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJiByZWFzb24pOwogICAgICAgICB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24p
OwogICAgICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKICAgICAgICAgdm9pZCBzdXNwZW5kKCk7CkBA
IC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBjb25uZWN0KGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICAgICAgYm9vbCBzZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKTsK
LSAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNv
bik7CiAgICAgICAgIHZvaWQgZGlzY29ubmVjdCgpOwogICAgICAgICB2b2lkIHN1c3BlbmQoKTsK
QEAgLTE2MSw3ICsxNjEsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRD
b25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wpOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRTZW5kKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICBz
dGF0aWMgdm9pZCBtYWluVGhyZWFkQnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBlZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBlZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2xvc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFz
b24pOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRGYWlsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQZWVyKiwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHN0YXRpYyB2b2lkIG1haW5U
aHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKik7CiAgICAgc3RhdGlj
IHZvaWQgbWFpblRocmVhZFN1c3BlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106093</attachid>
            <date>2011-09-01 22:24:18 -0700</date>
            <delta_ts>2011-09-01 23:32:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66925-20110902142416.patch</filename>
            <type>text/plain</type>
            <size>46989</size>
            <attacher name="Takashi Toyoshima">toyoshim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQxNjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YTUzNTQ0ODQ5ZTRiYTJjNjE5NGNj
Yzc1ZDFlMDJhYWI4YTIwMDA0Li5lMDZlNDQ4NzhhMjA3NGY1MDg2ZGVlMTc5NTZmODIwMzZiMjNj
ODMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMzEgIFRha2FzaGkgVG95b3NoaW1h
ICA8dG95b3NoaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtXZWJTb2NrZXRdIEltcGxlbWVu
dCBXZWJTb2NrZXQ6OmNsb3NlKCkgY29kZSBhbmQgcmVhc29uIGhhbmRsaW5nLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY5MjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2Vfd3NoLnB5OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvY2xvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jbG9zZS5qczogQWRkZWQuCisgICAg
ICAgIChwb3N0UmVzdWx0KToKKyAgICAgICAgKHRlc3RGYWlsZWQpOgorICAgICAgICAoZGVidWcp
OgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVUcnVlKToKKyAgICAgICAg
KHNob3VsZEJlRmFsc2UpOgorICAgICAgICAoaGFuZGxlT3Blbik6CisgICAgICAgIChoYW5kbGVF
cnJvcik6CisgICAgICAgIChoYW5kbGVDbG9zZSk6CisgICAgICAgIChoYW5kbGVNZXNzYWdlKToK
KyAgICAgICAgKHNldERlZmF1bHRIYW5kbGVycyk6CisgICAgICAgIChydW5Db2RlVGVzdC5lbHNl
LndzLm9uY2xvc2UpOgorICAgICAgICAocnVuQ29kZVRlc3QpOgorICAgICAgICAocnVuSW52YWxp
ZFN0cmluZ1Rlc3QpOgorICAgICAgICAocnVuUmVhc29uVGVzdC5lbHNlLndzLm9uY2xvc2UpOgor
ICAgICAgICAocnVuUmVhc29uVGVzdCk6CisgICAgICAgIChydW5Db2RlQW5kUmVhc29uVGVzdC4p
OgorICAgICAgICAocnVuQ29kZUFuZFJlYXNvblRlc3QpOgorCiAyMDExLTA4LTMxICBBbGV4YW5k
ZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBV
bnJldmlld2VkLCByZWJhc2VsaW5lIGFub3RoZXIgbXVsdGljb2wgdGVzdCBleHBlY3RhdGlvbi4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWYzOTczOTUzYzhjNjQxMzI4
NmQxYmJjZmQyMmI2OTg5Nzg0ZWJkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2xvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTA4IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBi
ZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJs
aXNoZWQuCitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlvcnMuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworSW52YWxpZCBjb2RlIHRlc3Q6IDAKK0NvZGUgOTk5IG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0
aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vz
c0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDEKK0NvZGUgMTAwMSBtdXN0IGNhdXNlIElOVkFMSURf
QUNDRVNTX0VSUi4KK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5
cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFs
aWQgY29kZSB0ZXN0OiAyCitDb2RlIDI5OTkgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIu
CitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUK
K1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVz
dDogMworQ29kZSA1MDAwIG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNl
cHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2Vw
dGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDQKK0NvZGUg
NjY1MzYgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIGV4Y2VwdGlvblByb3Rv
ID09PSBET01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBp
cyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogNQorQ29kZSA0Mjk0OTY4Mjk2
IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0g
RE9NRXhjZXB0aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52
YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDYKK0NvZGUgMjk5OS45IG11c3QgY2F1
c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0
aW9uLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vz
c0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDcKK0NvZGUgTmFOIG11c3QgY2F1c2UgSU5WQUxJRF9B
Q0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlw
ZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxp
ZCBjb2RlIHRlc3Q6IDgKK0NvZGUgMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BB
U1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFT
UyBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiA5
CitDb2RlIDEwMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgZXhjZXB0aW9u
UHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25O
YW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxMAorQ29kZSBJbmZp
bml0eSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgZXhjZXB0aW9uUHJvdG8g
PT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlz
IGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxMQorQ29kZSAtSW5maW5pdHkg
bXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIGV4Y2VwdGlvblByb3RvID09PSBE
T01FeGNlcHRpb24ucHJvdG90eXBlIGlzIHRydWUKK1BBU1MgZXhjZXB0aW9uTmFtZSBpcyBpbnZh
bGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMTIKK0NvZGUgTmFOIG11c3QgY2F1c2Ug
SU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBleGNlcHRpb25Qcm90byA9PT0gRE9NRXhjZXB0aW9u
LnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0Vy
cgorcnVuQ29kZVRlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGFibm9y
bWFsQ2xvc3VyZQorU2tpcCBpbnZhbGlkIHN0cmluZyB0ZXN0LgorUmVhc29uIHRlc3Q6IDAKKyAg
d2l0aCBpbnZhbGlkIHJlYXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNAorUmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQgbXVzdCBj
YXVzZSBTWU5UQVhfRVJSLgorUEFTUyByZXN1bHQgaXMgZmFsc2UKK1BBU1MgZXhjZXB0aW9uUHJv
dG8gPT09IERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1l
IGlzIHN5bnRheEVycgorUmVhc29uIHRlc3Q6IDEKKyAgd2l0aCBpbnZhbGlkIHJlYXNvbjogMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw
MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTLCqQorUmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEywqkgbXVzdCBjYXVzZSBTWU5UQVhfRVJSLgorUEFTUyBy
ZXN1bHQgaXMgZmFsc2UKK1BBU1MgZXhjZXB0aW9uUHJvdG8gPT09IERPTUV4Y2VwdGlvbi5wcm90
b3R5cGUgaXMgdHJ1ZQorUEFTUyBleGNlcHRpb25OYW1lIGlzIHN5bnRheEVycgorUmVhc29uIHRl
c3Q6IDIKK3J1blJlYXNvblRlc3Q6IG9uY2xvc2UoKS4KK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlz
IGFibm9ybWFsQ2xvc3VyZQorQ29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK0NvZGUgYW5kIHJlYXNv
biBtdXN0IGJlCisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9LLCBCeWUhCitQQVNTIGNsb3Nl
RXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMgY29kZQorUEFT
UyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAxCitD
b2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDMwMDAKKyAgcmVhc29uOiAzMDAwCitQ
QVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBjbG9zZUV2ZW50LmNvZGUgaXMg
Y29kZQorUEFTUyBjbG9zZUV2ZW50LnJlYXNvbiBpcyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0
ZXN0OiAyCitDb2RlIGFuZCByZWFzb24gbXVzdCBiZQorICBjb2RlICA6IDQwMDAKKyAgcmVhc29u
OiBjb2RlIGlzIDQwMDAKK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIGNs
b3NlRXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIGNsb3NlRXZlbnQucmVhc29uIGlzIHJlYXNvbgor
Q29kZSBhbmQgcmVhc29uIHRlc3Q6IDMKK0NvZGUgYW5kIHJlYXNvbiBtdXN0IGJlCisgIGNvZGUg
IDogNDk5OQorICByZWFzb246IMKpIEdvb2dsZQorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlz
IHRydWUKK1BBU1MgY2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgY2xvc2VFdmVudC5yZWFz
b24gaXMgcmVhc29uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9jbG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0YjgwNWZhNzc0ZWU0YTAxOTEwMjE5MzQ1
NDY2YTliZmUxYzVkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwKQEAgLTAsMCArMSwxOTMgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3Vy
Y2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0
LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oIlZlcmlmeSBXZWJTb2Nr
ZXQ6OmNsb3NlIGJlaGF2aW9ycy4iKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJs
ZWQiLCAwKTsKKwordmFyIGV4Y2VwdGlvbk5hbWU7Cit2YXIgZXhjZXB0aW9uUHJvdG87Cit2YXIg
Y2xvc2VFdmVudDsKK3ZhciBjb2RlOwordmFyIHJlYXNvbjsKK3ZhciByZXN1bHQ7Cit2YXIgaW52
YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElEX0FDQ0VTU19FUlIiOwordmFyIHN5bnRheEVyciA9ICJT
WU5UQVhfRVJSIjsKK3ZhciBub3JtYWxDbG9zdXJlID0gMTAwMDsKK3ZhciBhYm5vcm1hbENsb3N1
cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsKK3ZhciB0ZXN0SWQ7CisKK3ZhciBjb2RlVGVzdENvZGVz
ID0gWworICAgIDk5OSwgMTAwMSwgMjk5OSwgNTAwMCwgNjU1MzYgKyAxMDAwLCAweDEwMDAwMDAw
MCArIDEwMDAsIDI5OTkuOSwgTmFOLCAiMCIsICIxMDAiLCAxLzAsIC0xLzAsIDAvMCwKKyAgICAx
MDAwLjAKK107CisKK3ZhciByZWFzb25UZXN0UmVhc29ucyA9IFsKKyAgICAiMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCIs
IC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyXHUwMGE5IiwgLy8gbGVuZ3RoIGlzIDEyMywgYnV0
IDEyNCBCeXRlIGluIFVURi04CisgICAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMyIsIC8vIDEyMyBCeXRlCitdOworCit2
YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBbCisgICAgZmFsc2UsCisgICAgZmFsc2UsCisgICAgdHJ1
ZSwKK107CisKK2Z1bmN0aW9uIGhhbmRsZU9wZW4oKQoreworICAgIHRlc3RGYWlsZWQoImhhbmRs
ZU9wZW4oKSB3YXMgY2FsbGVkLiIpOworfQorCitmdW5jdGlvbiBoYW5kbGVFcnJvcigpCit7Cisg
ICAgdGVzdEZhaWxlZCgiaGFuZGxlRXJyb3IoKSB3YXMgY2FsbGVkLiIpOworfQorCitmdW5jdGlv
biBoYW5kbGVDbG9zZSgpCit7CisgICAgdGVzdEZhaWxlZCgiaGFuZGxlQ2xvc2UoKSB3YXMgY2Fs
bGVkLiIpOworfQorCitmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKCkKK3sKKyAgICB0ZXN0RmFpbGVk
KCJoYW5kbGVNZXNzYWdlKCkgd2FzIGNhbGxlZC4iKTsKK30KKworZnVuY3Rpb24gc2V0RGVmYXVs
dEhhbmRsZXJzKHdzKQoreworICAgIHdzLm9ub3BlbiA9IGhhbmRsZU9wZW47CisgICAgd3Mub25l
cnJvciA9IGhhbmRsZUVycm9yOworICAgIHdzLm9uY2xvc2UgPSBoYW5kbGVDbG9zZTsKKyAgICB3
cy5vbm1lc3NhZ2UgPSBoYW5kbGVNZXNzYWdlOworfQorCitmdW5jdGlvbiBydW5Db2RlVGVzdCgp
Cit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgc2V0RGVmYXVsdEhhbmRsZXJz
KHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlkIDwgY29kZVRlc3RDb2Rlcy5sZW5ndGg7IGlk
KyspIHsKKyAgICAgICAgaWYgKGNvZGVUZXN0Q29kZXNbaWRdICE9IG5vcm1hbENsb3N1cmUpIHsK
KyAgICAgICAgICAgIGRlYnVnKCJJbnZhbGlkIGNvZGUgdGVzdDogIiArIGlkKTsKKyAgICAgICAg
ICAgIHdzLm9uY2xvc2UgPSBoYW5kbGVDbG9zZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHdzLm9uY2xvc2UgPSBmdW5jdGlvbiAoZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygicnVuQ29kZVRlc3Q6IG9uY2xvc2UoKS4iKTsKKyAgICAgICAgICAgICAgICBj
bG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2Rl
IiwgImFibm9ybWFsQ2xvc3VyZSIpOworICAgICAgICAgICAgICAgIGlmIChjbG9zZUV2ZW50LmNv
ZGUgPT0gYWJub3JtYWxDbG9zdXJlKQorICAgICAgICAgICAgICAgICAgICBydW5JbnZhbGlkU3Ry
aW5nVGVzdCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAg
ICAgICAgICAgd3MuY2xvc2UoY29kZVRlc3RDb2Rlc1tpZF0pOworICAgICAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgICAgICBkZWJ1ZygiQ29kZSAiICsgY29kZVRlc3RDb2Rlc1tpZF0gKyAiIG11
c3QgY2F1c2UgIiArIGludmFsaWRBY2Nlc3NFcnIgKyAnLicpOworICAgICAgICAgICAgZXhjZXB0
aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblByb3RvID0gT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKGUpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJleGNlcHRpb25Qcm90
byA9PT0gRE9NRXhjZXB0aW9uLnByb3RvdHlwZSIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4
Y2VwdGlvbk5hbWUiLCAiaW52YWxpZEFjY2Vzc0VyciIpOworICAgICAgICB9CisgICAgfQorfQor
CitmdW5jdGlvbiBydW5JbnZhbGlkU3RyaW5nVGVzdCgpCit7CisgICAgLy8gRklYTUU6IHVucGFp
cmVkIHN1cnJvZ2F0ZXMgdGhyb3cgU1lOVEFYX0VSUgorICAgIGRlYnVnKCJTa2lwIGludmFsaWQg
c3RyaW5nIHRlc3QuIik7CisgICAgcnVuUmVhc29uVGVzdCgpOworfQorCitmdW5jdGlvbiBydW5S
ZWFzb25UZXN0KCkKK3sKKyAgICB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKyAgICBzZXREZWZh
dWx0SGFuZGxlcnMod3MpOworICAgIGZvciAodmFyIGlkID0gMDsgaWQgPCByZWFzb25UZXN0UmVh
c29ucy5sZW5ndGg7IGlkKyspIHsKKyAgICAgICAgZGVidWcoIlJlYXNvbiB0ZXN0OiAiICsgaWQp
OworICAgICAgICBpZiAoIXJlYXNvblRlc3RSZXN1bHRzW2lkXSkgeworICAgICAgICAgICAgZGVi
dWcoIiAgd2l0aCBpbnZhbGlkIHJlYXNvbjogIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSk7Cisg
ICAgICAgICAgICB3cy5vbmNsb3NlID0gaGFuZGxlQ2xvc2U7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZGVidWcoInJ1blJlYXNvblRlc3Q6IG9uY2xvc2UoKS4iKTsKKyAgICAgICAg
ICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VF
dmVudC5jb2RlIiwgImFibm9ybWFsQ2xvc3VyZSIpOworICAgICAgICAgICAgICAgIGlmIChjbG9z
ZUV2ZW50LmNvZGUgPT0gYWJub3JtYWxDbG9zdXJlKQorICAgICAgICAgICAgICAgICAgICBydW5D
b2RlQW5kUmVhc29uVGVzdCgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICB0
cnkgeworICAgICAgICAgICAgd3MuY2xvc2Uobm9ybWFsQ2xvc3VyZSwgcmVhc29uVGVzdFJlYXNv
bnNbaWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZGVidWcoIlJlYXNv
biAiICsgcmVhc29uVGVzdFJlYXNvbnNbaWRdICsgIiBtdXN0IGNhdXNlICIgKyBzeW50YXhFcnIg
KyAnLicpOworICAgICAgICAgICAgcmVzdWx0ID0gcmVhc29uVGVzdFJlc3VsdHNbaWRdOworICAg
ICAgICAgICAgZXhjZXB0aW9uTmFtZSA9IGUubmFtZTsKKyAgICAgICAgICAgIGV4Y2VwdGlvblBy
b3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOworICAgICAgICAgICAgc2hvdWxkQmVGYWxz
ZSgicmVzdWx0Iik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImV4Y2VwdGlvblByb3RvID09
PSBET01FeGNlcHRpb24ucHJvdG90eXBlIik7CisgICAgICAgICAgICBzaG91bGRCZSgiZXhjZXB0
aW9uTmFtZSIsICJzeW50YXhFcnIiKTsKKyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24g
cnVuQ29kZUFuZFJlYXNvblRlc3QoKQoreworICAgIHZhciBjb2RlcyA9IFsKKyAgICAgICAgMTAw
MCwKKyAgICAgICAgMzAwMCwKKyAgICAgICAgNDAwMCwKKyAgICAgICAgNDk5OQorICAgIF07Cisg
ICAgdmFyIHJlYXNvbnMgPSBbCisgICAgICAgICJPSywgQnllISIsCisgICAgICAgICIzMDAwIiwK
KyAgICAgICAgImNvZGUgaXMgNDAwMCIsCisgICAgICAgICJcdTAwYTkgR29vZ2xlIgorICAgIF07
CisgICAgKGZ1bmN0aW9uIHRlc3QgKGlkKSB7CisgICAgICAgIGRlYnVnKCJDb2RlIGFuZCByZWFz
b24gdGVzdDogIiArIGlkKTsKKyAgICAgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAg
ICAgIHNldERlZmF1bHRIYW5kbGVycyh3cyk7CisgICAgICAgIHdzLm9ub3BlbiA9IGZ1bmN0aW9u
ICgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVzW2lkXSwgcmVhc29uc1tp
ZF0pOworICAgICAgICB9OworICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24gKGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNsb3NlRXZlbnQgPSBlOworICAgICAgICAgICAgY29kZSA9IGNv
ZGVzW2lkXTsKKyAgICAgICAgICAgIHJlYXNvbiA9IHJlYXNvbnNbaWRdOworICAgICAgICAgICAg
ZGVidWcoIkNvZGUgYW5kIHJlYXNvbiBtdXN0IGJlIik7CisgICAgICAgICAgICBkZWJ1ZygiICBj
b2RlICA6ICIgKyBjb2RlKTsKKyAgICAgICAgICAgIGRlYnVnKCIgIHJlYXNvbjogIiArIHJlYXNv
bik7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LmNvZGUiLCAiY29kZSIpOworICAgICAgICAg
ICAgc2hvdWxkQmUoImNsb3NlRXZlbnQucmVhc29uIiwgInJlYXNvbiIpOworICAgICAgICAgICAg
aWYgKCsraWQgIT0gY29kZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHRlc3QoaWQpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
OworICAgIH0pKDApOworfQorCitydW5Db2RlVGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3Qt
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Ns
b3NlX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
Y2xvc2Vfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiMDJkNjYyNjdlMjk0Y2U4Mzk3N2RhYzY0ZjA3NTk4
MTcwNTY0N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2Nsb3NlX3dzaC5weQpAQCAtMCwwICsxLDUzIEBACisjIENvcHlyaWdo
dCAyMDExLCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCitpbXBvcnQgbG9nZ2luZworX0dPT0RCWUVfTUVTU0FHRSA9IHUnR29vZGJ5ZScK
KworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFz
cyAgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVx
dWVzdCk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFt
LnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIHVuaWNvZGUpOgorICAgICAgICAg
ICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKKyAg
ICAgICAgICAgIGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRf
bWVzc2FnZShsaW5lLCBiaW5hcnk9VHJ1ZSkKKworCitkZWYgd2ViX3NvY2tldF9wYXNzaXZlX2Ns
b3NpbmdfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHJldHVybiByZXF1ZXN0LndzX2Nsb3NlX2Nv
ZGUsIHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3Nl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzQ3NWIxNzBhMTU4YTRiOWI1Nzk5Mjg4YjExNDky
NzVhZjRhOTgzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDk0
IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogV2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUg
dGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDog
V2ViU29ja2V0IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQu
CitWZXJpZnkgV2ViU29ja2V0OjpjbG9zZSBiZWhhdmlvcnMgaW4gV29ya2VyLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK0ludmFsaWQgY29kZSB0ZXN0OiAwCitDb2RlIDk5OSBtdXN0
IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25O
YW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiAxCitDb2RlIDEwMDEg
bXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0
aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMgorQ29kZSAy
OTk5IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4
Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDMKK0Nv
ZGUgNTAwMCBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgUEFTUzogd29ya2Vy
OiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFsaWQgY29kZSB0ZXN0OiA0
CitDb2RlIDY2NTM2IG11c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBQQVNTOiB3
b3JrZXI6IGV4Y2VwdGlvbk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRl
c3Q6IDUKK0NvZGUgNDI5NDk2ODI5NiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BB
U1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK0ludmFs
aWQgY29kZSB0ZXN0OiA2CitDb2RlIDI5OTkuOSBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VS
Ui4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIK
K0ludmFsaWQgY29kZSB0ZXN0OiA3CitDb2RlIE5hTiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNT
X0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNlcHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NF
cnIKK0ludmFsaWQgY29kZSB0ZXN0OiA4CitDb2RlIDAgbXVzdCBjYXVzZSBJTlZBTElEX0FDQ0VT
U19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNjZXNz
RXJyCitJbnZhbGlkIGNvZGUgdGVzdDogOQorQ29kZSAxMDAgbXVzdCBjYXVzZSBJTlZBTElEX0FD
Q0VTU19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBpbnZhbGlkQWNj
ZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMTAKK0NvZGUgSW5maW5pdHkgbXVzdCBjYXVzZSBJ
TlZBTElEX0FDQ0VTU19FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogZXhjZXB0aW9uTmFtZSBpcyBp
bnZhbGlkQWNjZXNzRXJyCitJbnZhbGlkIGNvZGUgdGVzdDogMTEKK0NvZGUgLUluZmluaXR5IG11
c3QgY2F1c2UgSU5WQUxJRF9BQ0NFU1NfRVJSLgorUEFTUyBQQVNTOiB3b3JrZXI6IGV4Y2VwdGlv
bk5hbWUgaXMgaW52YWxpZEFjY2Vzc0VycgorSW52YWxpZCBjb2RlIHRlc3Q6IDEyCitDb2RlIE5h
TiBtdXN0IGNhdXNlIElOVkFMSURfQUNDRVNTX0VSUi4KK1BBU1MgUEFTUzogd29ya2VyOiBleGNl
cHRpb25OYW1lIGlzIGludmFsaWRBY2Nlc3NFcnIKK3J1bkNvZGVUZXN0OiBvbmNsb3NlKCkuCitQ
QVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlzIGFibm9ybWFsQ2xvc3VyZQorU2tp
cCBpbnZhbGlkIHN0cmluZyB0ZXN0LgorUmVhc29uIHRlc3Q6IDAKKyAgd2l0aCBpbnZhbGlkIHJl
YXNvbjogMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNAorUmVhc29uIDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQgbXVzdCBjYXVzZSBTWU5UQVhfRVJS
LgorUEFTUyBQQVNTOiB3b3JrZXI6IHJlc3VsdCBpcyBmYWxzZQorUEFTUyBQQVNTOiB3b3JrZXI6
IGV4Y2VwdGlvbk5hbWUgaXMgc3ludGF4RXJyCitSZWFzb24gdGVzdDogMQorICB3aXRoIGludmFs
aWQgcmVhc29uOiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2
Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz
NDU2Nzg5MDEyMzQ1Njc4OTAxMsKpCitSZWFzb24gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3
ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0
NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTLCqSBtdXN0IGNhdXNlIFNZTlRB
WF9FUlIuCitQQVNTIFBBU1M6IHdvcmtlcjogcmVzdWx0IGlzIGZhbHNlCitQQVNTIFBBU1M6IHdv
cmtlcjogZXhjZXB0aW9uTmFtZSBpcyBzeW50YXhFcnIKK1JlYXNvbiB0ZXN0OiAyCitydW5SZWFz
b25UZXN0OiBvbmNsb3NlKCkuCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5jb2RlIGlz
IGFibm9ybWFsQ2xvc3VyZQorQ29kZSBhbmQgcmVhc29uIHRlc3Q6IDAKK0NvZGUgYW5kIHJlYXNv
biBtdXN0IGJlCisgIGNvZGUgIDogMTAwMAorICByZWFzb246IE9LLCBCeWUhCitQQVNTIFBBU1M6
IHdvcmtlcjogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIFBBU1M6IHdvcmtlcjog
Y2xvc2VFdmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LnJl
YXNvbiBpcyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAxCitDb2RlIGFuZCByZWFzb24g
bXVzdCBiZQorICBjb2RlICA6IDMwMDAKKyAgcmVhc29uOiAzMDAwCitQQVNTIFBBU1M6IHdvcmtl
cjogY2xvc2VFdmVudC53YXNDbGVhbiBpcyB0cnVlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VF
dmVudC5jb2RlIGlzIGNvZGUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9zZUV2ZW50LnJlYXNvbiBp
cyByZWFzb24KK0NvZGUgYW5kIHJlYXNvbiB0ZXN0OiAyCitDb2RlIGFuZCByZWFzb24gbXVzdCBi
ZQorICBjb2RlICA6IDQwMDAKKyAgcmVhc29uOiBjb2RlIGlzIDQwMDAKK1BBU1MgUEFTUzogd29y
a2VyOiBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIHRydWUKK1BBU1MgUEFTUzogd29ya2VyOiBjbG9z
ZUV2ZW50LmNvZGUgaXMgY29kZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3NlRXZlbnQucmVhc29u
IGlzIHJlYXNvbgorQ29kZSBhbmQgcmVhc29uIHRlc3Q6IDMKK0NvZGUgYW5kIHJlYXNvbiBtdXN0
IGJlCisgIGNvZGUgIDogNDk5OQorICByZWFzb246IMKpIEdvb2dsZQorUEFTUyBQQVNTOiB3b3Jr
ZXI6IGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgdHJ1ZQorUEFTUyBQQVNTOiB3b3JrZXI6IGNsb3Nl
RXZlbnQuY29kZSBpcyBjb2RlCitQQVNTIFBBU1M6IHdvcmtlcjogY2xvc2VFdmVudC5yZWFzb24g
aXMgcmVhc29uCitET05FCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvY2xvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGM2NjIw
ZTg3NDBjNjY5YjFiMjEyZGI0ZGQxYjkxMjQzZmVmMjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL2Nsb3NlLmh0
bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vanMtdGVz
dC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCJWZXJpZnkgV2ViU29j
a2V0OjpjbG9zZSBiZWhhdmlvcnMgaW4gV29ya2VyLiIpOworCit3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0SGl4aWU3NldlYlNvY2tldFBy
b3RvY29sRW5hYmxlZCIsIDApOworCitmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgcHJlZml4KQor
eworICAgIHJldHVybiBzdHIuaW5kZXhPZihwcmVmaXgpID09IDA7Cit9CisKK3ZhciB3b3JrZXIg
PSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvY2xvc2UuanMiKTsKK3dvcmtlci5vbm1lc3NhZ2UgPSBm
dW5jdGlvbiAoZXZlbnQpCit7CisgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOworICAgIGlm
IChzdGFydHNXaXRoKG1lc3NhZ2UsICJQQVNTIikpCisgICAgICAgIHRlc3RQYXNzZWQobWVzc2Fn
ZSk7CisgICAgZWxzZSBpZiAoc3RhcnRzV2l0aChtZXNzYWdlLCAiRkFJTCIpKQorICAgICAgICB0
ZXN0RmFpbGVkKG1lc3NhZ2UpCisgICAgZWxzZQorICAgICAgICBkZWJ1ZyhtZXNzYWdlKTsKKyAg
ICBpZiAobWVzc2FnZSA9PT0gIkRPTkUiKQorICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKK307CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2xvc2UuanMgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Ns
b3NlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdmZDA2ZWYwNTRjYTUyMWYxODQ5MjI5M2U3M2E4Y2E2MmRkMDVm
ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL2Nsb3NlLmpzCkBAIC0wLDAgKzEsMjA1IEBACitm
dW5jdGlvbiBwb3N0UmVzdWx0KHJlc3VsdCwgYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICB2YXIg
bWVzc2FnZSA9IHJlc3VsdCA/ICJQQVNTIiA6ICJGQUlMIjsKKyAgICBtZXNzYWdlICs9ICI6IHdv
cmtlcjogIiArIGFjdHVhbCArICIgaXMgIjsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgbWVz
c2FnZSArPSAibm90ICI7CisgICAgbWVzc2FnZSArPSBleHBlY3RlZDsKKyAgICBwb3N0TWVzc2Fn
ZShtZXNzYWdlKTsKK30KKworZnVuY3Rpb24gdGVzdEZhaWxlZChtZXNzYWdlKQoreworICAgIHBv
c3RNZXNzYWdlKCJGQUlMOiAiICsgbWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIGRlYnVnKG1lc3Nh
Z2UpCit7CisgICAgcG9zdE1lc3NhZ2UobWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpCit7CisgICAgdmFyIF9yZXN1bHQgPSBldmFsKGFjdHVhbCArICIg
PT0gIiArIGV4cGVjdGVkKTsKKyAgICBwb3N0UmVzdWx0KF9yZXN1bHQsIGFjdHVhbCwgZXhwZWN0
ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZVRydWUoYWN0dWFsKQoreworICAgIHNob3VsZEJl
KGFjdHVhbCwgInRydWUiKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVGYWxzZShhY3R1YWwpCit7
CisgICAgc2hvdWxkQmUoYWN0dWFsLCAiZmFsc2UiKTsKK30KKwordmFyIGV4Y2VwdGlvbk5hbWU7
Cit2YXIgZXhjZXB0aW9uUHJvdG87Cit2YXIgY2xvc2VFdmVudDsKK3ZhciBjb2RlOwordmFyIHJl
YXNvbjsKK3ZhciByZXN1bHQ7Cit2YXIgaW52YWxpZEFjY2Vzc0VyciA9ICJJTlZBTElEX0FDQ0VT
U19FUlIiOwordmFyIHN5bnRheEVyciA9ICJTWU5UQVhfRVJSIjsKK3ZhciBub3JtYWxDbG9zdXJl
ID0gMTAwMDsKK3ZhciBhYm5vcm1hbENsb3N1cmUgPSAxMDA2OwordmFyIHVybCA9ICJ3czovLzEy
Ny4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlIjsKK3ZhciB3czsKK3ZhciB0
ZXN0SWQ7CisKK3ZhciBjb2RlVGVzdENvZGVzID0gWworICAgIDk5OSwgMTAwMSwgMjk5OSwgNTAw
MCwgNjU1MzYgKyAxMDAwLCAweDEwMDAwMDAwMCArIDEwMDAsIDI5OTkuOSwgTmFOLCAiMCIsICIx
MDAiLCAxLzAsIC0xLzAsIDAvMCwKKyAgICAxMDAwLjAKK107CisKK3ZhciByZWFzb25UZXN0UmVh
c29ucyA9IFsKKyAgICAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNCIsIC8vIDEyNCBCeXRlCisgICAgIjEyMzQ1Njc4OTAx
MjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4
OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyXHUw
MGE5IiwgLy8gbGVuZ3RoIGlzIDEyMywgYnV0IDEyNCBCeXRlIGluIFVURi04CisgICAgIjEyMzQ1
Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEy
MzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5
MDEyMyIsIC8vIDEyMyBCeXRlCitdOworCit2YXIgcmVhc29uVGVzdFJlc3VsdHMgPSBbCisgICAg
ZmFsc2UsCisgICAgZmFsc2UsCisgICAgdHJ1ZSwKK107CisKK2Z1bmN0aW9uIGhhbmRsZU9wZW4o
KQoreworICAgIHRlc3RGYWlsZWQoImhhbmRsZU9wZW4oKSB3YXMgY2FsbGVkLiIpOworfTsKKwor
ZnVuY3Rpb24gaGFuZGxlRXJyb3IoKQoreworICAgIHRlc3RGYWlsZWQoImhhbmRsZUVycm9yKCkg
d2FzIGNhbGxlZC4iKTsKK307CisKK2Z1bmN0aW9uIGhhbmRsZUNsb3NlKCkKK3sKKyAgICB0ZXN0
RmFpbGVkKCJoYW5kbGVDbG9zZSgpIHdhcyBjYWxsZWQuIik7Cit9OworCitmdW5jdGlvbiBoYW5k
bGVNZXNzYWdlKCkKK3sKKyAgICB0ZXN0RmFpbGVkKCJoYW5kbGVNZXNzYWdlKCkgd2FzIGNhbGxl
ZC4iKTsKK307CisKK2Z1bmN0aW9uIHNldERlZmF1bHRIYW5kbGVycyh3cykKK3sKKyAgICB3cy5v
bm9wZW4gPSBoYW5kbGVPcGVuOworICAgIHdzLm9uZXJyb3IgPSBoYW5kbGVFcnJvcjsKKyAgICB3
cy5vbmNsb3NlID0gaGFuZGxlQ2xvc2U7CisgICAgd3Mub25tZXNzYWdlID0gaGFuZGxlTWVzc2Fn
ZTsKK30KKworZnVuY3Rpb24gcnVuQ29kZVRlc3QoKQoreworICAgIHdzID0gbmV3IFdlYlNvY2tl
dCh1cmwpOworICAgIHNldERlZmF1bHRIYW5kbGVycyh3cyk7CisgICAgZm9yICh2YXIgaWQgPSAw
OyBpZCA8IGNvZGVUZXN0Q29kZXMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGlmIChjb2RlVGVz
dENvZGVzW2lkXSAhPSBub3JtYWxDbG9zdXJlKSB7CisgICAgICAgICAgICBkZWJ1ZygiSW52YWxp
ZCBjb2RlIHRlc3Q6ICIgKyBpZCk7CisgICAgICAgICAgICB3cy5vbmNsb3NlID0gaGFuZGxlQ2xv
c2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB3cy5vbmNsb3NlID0gZnVuY3Rpb24g
KGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVidWcoInJ1bkNvZGVUZXN0OiBv
bmNsb3NlKCkuIik7CisgICAgICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5vcm1hbENsb3N1cmUiKTsKKyAg
ICAgICAgICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2RlID09IGFibm9ybWFsQ2xvc3VyZSkKKyAg
ICAgICAgICAgICAgICAgICAgcnVuSW52YWxpZFN0cmluZ1Rlc3QoKTsKKyAgICAgICAgICAgIH07
CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKGNvZGVUZXN0
Q29kZXNbaWRdKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZGVidWcoIkNv
ZGUgIiArIGNvZGVUZXN0Q29kZXNbaWRdICsgIiBtdXN0IGNhdXNlICIgKyBpbnZhbGlkQWNjZXNz
RXJyICsgJy4nKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAgICAg
ICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJleGNlcHRpb25OYW1lIiwgImludmFsaWRBY2Nlc3NFcnIiKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gcnVuSW52YWxpZFN0cmluZ1Rlc3QoKQoreworICAg
IC8vIEZJWE1FOiB1bnBhaXJlZCBzdXJyb2dhdGVzIHRocm93IFNZTlRBWF9FUlIKKyAgICBkZWJ1
ZygiU2tpcCBpbnZhbGlkIHN0cmluZyB0ZXN0LiIpOworICAgIHJ1blJlYXNvblRlc3QoKTsKK30K
KworZnVuY3Rpb24gcnVuUmVhc29uVGVzdCgpCit7CisgICAgd3MgPSBuZXcgV2ViU29ja2V0KHVy
bCk7CisgICAgc2V0RGVmYXVsdEhhbmRsZXJzKHdzKTsKKyAgICBmb3IgKHZhciBpZCA9IDA7IGlk
IDwgcmVhc29uVGVzdFJlYXNvbnMubGVuZ3RoOyBpZCsrKSB7CisgICAgICAgIGRlYnVnKCJSZWFz
b24gdGVzdDogIiArIGlkKTsKKyAgICAgICAgaWYgKCFyZWFzb25UZXN0UmVzdWx0c1tpZF0pIHsK
KyAgICAgICAgICAgIGRlYnVnKCIgIHdpdGggaW52YWxpZCByZWFzb246ICIgKyByZWFzb25UZXN0
UmVhc29uc1tpZF0pOworICAgICAgICAgICAgd3Mub25jbG9zZSA9IGhhbmRsZUNsb3NlOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlYnVnKCJydW5SZWFzb25UZXN0OiBvbmNsb3Nl
KCkuIik7CisgICAgICAgICAgICAgICAgY2xvc2VFdmVudCA9IGU7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoImNsb3NlRXZlbnQuY29kZSIsICJhYm5vcm1hbENsb3N1cmUiKTsKKyAgICAgICAg
ICAgICAgICBpZiAoY2xvc2VFdmVudC5jb2RlID09IGFibm9ybWFsQ2xvc3VyZSkKKyAgICAgICAg
ICAgICAgICAgICAgcnVuQ29kZUFuZFJlYXNvblRlc3QoKTsKKyAgICAgICAgICAgIH07CisgICAg
ICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdzLmNsb3NlKG5vcm1hbENsb3N1cmUs
IHJlYXNvblRlc3RSZWFzb25zW2lkXSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJSZWFzb24gIiArIHJlYXNvblRlc3RSZWFzb25zW2lkXSArICIgbXVzdCBjYXVz
ZSAiICsgc3ludGF4RXJyICsgJy4nKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlYXNvblRlc3RS
ZXN1bHRzW2lkXTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbk5hbWUgPSBlLm5hbWU7CisgICAgICAg
ICAgICBleGNlcHRpb25Qcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihlKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlRmFsc2UoInJlc3VsdCIpOworICAgICAgICAgICAgc2hvdWxkQmUoImV4Y2Vw
dGlvbk5hbWUiLCAic3ludGF4RXJyIik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHJ1bkNvZGVBbmRSZWFzb25UZXN0KCkKK3sKKyAgICB2YXIgY29kZXMgPSBbCisgICAgICAgIDEw
MDAsCisgICAgICAgIDMwMDAsCisgICAgICAgIDQwMDAsCisgICAgICAgIDQ5OTkKKyAgICBdOwor
ICAgIHZhciByZWFzb25zID0gWworICAgICAgICAiT0ssIEJ5ZSEiLAorICAgICAgICAiMzAwMCIs
CisgICAgICAgICJjb2RlIGlzIDQwMDAiLAorICAgICAgICAiXHUwMGE5IEdvb2dsZSIKKyAgICBd
OworICAgIChmdW5jdGlvbiB0ZXN0IChpZCkgeworICAgICAgICBkZWJ1ZygiQ29kZSBhbmQgcmVh
c29uIHRlc3Q6ICIgKyBpZCk7CisgICAgICAgIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAg
ICAgICBzZXREZWZhdWx0SGFuZGxlcnMod3MpOworICAgICAgICB3cy5vbm9wZW4gPSBmdW5jdGlv
biAoKQorICAgICAgICB7CisgICAgICAgICAgICB3cy5jbG9zZShjb2Rlc1tpZF0sIHJlYXNvbnNb
aWRdKTsKKyAgICAgICAgfTsKKyAgICAgICAgd3Mub25jbG9zZSA9IGZ1bmN0aW9uIChlKQorICAg
ICAgICB7CisgICAgICAgICAgICBjbG9zZUV2ZW50ID0gZTsKKyAgICAgICAgICAgIGNvZGUgPSBj
b2Rlc1tpZF07CisgICAgICAgICAgICByZWFzb24gPSByZWFzb25zW2lkXTsKKyAgICAgICAgICAg
IGRlYnVnKCJDb2RlIGFuZCByZWFzb24gbXVzdCBiZSIpOworICAgICAgICAgICAgZGVidWcoIiAg
Y29kZSAgOiAiICsgY29kZSk7CisgICAgICAgICAgICBkZWJ1ZygiICByZWFzb246ICIgKyByZWFz
b24pOworICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJjbG9zZUV2ZW50Lndhc0NsZWFuIik7Cisg
ICAgICAgICAgICBzaG91bGRCZSgiY2xvc2VFdmVudC5jb2RlIiwgImNvZGUiKTsKKyAgICAgICAg
ICAgIHNob3VsZEJlKCJjbG9zZUV2ZW50LnJlYXNvbiIsICJyZWFzb24iKTsKKyAgICAgICAgICAg
IGlmICgrK2lkICE9IGNvZGVzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICB0ZXN0KGlkKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZSgiRE9ORSIpOworICAg
ICAgICB9OworICAgIH0pKDApOworfQorCitydW5Db2RlVGVzdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUw
YWJlM2ExYTRhZjM1YmM3ZTY0Nzc2MDU2ODQwNmIyYmZkZDcwMjIuLmYyOTkzMzU3MTMwNmI4OTE0
NzhkYTRmZjkzZTU2YzQ4YjVjMTQyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAx
MS0wOC0zMSAgVGFrYXNoaSBUb3lvc2hpbWEgIDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW1dlYlNvY2tldF0gSW1wbGVtZW50IFdlYlNvY2tldDo6Y2xvc2UoKSBjb2RlIGFuZCBy
ZWFzb24gaGFuZGxpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjkyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2Nsb3NlLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9j
bG9zZS5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1dlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFdlYlNvY2tldDo6Y2xvc2VDYWxsYmFjayk6CisgICAgICAgIEFkZCBjdXN0b20gYnJpZGdlIGZv
ciBXZWJTb2NrZXQ6OmNsb3NlKCkuCisgICAgICAgICogd2Vic29ja2V0cy9UaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y2xvc2UpOgorICAgICAgICAqIHdlYnNvY2tldHMv
V2ViU29ja2V0Lmg6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsOgorICAgICAg
ICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsOjpjbG9zZSk6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJn
dW1lbnRzIGhhbmRsaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3Rh
cnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgU2VuZCBhIGNsb3NlIGZyYW1lIHdpdGhvdXQg
Y29kZSBhbmQgcmVhc29uIG9uIHNlcnZlciBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2VzLgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZUhpeGllNzYpOgorICAg
ICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIHdlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNsb3NlKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRo
cmVhZENsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpCcmlkZ2U6OmNsb3NlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgIEFkZCBjb2RlIGFuZCByZWFzb24gYXJn
dW1lbnRzIGhhbmRsaW5nLgorCiAyMDExLTA4LTMxICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYlNvY2tldDogTG9hZCBCbG9iIGluIFdlYlNvY2tldENo
YW5uZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9t
LmNwcAppbmRleCBhZjVkYWNhNTU1ZTA4OWVjMTIyNThjNjE3MjJjNjA3Y2RmMzAxNmNhLi42YjM1
OThiMmRmZmFhYjM3Mjg2NTFmMGI1YzY2MWRlMDYxMDI2Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzUsMTAgKzM1LDEzIEBACiAKICNpbmNsdWRl
ICJKU1dlYlNvY2tldC5oIgogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IktVUkwuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJTb2Nr
ZXQuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSA8cnVudGltZS9F
cnJvci5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtODUsNiArODgsMzggQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1dlYlNvY2tldENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1dl
YlNvY2tldChFeGVjU3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JB
UFBFUihleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgV2ViU29ja2V0LCB3ZWJT
b2NrZXQuZ2V0KCkpKTsKIH0KIAorSlNWYWx1ZSBKU1dlYlNvY2tldDo6Y2xvc2UoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW1wbGVtZW50IFtDbGFtcF0gZm9y
IElETCBiaW5kaW5nIGNvZGUgZ2VuZXJhdG9yLCBhbmQKKyAgICAvLyByZW1vdmUgdGhpcyBjdXN0
b20gbWV0aG9kLgorICAgIFdlYlNvY2tldCogd2ViU29ja2V0ID0gc3RhdGljX2Nhc3Q8V2ViU29j
a2V0Kj4oaW1wbCgpKTsKKyAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50
Q291bnQoKTsKKyAgICBpbnQgY29kZSA9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2Rl
Tm90U3BlY2lmaWVkOworICAgIFN0cmluZyByZWFzb24gPSAiIjsKKyAgICBpZiAoYXJndW1lbnRD
b3VudCA+PSAxKSB7CisgICAgICAgIEpTVmFsdWUgdiA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAg
ICAgICBkb3VibGUgeCA9IHYudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIGRvdWJsZSBtYXhWYWx1
ZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czx1aW50MTZfdD46Om1h
eCgpKTsKKyAgICAgICAgZG91YmxlIG1pblZhbHVlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWluKCkpOworICAgICAgICBpZiAoaXNuYW4oeCkp
CisgICAgICAgICAgICB4ID0gMC4wOworICAgICAgICBlbHNlCisgICAgICAgICAgICB4ID0gY2xh
bXBUbyh4LCBtaW5WYWx1ZSwgbWF4VmFsdWUpOworICAgICAgICBjb2RlID0gY2xhbXBUb0ludGVn
ZXIoeCk7CisgICAgICAgIGlmIChhcmd1bWVudENvdW50ID49IDIpIHsKKyAgICAgICAgICAgIHJl
YXNvbiA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKSk7
CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgU1lOVEFYX0VSUik7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgd2ViU29ja2V0LT5jbG9zZShjb2RlLCByZWFzb24s
IGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYlNvY2tldEN1c3RvbS5j
cHAKaW5kZXggNThhMjdlN2ZhMTNkYjlmYTJkZGMzZDJmZWQzZjdlODk3ZmM5NzVkNS4uMjhhOTVl
ZDRkYjM3YWI5ODUzMjI0OGFkM2NjMzc2Y2E5MDcwNjQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViU29ja2V0Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM0
LDE0ICszNCwxNyBAQAogCiAjaW5jbHVkZSAiVjhXZWJTb2NrZXQuaCIKIAorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUg
IlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCisjaW5jbHVkZSAiV2ViU29j
a2V0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJXb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA4LDYg
KzExMSwzOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIHJldHVybiBhcmdzLkhvbGRl
cigpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJTb2NrZXQ6OmNsb3NlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGltcGxlbWVudCBbQ2xhbXBdIGZvciBJREwgYmluZGluZyBjb2RlIGdlbmVyYXRvciwgYW5kCisg
ICAgLy8gcmVtb3ZlIHRoaXMgY3VzdG9tIG1ldGhvZC4KKyAgICBXZWJTb2NrZXQqIHdlYlNvY2tl
dCA9IHRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIGludCBhcmd1bWVudENvdW50ID0gYXJn
cy5MZW5ndGgoKTsKKyAgICBpbnQgY29kZSA9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRD
b2RlTm90U3BlY2lmaWVkOworICAgIFN0cmluZyByZWFzb24gPSAiIjsKKyAgICBpZiAoYXJndW1l
bnRDb3VudCA+PSAxKSB7CisgICAgICAgIGRvdWJsZSB4ID0gYXJnc1swXS0+TnVtYmVyVmFsdWUo
KTsKKyAgICAgICAgZG91YmxlIG1heFZhbHVlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQxNl90Pjo6bWF4KCkpOworICAgICAgICBkb3VibGUgbWluVmFsdWUg
PSBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDE2X3Q+OjptaW4o
KSk7CisgICAgICAgIGlmIChpc25hbih4KSkKKyAgICAgICAgICAgIHggPSAwLjA7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHggPSBjbGFtcFRvKHgsIG1pblZhbHVlLCBtYXhWYWx1ZSk7Cisg
ICAgICAgIGNvZGUgPSBjbGFtcFRvSW50ZWdlcih4KTsKKyAgICAgICAgaWYgKGFyZ3VtZW50Q291
bnQgPj0gMikgeworICAgICAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiByZWFzb25WYWx1ZSA9IGFyZ3NbMV0tPlRvU3RyaW5n
KCk7CisgICAgICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2guRXhjZXB0aW9uKCkpOworICAgICAgICAgICAg
cmVhc29uID0gdG9XZWJDb3JlU3RyaW5nKHJlYXNvblZhbHVlKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB3ZWJTb2NrZXQtPmNsb3NlKGNvZGUsIHJl
YXNvbiwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZWMpOwor
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGNkOWNl
MjUyYTRjZDViZDY3YTczOWNmYzUzMzI3MDhlMGVkNDhjZmUuLjA5ZjgxYjUwN2ExMDAxZDZlN2Vh
NTkxNzIxMTZlYTllOWZmN2JkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCkgPSAwOyAvLyBXaWxsIGJlIGF2
YWlsYWJsZSBhZnRlciBkaWRDb25uZWN0KCkgY2FsbGJhY2sgaXMgaW52b2tlZC4KICAgICB2aXJ0
dWFsIGJvb2wgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGNsb3NlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb24pID0gMDsKICAgICAvLyBMb2cgdGhlIHJlYXNvbiB0ZXh0IGFuZCBjbG9zZSB0
aGUgY29ubmVjdGlvbi4gV2lsbCBjYWxsIGRpZENsb3NlKCkuCiAgICAgdmlydHVhbCB2b2lkIGZh
aWwoY29uc3QgU3RyaW5nJiByZWFzb24pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVj
dCgpID0gMDsgLy8gV2lsbCBzdXBwcmVzcyBkaWRDbG9zZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGRjOWFiYmFmNGM0NmFlZDY5ODJhNjc2ZDM5NWQ4MzY4
ODVmMzFiZjUuLjI0YjE2ZjQ3ZjA0MzcwZGU4OWM3ZTY3OTExMzFiOTQ2ZTg0ZjNjZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNjAsNiArNjAsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NvbnN0IHNpemVfdCBtYXhSZWFzb25TaXplSW5CeXRlcyA9
IDEyMzsKKwogc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRQcm90b2NvbENoYXJhY3RlcihVQ2hh
ciBjaGFyYWN0ZXIpCiB7CiAgICAgLy8gSHliaS0xMCBzYXlzICIoU3VicHJvdG9jb2wgc3RyaW5n
IG11c3QgY29uc2lzdCBvZikgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgVSswMDIxIHRvIFUrMDA3
RSBub3QgaW5jbHVkaW5nCkBAIC0yNjIsOSArMjY0LDIzIEBAIGJvb2wgV2ViU29ja2V0OjpzZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIG1f
Y2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKIH0KIAotdm9pZCBXZWJTb2NrZXQ6OmNsb3NlKCkKK3Zv
aWQgV2ViU29ja2V0OjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIiwg
dGhpcyk7CisgICAgaWYgKGNvZGUgPT0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xvc2VFdmVudENvZGVO
b3RTcGVjaWZpZWQpCisgICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIHdp
dGhvdXQgY29kZSBhbmQgcmVhc29uIiwgdGhpcyk7CisgICAgZWxzZSB7CisgICAgICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNsb3NlIHdpdGggY29kZSA9ICVkLCByZWFzb24gPSAlcyIs
IHRoaXMsIGNvZGUsIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKCEoY29kZSA9
PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU5vcm1hbENsb3N1cmUgfHwgKFdlYlNv
Y2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlTWluaW11bVVzZXJEZWZpbmVkIDw9IGNvZGUgJiYg
Y29kZSA8PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9zZUV2ZW50Q29kZU1heGltdW1Vc2VyRGVmaW5l
ZCkpKSB7CisgICAgICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogaWYgcmVhc29uIGNvbnRhaW5z
IGFueSB1bnBhaXJlZCBzdXJyb2dhdGVzLCByYWlzZSBTWU5UQVhfRVJSLgorICAgICAgICBpZiAo
cmVhc29uLnV0ZjgoKS5sZW5ndGgoKSA+IG1heFJlYXNvblNpemVJbkJ5dGVzKSB7CisgICAgICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TSU5HIHx8IG1fc3RhdGUgPT0gQ0xPU0VEKQog
ICAgICAgICByZXR1cm47CiAgICAgaWYgKG1fc3RhdGUgPT0gQ09OTkVDVElORykgewpAQCAtMjc3
LDcgKzI5Myw3IEBAIHZvaWQgV2ViU29ja2V0OjpjbG9zZSgpCiAgICAgLy8gZGlkQ2xvc2Ugbm90
aWZpY2F0aW9uIG1heSBiZSBhbHJlYWR5IHF1ZXVlZCwgd2hpY2ggd2Ugd2lsbCBpbmFkdmVydGVu
dGx5IHByb2Nlc3Mgd2hpbGUgd2FpdGluZyBmb3IgYnVmZmVyZWRBbW91bnQoKSB0byByZXR1cm4u
CiAgICAgLy8gSW4gdGhpcyBjYXNlIG1fY2hhbm5lbCB3aWxsIGJlIHNldCB0byBudWxsIGR1cmlu
ZyBkaWRDbG9zZSgpIGNhbGwsIHRodXMgd2UgbmVlZCB0byB0ZXN0IHZhbGlkbmVzcyBvZiBtX2No
YW5uZWwgaGVyZS4KICAgICBpZiAobV9jaGFubmVsKQotICAgICAgICBtX2NoYW5uZWwtPmNsb3Nl
KCk7CisgICAgICAgIG1fY2hhbm5lbC0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAogY29uc3Qg
S1VSTCYgV2ViU29ja2V0Ojp1cmwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKaW5kZXggNTZlMjAwNmMwMTM3MThmZTE0ODhkNzIzYzUxZTA5OGE0MjNhMWZiZi4uMWRk
NTZhMmY0NDg3OThhZjg3YjdjODE5YzI1MTViMzE4NzY4ZTJjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBz
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgdm9pZCBj
bG9zZSgpOworICAgIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uLCBF
eGNlcHRpb25Db2RlJik7CiAKICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdDsKICAgICBTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5p
ZGwKaW5kZXggODFkNzU2M2YwN2M5MTQyNzQ1ZjdmMjliMWNlMzI1NWY1NmE2ZWNlMi4uOTM2ZTYw
M2YzNjU3NjMwNGM0ZmI2OTVmMjFkYzhkMWJiOTIwODg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmlkbApAQCAtNjQsNyArNjQsOCBAQCBtb2R1bGUgd2Vic29ja2V0cyB7
CiAgICAgICAgICAgICBzZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgW1Jl
cXVpcmVzQWxsQXJndW1lbnRzXSBib29sZWFuIHNlbmQoaW4gRE9NU3RyaW5nIGRhdGEpIHJhaXNl
cyhET01FeGNlcHRpb24pOwotICAgICAgICB2b2lkIGNsb3NlKCk7CisgICAgICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgYW5kIGFwcGx5IFtDbGFtcF0gYXR0cmlidXRlIGluc3RlYWQgb2YgW0N1c3Rv
bV0uCisgICAgICAgIFtDdXN0b21dIHZvaWQgY2xvc2UoaW4gW09wdGlvbmFsXSB1bnNpZ25lZCBz
aG9ydCBjb2RlLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyByZWFzb24pIHJhaXNlcyhET01FeGNl
cHRpb24pOwogCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgICAgICB2b2lk
IGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA2NjcyZmRkNGNiYzMzYWYzNDJk
ZDE3YThjOGM2MWNkY2I5ZDg1MGQzLi4yMDA3ZTZkYjgzODVmYTZmMzY2ZGFiYjI0ZjIxNzc1ZGEz
NGRlOGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTE3OCwxMyArMTc4LDEzIEBAIHVuc2lnbmVkIGxvbmcgV2ViU29ja2V0Q2hhbm5l
bDo6YnVmZmVyZWRBbW91bnQoKSBjb25zdAogICAgIHJldHVybiBtX2hhbmRsZS0+YnVmZmVyZWRB
bW91bnQoKTsKIH0KIAotdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZSgpCit2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKICAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2UiLCB0aGlzKTsKICAgICBB
U1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm47
Ci0gICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CisgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtl
KGNvZGUsIHJlYXNvbik7CiAgICAgaWYgKG1fY2xvc2luZyAmJiAhbV9jbG9zaW5nVGltZXIuaXNB
Y3RpdmUoKSkKICAgICAgICAgbV9jbG9zaW5nVGltZXIuc3RhcnRPbmVTaG90KDIgKiBUQ1BNYXhp
bXVtU2VnbWVudExpZmV0aW1lKTsKIH0KQEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVy
KQogICAgICAgICBkaWRDbG9zZVNvY2tldFN0cmVhbShtX2hhbmRsZS5nZXQoKSk7CiB9CiAKLXZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKK3ZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbikKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2lu
ZyAlZCAlZCIsIHRoaXMsIG1fY2xvc2luZywgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UpOwog
ICAgIGlmIChtX2Nsb3NpbmcpCkBAIC00ODIsOSArNDgyLDE3IEBAIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKICAgICAgICAgICAgIG1faGFuZGxlLT5kaXNj
b25uZWN0KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICB9IGVsc2UKLSAg
ICAgICAgZW5xdWV1ZVJhd0ZyYW1lKE9wQ29kZUNsb3NlLCAiIiwgMCk7IC8vIEZJWE1FOiBTZW5k
IHN0YXR1cyBjb2RlIGFuZCByZWFzb24gbWVzc2FnZS4KLQorICAgIH0gZWxzZSB7CisgICAgICAg
IFZlY3RvcjxjaGFyPiBidWY7CisgICAgICAgIGlmICghbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hh
a2UgJiYgY29kZSAhPSBDbG9zZUV2ZW50Q29kZU5vdFNwZWNpZmllZCkgeworICAgICAgICAgICAg
dW5zaWduZWQgY2hhciBoaWdoQnl0ZSA9IGNvZGUgPj4gODsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgbG93Qnl0ZSA9IGNvZGU7CisgICAgICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0
PGNoYXI+KGhpZ2hCeXRlKSk7CisgICAgICAgICAgICBidWYuYXBwZW5kKHN0YXRpY19jYXN0PGNo
YXI+KGxvd0J5dGUpKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQocmVhc29uLnV0ZjgoKS5kYXRh
KCksIHJlYXNvbi51dGY4KCkubGVuZ3RoKCkpOworICAgICAgICB9CisgICAgICAgIGVucXVldWVS
YXdGcmFtZShPcENvZGVDbG9zZSwgYnVmLmRhdGEoKSwgYnVmLnNpemUoKSk7CisgICAgfQogICAg
IG1fY2xvc2luZyA9IHRydWU7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+
ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CkBAIC02OTAsNyArNjk4LDcgQEAgYm9vbCBXZWJT
b2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUoKQogICAgICAgICAgICAgbV9jbG9zZUV2ZW50UmVh
c29uID0gIiI7CiAgICAgICAgIHNraXBCdWZmZXIoZnJhbWUuZnJhbWVFbmQgLSBtX2J1ZmZlcik7
CiAgICAgICAgIG1fcmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlID0gdHJ1ZTsKLSAgICAgICAgc3Rh
cnRDbG9zaW5nSGFuZHNoYWtlKCk7CisgICAgICAgIHN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShtX2Ns
b3NlRXZlbnRDb2RlLCBtX2Nsb3NlRXZlbnRSZWFzb24pOwogICAgICAgICBpZiAobV9jbG9zaW5n
KSB7CiAgICAgICAgICAgICBtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1cyA9IE91dGdvaW5nRnJh
bWVRdWV1ZUNsb3Npbmc7CiAgICAgICAgICAgICBwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCk7
CkBAIC03NzEsNyArNzc5LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWVI
aXhpZTc2KCkKICAgICAgICAgICAgIHNraXBCdWZmZXIobmV4dEZyYW1lIC0gbV9idWZmZXIpOwog
ICAgICAgICAgICAgaWYgKGZyYW1lQnl0ZSA9PSAweGZmICYmICFsZW5ndGgpIHsKICAgICAgICAg
ICAgICAgICBtX3JlY2VpdmVkQ2xvc2luZ0hhbmRzaGFrZSA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKCk7CisgICAgICAgICAgICAgICAgc3RhcnRDbG9zaW5n
SGFuZHNoYWtlKENsb3NlRXZlbnRDb2RlTm90U3BlY2lmaWVkLCAiIik7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fY2xvc2luZykKICAgICAgICAgICAgICAgICAgICAgbV9oYW5kbGUtPmNsb3NlKCk7
IC8vIGNsb3NlIGFmdGVyIHNlbmRpbmcgRkYgMDAuCiAgICAgICAgICAgICB9IGVsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggNDAwNDk5MTA2
ZDc5ZjlhODQ1M2IxOTdjNTA1YmZmYzMzMTdkZTg4My4uOTcwMzE2MjNjYzI2NmU2ZGFhZGU3MjUx
YmRlMTE1NzYxMjNiNjU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5n
IHN1YnByb3RvY29sKCk7CiAgICAgdmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsgLy8gU3RhcnQgY2xvc2luZyBoYW5kc2hha2UuCisg
ICAgdmlydHVhbCB2b2lkIGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7IC8v
IFN0YXJ0IGNsb3NpbmcgaGFuZHNoYWtlLgogICAgIHZpcnR1YWwgdm9pZCBmYWlsKGNvbnN0IFN0
cmluZyYgcmVhc29uKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpOwogCkBAIC04Myw2
ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKTsKIAogICAgIGVudW0gQ2xvc2VFdmVudENvZGUgeworICAgICAgICBDbG9zZUV2ZW50
Q29kZU5vdFNwZWNpZmllZCA9IC0xLAogICAgICAgICBDbG9zZUV2ZW50Q29kZU5vcm1hbENsb3N1
cmUgPSAxMDAwLAogICAgICAgICBDbG9zZUV2ZW50Q29kZUdvaW5nQXdheSA9IDEwMDEsCiAgICAg
ICAgIENsb3NlRXZlbnRDb2RlUHJvdG9jb2xFcnJvciA9IDEwMDIsCkBAIC05MCw3ICs5MSw5IEBA
IHB1YmxpYzoKICAgICAgICAgQ2xvc2VFdmVudENvZGVGcmFtZVRvb0xhcmdlID0gMTAwNCwKICAg
ICAgICAgQ2xvc2VFdmVudENvZGVOb1N0YXR1c1JjdmQgPSAxMDA1LAogICAgICAgICBDbG9zZUV2
ZW50Q29kZUFibm9ybWFsQ2xvc3VyZSA9IDEwMDYsCi0gICAgICAgIENsb3NlRXZlbnRDb2RlSW52
YWxpZFVURjggPSAxMDA3CisgICAgICAgIENsb3NlRXZlbnRDb2RlSW52YWxpZFVURjggPSAxMDA3
LAorICAgICAgICBDbG9zZUV2ZW50Q29kZU1pbmltdW1Vc2VyRGVmaW5lZCA9IDMwMDAsCisgICAg
ICAgIENsb3NlRXZlbnRDb2RlTWF4aW11bVVzZXJEZWZpbmVkID0gNDk5OQogICAgIH07CiAKICNp
ZiBFTkFCTEUoQkxPQikKQEAgLTExNSw3ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2tp
cEJ1ZmZlcihzaXplX3QgbGVuKTsKICAgICBib29sIHByb2Nlc3NCdWZmZXIoKTsKICAgICB2b2lk
IHJlc3VtZVRpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qKTsKLSAgICB2b2lkIHN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOworICAgIHZvaWQgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKGlu
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgdm9pZCBjbG9zaW5nVGltZXJGaXJl
ZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiopOwogCiAgICAgLy8gSHliaS0xMCBvcGNvZGVzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA1NmY5N2FhZDAwZjdhNjQxOTZjOGZiY2Y4
NWQxYmU1M2I0OGE3NGY3Li40NDk4OGY2NTYyYjEyNDIxYTBmNDAwNzA0ZWJjMDc2MGViYjAyNGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtOTQsMTAgKzk0LDEwIEBAIHVuc2ln
bmVkIGxvbmcgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1vdW50
KCkgY29uc3QKICAgICByZXR1cm4gbV9icmlkZ2UtPmJ1ZmZlcmVkQW1vdW50KCk7CiB9CiAKLXZv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNsb3NlKCkKK3ZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbikKIHsKICAgICBpZiAobV9icmlkZ2UpCi0gICAgICAgIG1fYnJpZGdlLT5jbG9zZSgp
OworICAgICAgICBtX2JyaWRnZS0+Y2xvc2UoY29kZSwgcmVhc29uKTsKIH0KIAogdm9pZCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikK
QEAgLTE4NywxMiArMTg3LDEyIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXI6OmJ1ZmZlcmVkQW1vdW50KCkKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRH
ZXRCdWZmZXJlZEFtb3VudCwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudCks
IG1fdGFza01vZGUpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpQZWVyOjpjbG9zZSgpCit2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQ
ZWVyOjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5jbG9zZSgpOworICAgIG1f
bWFpbldlYlNvY2tldENoYW5uZWwtPmNsb3NlKGNvZGUsIHJlYXNvbik7CiB9CiAKIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmZhaWwoY29uc3QgU3RyaW5nJiBy
ZWFzb24pCkBAIC0zOTUsMTkgKzM5NSwxOSBAQCB1bnNpZ25lZCBsb25nIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmJ1ZmZlcmVkQW1vdW50KCkKICAgICByZXR1cm4g
MDsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVh
ZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIpCit2b2lk
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlciwgaW50IGNvZGUsIGNvbnN0IFN0
cmluZyZyZWFzb24pCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHBlZXIp
OwogCi0gICAgcGVlci0+Y2xvc2UoKTsKKyAgICBwZWVyLT5jbG9zZShjb2RlLCByZWFzb24pOwog
fQogCi12b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3Nl
KCkKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y2xvc2Uo
aW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewogICAgIEFTU0VSVChtX3BlZXIpOwot
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkQ2xvc2UsIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3MobV9wZWVyKSkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xv
YWRlcihjcmVhdGVDYWxsYmFja1Rhc2soJldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjptYWluVGhyZWFkQ2xvc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MobV9wZWVyKSwgY29kZSwg
cmVhc29uKSk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1h
aW5UaHJlYWRGYWlsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIs
IGNvbnN0IFN0cmluZyYgcmVhc29uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGE0OGE4
YTE5ZDdjMjA4OGMxMmQ5YzE3NjIyYjIwMTUzNzI1MTE0ZjguLmE4ZDEzM2QzY2RmODFlNzJhODdk
YjU4YTY4NWZlMWExMjJhNGIzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTY1LDcg
KzY1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHN1YnByb3RvY29sKCk7CiAgICAg
dmlydHVhbCBib29sIHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xv
c2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVh
c29uKTsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAg
dmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKTsgLy8gV2lsbCBzdXBwcmVzcyBkaWRDbG9zZSgpLgog
ICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKCk7CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHZvaWQgY29ubmVjdChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCk7
CiAgICAgICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2b2lk
IGJ1ZmZlcmVkQW1vdW50KCk7Ci0gICAgICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgdm9pZCBj
bG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgICAgICB2b2lkIGZhaWwo
Y29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKICAgICAg
ICAgdm9pZCBzdXNwZW5kKCk7CkBAIC0xMjYsNyArMTI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBjb25uZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKTsKICAgICAg
ICAgYm9vbCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAgICAgIHVuc2lnbmVkIGxv
bmcgYnVmZmVyZWRBbW91bnQoKTsKLSAgICAgICAgdm9pZCBjbG9zZSgpOworICAgICAgICB2b2lk
IGNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgZmFp
bChjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAgICAgICAgIHZvaWQgZGlzY29ubmVjdCgpOwogICAg
ICAgICB2b2lkIHN1c3BlbmQoKTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyB2b2lkIG1haW5UaHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVy
KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpOwogICAgIHN0YXRpYyB2b2lk
IG1haW5UaHJlYWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQnVmZmVyZWRBbW91bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBtYWluVGhy
ZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsKKyAgICBzdGF0aWMgdm9p
ZCBtYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBpbnQgY29k
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRGYWls
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgU3RyaW5nJiByZWFzb24pOwog
ICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWREZXN0cm95KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQZWVyKik7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFN1c3BlbmQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBlZXIqKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>