<?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>163760</bug_id>
          
          <creation_ts>2016-10-20 14:59:43 -0700</creation_ts>
          <short_desc>[JSC] implement runtime for async functions</short_desc>
          <delta_ts>2016-10-28 14:20:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caitlin Potter (:caitp)">caitp</reporter>
          <assigned_to name="Caitlin Potter (:caitp)">caitp</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1242606</commentid>
    <comment_count>0</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-20 14:59:43 -0700</bug_when>
    <thetext>[JSC] implement runtime for async functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242609</commentid>
    <comment_count>1</comment_count>
      <attachid>292267</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-20 15:09:41 -0700</bug_when>
    <thetext>Created attachment 292267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242610</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-20 15:11:25 -0700</bug_when>
    <thetext>Attachment 292267 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:28:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242864</commentid>
    <comment_count>3</comment_count>
      <attachid>292346</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-21 06:48:35 -0700</bug_when>
    <thetext>Created attachment 292346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242989</commentid>
    <comment_count>4</comment_count>
      <attachid>292346</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-21 10:55:33 -0700</bug_when>
    <thetext>Comment on attachment 292346
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3426
&gt; +    case SourceParseMode::AsyncFunctionMode:
&gt; +    case SourceParseMode::AsyncMethodMode:
&gt; +    case SourceParseMode::AsyncArrowFunctionMode: {

Can you write a helper function to share some code with SourceParseMode::GeneratorWrapperFunctionMode? I see some duplication here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243002</commentid>
    <comment_count>5</comment_count>
      <attachid>292346</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-21 11:27:35 -0700</bug_when>
    <thetext>Comment on attachment 292346
Patch

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

Great! Saam is now looking deeply. So just small nits.

&gt; Source/JavaScriptCore/builtins/AsyncFunctionPrototype.js:33
&gt; +        throw new @TypeError(&quot;Async function illegally resumed&quot;);

Let&apos;s use `@throwTypeError(&quot;&quot;);`

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:573
&gt; +            emitMove(m_generatorRegister, &amp;m_calleeRegister);

Is this correct? Even in AsyncArrowFunctionMode, we still need to create a generator with emitCreateThis.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3479
&gt; +        generator.emitReturn(result.get());

It seems we have a chance to use tail call here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243003</commentid>
    <comment_count>6</comment_count>
      <attachid>292346</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-21 11:28:40 -0700</bug_when>
    <thetext>Comment on attachment 292346
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:32
&gt; +        In this bug, async arrow functions are only partially implemented, as super bindings in async functions
&gt; +        do not yet work correctly.

Is there a bug open for this? What doesn&apos;t work about super?

&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.h:140
&gt; +        return SourceParseModeSet(
&gt; +            SourceParseMode::ArrowFunctionMode,
&gt; +            SourceParseMode::AsyncArrowFunctionMode,
&gt; +            SourceParseMode::AsyncArrowFunctionBodyMode).contains(parseMode());

Even though this function is simple, since you also repeat it above, I&apos;d recomment just creating a helper function that both implementations call.
Like:
bool isArrowFunction(SourceParseMode) { ... }
Maybe defined in the file where SourceParseMode is defined.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:562
&gt; +            if (functionNode-&gt;usesThis() || codeBlock-&gt;usesEval()) {

I&apos;m not sure this condition covers all the use cases of this. If you look under the default case, you&apos;ll see that the normal functions check for inner arrow functions that use |this| or |super|. Maybe it&apos;s worth just writing a helper function that you can call here, in the GeneratorWrapperFunctionMode, and in the normal function mode.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:659
&gt; +    TryData* tryFormalParametersData = nullptr;
&gt; +    if (isAsyncFunctionWrapperParseMode(parseMode) &amp;&amp; !isSimpleParameterList) {

Should normal generator functions also be doing this?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:591
&gt; +    m_functionConstructor.set(vm, this, (FunctionConstructor*)functionConstructor);

You need a visitChildren rule for this.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:639
&gt; +    m_asyncFunctionStructure.initLater(

And I think you need a visit children for this too?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:644
&gt; +            init.setConstructor(PropertyName(nullptr), AsyncFunctionConstructor::create(init.vm, AsyncFunctionConstructor::createStructure(init.vm, init.global, init.global-&gt;m_functionConstructor.get()), asyncFunctionPrototype));

Style nit: Please use the version that doesn&apos;t require a PropertyName as the first parameter.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:540
&gt; +        return const_cast&lt;const LazyClassStructure&amp;&gt;(const_cast&lt;JSGlobalObject*&gt;(this)-&gt;lazyAsyncFunctionStructure());

I think it&apos;d be cleaner to just return m_asyncFunctionStructure here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243005</commentid>
    <comment_count>7</comment_count>
      <attachid>292346</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-21 11:31:14 -0700</bug_when>
    <thetext>Comment on attachment 292346
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:573
&gt;&gt; +            emitMove(m_generatorRegister, &amp;m_calleeRegister);
&gt; 
&gt; Is this correct? Even in AsyncArrowFunctionMode, we still need to create a generator with emitCreateThis.

Or, I think you can just create a plain object instead. Generator uses emitCreateThis to setup the prototype correctly. But it is not necessary for async functions because async function does not expose the internal generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243008</commentid>
    <comment_count>8</comment_count>
      <attachid>292346</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-21 11:36:24 -0700</bug_when>
    <thetext>Comment on attachment 292346
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:562
&gt;&gt; +            if (functionNode-&gt;usesThis() || codeBlock-&gt;usesEval()) {
&gt; 
&gt; I&apos;m not sure this condition covers all the use cases of this. If you look under the default case, you&apos;ll see that the normal functions check for inner arrow functions that use |this| or |super|. Maybe it&apos;s worth just writing a helper function that you can call here, in the GeneratorWrapperFunctionMode, and in the normal function mode.

Yusuke Suzuki: I had originally copy/pasted this from the generator wrapper code, WDYT? Is there test coverage for deeply nested arrows inside generator bodies which use this/eval?

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:573
&gt;&gt; +            emitMove(m_generatorRegister, &amp;m_calleeRegister);
&gt; 
&gt; Is this correct? Even in AsyncArrowFunctionMode, we still need to create a generator with emitCreateThis.

You&apos;re right. I think this results in storing generator fields on the wrong object, which is potentially observable. I&apos;m not sure exactly how to test that it is observable though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243014</commentid>
    <comment_count>9</comment_count>
      <attachid>292346</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-21 11:43:44 -0700</bug_when>
    <thetext>Comment on attachment 292346
Patch

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

&gt; JSTests/stress/async-await-basic.js:8
&gt; +    if (msg === void 0)
&gt; +        msg = &quot;&quot;;
&gt; +    else
&gt; +        msg = &quot; for &quot; + msg;

Nit: You could just make this a default parameter value.

&gt; JSTests/stress/async-await-mozilla.js:8
&gt; +function shouldBe(expected, actual, msg) {

Nit: Since you use these helpers in many of your tests, you could create a file in some async-helpers directory like JSTestes/stress/async-helpers
and then load the helpers at the top of these files.

&gt; JSTests/stress/async_arrow_functions_lexical_arguments_binding.js:1
&gt; +// This test requires ENABLE_ES2017_ASYNCFUNCTION_SYNTAX to be enabled at build time.

Nit: I think we tend to use dash instead of underscore for test file names.

&gt; JSTests/stress/async_arrow_functions_lexical_arguments_binding.js:47
&gt; +shouldBeAsync(&quot;[1,2,3]&quot;, () =&gt; (function() { return (async () =&gt; JSON.stringify([...arguments]))(); })(1, 2, 3));
&gt; +shouldBeAsync(&quot;[4,5,6]&quot;, () =&gt; (function() { return (async () =&gt; { return JSON.stringify([...await arguments]) })(); })(4, 5, 6));

Can you also add a test that tests that these are the same binding?

&gt; JSTests/stress/async_arrow_functions_lexical_new.target_binding.js:1
&gt; +// This test requires ENABLE_ES2017_ASYNCFUNCTION_SYNTAX to be enabled at build time.

Nit: I think we tend to use dash instead of underscore for test file names.

&gt; JSTests/stress/async_arrow_functions_lexical_super_binding.js:1
&gt; +// This test requires ENABLE_ES2017_ASYNCFUNCTION_SYNTAX to be enabled at build time.

Nit: I think we tend to use dash instead of underscore for test file names.

&gt; JSTests/stress/async_arrow_functions_lexical_this_binding.js:1
&gt; +// This test requires ENABLE_ES2017_ASYNCFUNCTION_SYNTAX to be enabled at build time.

Nit: I think we tend to use dash instead of underscore for test file names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243016</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-21 11:44:40 -0700</bug_when>
    <thetext>Patch LGTM, however, I&apos;ll let you address some of our comments before I r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243017</commentid>
    <comment_count>11</comment_count>
      <attachid>292346</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-21 11:47:34 -0700</bug_when>
    <thetext>Comment on attachment 292346
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:562
&gt;&gt;&gt; +            if (functionNode-&gt;usesThis() || codeBlock-&gt;usesEval()) {
&gt;&gt; 
&gt;&gt; I&apos;m not sure this condition covers all the use cases of this. If you look under the default case, you&apos;ll see that the normal functions check for inner arrow functions that use |this| or |super|. Maybe it&apos;s worth just writing a helper function that you can call here, in the GeneratorWrapperFunctionMode, and in the normal function mode.
&gt; 
&gt; Yusuke Suzuki: I had originally copy/pasted this from the generator wrapper code, WDYT? Is there test coverage for deeply nested arrows inside generator bodies which use this/eval?

I think GeneratorWrapperFunctionMode currently always emits to_this and pass it to the generator, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243054</commentid>
    <comment_count>12</comment_count>
      <attachid>292386</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-21 12:57:31 -0700</bug_when>
    <thetext>Created attachment 292386
First round of comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243056</commentid>
    <comment_count>13</comment_count>
      <attachid>292387</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-21 12:59:20 -0700</bug_when>
    <thetext>Created attachment 292387
First round of comments + delete that commented out op_to_this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243061</commentid>
    <comment_count>14</comment_count>
      <attachid>292390</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-21 13:18:12 -0700</bug_when>
    <thetext>Created attachment 292390
All those other fixes + a rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243062</commentid>
    <comment_count>15</comment_count>
      <attachid>292346</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-21 13:19:41 -0700</bug_when>
    <thetext>Comment on attachment 292346
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:32
&gt;&gt; +        do not yet work correctly.
&gt; 
&gt; Is there a bug open for this? What doesn&apos;t work about super?

As an example from the test:

```
Exception: TypeError: undefined is not an object (evaluating &apos;super.baseClassValue&apos;)
JSTests/stress/async-arrow-functions-lexical-super-binding.js:38:32
asyncFunctionResume@[native code]
shouldBeAsync@JSTests/stress/async-arrow-functions-lexical-super-binding.js:17:8
global code@JSTests/stress/async-arrow-functions-lexical-super-binding.js:46:14
```

This happens, even though the lexical arguments, new.target and this tests pass.

I believe the issue is the inner arrow function features aren&apos;t being passed back to the wrapper function, or aren&apos;t used correctly, or loading super in the inner arrow function is just implemented incorrectly.

If I can&apos;t figure out the cause of this before landing this, I will file a bug and add it to the FIXME.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:639
&gt;&gt; +    m_asyncFunctionStructure.initLater(
&gt; 
&gt; And I think you need a visit children for this too?

Done for both additions

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:644
&gt;&gt; +            init.setConstructor(PropertyName(nullptr), AsyncFunctionConstructor::create(init.vm, AsyncFunctionConstructor::createStructure(init.vm, init.global, init.global-&gt;m_functionConstructor.get()), asyncFunctionPrototype));
&gt; 
&gt; Style nit: Please use the version that doesn&apos;t require a PropertyName as the first parameter.

That version will take the function name from the function and install it as a property on the global object. We don&apos;t want that. Similarly, the GeneratorFunction constructor is also not installed on the global object.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:540
&gt;&gt; +        return const_cast&lt;const LazyClassStructure&amp;&gt;(const_cast&lt;JSGlobalObject*&gt;(this)-&gt;lazyAsyncFunctionStructure());
&gt; 
&gt; I think it&apos;d be cleaner to just return m_asyncFunctionStructure here

I agree. I assume there was some reason for not doing that in other similar code in this file, but I&apos;ll try it I guess

&gt;&gt; JSTests/stress/async-await-mozilla.js:8
&gt;&gt; +function shouldBe(expected, actual, msg) {
&gt; 
&gt; Nit: Since you use these helpers in many of your tests, you could create a file in some async-helpers directory like JSTestes/stress/async-helpers
&gt; and then load the helpers at the top of these files.

Since these tests are all skipped from the test runner, it&apos;s simpler to run them the with the helpers installed in each test file, because you&apos;re running them manually. Maybe something like that could wait until the feature is properly upstream?

Note: there&apos;s also a lot of precedence, many of the tests in JSTests/stress define their own assertion helpers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243138</commentid>
    <comment_count>16</comment_count>
      <attachid>292424</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-21 16:04:20 -0700</bug_when>
    <thetext>Created attachment 292424
fix the FunctionConstructor.cpp unreachable code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243264</commentid>
    <comment_count>17</comment_count>
      <attachid>292424</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-21 21:22:16 -0700</bug_when>
    <thetext>Comment on attachment 292424
fix the FunctionConstructor.cpp unreachable code

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

&gt; Source/JavaScriptCore/builtins/AsyncFunctionPrototype.js:33
&gt; +        throw new @TypeError(&quot;&quot;);

Ah, no. Sorry for my misleading comment. There is special builtin, @throwTypeError. So instead of using `throw new @TypeError()`, use `@throwTypeError(&quot;with your error message&quot;)`.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:560
&gt; +

And, is there any need to emit to_this here? In the generator wrapper function mode code, we always emit to_this to set up the |this|.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:561
&gt; +        emitMove(m_generatorRegister, &amp;m_calleeRegister);

I think it&apos;s not necessary. m_generatorRegister will be filled by emitNewObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243267</commentid>
    <comment_count>18</comment_count>
      <attachid>292424</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-21 22:07:22 -0700</bug_when>
    <thetext>Comment on attachment 292424
fix the FunctionConstructor.cpp unreachable code

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:560
&gt;&gt; +
&gt; 
&gt; And, is there any need to emit to_this here? In the generator wrapper function mode code, we always emit to_this to set up the |this|.

in my test, this seems to perform ToObject() on the receiver, which breaks when F.p.call or apply is used with an undefined receiver in strict mode. I&apos;m not sure why that doesn&apos;t break generators in the same way, but AFAIK there is no need for it

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:561
&gt;&gt; +        emitMove(m_generatorRegister, &amp;m_calleeRegister);
&gt; 
&gt; I think it&apos;s not necessary. m_generatorRegister will be filled by emitNewObject.

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243268</commentid>
    <comment_count>19</comment_count>
      <attachid>292424</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-21 22:12:35 -0700</bug_when>
    <thetext>Comment on attachment 292424
fix the FunctionConstructor.cpp unreachable code

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:560
&gt;&gt;&gt; +
&gt;&gt; 
&gt;&gt; And, is there any need to emit to_this here? In the generator wrapper function mode code, we always emit to_this to set up the |this|.
&gt; 
&gt; in my test, this seems to perform ToObject() on the receiver, which breaks when F.p.call or apply is used with an undefined receiver in strict mode. I&apos;m not sure why that doesn&apos;t break generators in the same way, but AFAIK there is no need for it

actually I&apos;m wrong, I will re-add this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243284</commentid>
    <comment_count>20</comment_count>
      <attachid>292466</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-21 22:42:00 -0700</bug_when>
    <thetext>Created attachment 292466
Re-add op_to_this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243290</commentid>
    <comment_count>21</comment_count>
      <attachid>292470</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-21 22:49:54 -0700</bug_when>
    <thetext>Created attachment 292470
fix async-arrow-functions-lexical-arguments-binding.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243315</commentid>
    <comment_count>22</comment_count>
      <attachid>292470</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-21 23:42:17 -0700</bug_when>
    <thetext>Comment on attachment 292470
fix async-arrow-functions-lexical-arguments-binding.js

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

&gt; Source/JavaScriptCore/builtins/AsyncFunctionPrototype.js:33
&gt; +        throw new @TypeError(&quot;&quot;);

Ah, no. There is special builtin intrinsic, @throwTypeError. So instead of using `throw new @TypeError()`, use `@throwTypeError(&quot;with your error message&quot;)`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244197</commentid>
    <comment_count>23</comment_count>
      <attachid>292752</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-25 08:07:03 -0700</bug_when>
    <thetext>Created attachment 292752
Patch

Most everything is working now --- there is room for improvement (same issue as Generators re: always performing op_to_th, and async arrow functions always store the home object on the function body fn, and some misc failures like lazily reporting errors for invalid LHS (which for await could be a web compat problem in the future\!), various issues with F.p.toString()... but apart from those which are not entirely specific to async functions, everything is passing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244203</commentid>
    <comment_count>24</comment_count>
      <attachid>292754</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-25 08:32:31 -0700</bug_when>
    <thetext>Created attachment 292754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244817</commentid>
    <comment_count>25</comment_count>
      <attachid>292754</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-26 09:49:47 -0700</bug_when>
    <thetext>Comment on attachment 292754
Patch

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

Nice! Great, I can set r+ once you address Saam&apos;s comments :)

&gt; Source/JavaScriptCore/bytecode/BytecodeList.json:109
&gt; +            { &quot;name&quot; : &quot;op_new_async_func_exp&quot;, &quot;length&quot; : 4 },

Could you file a bug implementing these opcodes in DFG?

&gt; Source/JavaScriptCore/parser/Parser.h:1234
&gt; +        }

Can you add some comment here? It is a bit tricky.

&gt; Source/JavaScriptCore/runtime/FunctionConstructor.cpp:157
&gt; +    UNREACHABLE_FOR_PLATFORM();

Use ASSERT_NOT_REACHED().

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1120
&gt; +    visitor.append(&amp;thisObject-&gt;m_functionPrototype);

This should be `m_functionConstructor`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244899</commentid>
    <comment_count>26</comment_count>
      <attachid>292754</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-26 14:23:02 -0700</bug_when>
    <thetext>Comment on attachment 292754
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeList.json:109
&gt;&gt; +            { &quot;name&quot; : &quot;op_new_async_func_exp&quot;, &quot;length&quot; : 4 },
&gt; 
&gt; Could you file a bug implementing these opcodes in DFG?

I have a prototype implementation for optimizing backends based on https://trac.webkit.org/changeset/194216, should I attach that as part of this bug, or create a new bug for it? It&apos;s passing variations of all the tests added for the generator version

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1234
&gt;&gt; +        }
&gt; 
&gt; Can you add some comment here? It is a bit tricky.

Lets address that in https://bugs.webkit.org/show_bug.cgi?id=163930, which should be easy to land before this

&gt;&gt; Source/JavaScriptCore/runtime/FunctionConstructor.cpp:157
&gt;&gt; +    UNREACHABLE_FOR_PLATFORM();
&gt; 
&gt; Use ASSERT_NOT_REACHED().

Done

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1120
&gt;&gt; +    visitor.append(&amp;thisObject-&gt;m_functionPrototype);
&gt; 
&gt; This should be `m_functionConstructor`.

oop, yeah. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244902</commentid>
    <comment_count>27</comment_count>
      <attachid>292754</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-26 14:31:03 -0700</bug_when>
    <thetext>Comment on attachment 292754
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeList.json:109
&gt;&gt;&gt; +            { &quot;name&quot; : &quot;op_new_async_func_exp&quot;, &quot;length&quot; : 4 },
&gt;&gt; 
&gt;&gt; Could you file a bug implementing these opcodes in DFG?
&gt; 
&gt; I have a prototype implementation for optimizing backends based on https://trac.webkit.org/changeset/194216, should I attach that as part of this bug, or create a new bug for it? It&apos;s passing variations of all the tests added for the generator version

I like the separated one :)

&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1234
&gt;&gt;&gt; +        }
&gt;&gt; 
&gt;&gt; Can you add some comment here? It is a bit tricky.
&gt; 
&gt; Lets address that in https://bugs.webkit.org/show_bug.cgi?id=163930, which should be easy to land before this

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244904</commentid>
    <comment_count>28</comment_count>
      <attachid>292961</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-26 14:32:49 -0700</bug_when>
    <thetext>Created attachment 292961
Couple comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245389</commentid>
    <comment_count>29</comment_count>
      <attachid>293097</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-27 18:48:51 -0700</bug_when>
    <thetext>Created attachment 293097
Patch

Rebase and update changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245392</commentid>
    <comment_count>30</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-27 18:51:05 -0700</bug_when>
    <thetext>some Octane runs look pretty neutral, (I expect there is a very slight parsing hit, but very little). Multiple runs yield different variations of winners/losers, so it looks neutral to me. I&apos;ll do some more perf testing, but I don&apos;t think this should show the same regressions as last time

```
With patch:             Without patch:

Octane Score: 36347     36816

Richards:        41254  42666
Deltablue:       50997  50765
Crypto:          39711  38458
Raytrace:        96643  96051
EarleyBoyer:     57098  57083
Regexp:           5450   5231
Splay:           22228  23103
SplayLatency:    21059  22475
NavierStokes:    28703  29562
pdf.js:          25237  24480
Mandreel:        38559  39258
MandreelLatency: 25565  26517
GB Emulator:     85638  88147
CodeLoad:        22789  23316
Box2DWeb:        54762  57669
zlib:            61569  59881
Typescript:      61037  63215

```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245459</commentid>
    <comment_count>31</comment_count>
      <attachid>293097</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-27 22:46:34 -0700</bug_when>
    <thetext>Comment on attachment 293097
Patch

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

r=me with nits. Once you validate the performance, you can land your patch just applying the changes locally. (And use Tools/Scripts/webkit-patch land). :)

&gt; Source/JavaScriptCore/ChangeLog:36
&gt; +        not, for the same reason as #1.

Could you open two bugs for these issues and paste the URLs for this ChangeLog?
We usually open bugs and paste URLs for FIXME and TODO things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245605</commentid>
    <comment_count>32</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-28 08:17:15 -0700</bug_when>
    <thetext>Some select benchmarks seem to indicate that while the runtime changes are mostly neutral, parsing has regressed a bit when building with --asyncfunction-syntax.

The largest difference is between &quot;Flag&quot; and &quot;NoFlag&quot; variations, as the &quot;PatchNoFlag&quot; vs &quot;NoPatchNoFlag&quot; results are very close to identical.

I have some ideas which might improve the parser a bit, relating to how different bits are represented in Scopes --- particularly, all of the different function types, many of which are treated as equivalent. I think I can deal with those separately, because without the flag enabled, the regression isn&apos;t visible

```
Collected 50 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get
microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                      NoPatchNoFlag              PatchNoFlag               PatchAndFlag         PatchAndFlag v. NoPatchNoFlag

closure              0.51644+-0.00439    ?     0.51708+-0.00403          0.51160+-0.00405       
jquery               6.92018+-0.06363    ?     6.93134+-0.04141    ?     7.01164+-0.06870       ? might be 1.0132x slower

&lt;geometric&gt;          1.88996+-0.01085    ?     1.89278+-0.00754    ?     1.89352+-0.01179       ? might be 1.0019x slower

Collected 50 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                         NoPatchNoFlag              PatchNoFlag               PatchAndFlag         PatchAndFlag v. NoPatchNoFlag

richards       x2       0.08420+-0.00059          0.08349+-0.00049    ?     0.08364+-0.00051       
splay          x2       0.32718+-0.00135    !     0.33182+-0.00313    ?     0.33193+-0.00192       ! definitely 1.0145x slower
gbemu          x2      23.83091+-0.85187         23.80783+-0.83061         23.74875+-0.82743       

&lt;geometric&gt;             0.86772+-0.01036    ?     0.86909+-0.01051          0.86904+-0.01043       ? might be 1.0015x slower
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245622</commentid>
    <comment_count>33</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-28 09:12:14 -0700</bug_when>
    <thetext>a more complete set of octane benchmark runs, just for the record:

```
Collected 50 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                         NoPatchNoFlag              PatchNoFlag               PatchAndFlag         PatchAndFlag v. NoPatchNoFlag

encrypt                 0.15988+-0.00085    ?     0.16156+-0.00084    ?     0.16317+-0.00099       ! definitely 1.0206x slower
decrypt                 2.77154+-0.01438    !     2.81940+-0.02208    ^     2.77487+-0.01817       ?
deltablue      x2       0.12881+-0.00111    ?     0.13376+-0.00456          0.13324+-0.00186       ! definitely 1.0344x slower
earley                  0.25353+-0.00204    !     0.25949+-0.00198    ^     0.25449+-0.00169       ?
boyer                   4.23287+-0.02680    !     4.32207+-0.02431          4.31110+-0.03326       ! definitely 1.0185x slower
navier-stokes  x2       5.05927+-0.03385    ?     5.06362+-0.03607          5.05819+-0.03039       
raytrace       x2       0.70197+-0.00383          0.69629+-0.00408    ?     0.69891+-0.00617       
richards       x2       0.08549+-0.00074    ?     0.08562+-0.00060          0.08520+-0.00059       
splay          x2       0.33274+-0.00229    !     0.33720+-0.00190          0.33662+-0.00271       ? might be 1.0117x slower
regexp         x2      17.80696+-0.33081    ?    17.81317+-0.26333    ?    17.90212+-0.32226       ?
pdfjs          x2      36.85407+-0.61248    ?    37.35442+-0.62312         37.14721+-0.55147       ?
mandreel       x2      38.89018+-0.65043         38.74223+-0.66118    ?    38.76411+-0.64468       
gbemu          x2      24.22962+-0.92197         24.05966+-0.86813    ?    24.15709+-0.86114       
closure                 0.52217+-0.00462    ?     0.52625+-0.00620          0.51911+-0.00486       
jquery                  6.94829+-0.05423    ?     6.95970+-0.05021    ?     6.99213+-0.04834       ?
box2d          x2       8.26966+-0.16941    ?     8.34642+-0.17403    ?     8.38814+-0.18631       ? might be 1.0143x slower
zlib           x2     235.10652+-17.01248       232.86443+-16.51304   ?   237.63515+-16.85768      ? might be 1.0108x slower
typescript     x2     409.22673+-30.05127   ?   412.86264+-29.61373   ?   413.84910+-29.59527      ? might be 1.0113x slower

&lt;geometric&gt;             4.57190+-0.06679    ?     4.60048+-0.06416    ?     4.60367+-0.06531       ? might be 1.0069x slower
```

I&apos;m skeptical that the typescript and zlib differences are as substantial as they look, so I still think this does point to mostly parser regressions when build with the flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245629</commentid>
    <comment_count>34</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-28 09:40:37 -0700</bug_when>
    <thetext>Committed r208052: &lt;http://trac.webkit.org/changeset/208052&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245636</commentid>
    <comment_count>35</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-28 10:09:26 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245637</commentid>
    <comment_count>36</comment_count>
      <attachid>293170</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-28 10:09:30 -0700</bug_when>
    <thetext>Created attachment 293170
broken patch meant for https://bugs.webkit.org/show_bug.cgi?id=164037</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245644</commentid>
    <comment_count>37</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-28 10:16:25 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; some Octane runs look pretty neutral, (I expect there is a very slight
&gt; parsing hit, but very little). Multiple runs yield different variations of
&gt; winners/losers, so it looks neutral to me. I&apos;ll do some more perf testing,
&gt; but I don&apos;t think this should show the same regressions as last time
&gt; 
&gt; ```
&gt; With patch:             Without patch:
&gt; 
&gt; Octane Score: 36347     36816
&gt; 
&gt; Richards:        41254  42666
&gt; Deltablue:       50997  50765
&gt; Crypto:          39711  38458
&gt; Raytrace:        96643  96051
&gt; EarleyBoyer:     57098  57083
&gt; Regexp:           5450   5231
&gt; Splay:           22228  23103
&gt; SplayLatency:    21059  22475
&gt; NavierStokes:    28703  29562
&gt; pdf.js:          25237  24480
&gt; Mandreel:        38559  39258
&gt; MandreelLatency: 25565  26517
&gt; GB Emulator:     85638  88147
&gt; CodeLoad:        22789  23316
&gt; Box2DWeb:        54762  57669
&gt; zlib:            61569  59881
&gt; Typescript:      61037  63215
&gt; 
&gt; ```

This indicates a 1.2% regression.  If that&apos;s real, then it&apos;s a serious issue.  You should do more runs, maybe running Octane via run-jsc-benchmarks.  It doesn&apos;t give a genuine Octane score, but the execution time geometric mean is very well correlated to 1/Octane_score.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245648</commentid>
    <comment_count>38</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-10-28 10:21:25 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (In reply to comment #30)
&gt; &gt; some Octane runs look pretty neutral, (I expect there is a very slight
&gt; &gt; parsing hit, but very little). Multiple runs yield different variations of
&gt; &gt; winners/losers, so it looks neutral to me. I&apos;ll do some more perf testing,
&gt; &gt; but I don&apos;t think this should show the same regressions as last time
&gt; &gt; 
&gt; &gt; ```
&gt; &gt; With patch:             Without patch:
&gt; &gt; 
&gt; &gt; Octane Score: 36347     36816
&gt; &gt; 
&gt; &gt; Richards:        41254  42666
&gt; &gt; Deltablue:       50997  50765
&gt; &gt; Crypto:          39711  38458
&gt; &gt; Raytrace:        96643  96051
&gt; &gt; EarleyBoyer:     57098  57083
&gt; &gt; Regexp:           5450   5231
&gt; &gt; Splay:           22228  23103
&gt; &gt; SplayLatency:    21059  22475
&gt; &gt; NavierStokes:    28703  29562
&gt; &gt; pdf.js:          25237  24480
&gt; &gt; Mandreel:        38559  39258
&gt; &gt; MandreelLatency: 25565  26517
&gt; &gt; GB Emulator:     85638  88147
&gt; &gt; CodeLoad:        22789  23316
&gt; &gt; Box2DWeb:        54762  57669
&gt; &gt; zlib:            61569  59881
&gt; &gt; Typescript:      61037  63215
&gt; &gt; 
&gt; &gt; ```
&gt; 
&gt; This indicates a 1.2% regression.  If that&apos;s real, then it&apos;s a serious
&gt; issue.  You should do more runs, maybe running Octane via
&gt; run-jsc-benchmarks.  It doesn&apos;t give a genuine Octane score, but the
&gt; execution time geometric mean is very well correlated to 1/Octane_score.

(In reply to comment #37)
&gt; (In reply to comment #30)
&gt; &gt; some Octane runs look pretty neutral, (I expect there is a very slight
&gt; &gt; parsing hit, but very little). Multiple runs yield different variations of
&gt; &gt; winners/losers, so it looks neutral to me. I&apos;ll do some more perf testing,
&gt; &gt; but I don&apos;t think this should show the same regressions as last time
&gt; &gt; 
&gt; &gt; ```
&gt; &gt; With patch:             Without patch:
&gt; &gt; 
&gt; &gt; Octane Score: 36347     36816
&gt; &gt; 
&gt; &gt; Richards:        41254  42666
&gt; &gt; Deltablue:       50997  50765
&gt; &gt; Crypto:          39711  38458
&gt; &gt; Raytrace:        96643  96051
&gt; &gt; EarleyBoyer:     57098  57083
&gt; &gt; Regexp:           5450   5231
&gt; &gt; Splay:           22228  23103
&gt; &gt; SplayLatency:    21059  22475
&gt; &gt; NavierStokes:    28703  29562
&gt; &gt; pdf.js:          25237  24480
&gt; &gt; Mandreel:        38559  39258
&gt; &gt; MandreelLatency: 25565  26517
&gt; &gt; GB Emulator:     85638  88147
&gt; &gt; CodeLoad:        22789  23316
&gt; &gt; Box2DWeb:        54762  57669
&gt; &gt; zlib:            61569  59881
&gt; &gt; Typescript:      61037  63215
&gt; &gt; 
&gt; &gt; ```
&gt; 
&gt; This indicates a 1.2% regression.  If that&apos;s real, then it&apos;s a serious
&gt; issue.  You should do more runs, maybe running Octane via
&gt; run-jsc-benchmarks.  It doesn&apos;t give a genuine Octane score, but the
&gt; execution time geometric mean is very well correlated to 1/Octane_score.

I&apos;ve been giving this a lot of runs, and my read of them is that the regressions come from enabling the flag (which only affects parsing). Startup and GC time should be close to neutral for the rest of the package, and that&apos;s roughly what the other benchmark runs I&apos;ve posted are showing... that the biggest differences occur when the parsing of async functions is enabled.

AFAICT, landing this should be close to neutral so long as the parser flag is not enabled. I will see if we can improve parse-time at all, separately</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245780</commentid>
    <comment_count>39</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-28 14:20:34 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; 
&gt; This indicates a 1.2% regression.  If that&apos;s real, then it&apos;s a serious
&gt; issue.  You should do more runs, maybe running Octane via
&gt; run-jsc-benchmarks.  It doesn&apos;t give a genuine Octane score, but the
&gt; execution time geometric mean is very well correlated to 1/Octane_score.

It seems that the validated results reported by Caitlin are neutral. And performance tracking agrees the validated results :) https://arewefastyet.com/#machine=29&amp;view=breakdown&amp;suite=octane</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292267</attachid>
            <date>2016-10-20 15:09:41 -0700</date>
            <delta_ts>2016-10-21 06:48:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163760-20161020180602.patch</filename>
            <type>text/plain</type>
            <size>142269</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
M2M4YjIyOWQxZmQwNjJiYTcxMTAxOWM2MDIwYzE1MjRlNWE0MzU4Li4xZDljYTIxYTgxNjE5OTNh
M2MxMTg0NWNiNmZmZjlkNjFhMmI4OWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMTkgQEAKIDIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KIAorICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBm
dW5jdGlvbnMgZ2VuZXJhdGUgYnl0ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3
aGljaCBpcworICAgICAgICBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb246CisgICAgICAgIAorICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5z
bGF0aW9uOgorICAgICAgICBhc3luYyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAv
LyBBZnRlciB0cmFuc2xhdGlvbjoKKyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAg
ICAgICAgIGxldCBnZW5lcmF0b3IgPSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQm9keSBvZiBhc3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgQGdlbmVyYXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5l
cmF0b3JUaGlzOiB0aGlzLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8
ZnJhbWUgc3RhdGU+LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgYGBgCisJCSAgICAgICAgCisgICAgICAg
IEF3YWl0IEV4cHJlc3Npb25zIGFyZSBlcXVpdmFsZW50IHRvIG5vbi1kZWxlZ2F0aW5nIFlpZWxk
IGV4cHJlc3Npb25zLCBhbmQgZW1pdCBpZGVudGljYWwgYnl0ZWNvZGUuCisKKyAgICAgICAgSW4g
dGhpcyBidWcsIGFzeW5jIGFycm93IGZ1bmN0aW9ucyBhcmUgb25seSBwYXJ0aWFsbHkgaW1wbGVt
ZW50ZWQsIGFzIHN1cGVyIGJpbmRpbmdzIGluIGFzeW5jIGZ1bmN0aW9ucworICAgICAgICBkbyBu
b3QgeWV0IHdvcmsgY29ycmVjdGx5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0FzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuanM6IEFkZGVkLgorICAgICAgICAoYXN5bmNGdW5jdGlvblJlc3VtZSk6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVt
cEJ5dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aXNBcnJvd0Z1bmN0aW9uKToKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0NvbW1vbik6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuYyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25l
d19hc3luY19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRTb3VyY2VQYXJzZU1vZGUp
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjppc0dlbmVy
YXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc0dlbmVy
YXRvck9yQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUpOgorICAgICAgICAqIHJ1bnRpbWUv
QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OmNhbGxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5
cGU6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9u
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0
aW9uUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uUHJvdG90
eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNr
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU0FzeW5j
RnVuY3Rpb246OkpTQXN5bmNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlv
bjo6Y3JlYXRlSW1wbCk6CisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFs
bG9jYXRpb25XYXRjaHBvaW50KToKKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSk6
CisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblByb3RvdHlwZUNvbmN1cnJl
bnRseSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1
cmVDb25jdXJyZW50bHkpOgorCisyMDE2LTEwLTIwICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGln
YWxpYS5jb20+CisKICAgICAgICAgW0pTQ10gZGlzYWxsb3cgcmVmZXJlbmNlcyB0byBgYXdhaXRg
IGluIEFzeW5jRnVuY3Rpb24gZm9ybWFsIHBhcmFtZXRlcnMKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzY5NAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggOTY4ZDA3NTJmYTRhNzVmMDRhZDViZjA3MTkxODY1NzU4NjI2MWMz
Zi4uYjVhMDM5ZWNhY2QxNjNmZjk5Y2ExOTlhMmI5M2IzZWQ4Y2UwNjE1YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNjM0LDYgKzYzNCw4IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9BcnJheUNvbnZlbnRpb25zLmNwcAogICAgIHJ1bnRp
bWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0FycmF5UHJvdG90eXBl
LmNwcAorICAgIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRp
bWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Jhc2ljQmxvY2tMb2Nh
dGlvbi5jcHAKICAgICBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1l
L0Jvb2xlYW5PYmplY3QuY3BwCkBAIC03MTAsNiArNzEyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKICAgICBy
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5jcHAKKyAgICBydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAKICAgICBydW50aW1l
L0pTQm91bmRGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVu
dGltZS9KU0NhbGxlZS5jcHAKQEAgLTEyOTIsNiArMTI5NSw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Fy
cmF5Q29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJy
YXlJdGVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9BcnJheVByb3RvdHlwZS5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9B
c3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0
aW5zL0RhdGVQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
RnVuY3Rpb25Qcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
R2VuZXJhdG9yUHJvdG90eXBlLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IGVlY2I1M2M1NzkyMWY1NmZmMjE1MDZhYzI5MGQ4YjJjZWIyOTA5ZGMuLjk0
NDEwMGY2M2UzNTMyZTFjODliZjJhZmNiM2MyZmI3MTAzMzYxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC04OSw2ICs4OSw3IEBAIEphdmFTY3JpcHRD
b3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMv
QXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJy
YXlJdGVyYXRvclByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMv
QXJyYXlQcm90b3R5cGUuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FzeW5j
RnVuY3Rpb25Qcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Rh
dGVQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Z1bmN0aW9u
UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HZW5lcmF0b3JQ
cm90b3R5cGUuanMgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZWNkMWIyZTdl
Y2MyMTcyZGM0YjMyNTBmZGU5YjdmYTBlYTI4NmM5Li4wMzBkYTRhNjAyZmMwOTJhNGZmM2E3MTA5
NmFkYmU2NDNhMmFkOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0MCw2
ICsxMjQwLDEyIEBACiAJCTUzRkEyQUUzMUNGMzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGQTJBRTIxQ0YzODAzOTAwMjI3MTFEIC8qIExM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgKi87IH07CiAJ
CTUzRkQwNEQzMUQ3QUIyNzcwMDMyODdEMyAvKiBXQVNNQ2FsbGluZ0NvbnZlbnRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGRDA0RDExRDdB
QjE4NzAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5jcHAgKi87IH07CiAJCTUzRkQw
NEQ0MUQ3QUIyOTEwMDMyODdEMyAvKiBXQVNNQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQyMUQ3QUIxODcwMDMy
ODdEMyAvKiBXQVNNQ2FsbGluZ0NvbnZlbnRpb24uaCAqLzsgfTsKKwkJNUI3MENGREUxREI2OUU2
NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNG
dW5jdGlvbi5oICovOyB9OworCQk1QjcwQ0ZERjFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1
bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVCNzBDRkQ5MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uY3BwICovOyB9Owor
CQk1QjcwQ0ZFMDFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREExREI2
OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCAqLzsgfTsKKwkJNUI3MENG
RTExREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREIxREI2OUU1QzAw
RUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OworCQk1QjcwQ0ZFMjFE
QjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEQzFEQjY5RTVDMDBFQzIz
RjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IH07CisJCTVCNzBDRkUzMURCNjlF
NjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREQxREI2OUU1QzAwRUMyM0Y5
IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTVENUQ4QUQxMEUwRDBF
QkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQu
ZHlsaWIgKi87IH07CiAJCTVEQkIxNTFCMTMxRDBCMzEwMDU2QUQzNiAvKiB0ZXN0YXBpLmpzIGlu
IENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTREODU3NzQwQTQ2OTZDODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi87IH07CiAJCTVEQkIxNTI1
MTMxRDBCRDcwMDU2QUQzNiAvKiBtaW5pZG9tLmpzIGluIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQxMjExMEQwQTQ4Nzg4NzAwNDgwMjU1
IC8qIG1pbmlkb20uanMgKi87IH07CkBAIC0zNTQwLDYgKzM1NDYsMTMgQEAKIAkJNTNGQTJBRTIx
Q0YzODAzOTAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMTEludFBy
b3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1M0ZEMDREMTFEN0FCMTg3MDAzMjg3RDMgLyogV0FTTUNhbGxpbmdD
b252ZW50aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdBU01D
YWxsaW5nQ29udmVudGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRkQw
NEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXQVNNQ2FsbGluZ0NvbnZlbnRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTUNhbGxpbmdDb252ZW50aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5j
RnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBc3luY0Z1bmN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkQ5MURCNjlFNUMwMEVD
MjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNBc3luY0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUI3MENGREExREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEQjFEQjY5RTVDMDBFQzIzRjkg
LyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUI3MENGREMxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGREQxREI2
OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjgyNDMwNDFEQjdBQTQ5MDBFQTYzODQgLyog
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVENUQ4QUQwMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1h
Y2gtby5keWxpYiI7IG5hbWUgPSBsaWJlZGl0LmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGliZWRp
dC5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJNURBRkQ2Q0IxNDZCNjg2
MzAwRkJFRkI0IC8qIEpTQy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBKU0MueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVERERGNDQ2MTRGRUU3MjIwMEI0RkI0RCAvKiBM
TEludERlc2lyZWRPZmZzZXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExM
SW50RGVzaXJlZE9mZnNldHMuaDsgcGF0aCA9IExMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZz
ZXRzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC01OTAyLDYgKzU5
MTUsMTAgQEAKIAkJCQlGNjkyQTg0RDAyNTU1OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUu
Y3BwICovLAogCQkJCUY2OTJBODRFMDI1NTU5N0QwMUZGNjBGNyAvKiBBcnJheVByb3RvdHlwZS5o
ICovLAogCQkJCTBGQjdGMzhBMTVFRDhFMzgwMEYxNjdCMiAvKiBBcnJheVN0b3JhZ2UuaCAqLywK
KwkJCQk1QjcwQ0ZERDFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCAqLywKKwkJCQk1QjcwQ0ZEQzFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmggKi8sCisJCQkJNUI3MENGREIxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwICovLAorCQkJCTVCNzBDRkRBMURCNjlFNUMwMEVDMjNGOSAvKiBB
c3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJMEYzOEQyQTAxRDQ0MTk2NjAwNjgwNDk5
IC8qIEF1eGlsaWFyeUJhcnJpZXIuaCAqLywKIAkJCQkwRjM4RDJBMTFENDQxOTY2MDA2ODA0OTkg
LyogQXV4aWxpYXJ5QmFycmllcklubGluZXMuaCAqLywKIAkJCQk1MjY3OEY4QzFBMDMxMDA5MDA2
QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmNwcCAqLywKQEAgLTYwODcsNiArNjEwNCw4IEBA
CiAJCQkJMEYyQjY2QkIxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3LmggKi8s
CiAJCQkJMEYyQjY2QkMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3SW5saW5l
cy5oICovLAogCQkJCTUzOUZCOEI5MUM5OURBN0MwMDk0MEZBMSAvKiBKU0FycmF5SW5saW5lcy5o
ICovLAorCQkJCTVCNzBDRkQ5MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uY3Bw
ICovLAorCQkJCTVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCAq
LywKIAkJCQk4NkZBOUU4RjE0MkJCQjJEMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmNwcCAq
LywKIAkJCQk4NkZBOUU5MDE0MkJCQjJFMDAxNzczQjcgLyogSlNCb3VuZEZ1bmN0aW9uLmggKi8s
CiAJCQkJNjU3Q0Y0NTYxOUJGNjY2MjAwNEFDQkYyIC8qIEpTQ2FsbGVlLmNwcCAqLywKQEAgLTcy
NzUsNiArNzI5NCw3IEBACiAJCQkJQTdEODAxQTAxODgwRDY2RTAwMjZDMzlCIC8qIEFycmF5UHJv
dG90eXBlLmpzICovLAogCQkJCTdDRjlCQzU4MUI2NUQ5QTMwMDlEQjFFRiAvKiBBcnJheUNvbnN0
cnVjdG9yLmpzICovLAogCQkJCTdDRjlCQzU5MUI2NUQ5QTMwMDlEQjFFRiAvKiBBcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmpzICovLAorCQkJCTVCODI0MzA0MURCN0FBNDkwMEVBNjM4NCAvKiBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmpzICovLAogCQkJCURFMjZFOTA2MUNCNUREOTYwMEQyQkU4MiAv
KiBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwICovLAogCQkJCURFMjZFOTAyMUNCNUREMDUw
MEQyQkU4MiAvKiBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuaCAqLywKIAkJCQlBN0Q4MDFBMTE4
ODBENjZFMDAyNkMzOUIgLyogQnVpbHRpbkV4ZWN1dGFibGVzLmNwcCAqLywKQEAgLTc3MDYsNiAr
NzcyNiw3IEBACiAJCQkJREMzRDJCMEExRDM0MzE2MjAwQkE5MThDIC8qIEhlYXBDZWxsLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGQzE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzNDQ0ZEMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9j
a01hcElubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCNzBDRkUyMURCNjlFNjYwMEVDMjNG
OSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzND
Q0ZFMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja1NldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCRjE1OEQxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZDM0NEMDAxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrV29ya2xpc3Qu
aCBpbiBIZWFkZXJzICovLApAQCAtODI3MSw2ICs4MjkyLDcgQEAKIAkJCQk3QzE4NEUxQjE3QkVE
QkQzMDA3Q0I2M0EgLyogSlNQcm9taXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzE4NEUyMzE3
QkVFMjQwMDA3Q0I2M0EgLyogSlNQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk5NkI3MzFFMUJEQTA4RUYwMDMzMUI4NCAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5sdXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTVCNzBDRkRFMURCNjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5j
RnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMDA4Q0RCMTg3MTI0QkIwMDk1NUMyNCAv
KiBKU1Byb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxODRFMUYxN0JFRTIy
RTAwN0NCNjNBIC8qIEpTUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2
QjczMUYxQkRBMDhFRjAwMzMxQjg0IC8qIEpTUHJvbWlzZVByb3RvdHlwZS5sdXQuaCBpbiBIZWFk
ZXJzICovLApAQCAtODQxMSw2ICs4NDMzLDcgQEAKIAkJCQlCQzE4QzQzRjBFMTZGNUNEMDBCMzQ0
NjAgLyogTm9kZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5RTQ1QTI4MThBMUIyNTkwMDI2RDg4
RiAvKiBOb25kZXRlcm1pbmlzdGljSW5wdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQx
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNUI3MENGRTAxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDQyMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOdW1iZXJDb25z
dHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQzMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBOdW1iZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDQ0MEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBOdW1iZXJQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTI3NSw2ICs5
Mjk4LDcgQEAKIAkJCQlBNTU3MTRCRjFDRDgwNEE0MDAwNEQyQzYgLyogQ29uc29sZU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUyNTFCREFDREFDMDA4MEZGNzQgLyogQjNQYXRj
aHBvaW50U3BlY2lhbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUyNzFCREFDREFDMDA4
MEZGNzQgLyogQjNQYXRjaHBvaW50VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENG
RTMxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkVDODUyOTFCREFDREFDMDA4MEZGNzQgLyogQjNQaGFzZVNjb3BlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTJCMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2Nl
ZHVyZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzQyMkE2MjFDMTU4RTZBMDBFMkVCOTggLyog
QjNDb25zdEZsb2F0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05Njg3LDYgKzk3MTEsNyBA
QAogCQkJCTBGNTUxM0E4MUQ1QTY4Q0QwMEMzMkJEOCAvKiBGcmVlTGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlGRTk5QjI0QTFDMjRDM0Q3MDBDODIxNTkgLyogSklUTmVnR2VuZXJhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2Q0M4NUM0MEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QjcwQ0ZFMTFEQjY5RTY2MDBFQzIz
RjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBN0Mx
RThFNDExMkU3MkVGMDBBMzdGOTggLyogSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkI0MTU4NDFENzhGQjRDMDBERjhEMDkgLyogQXJyYXlDb252ZW50aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc2NkQyODE1QThDQzFFMDA4RjM2M0UgLyogSklU
U3R1YlJvdXRpbmUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05ODYyLDYgKzk4ODcsNyBAQAogCQkJ
CTE0OEYyMUI3MTA3RUM1NDcwMDQyRUMyQyAvKiBOb2Rlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlEQzY5QUE2NjFDRjdBMUYyMDBDNjI3MkYgLyogTWF0Y2hSZXN1bHQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1QjcwQ0ZERjFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3lu
Y0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NUVCMjlCMTBDRTI1ODEwMDFBOTkw
RSAvKiBOb2Rlc0NvZGVnZW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU0NkY1MjExQTMyQjMx
MzAwNkYwN0Q1IC8qIE51bGxHZXR0ZXJGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MzIyRTVBMjFEQTY0NDM5MDA2RTc3MDkgLyogREZHRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZmNmNjN2NlMGZmYjMy
NDFhY2JhNzk2YTIxYjgwZWQ4Y2Q0Yzk0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGln
YWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitm
dW5jdGlvbiBhc3luY0Z1bmN0aW9uUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVN
b2RlKQoreworICAgICJ1c2Ugc3RyaWN0IjsKKyAgICBsZXQgc3RhdGUgPSBnZW5lcmF0b3IuQGdl
bmVyYXRvclN0YXRlOworICAgIGxldCB2YWx1ZSA9IEB1bmRlZmluZWQ7CisKKyAgICBpZiAoc3Rh
dGUgPT09IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCB8fCAocmVzdW1lTW9kZSAhPT0gQEdlbmVy
YXRvclJlc3VtZU1vZGVOb3JtYWwgJiYgcmVzdW1lTW9kZSAhPT0gQEdlbmVyYXRvclJlc3VtZU1v
ZGVUaHJvdykpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJBc3luYyBmdW5jdGlvbiBp
bGxlZ2FsbHkgcmVzdW1lZCIpOworCisgICAgdHJ5IHsKKyAgICAgICAgZ2VuZXJhdG9yLkBnZW5l
cmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsKKyAgICAgICAgdmFsdWUgPSBn
ZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBn
ZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJh
dG9yRnJhbWUpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gQEdl
bmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRv
clN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOworICAgICAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLkByZXNvbHZlKHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0gY2F0Y2ggKGVycm9yKSB7
CisgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21w
bGV0ZWQ7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KGVycm9yKTsKKyAgICB9CisK
KyAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUodmFsdWUpLkB0aGVuKAorICAgICAgICBmdW5j
dGlvbih2YWx1ZSkgeyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCB2YWx1
ZSwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpOyB9LAorICAgICAgICBmdW5jdGlvbihlcnJv
cikgeyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBlcnJvciwgQEdlbmVy
YXRvclJlc3VtZU1vZGVUaHJvdyk7IH0pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDU3NmRlNDAwNjA0ZDEwMTQ3NTFjYzYz
YmVhY2VjNzdhNTVmZDRmZjcuLjg0YWUzYmRhMmYwMGI5MGQ4ZjFkMjMwZjYxYmFkMDkyOGM4MTEz
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KQEAgLTEwNSw2ICsxMDUsOCBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3
X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX25ld19hc3luY19mdW5jIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXN5bmNfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3NldF9mdW5jdGlvbl9uYW1lIiwgImxlbmd0
aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsIiwgImxlbmd0aCIgOiA5
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2NhbGwiLCAibGVuZ3RoIiA6IDkg
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
aW5kZXggZDk3M2JjZmIxMzdjMzJjMGM2ZGVlZGYzZGUwZTFkZDk0MTY1NGM2Zi4uMTYyZGIyODJj
ZDU1MzkwNTAxODU1NzEwYzIxZWJiNDE3ZmE1MDVlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE2NCw2ICsxNjQsNyBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQg
b3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgog
ICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5j
X2V4cDoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4cDoKICAgICBjYXNlIG9wX3RvX2lu
ZGV4X3N0cmluZzoKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAg
IGNhc2Ugb3BfcmVzb2x2ZV9zY29wZToKQEAgLTE5Niw2ICsxOTcsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQs
IEluc3RydWN0aQogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoK
ICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICBjYXNlIG9wX25ld19hc3luY19m
dW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9z
Y29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CkBAIC0zODgsNiArMzkw
LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ss
IE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
ICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX25ld19nZW5lcmF0
b3JfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuYzoKKyAgICBjYXNlIG9wX25l
d19hc3luY19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAgICBjYXNlIG9w
X3RhaWxfY2FsbF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1l
bnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRl
eCA5NDc5ODVkMWI4MmM2ZjRmZGJlYjdiOWZmMzkwNDJkMGRiN2M4OTVjLi4xOGY0ZDMzMjQzZGQz
MjIzMmY0NDUyNzVjMzZkYmQ4NzI5NjVjZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ2Myw2ICsxNDYzLDE0IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNf
ZnVuYzogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAibmV3X2FzeW5jX2Z1bmMiKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX25ld19mdW5jX2V4cDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE0Nzks
NiArMTQ4NywxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cisg
ICAgICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfYXN5bmNf
ZnVuY19leHAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0
ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3NldF9mdW5jdGlvbl9uYW1l
OiB7CiAgICAgICAgICAgICBpbnQgZnVuY1JlZyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IG5hbWVSZWcgPSAoKytpdCktPnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMjVhMzU3YmY1
NjExNjQ1MGMxYjBlMjU1Yzk3NzBhMjNhZDNlMTllYy4uYjNlZmY2NTNmMGU1Y2UwYjM0MmI0YTJh
NDM2OWMzODE3YjI2ZjE3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTEyMiw3ICsxMjIsMTMgQEAgcHVibGljOgogICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAg
ICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQogICAgIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQotICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0
aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCisg
ICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICAg
ICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICAgICAg
U291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMocGFy
c2VNb2RlKCkpOworICAgIH0KICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRU
eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRUeXBlPihtX2Rl
cml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbENvbnRleHRUeXBlPihtX2V2YWxDb250
ZXh0VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5k
ZXggYmFjNDA1NDEzYTZiMmZkZDk5NzI3MmMyOGYwYzc0YTcyMzA2YTMzOC4uMTVkZmIxNGMzY2M4
OGI5ZWI2MGI4MjgxNDdmYWRmZjAwOTg2ODk1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAg
LTEzMiw3ICsxMzIsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9
CiAgICAgCi0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1v
ZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CisgICAgYm9vbCBp
c0Fycm93RnVuY3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFNvdXJjZVBhcnNl
TW9kZVNldCgKKyAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUs
CisgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUsCisg
ICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5j
b250YWlucyhwYXJzZU1vZGUoKSk7CisgICAgfQogCiAgICAgSlNDOjpEZXJpdmVkQ29udGV4dFR5
cGUgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3Qge3JldHVybiBzdGF0aWNfY2FzdDxKU0M6OkRl
cml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggZjdlMTAzMTdhMjE0YzY0ODM5MGI5NGIxOGJjZmQ3MzczZDVjZTE3Zi4uYzc2NWI5
MDNjNDlmYWQyMTY5ZDFjYzM0ODczNzZkZWE2NTQ5NDBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAg
LTE1OCw3ICsxNTgsNyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KQogICAgIH0KICAgICAKIAotICAgIGlmIChtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICBpZiAoaXNHZW5lcmF0b3JPckFz
eW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKSkpCiAgICAg
ICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9jb2RlQmxvY2suZ2V0KCksIG1faW5zdHJ1
Y3Rpb25zLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuZ2V0KCksIG1fZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZUluZGV4KTsKIAogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbnMo
c3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPihtX2luc3RydWN0aW9u
cykpOwpAQCAtMjY4LDE1ICsyNjgsMTUgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBi
b29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3Mg
fHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSAoZnVu
Y3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IChm
dW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgJiYgIWNvZGVCbG9jay0+aXNBcnJvd0Z1
bmN0aW9uKCkgJiYgaXNBcmd1bWVudHNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkpOwogCi0g
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7
Ci0gICAgICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3Vt
ZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1
bmN0aW9uIHNjb3BlLgorICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJz
ZU1vZGUocGFyc2VNb2RlKSkgeworICAgICAgICAvLyBHZW5lcmF0b3IgYW5kIEFzeW5jRnVuY3Rp
b24gbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxs
IGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KICAgICAg
ICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsKIAotICAgICAgICAvLyBHZW5lcmF0b3IgdXNlcyB0
aGUgdmFyIHNjb3BlIHRvIHNhdmUgYW5kIHJlc3VtZSBpdHMgdmFyaWFibGVzLiBTbyB0aGUgbGV4
aWNhbCBzY29wZSBpcyBhbHdheXMgaW5zdGFudGlhdGVkLgorICAgICAgICAvLyBHZW5lcmF0b3Ig
YW5kIEFzeW5jRnVuY3Rpb24gdXNlcyB0aGUgdmFyIHNjb3BlIHRvIHNhdmUgYW5kIHJlc3VtZSBp
dHMgdmFyaWFibGVzLiBTbyB0aGUgbGV4aWNhbCBzY29wZSBpcyBhbHdheXMgaW5zdGFudGlhdGVk
LgogICAgICAgICBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gdHJ1ZTsKICAgICB9CiAK
LSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1
bmN0aW9uTW9kZSAmJiBuZWVkc0FyZ3VtZW50cykgeworICAgIGlmIChpc0dlbmVyYXRvck9yQXN5
bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKSAmJiBuZWVkc0FyZ3VtZW50cykg
ewogICAgICAgICAvLyBHZW5lcmF0b3IgZG9lcyBub3QgcHJvdmlkZSAiYXJndW1lbnRzIi4gSW5z
dGVhZCwgd3JhcHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24gcHJvdmlkZXMgImFyZ3VtZW50cyIuCiAg
ICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVudHMgb2YgYSBnZW5lcmF0b3Igc2hvdWxk
IGJlIGV2YWx1YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQuCiAgICAgICAgIC8vIFRvIHdvcmthcm91
bmQgaXQsIHdlIGV2YWx1YXRlIHRoZXNlIGFyZ3VtZW50cyBhcyBhcmd1bWVudHMgb2YgYSB3cmFw
cGluZyBnZW5lcmF0b3IgZnVuY3Rpb24sIGFuZCByZWZlcmVuY2UgaXQgZnJvbSBhIGdlbmVyYXRv
ci4KQEAgLTMyMCwxMyArMzIwLDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAKICAgICBl
bWl0RW50ZXIoKTsKIAotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSkKKyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFy
c2VNb2RlKHBhcnNlTW9kZSkpCiAgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJh
bWV0ZXJzWzFdOwogCiAgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKIAogICAgIGlmIChmdW5j
dGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1
bmN0aW9uTW9kZSgpKSkgewogICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpOworICAgICAgICBBU1NFUlQoIWlzQXN5bmNGdW5jdGlv
bkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUg
PSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpOwogICAgICAgICBib29sIGlzRnVuY3Rpb25OYW1lQ2FwdHVy
ZWQgPSBjYXB0dXJlcyhmdW5jdGlvbk5vZGUtPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgYm9v
bCBtYXJrQXNDYXB0dXJlZCA9IGlzRHluYW1pY1Njb3BlIHx8IGlzRnVuY3Rpb25OYW1lQ2FwdHVy
ZWQ7CkBAIC01MDUsNyArNTA2LDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgc2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJp
YWJsZSA9ICFoYXZlUGFyYW1ldGVyTmFtZWRBcmd1bWVudHMgJiYgIW1fY29kZUJsb2NrLT5pc0Fy
cm93RnVuY3Rpb24oKTsKKyAgICAgICAgYm9vbCBzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxl
ID0gIWhhdmVQYXJhbWV0ZXJOYW1lZEFyZ3VtZW50cworICAgICAgICAgICAgJiYgIVNvdXJjZVBh
cnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpLmNvbnRhaW5zKG1fY29kZUJsb2NrLT5wYXJz
ZU1vZGUoKSk7CiAgICAgICAgIHNob3VsZENyZWF0ZUFyZ3VtZW50c1ZhcmlhYmxlSW5QYXJhbWV0
ZXJTY29wZSA9IHNob3VsZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUgJiYgIWlzU2ltcGxlUGFyYW1l
dGVyTGlzdDsKICAgICAgICAgLy8gRG8gbm90IGNyZWF0ZSBhcmd1bWVudHMgdmFyaWFibGUgaW4g
Y2FzZSBvZiBBcnJvdyBmdW5jdGlvbi4gVmFsdWUgd2lsbCBiZSBsb2FkZWQgZnJvbSBwYXJlbnQg
c2NvcGUKICAgICAgICAgaWYgKHNob3VsZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUgJiYgIXNob3Vs
ZENyZWF0ZUFyZ3VtZW50c1ZhcmlhYmxlSW5QYXJhbWV0ZXJTY29wZSkgewpAQCAtNTQ5LDYgKzU1
MSwzMSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZToKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgorICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZTogeworICAgICAgICBBU1NFUlQoIWlzQ29uc3RydWN0
b3IoKSk7CisgICAgICAgIEFTU0VSVChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUpOworICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7CisKKyAg
ICAgICAgaWYgKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlv
bk1vZGUpIHsKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29k
ZUJsb2NrLT51c2VzRXZhbCgpKSB7CisgICAgICAgICAgICAgICAgbV9jb2RlQmxvY2stPmFkZFBy
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOworICAgICAgICAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVtaXRNb3ZlKG1fZ2VuZXJh
dG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGVtaXRDcmVhdGVU
aGlzKG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGVt
aXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25C
b2R5TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9k
eU1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAg
ICAgICAgIC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUu
CiAgICAgICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOwpA
QCAtNjA4LDcgKzYzNSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAKICAgICAvLyBXZSBu
ZWVkIGxvYWQgfHN1cGVyfCAmIHx0aGlzfCBmb3IgYXJyb3cgZnVuY3Rpb24gYmVmb3JlIGluaXRp
YWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2sKICAg
ICAvLyBpZiB3ZSBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb24uIEJlY2F1c2UgfHN1
cGVyfCAmIHx0aGlzfCB2YWx1ZXMgY2FuIGJlIHVzZWQgdGhlcmUKLSAgICBpZiAoU291cmNlUGFy
c2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSA9PSBwYXJzZU1vZGUgJiYgIWlzU2ltcGxlUGFyYW1l
dGVyTGlzdCkgeworICAgIGlmICgoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9k
ZSkuY29udGFpbnMocGFyc2VNb2RlKSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB8fCBwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkgewog
ICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGZ1bmN0aW9uTm9kZS0+dXNl
c1N1cGVyUHJvcGVydHkoKSkKICAgICAgICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0
aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAKQEAgLTYyNywxMiArNjU0LDQ2IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rp
b25Ob2RlLCBVbmxpbmtlCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBi
ZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNj
b3BlU3RhY2soKSIgaXMgY2FsbGVkCiAgICAgLy8gYmVjYXVzZSBhIGZ1bmN0aW9uJ3MgZGVmYXVs
dCBwYXJhbWV0ZXIgRXhwcmVzc2lvbk5vZGVzIHdpbGwgdXNlIHRlbXBvcmFyeSByZWdpc3RlcnMu
CiAgICAgcHVzaFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFREWkNoZWNr
T3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFopOwor
CisgICAgVHJ5RGF0YSogdHJ5Rm9ybWFsUGFyYW1ldGVyc0RhdGEgPSBudWxscHRyOworICAgIGlm
IChpc0FzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSkgJiYgIWlzU2ltcGxl
UGFyYW1ldGVyTGlzdCkgeworICAgICAgICBSZWZQdHI8TGFiZWw+IHRyeUZvcm1hbFBhcmFtZXRl
cnNTdGFydCA9IGVtaXRMYWJlbChuZXdMYWJlbCgpLmdldCgpKTsKKyAgICAgICAgdHJ5Rm9ybWFs
UGFyYW1ldGVyc0RhdGEgPSBwdXNoVHJ5KHRyeUZvcm1hbFBhcmFtZXRlcnNTdGFydC5nZXQoKSk7
CisgICAgfQorCiAgICAgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1
bmN0aW9uU2NvcGVTdGFjayhwYXJhbWV0ZXJzLCBpc1NpbXBsZVBhcmFtZXRlckxpc3QsIGZ1bmN0
aW9uTm9kZSwgZnVuY3Rpb25TeW1ib2xUYWJsZSwgc3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBj
YXB0dXJlcywgc2hvdWxkQ3JlYXRlQXJndW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3BlKTsK
LSAgICAKKworICAgIGlmIChpc0FzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9k
ZSkgJiYgIWlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgeworICAgICAgICBSZWZQdHI8TGFiZWw+IGRp
ZE5vdFRocm93ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXAoZGlkTm90VGhyb3cuZ2V0
KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhjZXB0aW9uID0gbmV3VGVtcG9yYXJ5
KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZSA9IG5ld1RlbXBvcmFy
eSgpOworICAgICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoSGVyZSA9IGVtaXRMYWJlbChuZXdMYWJl
bCgpLmdldCgpKTsKKyAgICAgICAgcG9wVHJ5QW5kRW1pdENhdGNoKHRyeUZvcm1hbFBhcmFtZXRl
cnNEYXRhLCBleGNlcHRpb24uZ2V0KCksIHRocm93blZhbHVlLmdldCgpLCBjYXRjaEhlcmUuZ2V0
KCksIEhhbmRsZXJUeXBlOjpDYXRjaCk7CisKKyAgICAgICAgLy8gcmV0dXJuIEBQcm9taXNlLkBy
ZWplY3QodGhyb3duVmFsdWUpOworICAgICAgICBWYXJpYWJsZSBwcm9taXNlVmFyID0gdmFyaWFi
bGUobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUHJvbWlzZVByaXZhdGVOYW1l
KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBlbWl0UmVzb2x2ZVNjb3Bl
KG5ld1RlbXBvcmFyeSgpLCBwcm9taXNlVmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHByb21pc2VDb25zdHJ1Y3RvciA9IGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5KCksIHNj
b3BlLmdldCgpLCBwcm9taXNlVmFyLCBSZXNvbHZlTW9kZTo6VGhyb3dJZk5vdEZvdW5kKTsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb21pc2VSZWplY3QgPSBlbWl0R2V0QnlJZChuZXdU
ZW1wb3JhcnkoKSwgcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpLCBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgpKTsKKworICAgICAgICBDYWxsQXJn
dW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxwdHIsIDEpOworCisgICAgICAgIGVtaXRNb3ZlKGFyZ3Mu
dGhpc1JlZ2lzdGVyKCksIHByb21pc2VDb25zdHJ1Y3Rvci5nZXQoKSk7CisgICAgICAgIGVtaXRN
b3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3RlcigwKSwgdGhyb3duVmFsdWUuZ2V0KCkpOworCisgICAg
ICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90KGZ1bmN0aW9uTm9kZS0+Zmlyc3RMaW5lKCksIGZ1bmN0
aW9uTm9kZS0+c3RhcnRPZmZzZXQoKSwgZnVuY3Rpb25Ob2RlLT5saW5lU3RhcnRPZmZzZXQoKSk7
CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGVtaXRDYWxsKG5ld1RlbXBv
cmFyeSgpLCBwcm9taXNlUmVqZWN0LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIGRp
dm90LCBkaXZvdCwgZGl2b3QsIERlYnVnZ2FibGVDYWxsOjpObyk7CisgICAgICAgIGVtaXRSZXR1
cm4ocmVzdWx0LmdldCgpKTsKKworICAgICAgICBlbWl0TGFiZWwoZGlkTm90VGhyb3cuZ2V0KCkp
OworICAgIH0KKwogICAgIC8vIElmIHdlIGRvbid0IGhhdmUgIGRlZmF1bHQgcGFyYW1ldGVyIGV4
cHJlc3Npb24sIHRoZW4gbG9hZGluZyB8dGhpc3wgaW5zaWRlIGFuIGFycm93IGZ1bmN0aW9uIG11
c3QgYmUgZG9uZQogICAgIC8vIGFmdGVyIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVz
QW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soKSBiZWNhdXNlIHRoYXQgZnVuY3Rpb24gc2V0cyB1
cCB0aGUKICAgICAvLyBTeW1ib2xUYWJsZSBzdGFjayBhbmQgZW1pdExvYWRUaGlzRnJvbUFycm93
RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKSBjb25zdWx0cyB0aGUgU3ltYm9sVGFibGUgc3Rh
Y2sKLSAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSA9PSBwYXJzZU1v
ZGUgJiYgaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNl
dChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jQXJyb3dGdW5jdGlvbk1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSkgJiYgaXNTaW1wbGVQYXJh
bWV0ZXJMaXN0KSB7CiAgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgZnVu
Y3Rpb25Ob2RlLT51c2VzU3VwZXJQcm9wZXJ0eSgpKQogICAgICAgICAgICAgZW1pdExvYWRUaGlz
RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICAKQEAgLTY0Miw3ICs3
MDMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIAogICAgIC8vIFNldCB1cCB0aGUg
bGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9y
ZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2Nv
cGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCiAgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtl
eWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29k
ZS4KLSAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1v
ZGUpIHsKKyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBh
cnNlTW9kZSkpIHsKICAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIp
OwogICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0KCptX3ZtLCBmdW5jdGlv
blN5bWJvbFRhYmxlKTsKICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgg
PSBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7CkBAIC0yOTg2LDYgKzMwNDcsMTEgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3Rl
cklEKiBkc3QsIEZ1bmN0aW8KICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3Jh
cHBlckZ1bmN0aW9uTW9kZToKICAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNG
dW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZToKKyAgICAg
ICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXN5bmNfZnVuY19leHA7CisgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMwMDQsNyArMzA3MCw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJl
Z2lzdGVySUQqIGRzdCwgRnVuY0V4CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNF
eHByTm9kZSogZnVuYykKIHsKLSAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBmdW5jLT5tZXRhZGF0
YSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1v
ZGUpOworICAgIEFTU0VSVChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJv
d0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5j
b250YWlucyhmdW5jLT5tZXRhZGF0YSgpLT5wYXJzZU1vZGUoKSkpOwogICAgIGVtaXROZXdGdW5j
dGlvbkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jLT5tZXRhZGF0YSgpKTsKICAgICByZXR1cm4g
ZHN0OwogfQpAQCAtMzAzOCw2ICszMTA0LDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGEKICAg
ICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0
aW9uKGZ1bmN0aW9uKSk7CiAgICAgaWYgKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUpCiAgICAgICAgIGVtaXRPcGNv
ZGUob3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlIGlmIChmdW5jdGlvbi0+cGFyc2VN
b2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSkKKyAgICAgICAgZW1p
dE9wY29kZShvcF9uZXdfYXN5bmNfZnVuYyk7CiAgICAgZWxzZQogICAgICAgICBlbWl0T3Bjb2Rl
KG9wX25ld19mdW5jKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2Vu
LmNwcAppbmRleCBkMzg3Y2RmODE1MDM4NTQ0MWEzNGU5NjNkNmI4YTI4MGFmMDMyNDAyLi5hNDYw
MjM1OTdmMWIwODRhNTQ4OGJiYzkyZTU2N2IzYjI0YzY5MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zNDIxLDYg
KzM0MjEsNjcgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xl
U3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgICAgIEFTU0VSVChzaW5n
bGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5v
ZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KHNpbmds
ZVN0YXRlbWVudCk7CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByID0gZXhwclN0YXRlbWVu
dC0+ZXhwcigpOworICAgICAgICBBU1NFUlQoZXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAg
ICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihl
eHByKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNF
eHByKTsKKworICAgICAgICBpZiAoZ2VuZXJhdG9yLnN1cGVyQmluZGluZygpID09IFN1cGVyQmlu
ZGluZzo6TmVlZGVkIHx8IGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBEb24ndCBh
bHdheXMgbG9hZCBob21lIG9iamVjdCBmb3IgYXN5bmMgYXJyb3dzCisgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKGdlbmVy
YXRvcik7CisgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIG5leHQuZ2V0
KCksIGhvbWVPYmplY3QuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklYTUU6IEN1
cnJlbnRseSwgd2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVs
YXRlZCBmaWVsZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2UuCisgICAgICAgIC8vIEJ1dCB0
byBtYWtlIGl0IGVmZmljaWVudCwgd2Ugd2lsbCBpbnRyb2R1Y2UgSlNHZW5lcmF0b3IgY2xhc3Ms
IGFkZCBvcGNvZGUgbmV3X2dlbmVyYXRvciBhbmQgdXNlIGl0cyBDKysgZmllbGRzIGluc3RlYWQg
b2YgdGhlc2UgcHJpdmF0ZSBwcm9wZXJ0aWVzLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRE
aXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSgpLCBu
ZXh0LmdldCgpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBnZW5lcmF0
b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVO
YW1lKCksIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVj
dCk7CisKKyAgICAgICAgUmVnaXN0ZXJJRCogaW5pdGlhbFN0YXRlID0gZ2VuZXJhdG9yLmVtaXRM
b2FkKG51bGxwdHIsIGpzTnVtYmVyKDApKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQ
dXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlO
YW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgaW5pdGlh
bFN0YXRlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFt
ZSgpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6
Oktub3duRGlyZWN0KTsKKworICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3Rh
cnRPZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNh
bGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwor
CisgICAgICAgIC8vIGxvYWQgQGFzeW5jRnVuY3Rpb25SZXN1bWUsIGFuZCBjYWxsLgorICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3RhcnRBc3luY0Z1bmN0aW9uID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOworICAgICAgICBhdXRvIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFzeW5jRnVuY3Rpb25SZXN1bWVQcml2
YXRlTmFtZSgpKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklm
TmVlZGVkKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQo
KSwgdmFyKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKHN0YXJ0QXN5bmNG
dW5jdGlvbi5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKworICAg
ICAgICAvLyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1bWUuQGNhbGwodGhpcywgQGdlbmVyYXRv
ciwgQHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkKKyAgICAgICAg
Q2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwgMyk7CisgICAgICAgIHVuc2ln
bmVkIGFyZ3VtZW50Q291bnQgPSAwOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy50
aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TW92
ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZ2VuZXJhdG9yLmdlbmVy
YXRvclJlZ2lzdGVyKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVu
dFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpz
TnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
clJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CisgICAgICAgIC8vIEpTVGV4dFBvc2l0aW9uKGlu
dCBfbGluZSwgaW50IF9vZmZzZXQsIGludCBfbGluZVN0YXJ0T2Zmc2V0KQorICAgICAgICBKU1Rl
eHRQb3NpdGlvbiBkaXZvdChmaXJzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zm
c2V0KCkpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChyZXN1bHQuZ2V0KCks
IHN0YXJ0QXN5bmNGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZv
dCwgZGl2b3QsIGRpdm90LCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFJldHVybihyZXN1bHQuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6CisgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAgUmVmUHRyPExhYmVsPiBn
ZW5lcmF0b3JCb2R5TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDU0MmE0NzEzZjUyZDVhOWZhOWM2M2U1NmUwMTZl
MjIzMDVhOGFkZjYuLjQ5YjFhODZlZDE1YWY0MWFmYWE5ZTdkMTNiODhhNWM0NDc3ODliZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5OSw2ICsyOTksOCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19l
eHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCiAgICAgICAgIERF
RklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQorICAgICAgICBERUZJTkVfT1Aob3Bf
bmV3X2FzeW5jX2Z1bmMpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfYXN5bmNfZnVuY19leHAp
CiAgICAgICAgIERFRklORV9PUChvcF9uZXdfb2JqZWN0KQogICAgICAgICBERUZJTkVfT1Aob3Bf
bmV3X3JlZ2V4cCkKICAgICAgICAgREVGSU5FX09QKG9wX25vdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCmluZGV4IDA1ZGUyOGNlMWVkNjcwYjUxZmViOGY1M2MzOWE0ZmY1NDQ5MjhlNGEuLjZkMjAy
NDkzODdiMjkxYWJlYmRmYTlmYmI3NDdkYTgyNzA1ZjZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaApAQCAtNTQ0LDYgKzU0NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25l
d19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X25ld19hc3luY19mdW5jKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
YXN5bmNfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19v
YmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25vdChJbnN0cnVjdGlvbiopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYjkwMWJiNDYzMTA2MDAx
MjBlMTFmODRlMWVjYTljYjYyNjc0OWI4ZC4uOWY5OWFiYTljZjk5ZWNkMjlhMDI5ZDgxNDQyYmE4
ZTJmZWVmNDA5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBA
IC05NzEsOSArOTcxLDExIEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwogICAg
IGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuYykKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOwotICAgIGVsc2UgewotICAg
ICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNl
IGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCiAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVj
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19hc3luY19m
dW5jKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uLCBk
c3QsIHJlZ1QwLCBmdW5jRXhlYyk7CiAgICAgfQogfQogCkBAIC05ODcsNiArOTg5LDExIEBAIHZv
aWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9
CiAKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9u
KTsKK30KKwogdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewogICAgIEp1bXAgbm90VW5kZWZpbmVkU2NvcGU7CkBAIC0xMDA4
LDkgKzEwMTUsMTEgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5j
X2V4cCkKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCBy
ZWdUMCwgZnVuY3Rpb24pOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0g
b3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CisgICAgZWxzZSBpZiAob3Bjb2RlSUQgPT0gb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgIGVsc2Ugewor
ICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBm
dW5jdGlvbik7CiAgICAgfQogCiAgICAgZG9uZS5saW5rKHRoaXMpOwpAQCAtMTAyNiw2ICsxMDM1
LDExIEBAIHZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVu
dEluc3RydWN0aW9uKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhw
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHBy
Q29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX25ld19h
cnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOGY4ZDRhZDM0NTNmZDQ2YjAzMDQzMmIzMTljMDYz
YjAzMjljMzk1NC4uZWJkNzdjZDAzODY4YmRjMWZiOGFhYmFlMGZiZjkzZDBlNzYxZGFiZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00OCw2ICs0
OCw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAi
SlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
R2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5o
IgpAQCAtMTE3MCw2ICsxMTcxLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jCiAgICAgcmV0
dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9yRnVuY3Rpb24+KGV4ZWMs
IHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBK
U1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJu
IG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlvbj4oZXhlYywgc2NvcGUs
IGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVu
Y3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1v
bjxKU0FzeW5jRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUp
OworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lKEV4ZWNT
dGF0ZSogZXhlYywgSlNDZWxsKiBmdW5jQ2VsbCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE5hbWUp
CiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCmluZGV4IGFkZmVmNzhjNmYwMGM1MDNkMDZmYmY4Njc2NTY4N2U3ZGMx
NDNjMjQuLmRiNWJhODk2NWE3YTUwMWJhMzUyN2FhNjU0ODg1ZTZjZjNkZDk1MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0zNzUsNiArMzc1LDggQEAg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU1Njb3BlKiwgSlNDZWxsKikKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4
ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0ZSos
IEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVS
TkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0
aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwq
KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0RnVuY3Rpb25O
YW1lKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA4NzU4MjUxZmE0
YTFkNDlmOTEwMGJlYmVjMDg4NjViZDQxMmQ3ZGY1Li5mNThmNGY5NjZlYTc3NDNiZmM0ZWM4MDdj
MTFlZjNhYjRkZDQyOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNs
dWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKKyNpbmNsdWRl
ICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTExNDks
NiArMTE1MCwxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRv
cl9mdW5jKQogICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0s
IGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7CiB9CiAK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuYykKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFu
ZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAgICBk
YXRhTG9nRigiQ3JlYXRpbmcgYXN5bmMgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5U
X1JFVFVSTihKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRl
Y2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTE3MSw2
ICsxMTgzLDE3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
X2Z1bmNfZXhwKQogICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUo
dm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9uZXdfYXN5bmNfZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICAKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTU2NvcGUq
IHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29w
ZSgpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVu
Y3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKEpTQXN5
bmNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworfQorCiBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2V0X2Z1bmN0aW9uX25hbWUpCiB7CiAgICAgTExJTlRf
QkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgK
aW5kZXggOTg0ZTljYzQwMzAzMjc5YWE3MDJkZjhmZWI3ODhjM2I4Yjk2MDUwZS4uZDc2MTM4YzEy
NDRmZjdhYWY0ODNkMDgwM2FkNWJiODExN2VhNzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTEwMyw2ICsxMDMsOCBAQCBMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CitMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hc3luY19mdW5jKTsKK0xMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmNfZXhwKTsKIExMSU5UX1NM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2V0X2Z1bmN0aW9uX25hbWUpOwogTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBhNWUyOWRhOWUxYzkx
ZDE2YzU0OTBlZDkyZDBhMGZkMTVlYzUwYmY0Li42MDU1M2Q5NmRlYjRmNTMyZTVhNjBmOGY4NDk3
MGZkNWFmYjdhNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMzIxLDYgKzEzMjEsMTIgQEAgX2xsaW50X29wX25l
d19nZW5lcmF0b3JfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK19sbGludF9vcF9uZXdfYXN5
bmNfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpCisgICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3Bf
bmV3X2FycmF5OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyYXkpCkBAIC0xNTk5LDYgKzE2MDUsMTIgQEAgX2xsaW50
X29wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitf
bGxpbnRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXN5bmNfZnVuY19leHApCisgICAgZGlz
cGF0Y2goNCkKKworCiBfbGxpbnRfb3Bfc2V0X2Z1bmN0aW9uX25hbWU6CiAgICAgdHJhY2VFeGVj
dXRpb24oKQogICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3NldF9mdW5j
dGlvbl9uYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDQ5
MDg4NDE1MTFlMmY0MDE3NzNiMjBmY2U2OGY1ODM5NzZmNmQwYTEuLjJiNTJlMzJkODEzM2U2NzBm
ZWQyNTg3MTg0NDU3N2EwMWFlNGM4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSAmJiAhbWF0Y2goT1BFTkJSQUNF
KTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIGlmIChT
b3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkuY29u
dGFpbnMocGFyc2VNb2RlKSB8fCBpc0FzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9k
ZSkpCisgICAgICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUo
cGFyc2VNb2RlKSkKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMo
Y29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwpAQCAtNTY4LDExICs1NjgsMTggQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQXN5bmNGdW4KICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBh
c3luY0Z1bmN0aW9uQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAgICAgICAgYXN5bmNG
dW5jdGlvbkJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKGlubmVyUGFyc2VNb2RlKTsKLSAg
ICAgICAgU3ludGF4Q2hlY2tlciBhc3luY0Z1bmN0aW9uQ29udGV4dChjb25zdF9jYXN0PFZNKj4o
bV92bSksIG1fbGV4ZXIuZ2V0KCkpOwotICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24pCi0gICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUFycm93RnVuY3Rpb25TaW5n
bGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGFzeW5jRnVuY3Rpb25Db250ZXh0KSwgIkNh
bm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBhcnJvdyBmdW5jdGlvbiIpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGFzeW5jRnVu
Y3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBmdW5j
dGlvbiIpOworICAgICAgICBTeW50YXhDaGVja2VyIHN5bnRheENoZWNrZXIoY29uc3RfY2FzdDxW
TSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKKyAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uKSB7CisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dlclBhcnNlRGF0YSkKKyAg
ICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNz
aW9uQm9keVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9m
IGFzeW5jIGFycm93IGZ1bmN0aW9uIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgZmFpbElmRmFsc2UocGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3Vy
Y2VFbGVtZW50cyhzeW50YXhDaGVja2VyKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3lu
YyBhcnJvdyBmdW5jdGlvbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1f
ZGVidWdnZXJQYXJzZURhdGEpCisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3Vy
Y2VFbGVtZW50cyhjb250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3lu
YyBmdW5jdGlvbiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZhaWxJZkZh
bHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgbW9kZSksICJDYW5ub3QgcGFy
c2UgdGhlIGJvZHkgb2YgYXN5bmMgZnVuY3Rpb24iKTsKKyAgICAgICAgfQogICAgICAgICBwb3BT
Y29wZShhc3luY0Z1bmN0aW9uQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFi
bGVJbmZvKTsKICAgICB9CiAgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1l
dGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRva2Vu
Q29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1l
dGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9zdXBlckJp
bmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIGluZm8uZnVuY3Rpb25MZW5ndGgsIGlubmVyUGFy
c2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CkBAIC0yMzQxLDcgKzIzNDgs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlv
bkJvZHkoY29udGV4dCwgc3ludGF4Q2hlY2tlciwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4s
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0
LCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBmdW5jdGlvbkJvZHlUeXBl
LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIGZ1bmN0aW9uSW5mby5mdW5jdGlvbkxlbmd0
aCwgbW9kZSk7CiAgICAgfTsKIAotICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSB8fCBpc0FzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VN
b2RlKG1vZGUpKSB7CisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3JhcHBlclBh
cnNlTW9kZShtb2RlKSkgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNj
b3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAgICAgICAgU291cmNlUGFyc2VNb2RlIGlubmVyUGFy
c2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTsKICAgICAgICAgaWYg
KGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUobW9kZSkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDhjNDQ3NGIwOTkzMzcyZTc0MjQ2MDFkYjlhYTA2NDQ1
ZGY5MzdlZDguLjNhMTZmNzZhYWQwNTI0N2NkNjE2MWJiZGE4YWYzMWRlZjg2NDI3NGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjQ1LDcgKzI0NSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpB
c3luY0Z1bmN0aW9uQm9keU1vZGU6Ci0gICAgICAgICAgICBzZXRJc0FzeW5jQXJyb3dGdW5jdGlv
bkJvZHkoKTsKKyAgICAgICAgICAgIHNldElzQXN5bmNGdW5jdGlvbkJvZHkoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5
TW9kZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9k
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCBh
MGQ3NDA0OTQxNWU0Yjg0NzM1NjJlMzZlNjIyMGQzMGNlNTFiYTZhLi43YWRjZGFmNWRkY2NkMzVm
YzQ2Y2MwMDVkY2YxODc5MGI5ZTM5MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJNb2Rlcy5oCkBAIC0xNDgsNiArMTQ4LDIzIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBp
c01ldGhvZFBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgICAgICBTb3Vy
Y2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKIH0KIAor
QUxXQVlTX0lOTElORSBib29sIGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9k
ZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHJldHVybiBTb3VyY2VQYXJzZU1v
ZGVTZXQoCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUsCisgICAg
ICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlLAorICAgICAgICBTb3Vy
Y2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5jb250YWlucyhwYXJzZU1v
ZGUpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25X
cmFwcGVyUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCit7CisgICAgcmV0dXJu
IFNvdXJjZVBhcnNlTW9kZVNldCgKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JX
cmFwcGVyRnVuY3Rpb25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rp
b25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUs
CisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlKS5jb250YWlucyhwYXJz
ZU1vZGUpOworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNb2R1bGVQYXJzZU1vZGUoU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkgCiB7IAogICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQo
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBkMTUyZWMyN2Y4OWRhYzliNDUzZTg4
MDliNjUyNDg1Y2E1YzE1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw3NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3RvcikgfTsKKworQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rp
b24odm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBl
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiQXN5bmNGdW5jdGlvbiIpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIHByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAg
Ly8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
UmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+
Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
OjpBc3luYykpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFy
Z0xpc3QgYXJncyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1
bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9i
amVjdCgpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7Cit9CisKK0Nh
bGxUeXBlIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxB
c3luY0Z1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworfQor
CitDb25zdHJ1Y3RUeXBlIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
OworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM1YTJjMWU0ZjkxNWNhYzBiNGIxNzczZTZk
MDU4OWUyNzQ3NDdkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU7CisKK2Ns
YXNzIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIERFQ0xB
UkVfSU5GTzsKKworICAgIHN0YXRpYyBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBhc3luY0Z1
bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSopOworICAgIHN0
YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0
YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZi
MWYwZTEwNmVlNjcxMzZlOTI3MDFkNjhjMzlkOTViMmZjNDg2NTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNw
cApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90
dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5F
eGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0
cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgQ2xhc3NJbmZvIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkFzeW5j
RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUpIH07CisKK0FzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OkFzeW5j
RnVuY3Rpb25Qcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpT
Qzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9s
LCBqc1N0cmluZygmdm0sICJBc3luY0Z1bmN0aW9uIiksIERvbnRFbnVtIHwgUmVhZE9ubHkpOwor
ICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMDFlNmI4ZmQ1ODk4YTIyMWUwNjJhNzhm
M2VhNjBkZWE3OWE4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgQXN5bmNGdW5jdGlvblByb3RvdHlw
ZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBB
c3luY0Z1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBc3luY0Z1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgQXN5bmNGdW5jdGlvblByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKFZNJiwg
U3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZDJm
MzM1MmQ2MDY4YjExOWZlMDQ5MzEwYzkzODg2N2YyNzk4YjUxMi4uMzI0YmRkYzNlNWIzYTYzNDE4
Y2ZkMDI4MTNkMjQ0YzhiNzYyZmNjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAog
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKQEAgLTkzLDE4ICs5NCwzMiBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKKyAgICBjb25zdCBjaGFyKiBw
cmVmaXggPSBudWxscHRyOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbnVsbHB0cjsKKyAg
ICBzd2l0Y2ggKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkgeworICAgIGNhc2UgRnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbjoKKyAgICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2Jq
ZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpOworICAgICAgICBwcmVmaXggPSAie2Z1bmN0aW9uICI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5l
cmF0b3I6CisgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgcHJlZml4ID0gIntmdW5jdGlvbiAqIjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jOgorICAgICAg
ICBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAg
ICAgICAgcHJlZml4ID0gInthc3luYyBmdW5jdGlvbiAiOworICAgIH0KKwogICAgIC8vIEhvdyB3
ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21w
YXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgp
KQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciA/ICIq
IiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7CisgICAgICAgIHBy
b2dyYW0gPSBtYWtlU3RyaW5nKHByZWZpeCwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xu
XG59fSIpOwogICAgIGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0g
PSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yID8gIioiIDogIiIsIGZ1bmN0aW9uTmFt
ZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpLCAiXG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZyhwcmVmaXgsIGZ1bmN0
aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie2Z1bmN0aW9uICIpOwotICAg
ICAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZTo6R2VuZXJhdG9yKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyonKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQocHJlZml4KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rp
b25OYW1lLnN0cmluZygpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJygnKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKS5nZXQo
KSk7CkBAIC0xMjYsMTIgKzE0MSwxNyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lw
cGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywg
bmV3VGFyZ2V0LCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlOjpHZW5lcmF0b3IgPyBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlKCkgOiBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVy
ZSogc3ViY2xhc3NTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0
cnVjdHVyZShleGVjLCBuZXdUYXJnZXQsIHN0cnVjdHVyZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
ID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKQorICAgIHN3aXRjaCAoZnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKSB7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1v
ZGU6OkZ1bmN0aW9uOgorICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5j
dGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7Cisg
ICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcjoKICAgICAgICAgcmV0
dXJuIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVj
dC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOwotICAgIHJldHVybiBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIHN1
YmNsYXNzU3RydWN0dXJlKTsKKyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5
bmM6CisgICAgICAgIHJldHVybiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24s
IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOworICAgIH0K
IH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXgg
MzFjMzNkNmFmNGZmMTJiYzI0YzFlMmI1YmY0ZTU1NThkNzY1NjkwNi4uZGVlZTlhNTVkNmYyYzYx
ZTlmNzE0NDgzYjMxYWJkNTdmYjFjYWU1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2
YXRlOgogZW51bSBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgewogICAgIEZ1bmN0aW9u
LAogICAgIEdlbmVyYXRvciwKKyAgICBBc3luYywKIH07CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25z
dCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25z
dCBXVEY6OlRleHRQb3NpdGlvbiYsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZTo6RnVuY3Rpb24sIEpTVmFsdWUgbmV3VGFyZ2V0ID0gSlNWYWx1ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFiYTc0MzcyM2JkYzdmYWVlZmY2MjUxZTJmZjJhMmRkYzY0MjhlNzkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5j
RnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
Q2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJv
ci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRl
ICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXN5bmNGdW5j
dGlvbjo6c19pbmZvID0geyAiQXN5bmNGdW5jdGlvbiIsICAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQXN5bmNGdW5jdGlvbikgfTsKKworSlNBc3luY0Z1bmN0
aW9uOjpKU0FzeW5jRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0s
IGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0pTQXN5bmNGdW5jdGlvbiog
SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAg
SlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNBc3luY0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNBc3luY0Z1bmN0aW9uKHZtLCBleGVjdXRh
YmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBBU1NFUlQoYXN5bmNGdW5jdGlvbi0+c3RydWN0
dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICBhc3luY0Z1bmN0aW9uLT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcmV0dXJuIGFzeW5jRnVuY3Rpb247Cit9CisKK0pTQXN5bmNGdW5jdGlvbiog
SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5bmNGdW5j
dGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2Jq
ZWN0KCktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xl
dG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGFzeW5jRnVuY3Rpb24sICJBbGxvY2F0aW5n
IGFuIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIGFzeW5jRnVuY3Rpb247Cit9CisKK0pT
QXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKK3sKKyAgICBKU0FzeW5jRnVuY3Rpb24qIGFzeW5jRnVuY3Rpb24gPSBjcmVhdGVJbXBsKHZt
LCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0
b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgYXN5bmNGdW5jdGlvbiwgIkFsbG9jYXRpbmcg
YW4gYXN5bmMgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gYXN5bmNGdW5jdGlvbjsKK30KKworSlNB
c3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IEpTU2NvcGUqIHNjb3BlKQoreworICAgIHJldHVybiBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxl
LCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5hc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fz
eW5jRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5j
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZGE4N2RiNmQzODVhNzlkNTU3NmMxYjcyYTEzNGNhM2UyMWJm
MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fz
eW5jRnVuY3Rpb24uaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBKU0FzeW5jRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNsYXNz
IEpJVDsKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0
aW9uIEJhc2U7CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBz
dGF0aWMgSlNBc3luY0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U1Njb3BlKik7CisgICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rp
b25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBKU0FzeW5j
RnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0m
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGFs
bG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIHJldHVy
biBzaXplb2YoSlNBc3luY0Z1bmN0aW9uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0FzeW5jRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1
dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CisKKyAgICBzdGF0aWMgSlNBc3luY0Z1bmN0
aW9uKiBjcmVhdGVJbXBsKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVj
dHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTVhOTQxMGU3ZGEwZjJkZTFh
YzczNWUxMjUyN2QxZDYwYTNkYTdhNy4uZDhmYTlhZDRlZmUyZGNmZmE5MzFiM2FkMTJjMDIxYzIy
MWRjOWFiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQXJyYXlQ
cm90b3R5cGUuaCIKKyNpbmNsdWRlICJBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQm9vbGVhbkNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5O
YW1lcy5oIgpAQCAtNjMsNiArNjUsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNp
bmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVm
ZmVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtNTg1LDYgKzU4OCw4IEBAIG1fICMjIHByb3Blck5h
bWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoCiAgICAgbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLnNldCh2bSwgdGhpcywgdGhy
b3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3Ig
PSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIChGdW5jdGlvbkNvbnN0cnVjdG9yKilmdW5jdGlvbkNvbnN0cnVjdG9yKTsKKwogICAg
IEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGUodm0sIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCksIG1f
c3BlY2llc0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgCkBAIC02MzAsNyArNjM1LDE3IEBAIG1f
ICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jCiAKICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS0+cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBt
X2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpLCBEb250RW51bSB8IFJlYWRPbmx5KTsK
ICAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtX2dlbmVyYXRvclByb3RvdHlw
ZS5nZXQoKSwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgCisKKyAgICBtX2FzeW5jRnVuY3Rp
b25TdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBbXShMYXp5Q2xhc3NTdHJ1Y3R1cmU6Oklu
aXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBh
c3luY0Z1bmN0aW9uUHJvdG90eXBlID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKGlu
aXQudm0sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBp
bml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIGluaXQuc2V0UHJvdG90eXBlKGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworICAg
ICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQucHJvdG90eXBlKSk7CisgICAgICAgICAgICBp
bml0LnNldENvbnN0cnVjdG9yKFByb3BlcnR5TmFtZShudWxscHRyKSwgQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0aW9u
Q29uc3RydWN0b3IuZ2V0KCkpLCBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKSk7CisKKyAgICAgICAg
ICAgIGluaXQuZ2xvYmFsLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihpbml0LnZtLCBpbml0
LnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFzeW5jRnVuY3Rpb25SZXN1bWVQcml2
YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oaW5pdC52bSwgYXN5
bmNGdW5jdGlvblByb3RvdHlwZUFzeW5jRnVuY3Rpb25SZXN1bWVDb2RlR2VuZXJhdG9yKGluaXQu
dm0pLCBpbml0Lmdsb2JhbCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAg
ICAgICAgfSk7CisKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3Rv
ciwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25z
dHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fYXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgYXJyYXlDb25z
dHJ1Y3RvciwgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKaW5kZXggMjViZGUyYjE2NDRmMzU2NTk2ZjRkOTgyNzc1NDMzNzhjYTc1
OTg0NS4uYTBmNDRlYTFlNDg1ZTVlMDQ3ODEwYjFkZTE1MGYzY2JmYmZiNDUwMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01Niw2ICs1
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBcnJheUNvbnN0cnVjdG9yOwogY2xhc3Mg
QXJyYXlQcm90b3R5cGU7CitjbGFzcyBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgQm9v
bGVhblByb3RvdHlwZTsKIGNsYXNzIENvbnNvbGVDbGllbnQ7CiBjbGFzcyBEZWJ1Z2dlcjsKQEAg
LTYzLDYgKzY0LDcgQEAgY2xhc3MgRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNzIEVycm9yUHJvdG90
eXBlOwogY2xhc3MgRXZhbENvZGVCbG9jazsKIGNsYXNzIEV2YWxFeGVjdXRhYmxlOworY2xhc3Mg
RnVuY3Rpb25Db25zdHJ1Y3RvcjsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgR2Vu
ZXJhdG9yUHJvdG90eXBlOwogY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CkBAIC0y
MjAsNiArMjIyLDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yOwogICAgIFdy
aXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVjdG9y
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cj4gbV9VUklFcnJvckNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxGdW5jdGlvbkNvbnN0
cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdENv
bnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxBcnJheUNv
bnN0cnVjdG9yPiBtX2FycmF5Q29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlz
ZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKQEAgLTI5Myw2ICsyOTYsNyBAQCBw
dWJsaWM6CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAgICBMYXp5Q2xhc3NTdHJ1Y3R1
cmUgbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9kb2xsYXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0
ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlOwpAQCAtNTA5LDYgKzUxMywxOSBAQCBwdWJsaWM6
CiAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsg
fQogICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAorICAgIExhenlDbGFzc1N0cnVj
dHVyZSYgbGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZTsKKyAgICB9CisgICAgY29uc3QgTGF6eUNsYXNzU3Ry
dWN0dXJlJiBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gY29uc3RfY2FzdDxjb25zdCBMYXp5Q2xhc3NTdHJ1Y3R1cmUmPihjb25zdF9jYXN0
PEpTR2xvYmFsT2JqZWN0Kj4odGhpcyktPmxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkpOwor
ICAgIH0KKyAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBl
KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBc3luY0Z1bmN0aW9uUHJvdG90eXBl
Kj4obGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5wcm90b3R5cGUodGhpcykpOyB9CisgICAg
QXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3RvdHlwZUNvbmN1cnJlbnRs
eSgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXN5bmNGdW5jdGlvblByb3RvdHlw
ZSo+KGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkucHJvdG90eXBlQ29uY3VycmVudGx5KCkp
OyB9CisgICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1
cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25jdXJyZW50bHkoKSBjb25zdCB7IHJldHVybiBs
YXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLmdldENvbmN1cnJlbnRseSgpOyB9CisKICAgICBT
dHJ1Y3R1cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVn
Z2VyU2NvcGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQodGhpcyk7
IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBkZDM3NTAy
OTNjMGY1NzhmOTllZTFkNTExYzRlN2MyNzI3NWI5ZDZjLi5kYzY5NDVhMTVjZGVhODIwODFiYzE5
M2M1Nzk4ZjBmYWZjYWY5MDUyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEyMiBAQAogMjAxNi0xMC0yMCAgQ2FpdGxpbiBQ
b3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCisgICAgICAgIFtKU0NdIGltcGxlbWVudCBydW50
aW1lIGZvciBhc3luYyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2Mzc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoc2hv
dWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChzaG91bGRU
aHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKGxldC5Bc3luY0Z1bmN0aW9uLmFzeW5jKToKKyAg
ICAgICAgKGFzeW5jLmFzeW5jRnVuY3Rpb25Gb3JQcm90byk6CisgICAgICAgIChPYmplY3QuZ2V0
UHJvdG90eXBlT2YuYXN5bmMpOgorICAgICAgICAoT2JqZWN0LmdldFByb3RvdHlwZU9mLmFzeW5j
Lm1ldGhvZCk6CisgICAgICAgIChhc3luYyk6CisgICAgICAgIChhc3luYy5tZXRob2QpOgorICAg
ICAgICAoYXN5bmMuYXN5bmNOb25Db25zdHJ1Y3RvckRlY2wpOgorICAgICAgICAoc2hvdWxkVGhy
b3cubmV3LmFzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93Lm5ldy5hc3luYy5ub25Db25zdHJ1
Y3Rvcik6CisgICAgICAgIChhc3luYy5hc3luY0RlY2wpOgorICAgICAgICAoYXN5bmMuZik6Cisg
ICAgICAgIChNeUVycm9yKToKKyAgICAgICAgKGFzeW5jLmFzeW5jRGVjbFRocm93ZXIpOgorICAg
ICAgICAoc2hvdWxkVGhyb3dBc3luYy5hc3luYyk6CisgICAgICAgIChyZXNvbHZlTGF0ZXIpOgor
ICAgICAgICAocmVqZWN0TGF0ZXIpOgorICAgICAgICAoYXN5bmMucmVzdW1lQWZ0ZXJOb3JtYWwp
OgorICAgICAgICAoTy5hc3luYy5yZXN1bWVBZnRlck5vcm1hbCk6CisgICAgICAgIChyZXN1bWVB
ZnRlck5vcm1hbEFycm93LmFzeW5jKToKKyAgICAgICAgKGFzeW5jLnJlc3VtZUFmdGVyVGhyb3cp
OgorICAgICAgICAoTy5hc3luYy5yZXN1bWVBZnRlclRocm93KToKKyAgICAgICAgKHJlc3VtZUFm
dGVyVGhyb3dBcnJvdy5hc3luYyk6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICogc3RyZXNz
L2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZFRocm93KToKKyAgICAgICAgKFN5bnRheEVycm9yLkNhbnN0cmluZ19hcHBlYXJlZF9oZXJl
YXdhaXQuY2hlY2tNb2R1bGVTeW50YXhFcnJvci5TdHJpbmcucmF3LmF3YWl0KToKKyAgICAgICAg
KGNoZWNrTW9kdWxlU3ludGF4RXJyb3IuU3RyaW5nLnJhdy5hd2FpdCk6CisgICAgICAgIChjaGVj
a01vZHVsZVN5bnRheEVycm9yLlN0cmluZy5yYXcuYXN5bmMuYXdhaXQpOgorICAgICAgICAoU3lu
dGF4RXJyb3IuQ2Fubm90LmRlY2xhcmUubmFtZWQpOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1h
d2FpdC1tb3ppbGxhLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNo
b3VsZEJlQXN5bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhy
b3dBc3luYyk6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoc2hvdWxkVGhyb3dTeW50YXhF
cnJvcik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZW1wdHkpOgorICAgICAgICAobW96
U2VtYW50aWNzLmFzeW5jLnNpbXBsZVJldHVybik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5
bmMuc2ltcGxlQXdhaXQpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZUF3YWl0
QXN5bmMpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnJldHVybk90aGVyQXN5bmMpOgor
ICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZVRocm93ZXIpOgorICAgICAgICAobW96
U2VtYW50aWNzLmFzeW5jLmRlbGVnYXRlZFRocm93ZXIpOgorICAgICAgICAobW96U2VtYW50aWNz
LmFzeW5jLnRyeUNhdGNoKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy50cnlDYXRjaFRo
cm93KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy53ZWxsRmluYWxseSk6CisgICAgICAg
IChtb3pTZW1hbnRpY3MuYXN5bmMuZmluYWxseU1heUZhaWwpOgorICAgICAgICAobW96U2VtYW50
aWNzLmFzeW5jLmVtYmVkZGVkLmFzeW5jLmlubmVyKToKKyAgICAgICAgKG1velNlbWFudGljcy5h
c3luYy5lbWJlZGRlZCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZmliKToKKyAgICAg
ICAgKG1velNlbWFudGljcy5hc3luYy5pc09kZC5hc3luYy5pc0V2ZW4pOgorICAgICAgICAobW96
U2VtYW50aWNzLmFzeW5jLmlzT2RkKToKKyAgICAgICAgKG1velNlbWFudGljcy5oYXJkY29yZUZp
Yi5hc3luYy5maWIyKToKKyAgICAgICAgKG1velNlbWFudGljcy5uYW1lZEFzeW5jRXhwci5hc3lu
Yy5zaW1wbGUpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFz
eW5jLmZpcnN0KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5leGVjdXRpb25PcmRlci5h
c3luYy5zZWNvbmQpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVy
LmFzeW5jLnRoaXJkKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5leGVjdXRpb25PcmRl
cik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMubWlzY2VsbGFuZW91cyk6CisgICAgICAg
IChtb3pTZW1hbnRpY3MudGhyb3dlcik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZGVm
YXVsdEFyZ3MpOgorICAgICAgICAobW96U2VtYW50aWNzLnNob3VsZFRocm93KToKKyAgICAgICAg
KG1velNlbWFudGljcyk6CisgICAgICAgIChtb3pNZXRob2RzLlgpOgorICAgICAgICAobW96TWV0
aG9kcy5YLnByb3RvdHlwZS5hc3luYy5nZXRWYWx1ZSk6CisgICAgICAgIChtb3pNZXRob2RzLlgu
cHJvdG90eXBlLnNldFZhbHVlKToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuYXN5
bmMuaW5jcmVtZW50KToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuYXN5bmMuZ2V0
QmFzZUNsYXNzTmFtZSk6CisgICAgICAgIChtb3pNZXRob2RzLlguYXN5bmMuZ2V0U3RhdGljVmFs
dWUpOgorICAgICAgICAobW96TWV0aG9kcy5ZLnByb3RvdHlwZS5hc3luYy5nZXRCYXNlQ2xhc3NO
YW1lKToKKyAgICAgICAgKG1vek1ldGhvZHMuWSk6CisgICAgICAgIChtb3pGdW5jdGlvbk5hbWVJ
bmZlcnJlbmNlLmFzeW5jLnRlc3QpOgorICAgICAgICAobW96U3ludGF4RXJyb3JzKToKKyAgICAg
ICAgKiBzdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2ZWQtd29yZC5qczogQWRkZWQuCisgICAgICAg
IChhc3NlcnQpOgorICAgICAgICAoc2hvdWxkVGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgIChB
c3luY0Z1bmN0aW9uLmFzeW5jKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rp
b25zX2xleGljYWxfYXJndW1lbnRzX2JpbmRpbmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5j
KToKKyAgICAgICAgKG5vQXJndW1lbnRzQXJyb3cyLmFzeW5jKToKKyAgICAgICAgKiBzdHJlc3Mv
YXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfbmV3LnRhcmdldF9iaW5kaW5nLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAg
ICAoc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChDMSk6CisgICAgICAgIChDMik6CisgICAg
ICAgIChzaG91bGRUaHJvd0FzeW5jLmFzeW5jKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJy
b3dfZnVuY3Rpb25zX2xleGljYWxfc3VwZXJfYmluZGluZy5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKEJhc2VDbGFzcy5w
cm90b3R5cGUuYmFzZUNsYXNzVmFsdWUpOgorICAgICAgICAoQmFzZUNsYXNzLnByb3RvdHlwZS5n
ZXQgcHJvcGVydHkpOgorICAgICAgICAoQmFzZUNsYXNzKToKKyAgICAgICAgKENoaWxkQ2xhc3Mu
cHJvdG90eXBlLmFzeW5jU3VwZXJQcm9wKToKKyAgICAgICAgKENoaWxkQ2xhc3MucHJvdG90eXBl
LmFzeW5jU3VwZXJQcm9wMik6CisgICAgICAgIChDaGlsZENsYXNzKToKKyAgICAgICAgKENoaWxk
Q2xhc3MyKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxf
dGhpc19iaW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNo
b3VsZEJlQXN5bmMpOgorICAgICAgICAoZC55KToKKworMjAxNi0xMC0yMCAgQ2FpdGxpbiBQb3R0
ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCiAgICAgICAgIFtKU0NdIGRpc2FsbG93IHJlZmVyZW5j
ZXMgdG8gYGF3YWl0YCBpbiBBc3luY0Z1bmN0aW9uIGZvcm1hbCBwYXJhbWV0ZXJzCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM2OTQKIApkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMuanMgYi9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1hd2FpdC1iYXNpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYmRmYjAzZjAwYjc4MzBkZGJiMjhh
NjFiYWE0ZGZlMzM3MjFmOGYyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5
bmMtYXdhaXQtYmFzaWMuanMKQEAgLTAsMCArMSwzMDEgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJl
cyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVp
bGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWws
IG1zZykgeworICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNnID0gIiI7CisgICAg
ZWxzZQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAi
ICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hv
dWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZh
ciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0
dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJv
ciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKwor
ICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUo
ZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3cocnVuLCBl
cnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9
IGZhbHNlOworCisgICAgdHJ5IHsKKyAgICAgICAgYWN0dWFsID0gcnVuKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBoYWRFcnJvciA9IHRydWU7CisgICAgICAgIGFjdHVhbCA9IGU7Cisg
ICAgfQorCisgICAgaWYgKCFoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBk
aWQgbm90IHRocm93LiIpOworICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWNlZCAiICsgcnVuICsgIigpIHRvIHRocm93
ICIgKyBlcnJvclR5cGUubmFtZSArICIgLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOwor
ICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2Up
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJv
dyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIp
OworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0FzeW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdl
KSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4o
KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAg
ICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7
CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9y
VHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGlu
c3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAi
ICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAn
IiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwu
bWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAi
ICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBh
Y3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93U3ludGF4RXJy
b3Ioc3RyLCBtZXNzYWdlKSB7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzdHIpOworICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGAiICsgc3RyICsgImAgdG8gdGhyb3cgYSBTeW50
YXhFcnJvciwgYnV0IGRpZCBub3QgdGhyb3cuIikKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGlmIChlLmNvbnN0cnVjdG9yICE9PSBTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgYCIgKyBzdHIgKyAiYCB0byB0aHJvdyBhIFN5bnRheEVycm9yLCBi
dXQgdGhyZXcgJyIgKyBlICsgIiciKTsKKyAgICAgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAm
JiBlLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkIGAiICsgc3RyICsgImAgdG8gdGhyb3cgU3ludGF4RXJyb3I6ICciICsgbWVzc2FnZSAr
ICInLCBidXQgdGhyZXcgJyIgKyBlICsgIiciKTsKKyAgICB9Cit9CisKKy8vIERvIG5vdCBpbnN0
YWxsIGBBc3luY0Z1bmN0aW9uYCBjb25zdHJ1Y3RvciBvbiBnbG9iYWwgb2JqZWN0CitzaG91bGRC
ZSh1bmRlZmluZWQsIHRoaXMuQXN5bmNGdW5jdGlvbik7CitsZXQgQXN5bmNGdW5jdGlvbiA9IChh
c3luYyBmdW5jdGlvbigpIHt9KS5jb25zdHJ1Y3RvcjsKKworLy8gTGV0IGZ1bmN0aW9uUHJvdG90
eXBlIGJlIHRoZSBpbnRyaW5zaWMgb2JqZWN0ICVBc3luY0Z1bmN0aW9uUHJvdG90eXBlJS4KK2Fz
eW5jIGZ1bmN0aW9uIGFzeW5jRnVuY3Rpb25Gb3JQcm90bygpIHt9CitzaG91bGRCZShBc3luY0Z1
bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKGFzeW5jRnVuY3Rpb25Gb3JQ
cm90bykpOworc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9iamVjdC5nZXRQcm90
b3R5cGVPZihhc3luYyBmdW5jdGlvbigpIHt9KSk7CitzaG91bGRCZShBc3luY0Z1bmN0aW9uLnBy
b3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKGFzeW5jICgpID0+IHt9KSk7CitzaG91bGRC
ZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHsgYXN5bmMg
bWV0aG9kKCkge30gfS5tZXRob2QpKTsKKworLy8gRklYTUU6IEFzeW5jRnVuY3Rpb24gY29uc3Ry
dWN0b3Igc2hvdWxkIGJ1aWxkIGZ1bmN0aW9ucyB3aXRoIGNvcnJlY3QgcHJvdG90eXBlLgorLy8g
c2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZihB
c3luY0Z1bmN0aW9uKCkpKTsKKworLy8gQXN5bmNGdW5jdGlvbkNyZWF0ZSBkb2VzIG5vdCBwcm9k
dWNlIGFuIG9iamVjdCB3aXRoIGEgUHJvdG90eXBlCitzaG91bGRCZSh1bmRlZmluZWQsIGFzeW5j
RnVuY3Rpb25Gb3JQcm90by5wcm90b3R5cGUpOworc2hvdWxkQmUoZmFsc2UsIGFzeW5jRnVuY3Rp
b25Gb3JQcm90by5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOworc2hvdWxkQmUodW5kZWZp
bmVkLCAoYXN5bmMgZnVuY3Rpb24oKSB7fSkucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCAo
YXN5bmMgZnVuY3Rpb24oKSB7fSkuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKK3Nob3Vs
ZEJlKHVuZGVmaW5lZCwgKGFzeW5jKCkgPT4ge30pLnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxz
ZSwgKGFzeW5jKCkgPT4ge30pLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKSk7CitzaG91bGRC
ZSh1bmRlZmluZWQsICh7IGFzeW5jIG1ldGhvZCgpIHt9IH0pLm1ldGhvZC5wcm90b3R5cGUpOwor
c2hvdWxkQmUoZmFsc2UsICh7IGFzeW5jIG1ldGhvZCgpIHt9IH0pLm1ldGhvZC5oYXNPd25Qcm9w
ZXJ0eSgicHJvdG90eXBlIikpOworc2hvdWxkQmUodW5kZWZpbmVkLCBBc3luY0Z1bmN0aW9uKCku
cHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCBBc3luY0Z1bmN0aW9uKCkuaGFzT3duUHJvcGVy
dHkoInByb3RvdHlwZSIpKTsKKworLy8gQXN5bmNGdW5jdGlvbi5wcm90b3R5cGVbIEBAdG9TdHJp
bmdUYWcgXQordmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBTeW1ib2wudG9TdHJpbmdUYWcpOworc2hvdWxkQmUo
IkFzeW5jRnVuY3Rpb24iLCBkZXNjcmlwdG9yLnZhbHVlKTsKK3Nob3VsZEJlKGZhbHNlLCBkZXNj
cmlwdG9yLmVudW1lcmFibGUpOworc2hvdWxkQmUoZmFsc2UsIGRlc2NyaXB0b3Iud3JpdGFibGUp
Oworc2hvdWxkQmUodHJ1ZSwgZGVzY3JpcHRvci5jb25maWd1cmFibGUpOworCitzaG91bGRCZSgx
LCBBc3luY0Z1bmN0aW9uLmxlbmd0aCk7CisKKy8vIExldCBGIGJlICEgRnVuY3Rpb25BbGxvY2F0
ZShmdW5jdGlvblByb3RvdHlwZSwgU3RyaWN0LCAibm9uLWNvbnN0cnVjdG9yIikKK2FzeW5jIGZ1
bmN0aW9uIGFzeW5jTm9uQ29uc3RydWN0b3JEZWNsKCkge30KK3Nob3VsZFRocm93KCgpID0+IG5l
dyBhc3luY05vbkNvbnN0cnVjdG9yRGVjbCgpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4gbmV3IChhc3luYyBmdW5jdGlvbigpIHt9KSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgp
ID0+IG5ldyAoeyBhc3luYyBub25Db25zdHJ1Y3RvcigpIHt9IH0pLm5vbkNvbnN0cnVjdG9yKCks
IFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgKCgpID0+ICJub3QgYSBjb25zdHJ1
Y3RvciEiKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyAoQXN5bmNGdW5jdGlv
bigpKSwgVHlwZUVycm9yKTsKKworLy8gTm9ybWFsIGNvbXBsZXRpb24KK2FzeW5jIGZ1bmN0aW9u
IGFzeW5jRGVjbCgpIHsgcmV0dXJuICJ0ZXN0IjsgfQorc2hvdWxkQmVBc3luYygidGVzdCIsIGFz
eW5jRGVjbCk7CitzaG91bGRCZUFzeW5jKCJ0ZXN0MiIsIGFzeW5jIGZ1bmN0aW9uKCkgeyByZXR1
cm4gInRlc3QyIjsgfSk7CitzaG91bGRCZUFzeW5jKCJ0ZXN0MyIsIGFzeW5jICgpID0+ICJ0ZXN0
MyIpOworc2hvdWxkQmVBc3luYygidGVzdDQiLCAoKSA9PiAoeyBhc3luYyBmKCkgeyByZXR1cm4g
InRlc3Q0IjsgfSB9KS5mKCkpOworCitjbGFzcyBNeUVycm9yIGV4dGVuZHMgRXJyb3Ige307CisK
Ky8vIFRocm93IGNvbXBsZXRpb24KK2FzeW5jIGZ1bmN0aW9uIGFzeW5jRGVjbFRocm93ZXIoZSkg
eyB0aHJvdyBuZXcgTXlFcnJvcihlKTsgfQorc2hvdWxkVGhyb3dBc3luYygoKSA9PiBhc3luY0Rl
Y2xUaHJvd2VyKCJib29tISIpLCBNeUVycm9yLCAiYm9vbSEiKTsKK3Nob3VsZFRocm93QXN5bmMo
KCkgPT4gKGFzeW5jIGZ1bmN0aW9uKGUpIHsgdGhyb3cgbmV3IE15RXJyb3IoZSk7IH0pKCJib29t
ISEhIiksIE15RXJyb3IsICJib29tISEhIik7CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IChhc3lu
YyBlID0+IHsgdGhyb3cgbmV3IE15RXJyb3IoZSkgfSkoImJvb20hISIpLCBNeUVycm9yLCAiYm9v
bSEhIik7CitzaG91bGRUaHJvd0FzeW5jKCgpID0+ICh7IGFzeW5jIHRocm93ZXIoZSkgeyB0aHJv
dyBuZXcgTXlFcnJvcihlKTsgfSB9KS50aHJvd2VyKCJib29tISEhISIpLCBNeUVycm9yLCAiYm9v
bSEhISEiKTsKKworZnVuY3Rpb24gcmVzb2x2ZUxhdGVyKHZhbHVlKSB7IHJldHVybiBQcm9taXNl
LnJlc29sdmUodmFsdWUpOyB9CitmdW5jdGlvbiByZWplY3RMYXRlcihlcnJvcikgeyByZXR1cm4g
UHJvbWlzZS5yZWplY3QoZXJyb3IpOyB9CisKKy8vIFJlc3VtZSBhZnRlciBOb3JtYWwgY29tcGxl
dGlvbgordmFyIGxvZyA9IFtdOworYXN5bmMgZnVuY3Rpb24gcmVzdW1lQWZ0ZXJOb3JtYWwodmFs
dWUpIHsKKyAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB2YWx1ZSA9IGF3YWl0
IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVl
KTsKKyAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgIGxvZy5w
dXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWUgKyAxOworfQorCitzaG91
bGRCZUFzeW5jKDQsICgpID0+IHJlc3VtZUFmdGVyTm9ybWFsKDEpKTsKK3Nob3VsZEJlKCJzdGFy
dDoxIHJlc3VtZToyIHJlc3VtZTozIiwgbG9nLmpvaW4oIiAiKSk7CisKK3ZhciBPID0geworICAg
IGFzeW5jIHJlc3VtZUFmdGVyTm9ybWFsKHZhbHVlKSB7CisgICAgICAgIGxvZy5wdXNoKCJzdGFy
dDoiICsgdmFsdWUpOworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSAr
IDEpOworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgICAgIHZhbHVl
ID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1
bWU6IiArIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlICsgMTsKKyAgICB9Cit9OworbG9n
ID0gW107CitzaG91bGRCZUFzeW5jKDUsICgpID0+IE8ucmVzdW1lQWZ0ZXJOb3JtYWwoMikpOwor
c2hvdWxkQmUoInN0YXJ0OjIgcmVzdW1lOjMgcmVzdW1lOjQiLCBsb2cuam9pbigiICIpKTsKKwor
dmFyIHJlc3VtZUFmdGVyTm9ybWFsQXJyb3cgPSBhc3luYyAodmFsdWUpID0+IHsKKyAgICBsb2cu
cHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2
YWx1ZSArIDEpOworICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICB2YWx1ZSA9
IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgIGxvZy5wdXNoKCJyZXN1bWU6IiAr
IHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWUgKyAxOworfTsKK2xvZyA9IFtdOworc2hvdWxkQmVB
c3luYyg2LCAoKSA9PiByZXN1bWVBZnRlck5vcm1hbEFycm93KDMpKTsKK3Nob3VsZEJlKCJzdGFy
dDozIHJlc3VtZTo0IHJlc3VtZTo1IiwgbG9nLmpvaW4oIiAiKSk7CisKK3ZhciByZXN1bWVBZnRl
ck5vcm1hbEV2YWwgPSBBc3luY0Z1bmN0aW9uKCJ2YWx1ZSIsIGAKKyAgICBsb2cucHVzaCgic3Rh
cnQ6IiArIHZhbHVlKTsKKyAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEp
OworICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICB2YWx1ZSA9IGF3YWl0IHJl
c29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsK
KyAgICByZXR1cm4gdmFsdWUgKyAxOworYCk7Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoNywg
KCkgPT4gcmVzdW1lQWZ0ZXJOb3JtYWxFdmFsKDQpKTsKK3Nob3VsZEJlKCJzdGFydDo0IHJlc3Vt
ZTo1IHJlc3VtZTo2IiwgbG9nLmpvaW4oIiAiKSk7CisKKy8vIFJlc3VtZSBhZnRlciBUaHJvdyBj
b21wbGV0aW9uCithc3luYyBmdW5jdGlvbiByZXN1bWVBZnRlclRocm93KHZhbHVlKSB7CisgICAg
bG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBh
d2FpdCByZWplY3RMYXRlcigidGhyb3cxIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBs
b2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUg
PSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cyIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlICsgMTsK
K30KKworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDIsICgpID0+IHJlc3VtZUFmdGVyVGhyb3co
MSkpOworc2hvdWxkQmUoInN0YXJ0OjEgcmVzdW1lOnRocm93MSByZXN1bWU6dGhyb3cyIiwgbG9n
LmpvaW4oIiAiKSk7CisKK3ZhciBPID0geworICAgIGFzeW5jIHJlc3VtZUFmdGVyVGhyb3codmFs
dWUpIHsKKyAgICAgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzEiKTsKKyAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0
TGF0ZXIoInRocm93MiIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBsb2cu
cHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWUgKyAx
OworICAgIH0KK30KK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYygzLCAoKSA9PiBPLnJlc3VtZUFm
dGVyVGhyb3coMikpOworc2hvdWxkQmUoInN0YXJ0OjIgcmVzdW1lOnRocm93MSByZXN1bWU6dGhy
b3cyIiwgbG9nLmpvaW4oIiAiKSk7CisKK3ZhciByZXN1bWVBZnRlclRocm93QXJyb3cgPSBhc3lu
YyAodmFsdWUpID0+IHsKKyAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB0cnkg
eworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzEiKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICB0
cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzIiKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAg
ICByZXR1cm4gdmFsdWUgKyAxOworfTsKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg0LCAoKSA9
PiByZXN1bWVBZnRlclRocm93QXJyb3coMykpOworc2hvdWxkQmUoInN0YXJ0OjMgcmVzdW1lOnRo
cm93MSByZXN1bWU6dGhyb3cyIiwgbG9nLmpvaW4oIiAiKSk7CisKK3ZhciByZXN1bWVBZnRlclRo
cm93RXZhbCA9IEFzeW5jRnVuY3Rpb24oInZhbHVlIiwgYAorICAgIGxvZy5wdXNoKCJzdGFydDoi
ICsgdmFsdWUpOworICAgIHRyeSB7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIo
InRocm93MSIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToi
ICsgZSk7CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0
ZXIoInRocm93MiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3Vt
ZToiICsgZSk7CisgICAgfQorICAgIHJldHVybiB2YWx1ZSArIDE7CitgKTsKK2xvZyA9IFtdOwor
c2hvdWxkQmVBc3luYyg1LCAoKSA9PiByZXN1bWVBZnRlclRocm93RXZhbCg0KSk7CitzaG91bGRC
ZSgic3RhcnQ6NCByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJvdzIiLCBsb2cuam9pbigiICIpKTsK
KworLy8gTWV0aG9vZERlZmluaXRpb24gU3ludGF4RXJyb3JzCitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgb2JqID0geyBhc3luYyBmb28gOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4g
JzonLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgZm9vID0gdHJ1ZSB9OyIsICJVbmV4
cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlz
dC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIGZvbyAsIGJh
ciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3Ig
YXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFz
eW5jIGZvbyB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lz
IGZvciBhcmd1bWVudCBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2Jq
ID0geyBhc3luYyAwIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQg
YSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBvYmogPSB7IGFzeW5jIDAgPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0n
LiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgMCAsIGJhciB9OyIsICJVbmV4cGVjdGVk
IHRva2VuICcsJy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIDAgfSIsICJVbmV4cGVj
dGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4i
KTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgJ2ZvbycgOiB0
cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZv
ciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsg
YXN5bmMgJ2ZvbycgPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBh
IHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIG9iaiA9IHsgYXN5bmMgJ2ZvbycgLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAn
LCcuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAnZm9vJyB9IiwgIlVuZXhwZWN0ZWQg
dG9rZW4gJ30nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOwor
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBbJ2ZvbyddIDogdHJ1
ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3Ig
YXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFz
eW5jIFsnZm9vJ10gPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBh
IHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2Vu
ICcsJy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIFsnZm9vJ10gfSIsICJVbmV4cGVj
dGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4i
KTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIGZvbyA6IHRydWUg
fTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9y
ZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiY2xhc3MgQyB7IGFzeW5jIGZvbyA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAn
PScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFt
ZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIGZv
byAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAn
KCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgZm9vIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAn
fScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFt
ZXRlciBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMg
MCA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGFuIG9wZW5pbmcg
JygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIDAgPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQg
dG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2Qn
cyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBh
c3luYyAwICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVu
aW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAwIH0iLCAiVW5leHBlY3RlZCB0b2tl
biAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBh
cmFtZXRlciBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5
bmMgJ2ZvbycgOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhbiBv
cGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAnZm9vJyA9IHRydWUgfTsiLCAi
VW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFz
eW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
Y2xhc3MgQyB7IGFzeW5jICdmb28nICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBF
eHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIg
bGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAnZm9vJyB9
IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUg
YSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiY2xhc3MgQyB7IGFzeW5jIFsnZm9vJ10gOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9r
ZW4gJzonLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBw
YXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3lu
YyBbJ2ZvbyddID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4g
b3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgWydmb28nXSAsIGJhciB9OyIs
ICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEg
YXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJjbGFzcyBDIHsgYXN5bmMgWydmb28nXSB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBl
Y3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlz
dC4iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNl
cnZlZC13b3JkLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVk
LXdvcmQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhiMjRmZTc2MGIwYTNhYjJkOWZmNWIxNWMzNDdmY2Y3MWMy
ZjgxOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVs
ZS1yZXNlcnZlZC13b3JkLmpzCkBAIC0wLDAgKzEsNzIgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJl
cyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVp
bGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVz
c2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51
bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlm
ICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOwor
ICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uIGNo
ZWNrTW9kdWxlU3ludGF4RXJyb3Ioc291cmNlLCBlcnJvck1lc3NhZ2UpIHsKKyAgICBzaG91bGRU
aHJvdygoKSA9PiBjaGVja01vZHVsZVN5bnRheChzb3VyY2UpLCBlcnJvck1lc3NhZ2UpOworfQor
CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCit2YXIgYXdhaXQ7CitgLCBgU3lu
dGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVs
ZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihgCitleHBvcnQgdmFyIGF3YWl0OworYCwg
YFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYSBt
b2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2xldCBhd2Fp
dDsKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5n
LnJhd2AKK2V4cG9ydCBsZXQgYXdhaXQ7CitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01v
ZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitjb25zdCBhd2FpdCA9IDEKK2AsIGBTeW50YXhF
cnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYSBt
b2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCBj
b25zdCBhd2FpdCA9IDEKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKKworY2hlY2tNb2R1bGVTeW50
YXhFcnJvcihTdHJpbmcucmF3YAorZnVuY3Rpb24gYXdhaXQoKSB7fQorYCwgYFN5bnRheEVycm9y
OiBDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGEgbW9kdWxlLjoyYCk7
CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitmdW5jdGlvbiogYXdhaXQoKSB7
fQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQn
IGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCith
c3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJl
IGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYSBtb2R1bGUuOjJgKTsKKworY2hlY2tNb2R1bGVT
eW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IHthd2FpdH0gZnJvbSAnZm9vJzsKK2AsIGBT
eW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFt
ZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IHtmb28g
YXMgYXdhaXR9IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0
JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJy
b3IoU3RyaW5nLnJhd2AKK2ltcG9ydCAqIGFzIGF3YWl0IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4
RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJg
KTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCBhd2FpdCwge3gs
IHksIHp9IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBh
cyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3Io
U3RyaW5nLnJhd2AKK2ltcG9ydCBhd2FpdCwge3gsIHksIHosfSBmcm9tICdmb28nOworYCwgYFN5
bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1l
LjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgYXdhaXQg
ZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGlt
cG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcu
cmF3YAoraW1wb3J0IGF3YWl0LCAqIGFzIGZvbyBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9y
OiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb3ppbGxhLmpzIGIvSlNUZXN0
cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW96aWxsYS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmZkNDQ4MWY4YjJj
Yjc3OWUwZGRiNTRlNDBkNjExMDA4NTYwZTcwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvYXN5bmMtYXdhaXQtbW96aWxsYS5qcwpAQCAtMCwwICsxLDMwNyBAQAorLyogVGhpcyBT
b3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1
YmxpYworICogTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRp
c3RyaWJ1dGVkIHdpdGggdGhpcworICogZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6
Ly9tb3oub3JnL01QTC8yLjAvLiAqLworCisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VT
MjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisv
L0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAg
ICBpZiAobXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAg
ICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCAr
ICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMo
ZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3Ig
PSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVl
OyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBh
Y3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisgICAgaWYgKGhhZEVy
cm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVh
bCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3cocnVuLCBlcnJvclR5cGUsIG1lc3Nh
Z2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHRy
eSB7CisgICAgICAgIGFjdHVhbCA9IHJ1bigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
aGFkRXJyb3IgPSB0cnVlOworICAgICAgICBhY3R1YWwgPSBlOworICAgIH0KKyAgICBpZiAoIWhh
ZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkg
dG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7Cisg
ICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY2VkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1l
ICsgIiAsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09
IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICIn
LCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFs
OworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFs
dWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikg
eyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFz
a3MoKTsKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRp
ZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93
ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7Cisg
ICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93
ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7
Cit9CisKK2Z1bmN0aW9uIGFzc2VydChjb25kLCBtc2cgPSAiIikgeworICAgIGlmICghY29uZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93
U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7Cisg
ICAgdHJ5IHsKKyAgICAgICAgZXZhbChzdHIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
aWYgKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikgeworICAgICAgICAgICAgaGFkRXJyb3IgPSB0
cnVlOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIikKKyAgICAg
ICAgICAgICAgICBhc3NlcnQoZS5tZXNzYWdlID09PSBtZXNzYWdlLCAiRXhwZWN0ZWQgJyIgKyBt
ZXNzYWdlICsgIicgYnV0IHRocmV3ICciICsgZS5tZXNzYWdlICsgIiciKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBhc3NlcnQoaGFkRXJyb3IsICJEaWQgbm90IHRocm93IHN5bnRheCBlcnJvciIp
OworfQorCisvLyBzZW1hbnRpY3MuanMKKyhmdW5jdGlvbiBtb3pTZW1hbnRpY3MoKSB7CisKK2Fz
eW5jIGZ1bmN0aW9uIGVtcHR5KCkgeworfQorCithc3luYyBmdW5jdGlvbiBzaW1wbGVSZXR1cm4o
KSB7CisgICAgcmV0dXJuIDE7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNpbXBsZUF3YWl0KCkgewor
ICAgIHZhciByZXN1bHQgPSBhd2FpdCAyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2FzeW5j
IGZ1bmN0aW9uIHNpbXBsZUF3YWl0QXN5bmMoKSB7CisgICAgdmFyIHJlc3VsdCA9IGF3YWl0IHNp
bXBsZVJldHVybigpOworICAgIHJldHVybiAyICsgcmVzdWx0OworfQorCithc3luYyBmdW5jdGlv
biByZXR1cm5PdGhlckFzeW5jKCkgeworICAgIHJldHVybiAxICsgYXdhaXQgc2ltcGxlQXdhaXRB
c3luYygpOworfQorCithc3luYyBmdW5jdGlvbiBzaW1wbGVUaHJvd2VyKCkgeworICAgIHRocm93
IG5ldyBFcnJvcigpOworfQorCithc3luYyBmdW5jdGlvbiBkZWxlZ2F0ZWRUaHJvd2VyKCkgewor
ICAgIHZhciB2YWwgPSBhd2FpdCBzaW1wbGVUaHJvd2VyKCk7CisgICAgcmV0dXJuIHZhbDsKK30K
KworYXN5bmMgZnVuY3Rpb24gdHJ5Q2F0Y2goKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQg
ZGVsZWdhdGVkVGhyb3dlcigpOworICAgICAgICByZXR1cm4gJ0ZBSUxFRCc7CisgICAgfSBjYXRj
aCAoXykgeworICAgICAgICByZXR1cm4gNTsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRy
eUNhdGNoVGhyb3coKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVkVGhyb3dl
cigpOworICAgICAgICByZXR1cm4gJ0ZBSUxFRCc7CisgICAgfSBjYXRjaCAoXykgeworICAgICAg
ICByZXR1cm4gZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0KK30KKworYXN5bmMgZnVuY3Rpb24g
d2VsbEZpbmFsbHkoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVkVGhyb3dl
cigpOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0dXJuICdGQUlMRUQnOworICAgIH0g
ZmluYWxseSB7CisgICAgICAgIHJldHVybiA2OworICAgIH0KK30KKworYXN5bmMgZnVuY3Rpb24g
ZmluYWxseU1heUZhaWwoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVkVGhy
b3dlcigpOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0dXJuIDU7CisgICAgfSBmaW5h
bGx5IHsKKyAgICAgICAgcmV0dXJuIGRlbGVnYXRlZFRocm93ZXIoKTsKKyAgICB9Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIGVtYmVkZGVkKCkgeworICAgIGFzeW5jIGZ1bmN0aW9uIGlubmVyKCkgewor
ICAgICAgICByZXR1cm4gNzsKKyAgICB9CisgICAgcmV0dXJuIGF3YWl0IGlubmVyKCk7Cit9CisK
Ky8vIHJlY3Vyc2lvbiwgaXQgd29ya3MhCithc3luYyBmdW5jdGlvbiBmaWIobikgeworICAgIHJl
dHVybiAobiA9PSAwIHx8IG4gPT0gMSkgPyBuIDogYXdhaXQgZmliKG4gLSAxKSArIGF3YWl0IGZp
YihuIC0gMik7Cit9CisKKy8vIG11dHVhbCByZWN1cnNpb24KK2FzeW5jIGZ1bmN0aW9uIGlzT2Rk
KG4pIHsKKyAgICBhc3luYyBmdW5jdGlvbiBpc0V2ZW4obikgeworICAgICAgICByZXR1cm4gbiA9
PT0gMCB8fCBhd2FpdCBpc09kZChuIC0gMSk7CisgICAgfQorICAgIHJldHVybiBuICE9PSAwICYm
IGF3YWl0IGlzRXZlbihuIC0gMSk7Cit9CisKKy8vIHJlY3Vyc2lvbiwgdGFrZSB0aHJlZSEKK3Zh
ciBoYXJkY29yZUZpYiA9IGFzeW5jIGZ1bmN0aW9uIGZpYjIobikgeworICAgIHJldHVybiAobiA9
PSAwIHx8IG4gPT0gMSkgPyBuIDogYXdhaXQgZmliMihuIC0gMSkgKyBhd2FpdCBmaWIyKG4gLSAy
KTsKK30KKwordmFyIGFzeW5jRXhwciA9IGFzeW5jIGZ1bmN0aW9uKCkgeworICAgIHJldHVybiAx
MDsKK30KKwordmFyIG5hbWVkQXN5bmNFeHByID0gYXN5bmMgZnVuY3Rpb24gc2ltcGxlKCkgewor
ICAgIHJldHVybiAxMTsKK30KKworYXN5bmMgZnVuY3Rpb24gZXhlY3V0aW9uT3JkZXIoKSB7Cisg
ICAgdmFyIHZhbHVlID0gMDsKKyAgICBhc3luYyBmdW5jdGlvbiBmaXJzdCgpIHsKKyAgICAgICAg
cmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAwID8gMSA6IHZhbHVlKTsKKyAgICB9CisgICAgYXN5
bmMgZnVuY3Rpb24gc2Vjb25kKCkgeworICAgICAgICByZXR1cm4gKHZhbHVlID0gdmFsdWUgPT09
IDAgPyAyIDogdmFsdWUpOworICAgIH0KKyAgICBhc3luYyBmdW5jdGlvbiB0aGlyZCgpIHsKKyAg
ICAgICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAwID8gMyA6IHZhbHVlKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGF3YWl0IGZpcnN0KCkgKyBhd2FpdCBzZWNvbmQoKSArIGF3YWl0IHRoaXJkKCkg
KyA2OworfQorCithc3luYyBmdW5jdGlvbiBtaXNjZWxsYW5lb3VzKCkgeworICAgIGlmIChhcmd1
bWVudHMubGVuZ3RoID09PSAzICYmCisgICAgICAgIGFyZ3VtZW50cy5jYWxsZWUubmFtZSA9PT0g
Im1pc2NlbGxhbmVvdXMiKQorICAgICAgICByZXR1cm4gMTQ7Cit9CisKK2Z1bmN0aW9uIHRocm93
ZXIoKSB7CisgICAgdGhyb3cgMTU7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGRlZmF1bHRBcmdzKGFy
ZyA9IHRocm93ZXIoKSkgeworfQorCisvLyBBc3luYyBmdW5jdGlvbnMgYXJlIG5vdCBjb25zdHJ1
Y3RpYmxlCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgYXN5bmMgZnVuY3Rpb24gUGVyc29uKCkg
eworICAgIH0KKyAgICBuZXcgUGVyc29uKCk7Cit9LCBUeXBlRXJyb3IpOworCitzaG91bGRCZUFz
eW5jKHVuZGVmaW5lZCwgZW1wdHkpOworc2hvdWxkQmVBc3luYygxLCBzaW1wbGVSZXR1cm4pOwor
c2hvdWxkQmVBc3luYygyLCBzaW1wbGVBd2FpdCk7CitzaG91bGRCZUFzeW5jKDMsIHNpbXBsZUF3
YWl0QXN5bmMpOworc2hvdWxkQmVBc3luYyg0LCByZXR1cm5PdGhlckFzeW5jKTsKK3Nob3VsZFRo
cm93QXN5bmMoc2ltcGxlVGhyb3dlciwgRXJyb3IpOworc2hvdWxkQmVBc3luYyg1LCB0cnlDYXRj
aCk7CitzaG91bGRCZUFzeW5jKDYsIHdlbGxGaW5hbGx5KTsKK3Nob3VsZFRocm93QXN5bmMoZmlu
YWxseU1heUZhaWwsIEVycm9yKTsKK3Nob3VsZEJlQXN5bmMoNywgZW1iZWRkZWQpOworc2hvdWxk
QmVBc3luYyg4LCAoKSA9PiBmaWIoNikpOworc2hvdWxkQmVBc3luYyg5LCBleGVjdXRpb25PcmRl
cik7CitzaG91bGRCZUFzeW5jKDEwLCBhc3luY0V4cHIpOworc2hvdWxkQmVBc3luYygxMSwgbmFt
ZWRBc3luY0V4cHIpOworc2hvdWxkQmVBc3luYygxMiwgKCkgPT4gaXNPZGQoMTIpLnRoZW4odiA9
PiB2ID8gIm9vcHMiIDogMTIpKTsKK3Nob3VsZEJlQXN5bmMoMTMsICgpID0+IGhhcmRjb3JlRmli
KDcpKTsKK3Nob3VsZEJlQXN5bmMoMTQsICgpID0+IG1pc2NlbGxhbmVvdXMoMSwgMiwgMykpOwor
c2hvdWxkQmVBc3luYygxNSwgKCkgPT4gZGVmYXVsdEFyZ3MoKS5jYXRjaChlID0+IGUpKTsKKwor
fSkoKTsKKworLy8gbWV0aG9kcy5qcworKGZ1bmN0aW9uIG1vek1ldGhvZHMoKSB7CisKK2NsYXNz
IFggeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZhbHVlID0gNDI7CisgICAg
fQorICAgIGFzeW5jIGdldFZhbHVlKCkgeworICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKKyAg
ICB9CisgICAgc2V0VmFsdWUodmFsdWUpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwor
ICAgIH0KKyAgICBhc3luYyBpbmNyZW1lbnQoKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGF3YWl0
IHRoaXMuZ2V0VmFsdWUoKTsKKyAgICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSArIDEpOworICAg
ICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOworICAgIH0KKyAgICBhc3luYyBnZXRCYXNlQ2xh
c3NOYW1lKCkgeworICAgICAgICByZXR1cm4gJ1gnOworICAgIH0KKyAgICBzdGF0aWMgYXN5bmMg
Z2V0U3RhdGljVmFsdWUoKSB7CisgICAgICAgIHJldHVybiA0NDsKKyAgICB9Cit9CisKK2NsYXNz
IFkgZXh0ZW5kcyBYIHsKKyAgICBhc3luYyBnZXRCYXNlQ2xhc3NOYW1lKCkgeworICAgICAgICBy
ZXR1cm4gc3VwZXIuZ2V0QmFzZUNsYXNzTmFtZSgpOworICAgIH0KK30KKwordmFyIG9iakxpdGVy
YWwgPSB7CisgICAgYXN5bmMgZ2V0KCkgeworICAgICAgICByZXR1cm4gNDU7CisgICAgfSwKKyAg
ICBzb21lU3R1ZmY6IDUKK307CisKK3ZhciB4ID0gbmV3IFgoKTsKK3ZhciB5ID0gbmV3IFkoKTsK
Kworc2hvdWxkQmVBc3luYyg0MiwgKCkgPT4geC5nZXRWYWx1ZSgpKTsKK3Nob3VsZEJlQXN5bmMo
NDMsICgpID0+IHguaW5jcmVtZW50KCkpOworc2hvdWxkQmVBc3luYyg0NCwgKCkgPT4gWC5nZXRT
dGF0aWNWYWx1ZSgpKTsKK3Nob3VsZEJlQXN5bmMoNDUsICgpID0+IG9iakxpdGVyYWwuZ2V0KCkp
Oworc2hvdWxkQmVBc3luYygnWCcsICgpID0+IHkuZ2V0QmFzZUNsYXNzTmFtZSgpKTsKKworfSko
KTsKKworKGZ1bmN0aW9uIG1vekZ1bmN0aW9uTmFtZUluZmVycmVuY2UoKSB7CisKK2FzeW5jIGZ1
bmN0aW9uIHRlc3QoKSB7IH0KKwordmFyIGFub24gPSBhc3luYyBmdW5jdGlvbigpIHsgfQorCitz
aG91bGRCZSgidGVzdCIsIHRlc3QubmFtZSk7CitzaG91bGRCZSgiYW5vbiIsIGFub24ubmFtZSk7
CisKK30pKCk7CisKKyhmdW5jdGlvbiBtb3pTeW50YXhFcnJvcnMoKSB7CisKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIid1c2Ugc3RyaWN0JzsgYXN5bmMgZnVuY3Rpb24gZXZhbCgpIHt9Iik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCIndXNlIHN0cmljdCc7IGFzeW5jIGZ1bmN0aW9uIGFyZ3Vt
ZW50cygpIHt9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBhKGsg
PSBzdXBlci5wcm9wKSB7IH0iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0
aW9uIGEoKSB7IHN1cGVyLnByb3AoKTsgfSIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gYSgpIHsgc3VwZXIoKTsgfSIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
YXN5bmMgZnVuY3Rpb24gYShrID0gYXdhaXQgMykge30iKTsKKworfSkoKTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1y
ZXNlcnZlZC13b3JkLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2ZWQtd29y
ZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jOGUxZDMzMjFjN2Y4MDA4N2JlZGYwZjE1NzIxYjI5NWI4MWVlZmIz
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2ZWQt
d29yZC5qcwpAQCAtMCwwICsxLDE2NiBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9F
UzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgor
Ly9AIHNraXAKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmQsIG1zZyA9ICIiKSB7CisgICAgaWYgKCFj
b25kKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKK30KK25vSW5saW5lKGFzc2VydCk7
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7CisgICAg
dmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzdHIpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikgewor
ICAgICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNz
YWdlID09PSAic3RyaW5nIikKKyAgICAgICAgICAgICAgICBhc3NlcnQoZS5tZXNzYWdlID09PSBt
ZXNzYWdlLCAiRXhwZWN0ZWQgJyIgKyBtZXNzYWdlICsgIicgYnV0IHRocmV3ICciICsgZS5tZXNz
YWdlICsgIiciKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoaGFkRXJyb3IsICJEaWQg
bm90IHRocm93IHN5bnRheCBlcnJvciIpOworfQorbm9JbmxpbmUoc2hvdWxkVGhyb3dTeW50YXhF
cnJvcik7CisKK3ZhciBBc3luY0Z1bmN0aW9uID0gKGFzeW5jIGZ1bmN0aW9uKCkge30pLmNvbnN0
cnVjdG9yOworCisvLyBBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbgorc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIgYXdhaXQ7IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIFthd2FpdF0gPSBbXTsgfSki
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIg
Wy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5
bmMgZnVuY3Rpb24oKSB7IHZhciB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7
fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkg
eyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCBhd2FpdDsgfSkiLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCBbYXdhaXRd
ID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5j
IGZ1bmN0aW9uKCkgeyBsZXQgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IHthd2FpdH0gPSB7
fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVu
Y3Rpb24oKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQge2lzQXN5bmM6
IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
Iihhc3luYyBmdW5jdGlvbigpIHsgY29uc3QgYXdhaXQ7IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCBbYXdhaXRdID0g
W107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1
bmN0aW9uKCkgeyBjb25zdCBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCB7YXdhaXR9ID0g
e307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1
bmN0aW9uKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCB7aXNB
c3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0pIiwgIkNhbm5v
dCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGFzeW5jIGZ1bmN0
aW9uIGF3YWl0KCkge30gfSkiLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0
JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3lu
YyBmdW5jdGlvbihhd2FpdCkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVy
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIo
YXN5bmMgZnVuY3Rpb24gZihbYXdhaXRdKSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBw
YXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKFsuLi5hd2FpdF0pIHt9KSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoLi4uYXdhaXQpIHt9KSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoe2F3YWl0fSkge30p
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24gZih7aXNB
c3luYzogYXdhaXR9KSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9u
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIgYXdhaXQ7
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsg
dmFyIFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZigpIHsgdmFyIFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIHthd2FpdH0gPSB7fTsg
fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsg
dmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSki
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0
IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMg
ZnVuY3Rpb24gZigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCBbLi4uYXdhaXRdID0g
W107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5j
dGlvbiBmKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0g
PSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1
bmN0aW9uIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCBhd2Fp
dDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0
aW9uIGYoKSB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IFsuLi5hd2FpdF0gPSBb
XTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0
aW9uIGYoKSB7IGNvbnN0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2Fp
dH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGZ1bmN0
aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQn
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMg
ZnVuY3Rpb24gZigpIHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBkZWNs
YXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKGF3YWl0KSB7fSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZihbYXdhaXRdKSB7fSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZihbLi4uYXdhaXRd
KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigu
Li5hd2FpdCkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0
aW9uIGYoe2F3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGYoe2lzQXN5bmM6IGF3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNBcnJv
d0Z1bmN0aW9uCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsg
dmFyIGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5
bmMgKCkgPT4geyB2YXIgW2F3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciB7
YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0g
YXN5bmMgKCkgPT4geyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIHtpc0FzeW5jOiBh
d2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBh
c3luYyAoKSA9PiB7IGxldCBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQgW2F3YWl0XSA9IFtdOyB9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7
IGxldCBbLi4uYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBs
ZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0g
e307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFz
eW5jICgpID0+IHsgY29uc3QgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3QgW2F3YWl0XSA9IFtdOyB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9
PiB7IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCB7YXdhaXR9ID0ge307IH0i
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgp
ID0+IHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IHtpc0FzeW5j
OiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBmID0gYXN5bmMgKCkgPT4geyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRl
Y2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBhc3luYyBmdW5jdGlv
biBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0g
YXN5bmMgKGF3YWl0KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IGYgPSBhc3luYyAoW2F3YWl0XSkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJh
bWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBmID0gYXN5bmMgKFsuLi5hd2FpdF0pID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICguLi5hd2FpdCkgPT4ge30iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKHthd2FpdH0pID0+IHt9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICh7aXNBc3luYzogYXdh
aXR9KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3lu
YyBhd2FpdCA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworCisvLyBBc3luY01ldGhvZAorc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciBhd2FpdDsgfSB9IiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIgW2F3YWl0XSA9
IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5j
IGYoKSB7IHZhciBbLi4uYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIHthd2FpdH0gPSB7fTsgfSB9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIge2lz
QXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IGF3
YWl0OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9
IHsgYXN5bmMgZigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCBbLi4uYXdhaXRd
ID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBP
ID0geyBhc3luYyBmKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IHtpc0FzeW5j
OiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBm
KCkgeyBjb25zdCBhd2FpdDsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSB9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7
IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IHthd2FpdH0gPSB7fTsgfSB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5j
IGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5u
b3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGFzeW5jIGZ1
bmN0aW9uIGF3YWl0KCkge30gfSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdh
d2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgTyA9IHsgYXN5bmMgZihhd2FpdCkge30gfSAiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBw
YXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBPID0geyBhc3luYyBmKFthd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZihbLi4uYXdhaXRdKSB7fSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoLi4uYXdhaXQpIHt9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZih7YXdhaXR9
KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYo
e2lzQXN5bmM6IGF3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNGdW5jdGlvbiBjb25zdHJ1
Y3Rvcgorc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIGF3YWl0Oycp
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciBbYXdh
aXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlv
bigndmFyIFsuLi5hd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJBc3luY0Z1bmN0aW9uKCd2YXIge2F3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciB7aXNBc3luYzogYXdhaXR9ID0ge307Jyki
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3lu
Y0Z1bmN0aW9uKCdsZXQgYXdhaXQ7JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQgW2F3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignbGV0IFsuLi5hd2FpdF0g
PSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVu
Y3Rpb24oJ2xldCB7YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignbGV0
IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IGF3YWl0OycpIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3QgW2F3YWl0XSA9IFtd
OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlv
bignY29uc3QgWy4uLmF3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qge2F3YWl0fSA9IHt9OycpIiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qge2lz
QXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignZnVuY3Rp
b24gYXdhaXQoKSB7fScpIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1
bmN0aW9uKCdhc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9JykiLCAiQ2Fubm90IGRlY2xhcmUgZnVu
Y3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2F3YWl0JywgJycpIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdbYXdhaXRdJywgJycpIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdbLi4uYXdhaXRdJywgJycpIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCcuLi5hd2FpdCcs
ICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigne2F3
YWl0fScsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlv
bigne2lzQXN5bmM6IGF3YWl0fScsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFt
ZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfYXJndW1lbnRzX2JpbmRpbmcuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9hcmd1bWVudHNf
YmluZGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTU1ZjY0YWY4Yzk0NDQ0NzIyMTFiMWY1ODkxNzA2MWY4
YWE0ZDZhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmNfYXJyb3dfZnVu
Y3Rpb25zX2xleGljYWxfYXJndW1lbnRzX2JpbmRpbmcuanMKQEAgLTAsMCArMSw0NyBAQAorLy8g
VGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8g
YmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUo
ZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQorICAgICAg
ICBtc2cgPSAiIjsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZh
bHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOwor
fQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxl
dCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5j
dGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9u
KGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWlu
TWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7
CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5jdGlvbiBz
aG91bGRUaHJvd0FzeW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVh
bDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZh
bHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3Ip
IHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rh
c2tzKCk7CisKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0
IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBl
KSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRo
cm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7
CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2Fn
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRo
cm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICIn
Iik7Cit9CisKK3ZhciBub0FyZ3VtZW50c0Fycm93ID0gYXN5bmMgKCkgPT4gYXdhaXQgWy4uLmFy
Z3VtZW50c107CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IG5vQXJndW1lbnRzQXJyb3coMSwgMiwg
MyksIFJlZmVyZW5jZUVycm9yKTsKK3ZhciBub0FyZ3VtZW50c0Fycm93MiA9IGFzeW5jICgpID0+
IHsgcmV0dXJuIGF3YWl0IFsuLi5hcmd1bWVudHNdOyB9CitzaG91bGRUaHJvd0FzeW5jKCgpID0+
IG5vQXJndW1lbnRzQXJyb3cyKDEsIDIsIDMpLCBSZWZlcmVuY2VFcnJvcik7CisKK3Nob3VsZEJl
QXN5bmMoIlsxLDIsM10iLCAoKSA9PiAoZnVuY3Rpb24oKSB7IHJldHVybiAoYXN5bmMgKCkgPT4g
SlNPTi5zdHJpbmdpZnkoWy4uLmFyZ3VtZW50c10pKSgpOyB9KSgxLCAyLCAzKSk7CitzaG91bGRC
ZUFzeW5jKCJbNCw1LDZdIiwgKCkgPT4gKGZ1bmN0aW9uKCkgeyByZXR1cm4gKGFzeW5jICgpID0+
IHsgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFsuLi5hd2FpdCBhcmd1bWVudHNdKSB9KSgpOyB9KSg0
LCA1LCA2KSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luY19hcnJvd19mdW5jdGlv
bnNfbGV4aWNhbF9uZXcudGFyZ2V0X2JpbmRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luY19h
cnJvd19mdW5jdGlvbnNfbGV4aWNhbF9uZXcudGFyZ2V0X2JpbmRpbmcuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDI2YTM5ODNmN2E5Mjc0MGVlNDc4YzNmZjdiYjgzMGM3ODVhZTQwOQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX25ldy50YXJn
ZXRfYmluZGluZy5qcwpAQCAtMCwwICsxLDU1IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5B
QkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRp
bWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cp
IHsKKyAgICBpZiAobXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UK
KyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFj
dHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJl
QXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFk
RXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9
IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0
cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBp
ZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVj
dGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBl
cnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9
IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7
IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFj
dHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmICghaGFk
RXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0
byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAg
ICBpZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1l
ICsgIiwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0g
dm9pZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIics
IGJ1dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gQzEo
KSB7CisgICAgcmV0dXJuIGFzeW5jICgpID0+IGF3YWl0IG5ldy50YXJnZXQ7Cit9CisKK2Z1bmN0
aW9uIEMyKCkgeworICAgIHJldHVybiBhc3luYyAoKSA9PiB7IHJldHVybiBhd2FpdCBuZXcudGFy
Z2V0IH07Cit9CisKK3Nob3VsZEJlQXN5bmMoQzEsIG5ldyBDMSgpKTsKK3Nob3VsZEJlQXN5bmMo
dW5kZWZpbmVkLCBDMSgpKTsKK3Nob3VsZEJlQXN5bmMoQzIsIG5ldyBDMigpKTsKK3Nob3VsZEJl
QXN5bmModW5kZWZpbmVkLCBDMigpKTsKKworc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiBh
d2FpdCBuZXcudGFyZ2V0LCBSZWZlcmVuY2VFcnJvcik7CitzaG91bGRUaHJvd0FzeW5jKGFzeW5j
ICgpID0+IHsgcmV0dXJuIGF3YWl0IG5ldy50YXJnZXQ7IH0sIFJlZmVyZW5jZUVycm9yKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX3N1
cGVyX2JpbmRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4
aWNhbF9zdXBlcl9iaW5kaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzZWE1Y2JhMGNmODVkZjBiYTczN2Nj
ZGI3YTczMjBlMDRiMThhNDcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3lu
Y19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9zdXBlcl9iaW5kaW5nLmpzCkBAIC0wLDAgKzEsNTcg
QEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lO
VEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKKworZnVuY3Rpb24g
c2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAw
KQorICAgICAgICBtc2cgPSAiIjsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBt
c2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykg
eworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCku
dGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAg
IGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOwor
ICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJv
dyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitj
bGFzcyBCYXNlQ2xhc3MgeworICAgIGJhc2VDbGFzc1ZhbHVlKCkgeworICAgICAgICByZXR1cm4g
IkJhc2VDbGFzc1ZhbHVlIjsKKyAgICB9CisgICAgZ2V0IHByb3BlcnR5KCkgeworICAgICAgICBy
ZXR1cm4gInRlc3QhIjsKKyAgICB9Cit9CisKK2NsYXNzIENoaWxkQ2xhc3MgZXh0ZW5kcyBCYXNl
Q2xhc3MgeworICAgIGFzeW5jU3VwZXJQcm9wKCkgeworICAgICAgICByZXR1cm4gYXN5bmMgeCA9
PiBzdXBlci5iYXNlQ2xhc3NWYWx1ZSgpOworICAgIH0KKyAgICBhc3luY1N1cGVyUHJvcDIoKSB7
CisgICAgICAgIHJldHVybiBhc3luYyB4ID0+IHsgcmV0dXJuIHN1cGVyLmJhc2VDbGFzc1ZhbHVl
KCk7IH0KKyAgICB9Cit9CisKKy8vIEZJWE1FOiBzdXBlciBiaW5kaW5ncyBpbiBhc3luYyBhcnJv
dyBmdW5jdGlvbnMgYXJlIGJyb2tlbgorc2hvdWxkQmVBc3luYygiQmFzZUNsYXNzVmFsdWUiLCBu
ZXcgQ2hpbGRDbGFzcygpLmFzeW5jU3VwZXJQcm9wKCkpOworc2hvdWxkQmVBc3luYygiQmFzZUNs
YXNzVmFsdWUiLCBuZXcgQ2hpbGRDbGFzcygpLmFzeW5jU3VwZXJQcm9wMigpKTsKKworY2xhc3Mg
Q2hpbGRDbGFzczIgZXh0ZW5kcyBCYXNlQ2xhc3MgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAg
ICAgICByZXR1cm4gYXN5bmMgKHNlbGYgPSBzdXBlcigpKSA9PiBzZWxmLmJhc2VDbGFzc1ZhbHVl
KCkgKyAnICcgKyBzdXBlci5wcm9wZXJ0eTsKKyAgICB9Cit9CisKK3Nob3VsZEJlQXN5bmMoIkJh
c2VDbGFzc1ZhbHVlIHRlc3QhIiwgbmV3IENoaWxkQ2xhc3MyKCkpOworCitwcmludCgiRG9uZSEi
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF90aGlzX2JpbmRpbmcuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF90aGlzX2JpbmRpbmcuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzJhZmExMTNmYTkxMjZjM2UxNjdmYWU0MTFjM2EwNGU4N2ExMWI1YQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2Fs
X3RoaXNfYmluZGluZy5qcwpAQCAtMCwwICsxLDMwIEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMg
RU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxk
IHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBt
c2cpIHsKKyAgICBpZiAobXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVs
c2UKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiAr
IGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIg
aGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVh
bCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3Ig
PSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAg
ICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4
cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK3ZhciBkID0gKHsgeCA6ICJiYXIiLCB5IDogZnVu
Y3Rpb24oKSB7IHJldHVybiBhc3luYyB6ID0+IHRoaXMueCArIHo7IH19KS55KCk7Cit2YXIgZSA9
IHsgeCA6ICJiYXoiLCB5IDogZCB9OworCitzaG91bGRCZUFzeW5jKCJiYXJsZXkiLCAoKSA9PiBk
KCJsZXkiKSk7CitzaG91bGRCZUFzeW5jKCJiYXJsZXkiLCAoKSA9PiBlLnkoImxleSIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292346</attachid>
            <date>2016-10-21 06:48:35 -0700</date>
            <delta_ts>2016-10-21 12:57:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163760-20161021094455.patch</filename>
            <type>text/plain</type>
            <size>142132</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NTI3OWUxOTQxMmU4ZGNiYzZiYWNkNmM3OTdmMTgzYjcyNjE3MGYxLi44NzU2NzVmZGNhMzlhYWEy
ZDk2YzBlMGRjN2Y3Y2EzZTZhMjYyYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTcgQEAKKzIwMTYtMTAtMjEgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBm
dW5jdGlvbnMgZ2VuZXJhdGUgYnl0ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3
aGljaCBpcworICAgICAgICBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb246CisgICAgICAgIAorICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5z
bGF0aW9uOgorICAgICAgICBhc3luYyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAv
LyBBZnRlciB0cmFuc2xhdGlvbjoKKyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAg
ICAgICAgIGxldCBnZW5lcmF0b3IgPSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQm9keSBvZiBhc3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgQGdlbmVyYXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5l
cmF0b3JUaGlzOiB0aGlzLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8
ZnJhbWUgc3RhdGU+LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgQXdhaXQgRXhw
cmVzc2lvbnMgYXJlIGVxdWl2YWxlbnQgdG8gbm9uLWRlbGVnYXRpbmcgWWllbGQgZXhwcmVzc2lv
bnMsIGFuZCBlbWl0IGlkZW50aWNhbCBieXRlY29kZS4KKworICAgICAgICBJbiB0aGlzIGJ1Zywg
YXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBvbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCwgYXMg
c3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGRvIG5vdCB5ZXQgd29y
ayBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5q
czogQWRkZWQuCisgICAgICAgIChhc3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19hc3luY19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3
RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZSk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6QXN5bmNG
dW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6
SlNBc3luY0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJl
bnRseSk6CisKIDIwMTYtMTAtMjAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIEZpeCBKU0MgY2FzdC1hbGlnbiBjb21waWxlciB3YXJuaW5ncyBvbiBBUk12
NwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM5NWZlMmNhNTVmNDhlNTZm
YzUyZGU1NDMxZjZmMWRmYzA2NWM1OTAuLjE3Njk4NDNkZjY3ZWRjMjc1ODk5ZjcyYjY1MDA2Yzk4
MmQyNmZjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTYzNSw2ICs2
MzUsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvQXJyYXlDb252
ZW50aW9ucy5jcHAKICAgICBydW50aW1lL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKyAgICBydW50aW1lL0FzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9CYXNpY0Jsb2NrTG9jYXRpb24uY3BwCiAgICAgcnVudGltZS9Cb29sZWFuQ29uc3Ry
dWN0b3IuY3BwCiAgICAgcnVudGltZS9Cb29sZWFuT2JqZWN0LmNwcApAQCAtNzExLDYgKzcxMyw3
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVy
Q29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisgICAgcnVudGltZS9KU0FzeW5jRnVu
Y3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9K
U0NKU1ZhbHVlLmNwcAogICAgIHJ1bnRpbWUvSlNDYWxsZWUuY3BwCkBAIC0xMjk1LDYgKzEyOTgs
NyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9idWlsdGlucy9BcnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9idWlsdGlucy9EYXRlUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA2NjMwNTM3MjAyNGUxZGQ5M2E0YWM3
MmQwMjkwNmEzMjAzMDU0NjYyLi4yODU0ZDVlNzk4NmRiMDkxYjJiOTg0Y2EwZTNmMGYyNDc5MGMy
YjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODks
NiArODksNyBAQCBKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2
YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2J1aWx0aW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2
YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3Jp
cHRDb3JlKS9idWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFT
Y3JpcHRDb3JlKS9idWlsdGlucy9EYXRlUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRD
b3JlKS9idWlsdGlucy9GdW5jdGlvblByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZmQ0MmI5Yzc1ZGU0ZGFkZTc4MjYxOTA3ODljMDc4MjY5M2NjMjg2Yi4uOWJh
MzY2ODg4ODlmOTk4NzExOWEwN2E5NjljZWQyNDFiZDQzN2MwOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEyNDMsNiArMTI0MywxMiBAQAogCQk1M0ZBMkFFMzFDRjM4MDM5MDAy
MjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkEyQUUy
MUNGMzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQuY3BwICovOyB9OwogCQk1M0ZEMDREMzFEN0FCMjc3MDAzMjg3RDMgLyogV0FTTUNh
bGxpbmdDb252ZW50aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBXQVNNQ2FsbGluZ0NvbnZlbnRp
b24uY3BwICovOyB9OwogCQk1M0ZEMDRENDFEN0FCMjkxMDAzMjg3RDMgLyogV0FTTUNhbGxpbmdD
b252ZW50aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0ZEMDREMjFEN0FCMTg3MDAzMjg3RDMgLyogV0FTTUNhbGxpbmdDb252ZW50aW9uLmggKi87
IH07CisJCTVCNzBDRkRFMURCNjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkQ4MURCNjlF
NUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCAqLzsgfTsKKwkJNUI3MENGREYxREI2OUU2
NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3lu
Y0Z1bmN0aW9uLmNwcCAqLzsgfTsKKwkJNUI3MENGRTAxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5j
RnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVCNzBDRkRBMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlLmggKi87IH07CisJCTVCNzBDRkUxMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVCNzBDRkRCMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNw
cCAqLzsgfTsKKwkJNUI3MENGRTIxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUI3MENGREMxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICov
OyB9OworCQk1QjcwQ0ZFMzFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVC
NzBDRkREMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICov
OyB9OwogCQk1RDVEOEFEMTBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBF
QkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5bGliICovOyB9OwogCQk1REJCMTUxQjEzMUQwQjMxMDA1
NkFEMzYgLyogdGVzdGFwaS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBp
LmpzICovOyB9OwogCQk1REJCMTUyNTEzMUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBD
b3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
MTIxMTBEMEE0ODc4ODcwMDQ4MDI1NSAvKiBtaW5pZG9tLmpzICovOyB9OwpAQCAtMzU0OCw2ICsz
NTU0LDEzIEBACiAJCTUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxv
YWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBv
aW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNGRDA0RDExRDdBQjE4NzAw
MzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXQVNNQ2FsbGluZ0NvbnZlbnRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1M0ZEMDREMjFEN0FCMTg3MDAzMjg3RDMgLyogV0FTTUNhbGxpbmdD
b252ZW50aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01DYWxsaW5n
Q29udmVudGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEODFEQjY5
RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQXN5bmNGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXN5bmNGdW5jdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkRBMURCNjlFNUMwMEVDMjNGOSAvKiBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3
MENGREIxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNG
OSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI4MjQz
MDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIg
LyogbGliZWRpdC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGliZWRpdC5keWxpYjsg
cGF0aCA9IC91c3IvbGliL2xpYmVkaXQuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7
IH07CiAJCTVEQUZENkNCMTQ2QjY4NjMwMEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gSlNDLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RERERjQ0
NjE0RkVFNzIyMDBCNEZCNEQgLyogTExJbnREZXNpcmVkT2Zmc2V0cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERlc2lyZWRPZmZzZXRzLmg7IHBhdGggPSBMTEludE9m
ZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwpAQCAtNTkxNSw2ICs1OTI4LDEwIEBACiAJCQkJRjY5MkE4NEQwMjU1NTk3RDAxRkY2
MEY3IC8qIEFycmF5UHJvdG90eXBlLmNwcCAqLywKIAkJCQlGNjkyQTg0RTAyNTU1OTdEMDFGRjYw
RjcgLyogQXJyYXlQcm90b3R5cGUuaCAqLywKIAkJCQkwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3QjIg
LyogQXJyYXlTdG9yYWdlLmggKi8sCisJCQkJNUI3MENGREQxREI2OUU1QzAwRUMyM0Y5IC8qIEFz
eW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJNUI3MENGREMxREI2OUU1QzAwRUMy
M0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAorCQkJCTVCNzBDRkRCMURCNjlF
NUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKKwkJCQk1QjcwQ0ZE
QTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJCTBG
MzhEMkEwMUQ0NDE5NjYwMDY4MDQ5OSAvKiBBdXhpbGlhcnlCYXJyaWVyLmggKi8sCiAJCQkJMEYz
OEQyQTExRDQ0MTk2NjAwNjgwNDk5IC8qIEF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmggKi8sCiAJ
CQkJNTI2NzhGOEMxQTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5jcHAgKi8s
CkBAIC02MTAwLDYgKzYxMTcsOCBAQAogCQkJCTBGMkI2NkJCMTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0FycmF5QnVmZmVyVmlldy5oICovLAogCQkJCTBGMkI2NkJDMTdCNkI1QUIwMEE3QUUzRiAvKiBK
U0FycmF5QnVmZmVyVmlld0lubGluZXMuaCAqLywKIAkJCQk1MzlGQjhCOTFDOTlEQTdDMDA5NDBG
QTEgLyogSlNBcnJheUlubGluZXMuaCAqLywKKwkJCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkg
LyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLywKKwkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkg
LyogSlNBc3luY0Z1bmN0aW9uLmggKi8sCiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8q
IEpTQm91bmRGdW5jdGlvbi5jcHAgKi8sCiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8q
IEpTQm91bmRGdW5jdGlvbi5oICovLAogCQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBK
U0NhbGxlZS5jcHAgKi8sCkBAIC03Mjg4LDYgKzczMDcsNyBAQAogCQkJCUE3RDgwMUEwMTg4MEQ2
NkUwMDI2QzM5QiAvKiBBcnJheVByb3RvdHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1ODFCNjVEOUEz
MDA5REIxRUYgLyogQXJyYXlDb25zdHJ1Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1OTFCNjVEOUEz
MDA5REIxRUYgLyogQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcyAqLywKKwkJCQk1QjgyNDMwNDFE
QjdBQTQ5MDBFQTYzODQgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyAqLywKIAkJCQlERTI2
RTkwNjFDQjVERDk2MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCAqLywK
IAkJCQlERTI2RTkwMjFDQjVERDA1MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9y
LmggKi8sCiAJCQkJQTdEODAxQTExODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxl
cy5jcHAgKi8sCkBAIC03NzIwLDYgKzc3NDAsNyBAQAogCQkJCURDM0QyQjBBMUQzNDMxNjIwMEJB
OTE4QyAvKiBIZWFwQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkMxOUFEQTQxMDAw
NkFDNzJBIC8qIERGR0Jsb2NrTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGRDE5QURB
NDEwMDA2QUM3MkEgLyogREZHQmxvY2tNYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1
QjcwQ0ZFMjFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGRTE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tTZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkYxNThEMTlCN0E1MzEwMDY5NUREMCAvKiBERkdCbG9j
a1NldElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzNDRDAwMTlBREE0MTAwMDZBQzcy
QSAvKiBERkdCbG9ja1dvcmtsaXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTgyODgsNiArODMwOSw3
IEBACiAJCQkJN0MxODRFMUIxN0JFREJEMzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0MxODRFMjMxN0JFRTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVj
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTZCNzMxRTFCREEwOEVGMDAzMzFCODQgLyogSlNQ
cm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZERTFEQjY5
RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAw
OENEQjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDMTg0RTFGMTdCRUUyMkUwMDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTk5NkI3MzFGMUJEQTA4RUYwMDMzMUI4NCAvKiBKU1Byb21pc2VQ
cm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTg0MjgsNiArODQ1MCw3IEBACiAJCQkJ
QkMxOEM0M0YwRTE2RjVDRDAwQjM0NDYwIC8qIE5vZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
OUU0NUEyODE4QTFCMjU5MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzQ0MTBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCNzBDRkUwMURCNjlFNjYwMEVDMjNGOSAvKiBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MjBFMTZGNUNE
MDBCMzQ0NjAgLyogTnVtYmVyQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQ0MzBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ0NDBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTkyOTMsNiArOTMxNiw3IEBACiAJCQkJQTU1NzE0QkYxQ0Q4MDRBNDAwMDRE
MkM2IC8qIENvbnNvbGVPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjUxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hwb2ludFNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZFQzg1MjcxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTVCNzBDRkUzMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjkxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzUGhhc2VTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUyQjFCREFD
REFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MjJB
NjIxQzE1OEU2QTAwRTJFQjk4IC8qIEIzQ29uc3RGbG9hdFZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtOTcwNiw2ICs5NzMwLDcgQEAKIAkJCQkwRjU1MTNBODFENUE2OENEMDBDMzJCRDggLyog
RnJlZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU5OUIyNEExQzI0QzNENzAwQzgyMTU5
IC8qIEpJVE5lZ0dlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkNDODVDNDBFRTdB
ODk0MDAyODg2ODIgLyogSklUUHJvcGVydHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NUI3MENGRTExREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4RTQxMTJFNzJFRjAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCNDE1ODQxRDc4RkI0QzAwREY4
RDA5IC8qIEFycmF5Q29udmVudGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMjgx
NUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
OTg4Myw2ICs5OTA4LDcgQEAKIAkJCQkxNDhGMjFCNzEwN0VDNTQ3MDA0MkVDMkMgLyogTm9kZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREM2OUFBNjYxQ0Y3QTFGMjAwQzYyNzJGIC8qIE1hdGNo
UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAv
KiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENGREYxREI2
OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2
NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTY1NDZGNTIxMUEzMkIzMTMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTMyMkU1QTIxREE2NDQzOTAwNkU3NzA5IC8qIERGR0RPTUpJ
VFBhdGNocG9pbnRQYXJhbXMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ2ZjZjYzdjZTBmZmIzMjQxYWNiYTc5NmEyMWI4MGVkOGNkNGM5NDcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblBy
b3RvdHlwZS5qcwpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENh
aXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworZnVuY3Rpb24gYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0
b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgbGV0
IHN0YXRlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZTsKKyAgICBsZXQgdmFsdWUgPSBAdW5k
ZWZpbmVkOworCisgICAgaWYgKHN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQgfHwg
KHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsICYmIHJlc3VtZU1vZGUg
IT09IEBHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiQXN5bmMgZnVuY3Rpb24gaWxsZWdhbGx5IHJlc3VtZWQiKTsKKworICAgIHRyeSB7Cisg
ICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmc7CisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVy
YXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVN
b2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5A
Z2VuZXJhdG9yU3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgeworICAgICAgICAg
ICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsK
KyAgICAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZSh2YWx1ZSk7CisgICAgICAgIH0K
KyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRl
ID0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJl
amVjdChlcnJvcik7CisgICAgfQorCisgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKHZhbHVl
KS5AdGhlbigKKyAgICAgICAgZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIEBhc3luY0Z1bmN0aW9u
UmVzdW1lKGdlbmVyYXRvciwgdmFsdWUsIEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKTsgfSwK
KyAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgcmV0dXJuIEBhc3luY0Z1bmN0aW9uUmVzdW1lKGdl
bmVyYXRvciwgZXJyb3IsIEBHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cpOyB9KTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCA1
NzZkZTQwMDYwNGQxMDE0NzUxY2M2M2JlYWNlYzc3YTU1ZmQ0ZmY3Li44NGFlM2JkYTJmMDBiOTBk
OGYxZDIzMGY2MWJhZDA5MjhjODExMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xMDUsNiArMTA1LDggQEAKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jIiwgImxlbmd0aCIgOiA0IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwIiwgImxl
bmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXN5bmNfZnVuYyIs
ICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FzeW5jX2Z1
bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zZXRf
ZnVuY3Rpb25fbmFtZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfY2FsbCIsICJsZW5ndGgiIDogOSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfdGFp
bF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IGQ5NzNiY2ZiMTM3YzMyYzBjNmRlZWRmM2RlMGUx
ZGQ5NDE2NTRjNmYuLjE2MmRiMjgyY2Q1NTM5MDUwMTg1NTcxMGMyMWViYjQxN2ZhNTA1ZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBA
IC0xNjQsNiArMTY0LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2Nr
KiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX2dl
dF9lbnVtZXJhYmxlX2xlbmd0aDoKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKICAgICBjYXNl
IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19l
eHA6CiAgICAgY2FzZSBvcF90b19pbmRleF9zdHJpbmc6CiAgICAgY2FzZSBvcF9jcmVhdGVfbGV4
aWNhbF9lbnZpcm9ubWVudDoKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CkBAIC0xOTYsNiAr
MTk3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxv
Y2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgog
ICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CiAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6Cisg
ICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuYzoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6
CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2NyZWF0
ZV9yZXN0OgpAQCAtMzg4LDYgKzM5MCw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAg
Y2FzZSBvcF9uZXdfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CiAg
ICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5j
X2Z1bmM6CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6CiAgICAgY2FzZSBvcF9jYWxs
X3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90YWlsX2NhbGxfdmFyYXJnczoKICAgICBjYXNlIG9wX3Rh
aWxfY2FsbF9mb3J3YXJkX2FyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggYjE1MjExMmIzYTZhZWIwYjU4NjhmNmFhMjA5OWVlYzU1
NjdiMmFmOC4uMWEyOTk3NTJjMmYxM2MyNGUzZWI5ZmIxMTU2ZjQ4MTc2MmM4MmMzOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE0NjMsNiAr
MTQ2MywxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19hc3luY19mdW5jIik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAgICAg
IGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsraXQp
LT51Lm9wZXJhbmQ7CkBAIC0xNDc5LDYgKzE0ODcsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBC
eXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4cDog
eworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBp
bnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9j
YXRpb24sIGl0LCAibmV3X2FzeW5jX2Z1bmNfZXhwIik7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEp
LmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9zZXRfZnVuY3Rpb25fbmFtZTogewogICAgICAgICAgICAgaW50IGZ1bmNSZWcgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBuYW1lUmVnID0gKCsraXQpLT51Lm9wZXJh
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCmluZGV4IDI1YTM1N2JmNTYxMTY0NTBjMWIwZTI1NWM5NzcwYTIzYWQzZTE5ZWMuLmIz
ZWZmNjUzZjBlNWNlMGIzNDJiNGEyYTQzNjljMzgxN2IyNmYxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC0xMjIsNyAr
MTIyLDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZU1vZGU7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0K
KyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
U291cmNlUGFyc2VNb2RlU2V0KAorICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1
bmN0aW9uTW9kZSwKKyAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0
aW9uTW9kZSwKKyAgICAgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9u
Qm9keU1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSgpKTsKKyAgICB9CiAgICAgRGVyaXZlZENvbnRl
eHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERl
cml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgRXZhbENvbnRl
eHRUeXBlIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxD
b250ZXh0VHlwZT4obV9ldmFsQ29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGJhYzQwNTQxM2E2YjJmZGQ5OTcyNzJjMjhmMGM3NGE3
MjMwNmEzMzguLjE1ZGZiMTRjM2NjODhiOWViNjBiODI4MTQ3ZmFkZmYwMDk4Njg5NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0xMzIsNyArMTMyLDEzIEBAIHB1YmxpYzoKICAgICBib29s
IGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gY29uc3RydWN0b3JL
aW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOyB9CiAgICAgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCogcGFyZW50U2NvcGVURFpWYXJpYWJsZXMoKSBjb25zdCB7IHJldHVybiAmbV9wYXJl
bnRTY29wZVREWlZhcmlhYmxlczsgfQogICAgIAotICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZTsgfQorICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCisgICAgICAgICAgICBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3lu
Y0Fycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fy
cm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKCkpOworICAgIH0KIAogICAg
IEpTQzo6RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHtyZXR1
cm4gc3RhdGljX2Nhc3Q8SlNDOjpEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRU
eXBlKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGY3ZTEwMzE3YTIxNGM2NDgzOTBiOTRiMThi
Y2ZkNzM3M2Q1Y2UxN2YuLmM3NjViOTAzYzQ5ZmFkMjE2OWQxY2MzNDg3Mzc2ZGVhNjU0OTQwZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAgICAgCiAKLSAgICBpZiAobV9jb2RlQmxv
Y2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisg
ICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShtX2NvZGVCbG9j
ay0+cGFyc2VNb2RlKCkpKQogICAgICAgICBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKG1fY29k
ZUJsb2NrLmdldCgpLCBtX2luc3RydWN0aW9ucywgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
LmdldCgpLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CiAKICAgICBtX2NvZGVC
bG9jay0+c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6bWFrZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlv
blN0cmVhbT4obV9pbnN0cnVjdGlvbnMpKTsKQEAgLTI2OCwxNSArMjY4LDE1IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rp
b25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBt
X3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29s
IG5lZWRzQXJndW1lbnRzID0gKGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVC
bG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYm
ICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJB
cnJvd0Z1bmN0aW9uKCkpKTsKIAotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlk
ZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGlu
IGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KKyAgICBpZiAoaXNHZW5lcmF0b3JP
ckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpIHsKKyAgICAgICAgLy8gR2Vu
ZXJhdG9yIGFuZCBBc3luY0Z1bmN0aW9uIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJn
dW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3Ig
ZnVuY3Rpb24gc2NvcGUuCiAgICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CiAKLSAgICAg
ICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhlIHZhciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRz
IHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4K
KyAgICAgICAgLy8gR2VuZXJhdG9yIGFuZCBBc3luY0Z1bmN0aW9uIHVzZXMgdGhlIHZhciBzY29w
ZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUg
aXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KICAgICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRo
aW5ncyA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAg
ICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9k
ZSkgJiYgbmVlZHNBcmd1bWVudHMpIHsKICAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHBy
b3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHBy
b3ZpZGVzICJhcmd1bWVudHMiLgogICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRz
IG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0Lgog
ICAgICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMg
YXMgYXJndW1lbnRzIG9mIGEgd3JhcHBpbmcgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJl
bmNlIGl0IGZyb20gYSBnZW5lcmF0b3IuCkBAIC0zMjAsMTMgKzMyMCwxNCBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9u
Tm9kZSwgVW5saW5rZQogCiAgICAgZW1pdEVudGVyKCk7CiAKLSAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKGlzR2VuZXJhdG9y
T3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAgICAgICBtX2dlbmVy
YXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNj
b3BlKCk7CiAKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRl
bnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJUKHBh
cnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsKKyAgICAgICAg
QVNTRVJUKCFpc0FzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpOwogICAgICAg
ICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJs
b2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9v
bCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgp
LmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8
fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwpAQCAtNTA1LDcgKzUwNiw4IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBib29sIHNo
b3VsZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUgPSAhaGF2ZVBhcmFtZXRlck5hbWVkQXJndW1lbnRz
ICYmICFtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7CisgICAgICAgIGJvb2wgc2hvdWxk
Q3JlYXRlQXJndW1lbnNWYXJpYWJsZSA9ICFoYXZlUGFyYW1ldGVyTmFtZWRBcmd1bWVudHMKKyAg
ICAgICAgICAgICYmICFTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1
bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250
YWlucyhtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkpOwogICAgICAgICBzaG91bGRDcmVhdGVBcmd1
bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2NvcGUgPSBzaG91bGRDcmVhdGVBcmd1bWVuc1Zhcmlh
YmxlICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3Q7CiAgICAgICAgIC8vIERvIG5vdCBjcmVhdGUg
YXJndW1lbnRzIHZhcmlhYmxlIGluIGNhc2Ugb2YgQXJyb3cgZnVuY3Rpb24uIFZhbHVlIHdpbGwg
YmUgbG9hZGVkIGZyb20gcGFyZW50IHNjb3BlCiAgICAgICAgIGlmIChzaG91bGRDcmVhdGVBcmd1
bWVuc1ZhcmlhYmxlICYmICFzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVy
U2NvcGUpIHsKQEAgLTU0OSw2ICs1NTEsMzEgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJy
b3dGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9k
ZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU6IHsKKyAgICAg
ICAgQVNTRVJUKCFpc0NvbnN0cnVjdG9yKCkpOworICAgICAgICBBU1NFUlQoY29uc3RydWN0b3JL
aW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKTsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdp
c3RlciA9IGFkZFZhcigpOworCisgICAgICAgIGlmIChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VN
b2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICBpZiAoZnVuY3Rpb25O
b2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSkgeworICAgICAgICAgICAg
ICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CisgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF90b190aGlzKTsKKyAg
ICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIp
KTsKKyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7Cisg
ICAgICAgICAgICBlbWl0Q3JlYXRlVGhpcyhtX2dlbmVyYXRvclJlZ2lzdGVyKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBlbWl0TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxs
ZWVSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZTogewogICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQg
Y29ycmVjdGx5IGJlZm9yZSBoZXJlLgogICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lz
dGVyLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTYwOCw3ICs2MzUsNyBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwg
VW5saW5rZQogCiAgICAgLy8gV2UgbmVlZCBsb2FkIHxzdXBlcnwgJiB8dGhpc3wgZm9yIGFycm93
IGZ1bmN0aW9uIGJlZm9yZSBpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVw
RnVuY3Rpb25TY29wZVN0YWNrCiAgICAgLy8gaWYgd2UgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBl
eHByZXNzaW9uLiBCZWNhdXNlIHxzdXBlcnwgJiB8dGhpc3wgdmFsdWVzIGNhbiBiZSB1c2VkIHRo
ZXJlCi0gICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgPT0gcGFyc2VN
b2RlICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAgICBpZiAoKFNvdXJjZVBhcnNlTW9k
ZVNldChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSkgJiYgIWlzU2ltcGxl
UGFyYW1ldGVyTGlzdCkgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJv
d0Z1bmN0aW9uQm9keU1vZGUpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMo
KSB8fCBmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkpCiAgICAgICAgICAgICBlbWl0
TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogCkBAIC02Mjcs
MTIgKzY1NCw0NiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIC8vIEFsbCAiYWRkVmFy
KCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZh
bHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZAogICAgIC8vIGJlY2F1
c2UgYSBmdW5jdGlvbidzIGRlZmF1bHQgcGFyYW1ldGVyIEV4cHJlc3Npb25Ob2RlcyB3aWxsIHVz
ZSB0ZW1wb3JhcnkgcmVnaXN0ZXJzLgogICAgIHB1c2hURFpWYXJpYWJsZXMoKnBhcmVudFNjb3Bl
VERaVmFyaWFibGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6ZSwgVERaUmVx
dWlyZW1lbnQ6OlVuZGVyVERaKTsKKworICAgIFRyeURhdGEqIHRyeUZvcm1hbFBhcmFtZXRlcnNE
YXRhID0gbnVsbHB0cjsKKyAgICBpZiAoaXNBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShw
YXJzZU1vZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAgICAgICAgUmVmUHRyPExh
YmVsPiB0cnlGb3JtYWxQYXJhbWV0ZXJzU3RhcnQgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQo
KSk7CisgICAgICAgIHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhID0gcHVzaFRyeSh0cnlGb3JtYWxQ
YXJhbWV0ZXJzU3RhcnQuZ2V0KCkpOworICAgIH0KKwogICAgIGluaXRpYWxpemVEZWZhdWx0UGFy
YW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2socGFyYW1ldGVycywgaXNTaW1w
bGVQYXJhbWV0ZXJMaXN0LCBmdW5jdGlvbk5vZGUsIGZ1bmN0aW9uU3ltYm9sVGFibGUsIHN5bWJv
bFRhYmxlQ29uc3RhbnRJbmRleCwgY2FwdHVyZXMsIHNob3VsZENyZWF0ZUFyZ3VtZW50c1Zhcmlh
YmxlSW5QYXJhbWV0ZXJTY29wZSk7Ci0gICAgCisKKyAgICBpZiAoaXNBc3luY0Z1bmN0aW9uV3Jh
cHBlclBhcnNlTW9kZShwYXJzZU1vZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAg
ICAgICAgUmVmUHRyPExhYmVsPiBkaWROb3RUaHJvdyA9IG5ld0xhYmVsKCk7CisgICAgICAgIGVt
aXRKdW1wKGRpZE5vdFRocm93LmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4
Y2VwdGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhy
b3duVmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBjYXRjaEhl
cmUgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7CisgICAgICAgIHBvcFRyeUFuZEVtaXRD
YXRjaCh0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSwgZXhjZXB0aW9uLmdldCgpLCB0aHJvd25WYWx1
ZS5nZXQoKSwgY2F0Y2hIZXJlLmdldCgpLCBIYW5kbGVyVHlwZTo6Q2F0Y2gpOworCisgICAgICAg
IC8vIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KHRocm93blZhbHVlKTsKKyAgICAgICAgVmFyaWFi
bGUgcHJvbWlzZVZhciA9IHZhcmlhYmxlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLlByb21pc2VQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZW1pdFJlc29sdmVTY29wZShuZXdUZW1wb3JhcnkoKSwgcHJvbWlzZVZhcik7CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9taXNlQ29uc3RydWN0b3IgPSBlbWl0R2V0RnJvbVNj
b3BlKG5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgcHJvbWlzZVZhciwgUmVzb2x2ZU1vZGU6
OlRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9taXNlUmVq
ZWN0ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHByb21pc2VDb25zdHJ1Y3Rvci5nZXQo
KSwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVqZWN0UHJpdmF0ZU5hbWUo
KSk7CisKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRyLCAxKTsKKwor
ICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBwcm9taXNlQ29uc3RydWN0b3Iu
Z2V0KCkpOworICAgICAgICBlbWl0TW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHRocm93
blZhbHVlLmdldCgpKTsKKworICAgICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdChmdW5jdGlvbk5v
ZGUtPmZpcnN0TGluZSgpLCBmdW5jdGlvbk5vZGUtPnN0YXJ0T2Zmc2V0KCksIGZ1bmN0aW9uTm9k
ZS0+bGluZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1
bHQgPSBlbWl0Q2FsbChuZXdUZW1wb3JhcnkoKSwgcHJvbWlzZVJlamVjdC5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCwgZGl2b3QsIGRpdm90LCBEZWJ1Z2dhYmxlQ2FsbDo6
Tm8pOworICAgICAgICBlbWl0UmV0dXJuKHJlc3VsdC5nZXQoKSk7CisKKyAgICAgICAgZW1pdExh
YmVsKGRpZE5vdFRocm93LmdldCgpKTsKKyAgICB9CisKICAgICAvLyBJZiB3ZSBkb24ndCBoYXZl
ICBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9uLCB0aGVuIGxvYWRpbmcgfHRoaXN8IGluc2lk
ZSBhbiBhcnJvdyBmdW5jdGlvbiBtdXN0IGJlIGRvbmUKICAgICAvLyBhZnRlciBpbml0aWFsaXpl
RGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkgYmVjYXVz
ZSB0aGF0IGZ1bmN0aW9uIHNldHMgdXAgdGhlCiAgICAgLy8gU3ltYm9sVGFibGUgc3RhY2sgYW5k
IGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCkgY29uc3Vs
dHMgdGhlIFN5bWJvbFRhYmxlIHN0YWNrCi0gICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGUgPT0gcGFyc2VNb2RlICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgeworICAg
IGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9k
ZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250YWlucyhwYXJz
ZU1vZGUpICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgewogICAgICAgICBpZiAoZnVuY3Rpb25O
b2RlLT51c2VzVGhpcygpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJvcGVydHkoKSkKICAg
ICAgICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50
KCk7CiAgICAgCkBAIC02NDIsNyArNzAzLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAg
ICAKICAgICAvLyBTZXQgdXAgdGhlIGxleGljYWwgZW52aXJvbm1lbnQgc2NvcGUgYXMgdGhlIGdl
bmVyYXRvciBmcmFtZS4gV2Ugc3RvcmUgdGhlIHNhdmVkIGFuZCByZXN1bWVkIGdlbmVyYXRvciBy
ZWdpc3RlcnMgaW50byB0aGlzIHNjb3BlIHdpdGggdGhlIHN5bWJvbCBrZXlzLgogICAgIC8vIFNp
bmNlIHRoZXkgYXJlIHN5bWJvbCBrZXllZCwgdGhlc2UgdmFyaWFibGVzIGNhbm5vdCBiZSByZWFj
aGVkIGZyb20gdGhlIHVzdWFsIGNvZGUuCi0gICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yQm9keU1vZGUgPT0gcGFyc2VNb2RlKSB7CisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1
bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKSB7CiAgICAgICAgIEFTU0VSVChtX2xleGlj
YWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlLnNldCgqbV92bSwgZnVuY3Rpb25TeW1ib2xUYWJsZSk7CiAgICAgICAgIG1fZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZUluZGV4ID0gc3ltYm9sVGFibGVDb25zdGFudEluZGV4OwpAQCAtMjk4
Niw2ICszMDQ3LDExIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvCiAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CiAgICAgICAgIG9wY29kZUlE
ID0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJy
b3dGdW5jdGlvbk1vZGU6CisgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2FzeW5jX2Z1bmNfZXhw
OworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0zMDA0LDcgKzMwNzAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeAogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lz
dGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Ci0gICAgQVNTRVJUKGZ1bmMt
Pm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGUgfHwgZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKTsKKyAgICBBU1NFUlQoU291cmNlUGFyc2VNb2RlU2V0
KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2Rl
KCkpKTsKICAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKGRzdCwgZnVuYy0+bWV0
YWRhdGEoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KQEAgLTMwMzgsNiArMzEwNCw4IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0
LCBGdW5jdGlvbk1ldGFkYXRhCiAgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRk
RnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOwogICAgIGlmIChmdW5jdGlvbi0+
cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25N
b2RlKQogICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxz
ZSBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5j
dGlvbk1vZGUpCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2FzeW5jX2Z1bmMpOwogICAgIGVs
c2UKICAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGRzdC0+aW5kZXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDM4N2NkZjgxNTAzODU0NDFhMzRlOTYz
ZDZiOGEyODBhZjAzMjQwMi4uYTQ2MDIzNTk3ZjFiMDg0YTU0ODhiYmM5MmU1NjdiM2IyNGM2OTI0
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcApAQCAtMzQyMSw2ICszNDIxLDY3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0
aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgorICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAg
IFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgp
OworICAgICAgICBBU1NFUlQoc2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7Cisg
ICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhw
clN0YXRlbWVudE5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9k
ZSogZXhwciA9IGV4cHJTdGF0ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlz
RnVuY0V4cHJOb2RlKCkpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGlj
X2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwcik7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IG5leHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShuZXh0LmdldCgpLCBmdW5jRXhwcik7CisKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zdXBl
ckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCB8fCBnZW5lcmF0b3IucGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogRG9uJ3QgYWx3YXlzIGxvYWQgaG9tZSBvYmplY3QgZm9yIGFzeW5jIGFy
cm93cworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9t
ZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOworICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmpl
Y3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIGp1c3QgY3JlYXRlIGFuIG9iamVjdCBh
bmQgc3RvcmUgZ2VuZXJhdG9yIHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBwcm9wZXJ0aWVzIGZvciBl
YXNlLgorICAgICAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdpbGwgaW50cm9k
dWNlIEpTR2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3IgYW5kIHVzZSBp
dHMgQysrIGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGllcy4KKyAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQorCisg
ICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVn
aXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JOZXh0UHJpdmF0ZU5hbWUoKSwgbmV4dC5nZXQoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVj
dCk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5l
cmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIFBy
b3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxT
dGF0ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIo
KSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0
ZVByaXZhdGVOYW1lKCksIGluaXRpYWxTdGF0ZSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7
CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0
b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpz
TnVsbCgpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICAgICAgQVNTRVJUKHN0
YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCks
IGxpbmVTdGFydE9mZnNldCgpKTsKKworICAgICAgICAvLyBsb2FkIEBhc3luY0Z1bmN0aW9uUmVz
dW1lLCBhbmQgY2FsbC4KKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN0YXJ0QXN5bmNGdW5j
dGlvbiA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgYXV0byB2YXIgPSBnZW5l
cmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5h
c3luY0Z1bmN0aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSk7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0
b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChzY29wZS5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRS
ZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdl
dEZyb21TY29wZShzdGFydEFzeW5jRnVuY3Rpb24uZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIFRo
cm93SWZOb3RGb3VuZCk7CisKKyAgICAgICAgLy8gcmV0dXJuIEBhc3luY0Z1bmN0aW9uUmVzdW1l
LkBjYWxsKHRoaXMsIEBnZW5lcmF0b3IsIEB1bmRlZmluZWQsIEdlbmVyYXRvclJlc3VtZU1vZGU6
Ok5vcm1hbE1vZGUpCisgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxw
dHIsIDMpOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50ID0gMDsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291
bnQrKyksIGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc1VuZGVm
aW5lZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rl
cihhcmd1bWVudENvdW50KyspLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOworICAgICAg
ICAvLyBKU1RleHRQb3NpdGlvbihpbnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQgX2xpbmVTdGFy
dE9mZnNldCkKKyAgICAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RMaW5lKCksIHN0YXJ0
T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmVzdWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGwocmVzdWx0LmdldCgpLCBzdGFydEFzeW5jRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgYXJncywgZGl2b3QsIGRpdm90LCBkaXZvdCwgRGVidWdnYWJsZUNhbGw6Ok5v
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocmVzdWx0LmdldCgpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5j
dGlvbkJvZHlNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9k
eU1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAg
ICAgICAgIFJlZlB0cjxMYWJlbD4gZ2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA1NDJhNDcx
M2Y1MmQ1YTlmYTljNjNlNTZlMDE2ZTIyMzA1YThhZGY2Li40OWIxYTg2ZWQxNWFmNDFhZmFhOWU3
ZDEzYjg4YTVjNDQ3Nzg5YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yOTks
NiArMjk5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhwKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVy
YXRvcl9mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkK
KyAgICAgICAgREVGSU5FX09QKG9wX25ld19hc3luY19mdW5jKQorICAgICAgICBERUZJTkVfT1Ao
b3BfbmV3X2FzeW5jX2Z1bmNfZXhwKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X29iamVjdCkK
ICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdleHApCiAgICAgICAgIERFRklORV9PUChvcF9u
b3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAwNWRlMjhjZTFlZDY3MGI1MWZlYjhmNTNj
MzlhNGZmNTQ0OTI4ZTRhLi42ZDIwMjQ5Mzg3YjI5MWFiZWJkZmE5ZmJiNzQ3ZGE4MjcwNWY2ZmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU0NCw2ICs1NDQsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZnVuYyhJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9uZXdfb2JqZWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9uZXdfcmVnZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9u
b3QoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CmluZGV4IGI5MDFiYjQ2MzEwNjAwMTIwZTExZjg0ZTFlY2E5Y2I2MjY3NDliOGQuLjlmOTlhYmE5
Y2Y5OWVjZDI5YTAyOWQ4MTQ0MmJhOGUyZmVlZjQwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtOTcxLDkgKzk3MSwxMSBAQCB2b2lkIEpJVDo6ZW1pdE5l
d0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1
Y3Rpb24tPnUub3Bjb2RlKTsKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmMpCiAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNF
eGVjKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5l
cmF0b3JfZnVuYyk7CisgICAgZWxzZSBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9m
dW5jKQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9u
LCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChvcGNv
ZGVJRCA9PSBvcF9uZXdfYXN5bmNfZnVuYyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3QXN5bmNGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOwogICAgIH0KIH0KIApA
QCAtOTg3LDYgKzk4OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TmV3RnVuY0NvbW1vbihj
dXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVu
YyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jQ29t
bW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJD
b21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKdW1wIG5vdFVu
ZGVmaW5lZFNjb3BlOwpAQCAtMTAwOCw5ICsxMDE1LDExIEBAIHZvaWQgSklUOjplbWl0TmV3RnVu
Y0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGlmIChv
cGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHApOworICAgIGVs
c2UgaWYgKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHApCiAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1
bmN0aW9uKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19h
c3luY19mdW5jX2V4cCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXN5bmNG
dW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOwogICAgIH0KIAogICAgIGRvbmUubGluayh0
aGlzKTsKQEAgLTEwMjYsNiArMTAzNSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE5l
d0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKK3ZvaWQgSklUOjplbWl0
X29wX25ld19hc3luY19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
eworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXkoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIHsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDhmOGQ0YWQz
NDUzZmQ0NmIwMzA0MzJiMzE5YzA2M2IwMzI5YzM5NTQuLmViZDc3Y2QwMzg2OGJkYzFmYjhhYWJh
ZTBmYmY5M2QwZTc2MWRhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKQEAgLTExNzAsNiArMTE3MSwxNiBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvYwogICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0dl
bmVyYXRvckZ1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsK
IH0KIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVj
dXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5j
RnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIGZhbHNlKTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2Nv
cGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3Bl
cmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNBc3luY0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blNldEZ1bmN0aW9uTmFtZShFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogZnVuY0NlbGwsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWROYW1lKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCBhZGZlZjc4YzZmMDBj
NTAzZDA2ZmJmODY3NjU2ODdlN2RjMTQzYzI0Li5kYjViYTg5NjVhN2E1MDFiYTM1MjdhYTY1NDg4
NWU2Y2YzZGQ5NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aApAQCAtMzc1LDYgKzM3NSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVh
bGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lO
VEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0
b3JGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlv
bldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29w
ZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikg
V1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdB
c3luY0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3Rh
dGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZShFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNW
YWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09i
amVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4cChFeGVjU3RhdGUqLCB2b2lkKikgV1RG
X0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5jcHAKaW5kZXggODc1ODI1MWZhNGExZDQ5ZjkxMDBiZWJlYzA4ODY1YmQ0MTJkN2RmNS4uZjU4
ZjRmOTY2ZWE3NzQzYmZjNGVjODA3YzExZWYzYWI0ZGQ0MjliYiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpJ
VFdvcmtsaXN0LmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCkBAIC0xMTQ5LDYgKzExNTAsMTcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKICAgICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0
b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9w
ZXJhbmQpLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3
X2FzeW5jX2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5j
aGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworI2lmIExMSU5UX1NM
T1dfUEFUSF9UUkFDSU5HCisgICAgZGF0YUxvZ0YoIkNyZWF0aW5nIGFzeW5jIGZ1bmN0aW9uIVxu
Iik7CisjZW5kaWYKKyAgICBMTElOVF9SRVRVUk4oSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7Cit9CisK
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJ
TlRfQkVHSU4oKTsKQEAgLTExNzEsNiArMTE4MywxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICBMTElOVF9SRVRVUk4oSlNHZW5l
cmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOwogfQogCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmNfZXhwKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5v
cGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworICAgIAor
ICAgIExMSU5UX1JFVFVSTihKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NldF9mdW5jdGlv
bl9uYW1lKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDk4NGU5Y2M0MDMwMzI3OWFhNzAyZGY4ZmViNzg4
YzNiOGI5NjA1MGUuLmQ3NjEzOGMxMjQ0ZmY3YWFmNDgzZDA4MDNhZDViYjgxMTdlYTc5YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC0xMDMs
NiArMTAzLDggQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVu
Yyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7
CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVu
Yyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3Jf
ZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5
bmNfZnVuYyk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hc3lu
Y19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NldF9m
dW5jdGlvbl9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2Fs
bCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KaW5kZXggNTYwZGYzZWNhYjgyZGE4MmIyN2Y0NDM2MjRkMGZkZThlNTAxY2U5ZS4uNjQ0NWE0
N2NlZGE5YTVjZjc1OWExNmUxNzJjM2JkODQ2YWI5ZGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTMyMSw2ICsx
MzIxLDEyIEBAIF9sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CiAgICAgZGlzcGF0Y2goNCkK
IAogCitfbGxpbnRfb3BfbmV3X2FzeW5jX2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hc3luY19mdW5jKQorICAgIGRpc3Bh
dGNoKDQpCisKKwogX2xsaW50X29wX25ld19hcnJheToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAg
ICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2FycmF5KQpAQCAtMTU5
OSw2ICsxNjA1LDEyIEBAIF9sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNh
bGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHAp
CiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25ld19hc3luY19mdW5jX2V4cDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Fz
eW5jX2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDQpCisKKwogX2xsaW50X29wX3NldF9mdW5jdGlv
bl9uYW1lOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9zZXRfZnVuY3Rpb25fbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAppbmRleCA0OTA4ODQxNTExZTJmNDAxNzczYjIwZmNlNjhmNTgzOTc2ZjZk
MGExLi4yYjUyZTMyZDgxMzNlNjcwZmVkMjU4NzE4NDQ1NzdhMDFhZTRjODM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgU3RyaW5n
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5h
bWUsIFNvdXJjZVBhcnNlTW8KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
ID0gcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1v
ZGUgJiYgIW1hdGNoKE9QRU5CUkFDRSk7CiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVu
Y3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rp
b25JbmZvOwotICAgICAgICBpZiAoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSkgfHwgaXNBc3luY0Z1bmN0aW9u
Qm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKQorICAgICAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5j
RnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpCiAgICAgICAgICAgICBtX3BhcmFtZXRl
cnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0aW9uSW5mby5wYXJh
bWV0ZXJDb3VudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IHBh
cnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsK
QEAgLTU2OCwxMSArNTY4LDE4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzeW5jRnVuCiAgICAgewogICAg
ICAgICBBdXRvUG9wU2NvcGVSZWYgYXN5bmNGdW5jdGlvbkJvZHlTY29wZSh0aGlzLCBwdXNoU2Nv
cGUoKSk7CiAgICAgICAgIGFzeW5jRnVuY3Rpb25Cb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9k
ZShpbm5lclBhcnNlTW9kZSk7Ci0gICAgICAgIFN5bnRheENoZWNrZXIgYXN5bmNGdW5jdGlvbkNv
bnRleHQoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKLSAgICAgICAgaWYg
KGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQotICAgICAgICAgICAgZmFpbElmRmFsc2Uo
cGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhhc3lu
Y0Z1bmN0aW9uQ29udGV4dCksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgYXJyb3cg
ZnVuY3Rpb24iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VT
b3VyY2VFbGVtZW50cyhhc3luY0Z1bmN0aW9uQ29udGV4dCwgbW9kZSksICJDYW5ub3QgcGFyc2Ug
dGhlIGJvZHkgb2YgYXN5bmMgZnVuY3Rpb24iKTsKKyAgICAgICAgU3ludGF4Q2hlY2tlciBzeW50
YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAg
IGlmIChpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikgeworICAgICAgICAgICAgaWYgKG1f
ZGVidWdnZXJQYXJzZURhdGEpCisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VBcnJv
d0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhjb250ZXh0KSwgIkNh
bm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBhcnJvdyBmdW5jdGlvbiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlQXJyb3dGdW5jdGlvblNp
bmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciksICJDYW5ub3Qg
cGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgYXJyb3cgZnVuY3Rpb24iKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGlmIChtX2RlYnVnZ2VyUGFyc2VEYXRhKQorICAgICAgICAgICAgICAg
IGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgbW9kZSksICJDYW5ub3Qg
cGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNr
ZXIsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGFzeW5jIGZ1bmN0aW9uIik7Cisg
ICAgICAgIH0KICAgICAgICAgcG9wU2NvcGUoYXN5bmNGdW5jdGlvbkJvZHlTY29wZSwgVHJlZUJ1
aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAgICAgfQogICAgIGluZm8uYm9keSA9IGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9u
KCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVu
Y3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBpbmZvLmZ1
bmN0aW9uTGVuZ3RoLCBpbm5lclBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOwpAQCAtMjM0MSw3ICsyMzQ4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBi
b29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAg
ICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN5bnRheENoZWNrZXIsIHN0YXJ0
TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmlu
ZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBmdW5j
dGlvbkluZm8uZnVuY3Rpb25MZW5ndGgsIG1vZGUpOwogICAgIH07CiAKLSAgICBpZiAobW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgfHwgaXNBc3lu
Y0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShtb2RlKSkgeworICAgIGlmIChpc0dlbmVyYXRvck9y
QXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUobW9kZSkpIHsKICAgICAgICAgQXV0b1BvcFNj
b3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CiAgICAgICAgIFNv
dXJjZVBhcnNlTW9kZSBpbm5lclBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGU7CiAgICAgICAgIGlmIChpc0FzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKG1v
ZGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA4YzQ0NzRiMDk5
MzM3MmU3NDI0NjAxZGI5YWEwNjQ0NWRmOTM3ZWQ4Li4zYTE2Zjc2YWFkMDUyNDdjZDYxNjFiYmRh
OGFmMzFkZWY4NjQyNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTI0NSw3ICsyNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlOgotICAgICAgICAgICAg
c2V0SXNBc3luY0Fycm93RnVuY3Rpb25Cb2R5KCk7CisgICAgICAgICAgICBzZXRJc0FzeW5jRnVu
Y3Rpb25Cb2R5KCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlck1vZGVzLmgKaW5kZXggYTBkNzQwNDk0MTVlNGI4NDczNTYyZTM2ZTYyMjBkMzBjZTUx
YmE2YS4uN2FkY2RhZjVkZGNjZDM1ZmM0NmNjMDA1ZGNmMTg3OTBiOWUzOTE4NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMTQ4LDYgKzE0OCwyMyBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNZXRob2RQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSkKICAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGUpLmNvbnRh
aW5zKHBhcnNlTW9kZSk7CiB9CiAKK0FMV0FZU19JTkxJTkUgYm9vbCBpc0dlbmVyYXRvck9yQXN5
bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKK3sKKyAg
ICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckJvZHlNb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25C
b2R5TW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5
TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKK30KKworQUxXQVlTX0lOTElORSBib29sIGlzR2Vu
ZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFy
c2VNb2RlKQoreworICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCisgICAgICAgIFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSwKKyAgICAgICAgU291cmNl
UGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpB
c3luY0Fycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0
aG9kTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKK30KKwogQUxXQVlTX0lOTElORSBib29sIGlz
TW9kdWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpIAogeyAKICAgICByZXR1
cm4gU291cmNlUGFyc2VNb2RlU2V0KCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUw
ZDE1MmVjMjdmODlkYWM5YjQ1M2U4ODA5YjY1MjQ4NWNhNWMxNTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQ
b3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NF
UlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOwor
Citjb25zdCBDbGFzc0luZm8gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJB
c3luY0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpIH07CisKK0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
cjo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgQXN5
bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUqIHByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
IkFzeW5jRnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5KTsKKworICAgIC8vIE51bWJlciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVj
dG9yCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsK
K30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJ
bnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIEZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlOjpBc3luYykpOworfQorCitDYWxsVHlwZSBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6Omdl
dENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5u
YXRpdmUuZnVuY3Rpb24gPSBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVy
biBDYWxsVHlwZTo6SG9zdDsKK30KKworQ29uc3RydWN0VHlwZSBBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0
RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEFz
eW5jRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzNWEy
YzFlNGY5MTVjYWMwYjRiMTc3M2U2ZDA1ODllMjc0NzQ3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaApA
QCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVy
IDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlOworCitjbGFzcyBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0
aW9uIEJhc2U7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXN5bmNG
dW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3RvdHlwZSkKKyAgICB7CisgICAgICAg
IEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I+KHZtLmhlYXApKSBBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5p
c2hDcmVhdGlvbih2bSwgYXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAgIHJldHVybiBj
b25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKFZN
JiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRh
KEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERh
dGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90
eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mYjFmMGUxMDZlZTY3MTM2ZTkyNzAxZDY4YzM5ZDk1YjJmYzQ4
NjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgi
CisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCdWlsdGluTmFt
ZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisjaW5jbHVkZSAiTGV4ZXIuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlOjpzX2luZm8gPSB7ICJBc3luY0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShBc3luY0Z1bmN0aW9uUHJvdG90eXBlKSB9OworCitBc3luY0Z1
bmN0aW9uUHJvdG90eXBlOjpBc3luY0Z1bmN0aW9uUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkK
K3sKK30KKwordm9pZCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcoJnZtLCAiQXN5bmNGdW5jdGlvbiIpLCBE
b250RW51bSB8IFJlYWRPbmx5KTsKKyAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRo
aXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjAx
ZTZiOGZkNTg5OGEyMjFlMDYyYTc4ZjNlYTYwZGVhNzlhODIyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCkBA
IC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIg
PGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBc3luY0Z1bmN0aW9uUHJv
dG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGlj
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIHsKKyAgICAgICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNGdW5jdGlvblByb3RvdHlwZT4odm0uaGVh
cCkpIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3Rv
dHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAg
IH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3ByaXZhdGU6CisgICAgQXN5bmNG
dW5jdGlvblByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCmluZGV4IGQyZjMzNTJkNjA2OGIxMTlmZTA0OTMxMGM5Mzg4NjdmMjc5OGI1
MTIuLjMyNGJkZGMzZTViM2E2MzQxOGNmZDAyODEzZDI0NGM4Yjc2MmZjYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
CkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5j
bHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC05MywxOCArOTQsMzIgQEAgSlNPYmpl
Y3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCisgICAgY29uc3QgY2hhciogcHJlZml4ID0gbnVsbHB0cjsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IG51bGxwdHI7CisgICAgc3dpdGNoIChmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUp
IHsKKyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6RnVuY3Rpb246CisgICAgICAg
IHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAg
cHJlZml4ID0gIntmdW5jdGlvbiAiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yOgorICAgICAgICBzdHJ1Y3R1cmUgPSBnbG9iYWxP
YmplY3QtPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIHByZWZpeCA9ICJ7
ZnVuY3Rpb24gKiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlOjpBc3luYzoKKyAgICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hc3luY0Z1
bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIHByZWZpeCA9ICJ7YXN5bmMgZnVuY3Rpb24gIjsK
KyAgICB9CisKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMg
aW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUwLgogICAgIFN0cmluZyBwcm9ncmFtOwog
ICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKLSAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntm
dW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkg
e1xuXG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZyhwcmVmaXgsIGZ1bmN0aW9u
TmFtZS5zdHJpbmcoKSwgIigpIHtcblxufX0iKTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9
PSAxKQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciA/
ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1h
a2VTdHJpbmcocHJlZml4LCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKICAgICBlbHNlIHsKICAg
ICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVy
YWwoIntmdW5jdGlvbiAiKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9
PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikKLSAgICAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKCcqJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHByZWZpeCk7CiAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSk7CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKCcoJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmco
ZXhlYyktPnZpZXcoZXhlYykuZ2V0KCkpOwpAQCAtMTI2LDEyICsxNDEsMTcgQEAgSlNPYmplY3Qq
IGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAgICAgfQogCi0gICAg
U3RydWN0dXJlKiBzdWJjbGFzc1N0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1
YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG5ld1RhcmdldCwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
ID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yID8gZ2xvYmFsT2JqZWN0LT5n
ZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDogZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVj
dHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3RydWN0dXJlID0gSW50ZXJuYWxGdW5j
dGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbmV3VGFyZ2V0LCBzdHJ1Y3R1cmUp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAgaWYgKGZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVy
YXRvcikKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkgeworICAgIGNhc2Ug
RnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbjoKKyAgICAgICAgcmV0dXJuIEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwg
c3ViY2xhc3NTdHJ1Y3R1cmUpOworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpH
ZW5lcmF0b3I6CiAgICAgICAgIHJldHVybiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0s
IGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJl
KTsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7CisgICAgY2FzZSBGdW5jdGlv
bkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jOgorICAgICAgICByZXR1cm4gSlNBc3luY0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIHN1YmNs
YXNzU3RydWN0dXJlKTsKKyAgICB9CiB9CiAKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBD
b25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oCmluZGV4IDMxYzMzZDZhZjRmZjEyYmMyNGMxZTJiNWJmNGU1NTU4ZDc2
NTY5MDYuLmRlZWU5YTU1ZDZmMmM2MWU5ZjcxNDQ4M2IzMWFiZDU3ZmIxY2FlNTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgK
QEAgLTU4LDYgKzU4LDcgQEAgcHJpdmF0ZToKIGVudW0gY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlIHsKICAgICBGdW5jdGlvbiwKICAgICBHZW5lcmF0b3IsCisgICAgQXN5bmMsCiB9Owog
CiBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBGdW5jdGlvbkNvbnN0
cnVjdGlvbk1vZGUgPSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uLCBKU1ZhbHVl
IG5ld1RhcmdldCA9IEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmE3NDM3MjNiZGM3ZmFlZWZm
NjI1MWUyZmYyYTJkZGM2NDI4ZTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcApAQCAtMCwwICsxLDc0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlv
bi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiUHJv
cGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBKU0FzeW5jRnVuY3Rpb246OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0FzeW5jRnVuY3Rp
b24pIH07CisKK0pTQXN5bmNGdW5jdGlvbjo6SlNBc3luY0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKQorewor
fQorCitKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlSW1wbChWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQoreworICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5bmNGdW5jdGlvbiA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNGdW5jdGlvbj4odm0uaGVhcCkpIEpTQXN5
bmNGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7CisgICAgQVNTRVJU
KGFzeW5jRnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgYXN5bmNG
dW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBhc3luY0Z1bmN0aW9uOwor
fQorCitKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBKU0Fz
eW5jRnVuY3Rpb24qIGFzeW5jRnVuY3Rpb24gPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBz
Y29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5hc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkpOwor
ICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBhc3lu
Y0Z1bmN0aW9uLCAiQWxsb2NhdGluZyBhbiBhc3luYyBmdW5jdGlvbiIpOworICAgIHJldHVybiBh
c3luY0Z1bmN0aW9uOworfQorCitKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6Y3Jl
YXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29w
ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1
bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7Cisg
ICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGFzeW5j
RnVuY3Rpb24sICJBbGxvY2F0aW5nIGFuIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIGFz
eW5jRnVuY3Rpb247Cit9CisKK0pTQXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9uOjpjcmVh
dGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICByZXR1cm4gY3Jl
YXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+YXN5
bmNGdW5jdGlvblN0cnVjdHVyZSgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kN2RhODdkYjZkMzg1YTc5
ZDU1NzZjMWI3MmExMzRjYTNlMjFiZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmgKQEAgLTAsMCArMSw2NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNBc3luY0Z1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rp
b24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVibGlj
OgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgY29uc3Qgc3RhdGljIHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBERUNMQVJF
X0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlKFZNJiwg
RnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRpYyBKU0FzeW5jRnVuY3Rp
b24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUq
KTsKKyAgICBzdGF0aWMgSlNBc3luY0Z1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFs
bG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOwor
CisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNpdHkp
CisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5lQ2Fw
YWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTQXN5bmNGdW5jdGlvbik7CisgICAgfQor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBB
U1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNBc3luY0Z1bmN0
aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworCisg
ICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYsIEZ1bmN0aW9uRXhlY3V0
YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGY0OGNiY2YwOTEzMmNhYTY3ZWM3MWY1NzUxNDkwMGM4ZWNlMDI4MGIuLjgzOWRmOGUxNTAw
MmNhYjY5MDI3ZWEwNGY0NmQwN2E4N2MxNjU4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNs
dWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQXJyYXlJdGVyYXRvclByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUu
aCIKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKQEAgLTYzLDYgKzY1LDcgQEAKICNpbmNsdWRl
ICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQXN5bmNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKQEAgLTU4NSw2ICs1
ODgsOCBAQCBtXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGluc3Rh
bmNlVHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aAogICAgIG1fdGhyb3dUeXBlRXJyb3JGdW5j
dGlvbi5zZXQodm0sIHRoaXMsIHRocm93VHlwZUVycm9yRnVuY3Rpb24pOwogCiAgICAgSlNDZWxs
KiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBG
dW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Q
cm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2Z1bmN0
aW9uQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCAoRnVuY3Rpb25Db25zdHJ1Y3RvciopZnVuY3Rp
b25Db25zdHJ1Y3Rvcik7CisKICAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVjdG9y
ID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Fy
cmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwogICAgIG1f
YXJyYXlDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3IpOwogICAgIApA
QCAtNjMwLDcgKzYzNSwxNyBAQCBtXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlLT5wdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YwogCiAgICAgbV9nZW5l
cmF0b3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKSwg
RG9udEVudW0gfCBSZWFkT25seSk7CiAgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS0+
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCksIERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAg
IAorCisgICAgbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgW10o
TGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkgeworICAgICAgICAgICAgQXN5
bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3RvdHlwZSA9IEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0aW9u
UHJvdG90eXBlLmdldCgpKSk7CisgICAgICAgICAgICBpbml0LnNldFByb3RvdHlwZShhc3luY0Z1
bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgICAgIGluaXQuc2V0U3RydWN0dXJlKEpTQXN5bmNG
dW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0LnByb3Rv
dHlwZSkpOworICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihQcm9wZXJ0eU5hbWUobnVs
bHB0ciksIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIEFzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBp
bml0Lmdsb2JhbC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yLmdldCgpKSwgYXN5bmNGdW5jdGlvblBy
b3RvdHlwZSkpOworCisgICAgICAgICAgICBpbml0Lmdsb2JhbC0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oaW5pdC52bSwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5h
c3luY0Z1bmN0aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRp
bkZ1bmN0aW9uKGluaXQudm0sIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGVBc3luY0Z1bmN0aW9uUmVz
dW1lQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5nbG9iYWwpLCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSk7CisgICAgICAgIH0pOworCiAgICAgbV9vYmplY3RQcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2FycmF5UHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDQwODQ2Y2UyOTdiNDdj
Mjg1ZWM0MDkxY2Q3MzQwMjk1YzA2ZGE1ZjAuLjlkMmEyOWRhMmY5ZjIxMGI3YjEzZDM1NmE1NGIy
NzE4NTUzN2IwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaApAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQXJy
YXlDb25zdHJ1Y3RvcjsKIGNsYXNzIEFycmF5UHJvdG90eXBlOworY2xhc3MgQXN5bmNGdW5jdGlv
blByb3RvdHlwZTsKIGNsYXNzIEJvb2xlYW5Qcm90b3R5cGU7CiBjbGFzcyBDb25zb2xlQ2xpZW50
OwogY2xhc3MgRGVidWdnZXI7CkBAIC02Myw2ICs2NCw3IEBAIGNsYXNzIEVycm9yQ29uc3RydWN0
b3I7CiBjbGFzcyBFcnJvclByb3RvdHlwZTsKIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiBjbGFzcyBF
dmFsRXhlY3V0YWJsZTsKK2NsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3I7CiBjbGFzcyBGdW5jdGlv
blByb3RvdHlwZTsKIGNsYXNzIEdlbmVyYXRvclByb3RvdHlwZTsKIGNsYXNzIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlOwpAQCAtMjMzLDYgKzIzNSw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fc3ludGF4RXJy
b3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4g
bV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fVVJJRXJyb3JDb25zdHJ1Y3RvcjsKKyAgICBXcml0
ZUJhcnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVjdG9yOwogICAg
IFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1Y3RvcjsKICAg
ICBXcml0ZUJhcnJpZXI8QXJyYXlDb25zdHJ1Y3Rvcj4gbV9hcnJheUNvbnN0cnVjdG9yOwogICAg
IFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29uc3RydWN0b3I7
CkBAIC0zMDYsNiArMzA5LDcgQEAgcHVibGljOgogICAgIFByb3BlcnR5T2Zmc2V0IG1fZnVuY3Rp
b25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJpdmF0ZU5hbWVT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBTdHJ1Y3R1cmU7
CisgICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKQEAgLTUy
Nyw2ICs1MzEsMTkgQEAgcHVibGljOgogICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBn
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KICAgICBHZW5lcmF0b3JQcm90b3R5cGUqIGdlbmVyYXRv
clByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpOyB9
CiAKKyAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUmIGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgfQor
ICAgIGNvbnN0IExhenlDbGFzc1N0cnVjdHVyZSYgbGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Y29uc3QgTGF6eUNsYXNz
U3RydWN0dXJlJj4oY29uc3RfY2FzdDxKU0dsb2JhbE9iamVjdCo+KHRoaXMpLT5sYXp5QXN5bmNG
dW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICB9CisgICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZSog
YXN5bmNGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
QXN5bmNGdW5jdGlvblByb3RvdHlwZSo+KGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkucHJv
dG90eXBlKHRoaXMpKTsgfQorICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rp
b25Qcm90b3R5cGVDb25jdXJyZW50bHkoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0
PEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqPihsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLnBy
b3RvdHlwZUNvbmN1cnJlbnRseSgpKTsgfQorICAgIFN0cnVjdHVyZSogYXN5bmNGdW5jdGlvblN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkuZ2V0
KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJlQ29uY3VycmVu
dGx5KCkgY29uc3QgeyByZXR1cm4gbGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5nZXRDb25j
dXJyZW50bHkoKTsgfQorCiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAg
IFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2Nv
cGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpY3RFdmFsQWN0aXZh
dGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1
Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMDhlZDNjMThjMWQ3YmFlNzZhYzBhOGFkNjM2M2ZiNDJjZDE2YTRmZS4u
MjAxNWEwYmViNjkxYWJhMmNhMGZjODQ1MjA2MjJmMjBhZmVmODMwNCAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjAgQEAK
KzIwMTYtMTAtMjEgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAg
ICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9hc3luYy1hd2Fp
dC1iYXNpYy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRC
ZUFzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93QXN5
bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgIChsZXQuQXN5
bmNGdW5jdGlvbi5hc3luYyk6CisgICAgICAgIChhc3luYy5hc3luY0Z1bmN0aW9uRm9yUHJvdG8p
OgorICAgICAgICAoT2JqZWN0LmdldFByb3RvdHlwZU9mLmFzeW5jKToKKyAgICAgICAgKE9iamVj
dC5nZXRQcm90b3R5cGVPZi5hc3luYy5tZXRob2QpOgorICAgICAgICAoYXN5bmMpOgorICAgICAg
ICAoYXN5bmMubWV0aG9kKToKKyAgICAgICAgKGFzeW5jLmFzeW5jTm9uQ29uc3RydWN0b3JEZWNs
KToKKyAgICAgICAgKHNob3VsZFRocm93Lm5ldy5hc3luYyk6CisgICAgICAgIChzaG91bGRUaHJv
dy5uZXcuYXN5bmMubm9uQ29uc3RydWN0b3IpOgorICAgICAgICAoYXN5bmMuYXN5bmNEZWNsKToK
KyAgICAgICAgKGFzeW5jLmYpOgorICAgICAgICAoTXlFcnJvcik6CisgICAgICAgIChhc3luYy5h
c3luY0RlY2xUaHJvd2VyKToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMuYXN5bmMpOgorICAg
ICAgICAocmVzb2x2ZUxhdGVyKToKKyAgICAgICAgKHJlamVjdExhdGVyKToKKyAgICAgICAgKGFz
eW5jLnJlc3VtZUFmdGVyTm9ybWFsKToKKyAgICAgICAgKE8uYXN5bmMucmVzdW1lQWZ0ZXJOb3Jt
YWwpOgorICAgICAgICAocmVzdW1lQWZ0ZXJOb3JtYWxBcnJvdy5hc3luYyk6CisgICAgICAgIChh
c3luYy5yZXN1bWVBZnRlclRocm93KToKKyAgICAgICAgKE8uYXN5bmMucmVzdW1lQWZ0ZXJUaHJv
dyk6CisgICAgICAgIChyZXN1bWVBZnRlclRocm93QXJyb3cuYXN5bmMpOgorICAgICAgICAoY2F0
Y2gpOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChTeW50YXhFcnJvci5D
YW5zdHJpbmdfYXBwZWFyZWRfaGVyZWF3YWl0LmNoZWNrTW9kdWxlU3ludGF4RXJyb3IuU3RyaW5n
LnJhdy5hd2FpdCk6CisgICAgICAgIChjaGVja01vZHVsZVN5bnRheEVycm9yLlN0cmluZy5yYXcu
YXdhaXQpOgorICAgICAgICAoY2hlY2tNb2R1bGVTeW50YXhFcnJvci5TdHJpbmcucmF3LmFzeW5j
LmF3YWl0KToKKyAgICAgICAgKFN5bnRheEVycm9yLkNhbm5vdC5kZWNsYXJlLm5hbWVkKToKKyAg
ICAgICAgKiBzdHJlc3MvYXN5bmMtYXdhaXQtbW96aWxsYS5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93
KToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMpOgorICAgICAgICAoYXNzZXJ0KToKKyAgICAg
ICAgKHNob3VsZFRocm93U3ludGF4RXJyb3IpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5j
LmVtcHR5KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5zaW1wbGVSZXR1cm4pOgorICAg
ICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZUF3YWl0KToKKyAgICAgICAgKG1velNlbWFu
dGljcy5hc3luYy5zaW1wbGVBd2FpdEFzeW5jKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3lu
Yy5yZXR1cm5PdGhlckFzeW5jKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5zaW1wbGVU
aHJvd2VyKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5kZWxlZ2F0ZWRUaHJvd2VyKToK
KyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy50cnlDYXRjaCk6CisgICAgICAgIChtb3pTZW1h
bnRpY3MuYXN5bmMudHJ5Q2F0Y2hUaHJvdyk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMu
d2VsbEZpbmFsbHkpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmZpbmFsbHlNYXlGYWls
KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5lbWJlZGRlZC5hc3luYy5pbm5lcik6Cisg
ICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZW1iZWRkZWQpOgorICAgICAgICAobW96U2VtYW50
aWNzLmFzeW5jLmZpYik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuaXNPZGQuYXN5bmMu
aXNFdmVuKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5pc09kZCk6CisgICAgICAgICht
b3pTZW1hbnRpY3MuaGFyZGNvcmVGaWIuYXN5bmMuZmliMik6CisgICAgICAgIChtb3pTZW1hbnRp
Y3MubmFtZWRBc3luY0V4cHIuYXN5bmMuc2ltcGxlKToKKyAgICAgICAgKG1velNlbWFudGljcy5h
c3luYy5leGVjdXRpb25PcmRlci5hc3luYy5maXJzdCk6CisgICAgICAgIChtb3pTZW1hbnRpY3Mu
YXN5bmMuZXhlY3V0aW9uT3JkZXIuYXN5bmMuc2Vjb25kKToKKyAgICAgICAgKG1velNlbWFudGlj
cy5hc3luYy5leGVjdXRpb25PcmRlci5hc3luYy50aGlyZCk6CisgICAgICAgIChtb3pTZW1hbnRp
Y3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLm1p
c2NlbGxhbmVvdXMpOgorICAgICAgICAobW96U2VtYW50aWNzLnRocm93ZXIpOgorICAgICAgICAo
bW96U2VtYW50aWNzLmFzeW5jLmRlZmF1bHRBcmdzKToKKyAgICAgICAgKG1velNlbWFudGljcy5z
aG91bGRUaHJvdyk6CisgICAgICAgIChtb3pTZW1hbnRpY3MpOgorICAgICAgICAobW96TWV0aG9k
cy5YKToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuYXN5bmMuZ2V0VmFsdWUpOgor
ICAgICAgICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5zZXRWYWx1ZSk6CisgICAgICAgIChtb3pN
ZXRob2RzLlgucHJvdG90eXBlLmFzeW5jLmluY3JlbWVudCk6CisgICAgICAgIChtb3pNZXRob2Rz
LlgucHJvdG90eXBlLmFzeW5jLmdldEJhc2VDbGFzc05hbWUpOgorICAgICAgICAobW96TWV0aG9k
cy5YLmFzeW5jLmdldFN0YXRpY1ZhbHVlKToKKyAgICAgICAgKG1vek1ldGhvZHMuWS5wcm90b3R5
cGUuYXN5bmMuZ2V0QmFzZUNsYXNzTmFtZSk6CisgICAgICAgIChtb3pNZXRob2RzLlkpOgorICAg
ICAgICAobW96RnVuY3Rpb25OYW1lSW5mZXJyZW5jZS5hc3luYy50ZXN0KToKKyAgICAgICAgKG1v
elN5bnRheEVycm9ycyk6CisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdv
cmQuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHNob3VsZFRocm93U3lu
dGF4RXJyb3IpOgorICAgICAgICAoQXN5bmNGdW5jdGlvbi5hc3luYyk6CisgICAgICAgICogc3Ry
ZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX2FyZ3VtZW50c19iaW5kaW5nLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAg
ICAgICAoc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChub0FyZ3VtZW50c0Fycm93Mi5hc3lu
Yyk6CisgICAgICAgICogc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX25ldy50
YXJnZXRfYmluZGluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChz
aG91bGRCZUFzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMpOgorICAgICAgICAoQzEp
OgorICAgICAgICAoQzIpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYy5hc3luYyk6CisgICAg
ICAgICogc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX3N1cGVyX2JpbmRpbmcu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6
CisgICAgICAgIChCYXNlQ2xhc3MucHJvdG90eXBlLmJhc2VDbGFzc1ZhbHVlKToKKyAgICAgICAg
KEJhc2VDbGFzcy5wcm90b3R5cGUuZ2V0IHByb3BlcnR5KToKKyAgICAgICAgKEJhc2VDbGFzcyk6
CisgICAgICAgIChDaGlsZENsYXNzLnByb3RvdHlwZS5hc3luY1N1cGVyUHJvcCk6CisgICAgICAg
IChDaGlsZENsYXNzLnByb3RvdHlwZS5hc3luY1N1cGVyUHJvcDIpOgorICAgICAgICAoQ2hpbGRD
bGFzcyk6CisgICAgICAgIChDaGlsZENsYXNzMik6CisgICAgICAgICogc3RyZXNzL2FzeW5jX2Fy
cm93X2Z1bmN0aW9uc19sZXhpY2FsX3RoaXNfYmluZGluZy5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKGQueSk6CisKIDIw
MTYtMTAtMjAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAg
ICAgW0pTQ10gRHJvcCBpc0Vudmlyb25tZW50UmVjb3JkIHR5cGUgaW5mbyBmbGFnIGFuZCB1c2Ug
SlNUeXBlIGluZm9ybWF0aW9uIGluc3RlYWQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Fz
eW5jLWF3YWl0LWJhc2ljLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWJkZmIwM2YwMGI3ODMwZGRiYjI4YTYxYmFhNGRmZTMzNzIxZjhmMgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzCkBAIC0w
LDAgKzEsMzAxIEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZV
TkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitm
dW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAobXNnID09
PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAgbXNnID0gIiBm
b3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1
biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAg
ICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAg
ICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJv
cjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAg
ICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7Cisg
ICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKworICAgIHRyeSB7Cisg
ICAgICAgIGFjdHVhbCA9IHJ1bigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaGFkRXJy
b3IgPSB0cnVlOworICAgICAgICBhY3R1YWwgPSBlOworICAgIH0KKworICAgIGlmICghaGFkRXJy
b3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0
aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBp
ZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAi
ICwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9p
ZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1
dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3dBc3luYyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7Cisg
ICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkg
eyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhh
ZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygp
OworCisgICAgaWYgKCFoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQg
bm90IHRocm93LiIpOworICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAi
ICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAg
IGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAn
IiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOwor
fQorCitmdW5jdGlvbiBzaG91bGRUaHJvd1N5bnRheEVycm9yKHN0ciwgbWVzc2FnZSkgeworICAg
IHRyeSB7CisgICAgICAgIGV2YWwoc3RyKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZCBgIiArIHN0ciArICJgIHRvIHRocm93IGEgU3ludGF4RXJyb3IsIGJ1dCBkaWQgbm90IHRo
cm93LiIpCisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZS5jb25zdHJ1Y3RvciAhPT0g
U3ludGF4RXJyb3IpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGAiICsg
c3RyICsgImAgdG8gdGhyb3cgYSBTeW50YXhFcnJvciwgYnV0IHRocmV3ICciICsgZSArICInIik7
CisgICAgICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgZS5tZXNzYWdlICE9PSBtZXNzYWdl
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBgIiArIHN0ciArICJgIHRv
IHRocm93IFN5bnRheEVycm9yOiAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgZSAr
ICInIik7CisgICAgfQorfQorCisvLyBEbyBub3QgaW5zdGFsbCBgQXN5bmNGdW5jdGlvbmAgY29u
c3RydWN0b3Igb24gZ2xvYmFsIG9iamVjdAorc2hvdWxkQmUodW5kZWZpbmVkLCB0aGlzLkFzeW5j
RnVuY3Rpb24pOworbGV0IEFzeW5jRnVuY3Rpb24gPSAoYXN5bmMgZnVuY3Rpb24oKSB7fSkuY29u
c3RydWN0b3I7CisKKy8vIExldCBmdW5jdGlvblByb3RvdHlwZSBiZSB0aGUgaW50cmluc2ljIG9i
amVjdCAlQXN5bmNGdW5jdGlvblByb3RvdHlwZSUuCithc3luYyBmdW5jdGlvbiBhc3luY0Z1bmN0
aW9uRm9yUHJvdG8oKSB7fQorc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9iamVj
dC5nZXRQcm90b3R5cGVPZihhc3luY0Z1bmN0aW9uRm9yUHJvdG8pKTsKK3Nob3VsZEJlKEFzeW5j
RnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmMgZnVuY3Rpb24o
KSB7fSkpOworc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9iamVjdC5nZXRQcm90
b3R5cGVPZihhc3luYyAoKSA9PiB7fSkpOworc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5
cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZih7IGFzeW5jIG1ldGhvZCgpIHt9IH0ubWV0aG9kKSk7
CisKKy8vIEZJWE1FOiBBc3luY0Z1bmN0aW9uIGNvbnN0cnVjdG9yIHNob3VsZCBidWlsZCBmdW5j
dGlvbnMgd2l0aCBjb3JyZWN0IHByb3RvdHlwZS4KKy8vIHNob3VsZEJlKEFzeW5jRnVuY3Rpb24u
cHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoQXN5bmNGdW5jdGlvbigpKSk7CisKKy8v
IEFzeW5jRnVuY3Rpb25DcmVhdGUgZG9lcyBub3QgcHJvZHVjZSBhbiBvYmplY3Qgd2l0aCBhIFBy
b3RvdHlwZQorc2hvdWxkQmUodW5kZWZpbmVkLCBhc3luY0Z1bmN0aW9uRm9yUHJvdG8ucHJvdG90
eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCBhc3luY0Z1bmN0aW9uRm9yUHJvdG8uaGFzT3duUHJvcGVy
dHkoInByb3RvdHlwZSIpKTsKK3Nob3VsZEJlKHVuZGVmaW5lZCwgKGFzeW5jIGZ1bmN0aW9uKCkg
e30pLnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgKGFzeW5jIGZ1bmN0aW9uKCkge30pLmhh
c093blByb3BlcnR5KCJwcm90b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQsIChhc3luYygp
ID0+IHt9KS5wcm90b3R5cGUpOworc2hvdWxkQmUoZmFsc2UsIChhc3luYygpID0+IHt9KS5oYXNP
d25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOworc2hvdWxkQmUodW5kZWZpbmVkLCAoeyBhc3luYyBt
ZXRob2QoKSB7fSB9KS5tZXRob2QucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCAoeyBhc3lu
YyBtZXRob2QoKSB7fSB9KS5tZXRob2QuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKK3No
b3VsZEJlKHVuZGVmaW5lZCwgQXN5bmNGdW5jdGlvbigpLnByb3RvdHlwZSk7CitzaG91bGRCZShm
YWxzZSwgQXN5bmNGdW5jdGlvbigpLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKSk7CisKKy8v
IEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlWyBAQHRvU3RyaW5nVGFnIF0KK3ZhciBkZXNjcmlwdG9y
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihBc3luY0Z1bmN0aW9uLnByb3RvdHlw
ZSwgU3ltYm9sLnRvU3RyaW5nVGFnKTsKK3Nob3VsZEJlKCJBc3luY0Z1bmN0aW9uIiwgZGVzY3Jp
cHRvci52YWx1ZSk7CitzaG91bGRCZShmYWxzZSwgZGVzY3JpcHRvci5lbnVtZXJhYmxlKTsKK3No
b3VsZEJlKGZhbHNlLCBkZXNjcmlwdG9yLndyaXRhYmxlKTsKK3Nob3VsZEJlKHRydWUsIGRlc2Ny
aXB0b3IuY29uZmlndXJhYmxlKTsKKworc2hvdWxkQmUoMSwgQXN5bmNGdW5jdGlvbi5sZW5ndGgp
OworCisvLyBMZXQgRiBiZSAhIEZ1bmN0aW9uQWxsb2NhdGUoZnVuY3Rpb25Qcm90b3R5cGUsIFN0
cmljdCwgIm5vbi1jb25zdHJ1Y3RvciIpCithc3luYyBmdW5jdGlvbiBhc3luY05vbkNvbnN0cnVj
dG9yRGVjbCgpIHt9CitzaG91bGRUaHJvdygoKSA9PiBuZXcgYXN5bmNOb25Db25zdHJ1Y3RvckRl
Y2woKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyAoYXN5bmMgZnVuY3Rpb24o
KSB7fSksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgKHsgYXN5bmMgbm9uQ29u
c3RydWN0b3IoKSB7fSB9KS5ub25Db25zdHJ1Y3RvcigpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhy
b3coKCkgPT4gbmV3ICgoKSA9PiAibm90IGEgY29uc3RydWN0b3IhIiksIFR5cGVFcnJvcik7Citz
aG91bGRUaHJvdygoKSA9PiBuZXcgKEFzeW5jRnVuY3Rpb24oKSksIFR5cGVFcnJvcik7CisKKy8v
IE5vcm1hbCBjb21wbGV0aW9uCithc3luYyBmdW5jdGlvbiBhc3luY0RlY2woKSB7IHJldHVybiAi
dGVzdCI7IH0KK3Nob3VsZEJlQXN5bmMoInRlc3QiLCBhc3luY0RlY2wpOworc2hvdWxkQmVBc3lu
YygidGVzdDIiLCBhc3luYyBmdW5jdGlvbigpIHsgcmV0dXJuICJ0ZXN0MiI7IH0pOworc2hvdWxk
QmVBc3luYygidGVzdDMiLCBhc3luYyAoKSA9PiAidGVzdDMiKTsKK3Nob3VsZEJlQXN5bmMoInRl
c3Q0IiwgKCkgPT4gKHsgYXN5bmMgZigpIHsgcmV0dXJuICJ0ZXN0NCI7IH0gfSkuZigpKTsKKwor
Y2xhc3MgTXlFcnJvciBleHRlbmRzIEVycm9yIHt9OworCisvLyBUaHJvdyBjb21wbGV0aW9uCith
c3luYyBmdW5jdGlvbiBhc3luY0RlY2xUaHJvd2VyKGUpIHsgdGhyb3cgbmV3IE15RXJyb3IoZSk7
IH0KK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gYXN5bmNEZWNsVGhyb3dlcigiYm9vbSEiKSwgTXlF
cnJvciwgImJvb20hIik7CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IChhc3luYyBmdW5jdGlvbihl
KSB7IHRocm93IG5ldyBNeUVycm9yKGUpOyB9KSgiYm9vbSEhISIpLCBNeUVycm9yLCAiYm9vbSEh
ISIpOworc2hvdWxkVGhyb3dBc3luYygoKSA9PiAoYXN5bmMgZSA9PiB7IHRocm93IG5ldyBNeUVy
cm9yKGUpIH0pKCJib29tISEiKSwgTXlFcnJvciwgImJvb20hISIpOworc2hvdWxkVGhyb3dBc3lu
YygoKSA9PiAoeyBhc3luYyB0aHJvd2VyKGUpIHsgdGhyb3cgbmV3IE15RXJyb3IoZSk7IH0gfSku
dGhyb3dlcigiYm9vbSEhISEiKSwgTXlFcnJvciwgImJvb20hISEhIik7CisKK2Z1bmN0aW9uIHJl
c29sdmVMYXRlcih2YWx1ZSkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTsgfQorZnVu
Y3Rpb24gcmVqZWN0TGF0ZXIoZXJyb3IpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsg
fQorCisvLyBSZXN1bWUgYWZ0ZXIgTm9ybWFsIGNvbXBsZXRpb24KK3ZhciBsb2cgPSBbXTsKK2Fz
eW5jIGZ1bmN0aW9uIHJlc3VtZUFmdGVyTm9ybWFsKHZhbHVlKSB7CisgICAgbG9nLnB1c2goInN0
YXJ0OiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAx
KTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCBy
ZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK30KKworc2hvdWxkQmVBc3luYyg0LCAoKSA9PiByZXN1
bWVBZnRlck5vcm1hbCgxKSk7CitzaG91bGRCZSgic3RhcnQ6MSByZXN1bWU6MiByZXN1bWU6MyIs
IGxvZy5qb2luKCIgIikpOworCit2YXIgTyA9IHsKKyAgICBhc3luYyByZXN1bWVBZnRlck5vcm1h
bCh2YWx1ZSkgeworICAgICAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICAgICAg
dmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICAgICAgbG9nLnB1c2go
InJlc3VtZToiICsgdmFsdWUpOworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2
YWx1ZSArIDEpOworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgICAg
IHJldHVybiB2YWx1ZSArIDE7CisgICAgfQorfTsKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg1
LCAoKSA9PiBPLnJlc3VtZUFmdGVyTm9ybWFsKDIpKTsKK3Nob3VsZEJlKCJzdGFydDoyIHJlc3Vt
ZTozIHJlc3VtZTo0IiwgbG9nLmpvaW4oIiAiKSk7CisKK3ZhciByZXN1bWVBZnRlck5vcm1hbEFy
cm93ID0gYXN5bmMgKHZhbHVlKSA9PiB7CisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7
CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVz
aCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFs
dWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgcmV0dXJuIHZh
bHVlICsgMTsKK307Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoNiwgKCkgPT4gcmVzdW1lQWZ0
ZXJOb3JtYWxBcnJvdygzKSk7CitzaG91bGRCZSgic3RhcnQ6MyByZXN1bWU6NCByZXN1bWU6NSIs
IGxvZy5qb2luKCIgIikpOworCit2YXIgcmVzdW1lQWZ0ZXJOb3JtYWxFdmFsID0gQXN5bmNGdW5j
dGlvbigidmFsdWUiLCBgCisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdmFs
dWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1l
OiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsK
KyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlICsgMTsK
K2ApOworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDcsICgpID0+IHJlc3VtZUFmdGVyTm9ybWFs
RXZhbCg0KSk7CitzaG91bGRCZSgic3RhcnQ6NCByZXN1bWU6NSByZXN1bWU6NiIsIGxvZy5qb2lu
KCIgIikpOworCisvLyBSZXN1bWUgYWZ0ZXIgVGhyb3cgY29tcGxldGlvbgorYXN5bmMgZnVuY3Rp
b24gcmVzdW1lQWZ0ZXJUaHJvdyh2YWx1ZSkgeworICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFs
dWUpOworICAgIHRyeSB7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93
MSIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7
CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRo
cm93MiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsg
ZSk7CisgICAgfQorICAgIHJldHVybiB2YWx1ZSArIDE7Cit9CisKK2xvZyA9IFtdOworc2hvdWxk
QmVBc3luYygyLCAoKSA9PiByZXN1bWVBZnRlclRocm93KDEpKTsKK3Nob3VsZEJlKCJzdGFydDox
IHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOworCit2YXIgTyA9
IHsKKyAgICBhc3luYyByZXN1bWVBZnRlclRocm93KHZhbHVlKSB7CisgICAgICAgIGxvZy5wdXNo
KCJzdGFydDoiICsgdmFsdWUpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFsdWUgPSBh
d2FpdCByZWplY3RMYXRlcigidGhyb3cxIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgICAgICB9CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzIiKTsKKyAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlICsgMTsKKyAgICB9Cit9Citsb2cgPSBbXTsK
K3Nob3VsZEJlQXN5bmMoMywgKCkgPT4gTy5yZXN1bWVBZnRlclRocm93KDIpKTsKK3Nob3VsZEJl
KCJzdGFydDoyIHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOwor
Cit2YXIgcmVzdW1lQWZ0ZXJUaHJvd0Fycm93ID0gYXN5bmMgKHZhbHVlKSA9PiB7CisgICAgbG9n
LnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2Fp
dCByZWplY3RMYXRlcigidGhyb3cxIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cu
cHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBh
d2FpdCByZWplY3RMYXRlcigidGhyb3cyIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBs
b2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK307
Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoNCwgKCkgPT4gcmVzdW1lQWZ0ZXJUaHJvd0Fycm93
KDMpKTsKK3Nob3VsZEJlKCJzdGFydDozIHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxv
Zy5qb2luKCIgIikpOworCit2YXIgcmVzdW1lQWZ0ZXJUaHJvd0V2YWwgPSBBc3luY0Z1bmN0aW9u
KCJ2YWx1ZSIsIGAKKyAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB0cnkgewor
ICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzEiKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICB0cnkg
eworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzIiKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICBy
ZXR1cm4gdmFsdWUgKyAxOworYCk7Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoNSwgKCkgPT4g
cmVzdW1lQWZ0ZXJUaHJvd0V2YWwoNCkpOworc2hvdWxkQmUoInN0YXJ0OjQgcmVzdW1lOnRocm93
MSByZXN1bWU6dGhyb3cyIiwgbG9nLmpvaW4oIiAiKSk7CisKKy8vIE1ldGhvb2REZWZpbml0aW9u
IFN5bnRheEVycm9ycworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMg
Zm9vIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYSBwYXJlbnRo
ZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBv
YmogPSB7IGFzeW5jIGZvbyA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVj
dGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBmb28gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tl
biAnLCcuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBmb28gfSIsICJVbmV4cGVjdGVk
IHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsK
Kworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgMCA6IHRydWUgfTsi
LCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3Vt
ZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAw
ID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNp
cyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmog
PSB7IGFzeW5jIDAgLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEg
cGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgb2JqID0geyBhc3luYyAwIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVk
IGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRv
a2VuICc6Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nID0gdHJ1ZSB9OyIs
ICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1l
bnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jICdm
b28nICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHBhcmVudGhl
c2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9i
aiA9IHsgYXN5bmMgJ2ZvbycgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBw
YXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tl
biAnOicuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBbJ2ZvbyddID0gdHJ1ZSB9OyIs
ICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1l
bnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIFsn
Zm9vJ10gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgcGFyZW50
aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
b2JqID0geyBhc3luYyBbJ2ZvbyddIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVk
IGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImNsYXNzIEMgeyBhc3luYyBmb28gOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4g
JzonLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJh
bWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBm
b28gPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5n
ICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBmb28gLCBiYXIgfTsiLCAiVW5leHBlY3Rl
ZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhv
ZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7
IGFzeW5jIGZvbyB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhbiBvcGVuaW5n
ICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKKworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIDAgOiB0cnVlIH07IiwgIlVuZXhwZWN0
ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRo
b2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMg
eyBhc3luYyAwID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4g
b3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgMCAsIGJhciB9OyIsICJVbmV4
cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMg
bWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFz
cyBDIHsgYXN5bmMgMCB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhbiBvcGVu
aW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKKworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nIDogdHJ1ZSB9OyIsICJV
bmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5
bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJj
bGFzcyBDIHsgYXN5bmMgJ2ZvbycgPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBF
eHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIg
bGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAnZm9vJyAs
IGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcg
YmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgJ2ZvbycgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9
Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1l
dGVyIGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBb
J2ZvbyddIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3Bl
bmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgWydmb28nXSA9IHRydWUgfTsiLCAi
VW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFz
eW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
Y2xhc3MgQyB7IGFzeW5jIFsnZm9vJ10gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcu
IEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRl
ciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsnZm9v
J10gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVm
b3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcyBiL0pTVGVzdHMv
c3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4
YjI0ZmU3NjBiMGEzYWIyZDlmZjViMTVjMzQ3ZmNmNzFjMmY4MTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcwpAQCAt
MCwwICsxLDcyIEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZV
TkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JU
aHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAg
IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsK
KyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAh
PT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtT
dHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiBjaGVja01vZHVsZVN5bnRheEVycm9yKHNv
dXJjZSwgZXJyb3JNZXNzYWdlKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gY2hlY2tNb2R1bGVT
eW50YXgoc291cmNlKSwgZXJyb3JNZXNzYWdlKTsKK30KKworY2hlY2tNb2R1bGVTeW50YXhFcnJv
cihTdHJpbmcucmF3YAordmFyIGF3YWl0OworYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3lu
dGF4RXJyb3IoYAorZXhwb3J0IHZhciBhd2FpdDsKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVs
ZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitsZXQgYXdhaXQ7CitgLCBgU3ludGF4RXJyb3I6IENh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoy
YCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQgbGV0IGF3YWl0
OworYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcu
cmF3YAorY29uc3QgYXdhaXQgPSAxCitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVs
ZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQgY29uc3QgYXdhaXQgPSAxCitgLCBgU3lu
dGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGEgbW9kdWxlLjoyYCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2Z1
bmN0aW9uIGF3YWl0KCkge30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgZnVuY3Rp
b24gbmFtZWQgJ2F3YWl0JyBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJv
cihTdHJpbmcucmF3YAorZnVuY3Rpb24qIGF3YWl0KCkge30KK2AsIGBTeW50YXhFcnJvcjogQ2Fu
bm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhIG1vZHVsZS46MmApOworY2hl
Y2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7
fQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQn
IGluIGEgbW9kdWxlLjoyYCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AK
K2ltcG9ydCB7YXdhaXR9IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2Ug
J2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxlU3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCB7Zm9vIGFzIGF3YWl0fSBmcm9tICdmb28nOwor
YCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGlu
ZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQg
KiBhcyBhd2FpdCBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2Fp
dCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVy
cm9yKFN0cmluZy5yYXdgCitpbXBvcnQgYXdhaXQsIHt4LCB5LCB6fSBmcm9tICdmb28nOworYCwg
YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBu
YW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgYXdh
aXQsIHt4LCB5LCB6LH0gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAn
YXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50
YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IGF3YWl0IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4
RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJg
KTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCBhd2FpdCwgKiBh
cyBmb28gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFz
IGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvYXN5bmMtYXdhaXQtbW96aWxsYS5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1v
emlsbGEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJmZDQ0ODFmOGIyY2I3NzllMGRkYjU0ZTQwZDYxMTAwODU2
MGU3MAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vemls
bGEuanMKQEAgLTAsMCArMSwzMDcgQEAKKy8qIFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJq
ZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWMKKyAqIExpY2Vuc2UsIHYuIDIu
MC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAq
IGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96Lm9yZy9NUEwvMi4wLy4gKi8K
KworLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5U
QVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hv
dWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQor
ICAgICAgICBtc2cgPSAiIjsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
YmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgewor
ICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhl
bihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1
bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAg
IGRyYWluTWljcm90YXNrcygpOworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0
dWFsOworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZFRocm93KHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsK
KyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBhY3R1YWwgPSBy
dW4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAg
ICAgYWN0dWFsID0gZTsKKyAgICB9CisgICAgaWYgKCFoYWRFcnJvcikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUu
bmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOworICAgIGlmICghKGFjdHVhbCBpbnN0YW5j
ZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWNlZCAiICsgcnVu
ICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIgLCBidXQgdGhyZXcgJyIgKyBh
Y3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3Nh
Z2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1
biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFs
Lm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0FzeW5jKHJ1biwgZXJy
b3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBm
YWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9
LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1
YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisgICAgaWYgKCFoYWRFcnJv
cikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRo
cm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOworICAgIGlm
ICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAi
LCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdlICE9PSB2b2lk
IDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0
IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5jdGlvbiBhc3NlcnQo
Y29uZCwgbXNnID0gIiIpIHsKKyAgICBpZiAoIWNvbmQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd1N5bnRheEVycm9yKHN0ciwgbWVzc2Fn
ZSkgeworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGV2YWwo
c3RyKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3ludGF4
RXJyb3IpIHsKKyAgICAgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICh0
eXBlb2YgbWVzc2FnZSA9PT0gInN0cmluZyIpCisgICAgICAgICAgICAgICAgYXNzZXJ0KGUubWVz
c2FnZSA9PT0gbWVzc2FnZSwgIkV4cGVjdGVkICciICsgbWVzc2FnZSArICInIGJ1dCB0aHJldyAn
IiArIGUubWVzc2FnZSArICInIik7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KGhhZEVy
cm9yLCAiRGlkIG5vdCB0aHJvdyBzeW50YXggZXJyb3IiKTsKK30KKworLy8gc2VtYW50aWNzLmpz
CisoZnVuY3Rpb24gbW96U2VtYW50aWNzKCkgeworCithc3luYyBmdW5jdGlvbiBlbXB0eSgpIHsK
K30KKworYXN5bmMgZnVuY3Rpb24gc2ltcGxlUmV0dXJuKCkgeworICAgIHJldHVybiAxOworfQor
Cithc3luYyBmdW5jdGlvbiBzaW1wbGVBd2FpdCgpIHsKKyAgICB2YXIgcmVzdWx0ID0gYXdhaXQg
MjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCithc3luYyBmdW5jdGlvbiBzaW1wbGVBd2FpdEFz
eW5jKCkgeworICAgIHZhciByZXN1bHQgPSBhd2FpdCBzaW1wbGVSZXR1cm4oKTsKKyAgICByZXR1
cm4gMiArIHJlc3VsdDsKK30KKworYXN5bmMgZnVuY3Rpb24gcmV0dXJuT3RoZXJBc3luYygpIHsK
KyAgICByZXR1cm4gMSArIGF3YWl0IHNpbXBsZUF3YWl0QXN5bmMoKTsKK30KKworYXN5bmMgZnVu
Y3Rpb24gc2ltcGxlVGhyb3dlcigpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3IoKTsKK30KKworYXN5
bmMgZnVuY3Rpb24gZGVsZWdhdGVkVGhyb3dlcigpIHsKKyAgICB2YXIgdmFsID0gYXdhaXQgc2lt
cGxlVGhyb3dlcigpOworICAgIHJldHVybiB2YWw7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHRyeUNh
dGNoKCkgeworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGRlbGVnYXRlZFRocm93ZXIoKTsKKyAg
ICAgICAgcmV0dXJuICdGQUlMRUQnOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0dXJu
IDU7CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiB0cnlDYXRjaFRocm93KCkgeworICAgIHRy
eSB7CisgICAgICAgIGF3YWl0IGRlbGVnYXRlZFRocm93ZXIoKTsKKyAgICAgICAgcmV0dXJuICdG
QUlMRUQnOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0dXJuIGRlbGVnYXRlZFRocm93
ZXIoKTsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHdlbGxGaW5hbGx5KCkgeworICAgIHRy
eSB7CisgICAgICAgIGF3YWl0IGRlbGVnYXRlZFRocm93ZXIoKTsKKyAgICB9IGNhdGNoIChfKSB7
CisgICAgICAgIHJldHVybiAnRkFJTEVEJzsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICByZXR1
cm4gNjsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGZpbmFsbHlNYXlGYWlsKCkgeworICAg
IHRyeSB7CisgICAgICAgIGF3YWl0IGRlbGVnYXRlZFRocm93ZXIoKTsKKyAgICB9IGNhdGNoIChf
KSB7CisgICAgICAgIHJldHVybiA1OworICAgIH0gZmluYWxseSB7CisgICAgICAgIHJldHVybiBk
ZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiBlbWJlZGRlZCgp
IHsKKyAgICBhc3luYyBmdW5jdGlvbiBpbm5lcigpIHsKKyAgICAgICAgcmV0dXJuIDc7CisgICAg
fQorICAgIHJldHVybiBhd2FpdCBpbm5lcigpOworfQorCisvLyByZWN1cnNpb24sIGl0IHdvcmtz
IQorYXN5bmMgZnVuY3Rpb24gZmliKG4pIHsKKyAgICByZXR1cm4gKG4gPT0gMCB8fCBuID09IDEp
ID8gbiA6IGF3YWl0IGZpYihuIC0gMSkgKyBhd2FpdCBmaWIobiAtIDIpOworfQorCisvLyBtdXR1
YWwgcmVjdXJzaW9uCithc3luYyBmdW5jdGlvbiBpc09kZChuKSB7CisgICAgYXN5bmMgZnVuY3Rp
b24gaXNFdmVuKG4pIHsKKyAgICAgICAgcmV0dXJuIG4gPT09IDAgfHwgYXdhaXQgaXNPZGQobiAt
IDEpOworICAgIH0KKyAgICByZXR1cm4gbiAhPT0gMCAmJiBhd2FpdCBpc0V2ZW4obiAtIDEpOwor
fQorCisvLyByZWN1cnNpb24sIHRha2UgdGhyZWUhCit2YXIgaGFyZGNvcmVGaWIgPSBhc3luYyBm
dW5jdGlvbiBmaWIyKG4pIHsKKyAgICByZXR1cm4gKG4gPT0gMCB8fCBuID09IDEpID8gbiA6IGF3
YWl0IGZpYjIobiAtIDEpICsgYXdhaXQgZmliMihuIC0gMik7Cit9CisKK3ZhciBhc3luY0V4cHIg
PSBhc3luYyBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gMTA7Cit9CisKK3ZhciBuYW1lZEFzeW5j
RXhwciA9IGFzeW5jIGZ1bmN0aW9uIHNpbXBsZSgpIHsKKyAgICByZXR1cm4gMTE7Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIGV4ZWN1dGlvbk9yZGVyKCkgeworICAgIHZhciB2YWx1ZSA9IDA7CisgICAg
YXN5bmMgZnVuY3Rpb24gZmlyc3QoKSB7CisgICAgICAgIHJldHVybiAodmFsdWUgPSB2YWx1ZSA9
PT0gMCA/IDEgOiB2YWx1ZSk7CisgICAgfQorICAgIGFzeW5jIGZ1bmN0aW9uIHNlY29uZCgpIHsK
KyAgICAgICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAwID8gMiA6IHZhbHVlKTsKKyAgICB9
CisgICAgYXN5bmMgZnVuY3Rpb24gdGhpcmQoKSB7CisgICAgICAgIHJldHVybiAodmFsdWUgPSB2
YWx1ZSA9PT0gMCA/IDMgOiB2YWx1ZSk7CisgICAgfQorICAgIHJldHVybiBhd2FpdCBmaXJzdCgp
ICsgYXdhaXQgc2Vjb25kKCkgKyBhd2FpdCB0aGlyZCgpICsgNjsKK30KKworYXN5bmMgZnVuY3Rp
b24gbWlzY2VsbGFuZW91cygpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJgor
ICAgICAgICBhcmd1bWVudHMuY2FsbGVlLm5hbWUgPT09ICJtaXNjZWxsYW5lb3VzIikKKyAgICAg
ICAgcmV0dXJuIDE0OworfQorCitmdW5jdGlvbiB0aHJvd2VyKCkgeworICAgIHRocm93IDE1Owor
fQorCithc3luYyBmdW5jdGlvbiBkZWZhdWx0QXJncyhhcmcgPSB0aHJvd2VyKCkpIHsKK30KKwor
Ly8gQXN5bmMgZnVuY3Rpb25zIGFyZSBub3QgY29uc3RydWN0aWJsZQorc2hvdWxkVGhyb3coKCkg
PT4geworICAgIGFzeW5jIGZ1bmN0aW9uIFBlcnNvbigpIHsKKyAgICB9CisgICAgbmV3IFBlcnNv
bigpOworfSwgVHlwZUVycm9yKTsKKworc2hvdWxkQmVBc3luYyh1bmRlZmluZWQsIGVtcHR5KTsK
K3Nob3VsZEJlQXN5bmMoMSwgc2ltcGxlUmV0dXJuKTsKK3Nob3VsZEJlQXN5bmMoMiwgc2ltcGxl
QXdhaXQpOworc2hvdWxkQmVBc3luYygzLCBzaW1wbGVBd2FpdEFzeW5jKTsKK3Nob3VsZEJlQXN5
bmMoNCwgcmV0dXJuT3RoZXJBc3luYyk7CitzaG91bGRUaHJvd0FzeW5jKHNpbXBsZVRocm93ZXIs
IEVycm9yKTsKK3Nob3VsZEJlQXN5bmMoNSwgdHJ5Q2F0Y2gpOworc2hvdWxkQmVBc3luYyg2LCB3
ZWxsRmluYWxseSk7CitzaG91bGRUaHJvd0FzeW5jKGZpbmFsbHlNYXlGYWlsLCBFcnJvcik7Citz
aG91bGRCZUFzeW5jKDcsIGVtYmVkZGVkKTsKK3Nob3VsZEJlQXN5bmMoOCwgKCkgPT4gZmliKDYp
KTsKK3Nob3VsZEJlQXN5bmMoOSwgZXhlY3V0aW9uT3JkZXIpOworc2hvdWxkQmVBc3luYygxMCwg
YXN5bmNFeHByKTsKK3Nob3VsZEJlQXN5bmMoMTEsIG5hbWVkQXN5bmNFeHByKTsKK3Nob3VsZEJl
QXN5bmMoMTIsICgpID0+IGlzT2RkKDEyKS50aGVuKHYgPT4gdiA/ICJvb3BzIiA6IDEyKSk7Citz
aG91bGRCZUFzeW5jKDEzLCAoKSA9PiBoYXJkY29yZUZpYig3KSk7CitzaG91bGRCZUFzeW5jKDE0
LCAoKSA9PiBtaXNjZWxsYW5lb3VzKDEsIDIsIDMpKTsKK3Nob3VsZEJlQXN5bmMoMTUsICgpID0+
IGRlZmF1bHRBcmdzKCkuY2F0Y2goZSA9PiBlKSk7CisKK30pKCk7CisKKy8vIG1ldGhvZHMuanMK
KyhmdW5jdGlvbiBtb3pNZXRob2RzKCkgeworCitjbGFzcyBYIHsKKyAgICBjb25zdHJ1Y3Rvcigp
IHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IDQyOworICAgIH0KKyAgICBhc3luYyBnZXRWYWx1ZSgp
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CisgICAgfQorICAgIHNldFZhbHVlKHZhbHVl
KSB7CisgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB9CisgICAgYXN5bmMgaW5jcmVt
ZW50KCkgeworICAgICAgICB2YXIgdmFsdWUgPSBhd2FpdCB0aGlzLmdldFZhbHVlKCk7CisgICAg
ICAgIHRoaXMuc2V0VmFsdWUodmFsdWUgKyAxKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFs
dWUoKTsKKyAgICB9CisgICAgYXN5bmMgZ2V0QmFzZUNsYXNzTmFtZSgpIHsKKyAgICAgICAgcmV0
dXJuICdYJzsKKyAgICB9CisgICAgc3RhdGljIGFzeW5jIGdldFN0YXRpY1ZhbHVlKCkgeworICAg
ICAgICByZXR1cm4gNDQ7CisgICAgfQorfQorCitjbGFzcyBZIGV4dGVuZHMgWCB7CisgICAgYXN5
bmMgZ2V0QmFzZUNsYXNzTmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmdldEJhc2VDbGFz
c05hbWUoKTsKKyAgICB9Cit9CisKK3ZhciBvYmpMaXRlcmFsID0geworICAgIGFzeW5jIGdldCgp
IHsKKyAgICAgICAgcmV0dXJuIDQ1OworICAgIH0sCisgICAgc29tZVN0dWZmOiA1Cit9OworCit2
YXIgeCA9IG5ldyBYKCk7Cit2YXIgeSA9IG5ldyBZKCk7CisKK3Nob3VsZEJlQXN5bmMoNDIsICgp
ID0+IHguZ2V0VmFsdWUoKSk7CitzaG91bGRCZUFzeW5jKDQzLCAoKSA9PiB4LmluY3JlbWVudCgp
KTsKK3Nob3VsZEJlQXN5bmMoNDQsICgpID0+IFguZ2V0U3RhdGljVmFsdWUoKSk7CitzaG91bGRC
ZUFzeW5jKDQ1LCAoKSA9PiBvYmpMaXRlcmFsLmdldCgpKTsKK3Nob3VsZEJlQXN5bmMoJ1gnLCAo
KSA9PiB5LmdldEJhc2VDbGFzc05hbWUoKSk7CisKK30pKCk7CisKKyhmdW5jdGlvbiBtb3pGdW5j
dGlvbk5hbWVJbmZlcnJlbmNlKCkgeworCithc3luYyBmdW5jdGlvbiB0ZXN0KCkgeyB9CisKK3Zh
ciBhbm9uID0gYXN5bmMgZnVuY3Rpb24oKSB7IH0KKworc2hvdWxkQmUoInRlc3QiLCB0ZXN0Lm5h
bWUpOworc2hvdWxkQmUoImFub24iLCBhbm9uLm5hbWUpOworCit9KSgpOworCisoZnVuY3Rpb24g
bW96U3ludGF4RXJyb3JzKCkgeworCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIndXNlIHN0cmlj
dCc7IGFzeW5jIGZ1bmN0aW9uIGV2YWwoKSB7fSIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
J3VzZSBzdHJpY3QnOyBhc3luYyBmdW5jdGlvbiBhcmd1bWVudHMoKSB7fSIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gYShrID0gc3VwZXIucHJvcCkgeyB9Iik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBhKCkgeyBzdXBlci5wcm9wKCk7
IH0iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGEoKSB7IHN1cGVy
KCk7IH0iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGEoayA9IGF3
YWl0IDMpIHt9Iik7CisKK30pKCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2ZWQtd29yZC5qcyBiL0pTVGVz
dHMvc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdvcmQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzhlMWQz
MzIxYzdmODAwODdiZWRmMGYxNTcyMWIyOTViODFlZWZiMwotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdvcmQuanMKQEAgLTAsMCArMSwxNjYg
QEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lO
VEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIGFz
c2VydChjb25kLCBtc2cgPSAiIikgeworICAgIGlmICghY29uZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKG1zZyk7Cit9Citub0lubGluZShhc3NlcnQpOworCitmdW5jdGlvbiBzaG91bGRUaHJv
d1N5bnRheEVycm9yKHN0ciwgbWVzc2FnZSkgeworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOwor
ICAgIHRyeSB7CisgICAgICAgIGV2YWwoc3RyKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGlmIChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHsKKyAgICAgICAgICAgIGhhZEVycm9yID0g
dHJ1ZTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gInN0cmluZyIpCisgICAg
ICAgICAgICAgICAgYXNzZXJ0KGUubWVzc2FnZSA9PT0gbWVzc2FnZSwgIkV4cGVjdGVkICciICsg
bWVzc2FnZSArICInIGJ1dCB0aHJldyAnIiArIGUubWVzc2FnZSArICInIik7CisgICAgICAgIH0K
KyAgICB9CisgICAgYXNzZXJ0KGhhZEVycm9yLCAiRGlkIG5vdCB0aHJvdyBzeW50YXggZXJyb3Ii
KTsKK30KK25vSW5saW5lKHNob3VsZFRocm93U3ludGF4RXJyb3IpOworCit2YXIgQXN5bmNGdW5j
dGlvbiA9IChhc3luYyBmdW5jdGlvbigpIHt9KS5jb25zdHJ1Y3RvcjsKKworLy8gQXN5bmNGdW5j
dGlvbkV4cHJlc3Npb24KK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigp
IHsgdmFyIGF3YWl0OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMg
ZnVuY3Rpb24oKSB7IHZhciBbYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIge2F3
YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVu
Y3Rpb24oKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0g
PSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9u
KCkgeyBsZXQgYXdhaXQ7IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQgW2F3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IFsuLi5h
d2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIo
YXN5bmMgZnVuY3Rpb24oKSB7IGxldCB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQge2lzQXN5bmM6
IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
Iihhc3luYyBmdW5jdGlvbigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNv
bnN0IGF3YWl0OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihh
c3luYyBmdW5jdGlvbigpIHsgY29uc3QgW2F3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3QgWy4uLmF3
YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihh
c3luYyBmdW5jdGlvbigpIHsgY29uc3Qge2F3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3Qge2lzQXN5
bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigp
IHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9KSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1l
ZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBhc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0pIiwgIkNh
bm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oYXdhaXQpIHt9KSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoW2F3YWl0
XSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24g
ZihbLi4uYXdhaXRdKSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3lu
YyBmdW5jdGlvbiBmKC4uLmF3YWl0KSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJh
bWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoIihhc3luYyBmdW5jdGlvbiBmKHthd2FpdH0pIHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoe2lzQXN5bmM6IGF3YWl0fSkge30pIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CisKKy8vIEFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbgorc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciBbYXdhaXRdID0gW107IH0pIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciBb
Li4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGYoKSB7IHZhciB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0g
e307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYo
KSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCBhd2FpdDsgfSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCBbYXdh
aXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3lu
YyBmdW5jdGlvbiBmKCkgeyBsZXQgWy4uLmF3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IHthd2FpdH0g
PSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1
bmN0aW9uIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQge2lzQXN5
bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3QgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCBbYXdhaXRd
ID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBm
dW5jdGlvbiBmKCkgeyBjb25zdCBbLi4uYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCB7YXdhaXR9
ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBm
dW5jdGlvbiBmKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCB7
aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fu
bm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGFzeW5jIGZ1
bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdh
aXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZihhd2FpdCkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0
ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
ImFzeW5jIGZ1bmN0aW9uIGYoW2F3YWl0XSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBw
YXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoWy4uLmF3YWl0XSkge30iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoLi4uYXdhaXQpIHt9IiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKHthd2FpdH0pIHt9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKHtpc0FzeW5jOiBh
d2FpdH0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CisKKy8vIEFzeW5jQXJyb3dGdW5jdGlvbgorc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciBhd2FpdDsgfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIFthd2FpdF0g
PSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAo
KSA9PiB7IHZhciBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIge2F3YWl0fSA9IHt9OyB9KSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IGYgPSBhc3luYyAoKSA9PiB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQgYXdhaXQ7
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5j
ICgpID0+IHsgbGV0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQgWy4uLmF3YWl0XSA9IFtdOyB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAo
KSA9PiB7IGxldCB7YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7
fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5
bmMgKCkgPT4geyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IGF3YWl0
OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3lu
YyAoKSA9PiB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCBbLi4uYXdhaXRdID0g
W107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFz
eW5jICgpID0+IHsgY29uc3Qge2F3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IHtpc0FzeW5jOiBh
d2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsg
ZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdh
d2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgZiA9IGFzeW5jICgpID0+IHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5v
dCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jIChhd2FpdCkgPT4ge30iLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKFthd2FpdF0pID0+
IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jIChbLi4u
YXdhaXRdKSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBh
c3luYyAoLi4uYXdhaXQpID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVy
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgZiA9IGFzeW5jICh7YXdhaXR9KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBh
cmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIGYgPSBhc3luYyAoe2lzQXN5bmM6IGF3YWl0fSkgPT4ge30iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgYXdhaXQgPT4ge30iLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
KworLy8gQXN5bmNNZXRob2QKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3lu
YyBmKCkgeyB2YXIgYXdhaXQ7IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIFthd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIgWy4uLmF3YWl0XSA9
IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5j
IGYoKSB7IHZhciB7YXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2
YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCBhd2FpdDsgfSB9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCBbYXdh
aXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBPID0geyBhc3luYyBmKCkgeyBsZXQgWy4uLmF3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IHth
d2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkg
eyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3QgYXdhaXQ7IH0gfSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBm
KCkgeyBjb25zdCBbYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCBbLi4uYXdhaXRdID0gW107
IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBh
c3luYyBmKCkgeyBjb25zdCB7YXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCB7aXNBc3luYzog
YXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBm
KCkgeyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFt
ZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBPID0geyBhc3luYyBmKCkgeyBhc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0gfSIs
ICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoYXdhaXQp
IHt9IH0gIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMg
ZihbYXdhaXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7
IGFzeW5jIGYoWy4uLmF3YWl0XSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0
ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBPID0geyBhc3luYyBmKC4uLmF3YWl0KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoe2F3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKHtpc0FzeW5jOiBhd2FpdH0pIHt9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CisKKy8vIEFzeW5jRnVuY3Rpb24gY29uc3RydWN0b3IKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciBhd2FpdDsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIgW2F3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciBbLi4uYXdhaXRdID0gW107
JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIHth
d2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0
aW9uKCd2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciB7aXNBc3luYzogYXdhaXR9ID0ge307JykiLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignbGV0IGF3YWl0Oycp
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbign
bGV0IFthd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoIkFzeW5jRnVuY3Rpb24oJ2xldCBbLi4uYXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQge2F3YWl0fSA9IHt9
OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlv
bignbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCB7aXNBc3luYzogYXdhaXR9ID0ge307
JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9u
KCdjb25zdCBhd2FpdDsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
IkFzeW5jRnVuY3Rpb24oJ2NvbnN0IFthd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IFsuLi5hd2FpdF0gPSBb
XTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rp
b24oJ2NvbnN0IHthd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2Nv
bnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2Z1bmN0aW9uIGF3YWl0KCkge30nKSIsICJDYW5u
b3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignYXN5bmMgZnVuY3Rpb24g
YXdhaXQoKSB7fScpIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0
aW9uKCdhd2FpdCcsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNG
dW5jdGlvbignW2F3YWl0XScsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRl
ciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
QXN5bmNGdW5jdGlvbignWy4uLmF3YWl0XScsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiQXN5bmNGdW5jdGlvbignLi4uYXdhaXQnLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3thd2FpdH0nLCAnJykiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3tpc0FzeW5jOiBhd2FpdH0nLCAn
JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0
aW9uc19sZXhpY2FsX2FyZ3VtZW50c19iaW5kaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmNf
YXJyb3dfZnVuY3Rpb25zX2xleGljYWxfYXJndW1lbnRzX2JpbmRpbmcuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmE1NWY2NGFmOGM5NDQ0NDcyMjExYjFmNTg5MTcwNjFmOGFhNGQ2YQotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX2FyZ3VtZW50
c19iaW5kaW5nLmpzCkBAIC0wLDAgKzEsNDcgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFC
TEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGlt
ZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZykg
eworICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNnID0gIiI7CisgICAgZWxzZQor
ICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0
dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVB
c3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRF
cnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0g
dmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRy
dWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlm
IChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhwZWN0
ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3luYyhydW4sIGVy
cm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0g
ZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsg
fSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0
dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKCFoYWRF
cnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRv
IHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOworICAg
IGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUg
KyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdlICE9PSB2
b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywg
YnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCit2YXIgbm9Bcmd1bWVu
dHNBcnJvdyA9IGFzeW5jICgpID0+IGF3YWl0IFsuLi5hcmd1bWVudHNdOworc2hvdWxkVGhyb3dB
c3luYygoKSA9PiBub0FyZ3VtZW50c0Fycm93KDEsIDIsIDMpLCBSZWZlcmVuY2VFcnJvcik7Cit2
YXIgbm9Bcmd1bWVudHNBcnJvdzIgPSBhc3luYyAoKSA9PiB7IHJldHVybiBhd2FpdCBbLi4uYXJn
dW1lbnRzXTsgfQorc2hvdWxkVGhyb3dBc3luYygoKSA9PiBub0FyZ3VtZW50c0Fycm93MigxLCAy
LCAzKSwgUmVmZXJlbmNlRXJyb3IpOworCitzaG91bGRCZUFzeW5jKCJbMSwyLDNdIiwgKCkgPT4g
KGZ1bmN0aW9uKCkgeyByZXR1cm4gKGFzeW5jICgpID0+IEpTT04uc3RyaW5naWZ5KFsuLi5hcmd1
bWVudHNdKSkoKTsgfSkoMSwgMiwgMykpOworc2hvdWxkQmVBc3luYygiWzQsNSw2XSIsICgpID0+
IChmdW5jdGlvbigpIHsgcmV0dXJuIChhc3luYyAoKSA9PiB7IHJldHVybiBKU09OLnN0cmluZ2lm
eShbLi4uYXdhaXQgYXJndW1lbnRzXSkgfSkoKTsgfSkoNCwgNSwgNikpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfbmV3LnRhcmdldF9i
aW5kaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxf
bmV3LnRhcmdldF9iaW5kaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNmEzOTgzZjdhOTI3NDBlZTQ3OGMz
ZmY3YmI4MzBjNzg1YWU0MDkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3lu
Y19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9uZXcudGFyZ2V0X2JpbmRpbmcuanMKQEAgLTAsMCAr
MSw1NSBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElP
Tl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rp
b24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9p
ZCAwKQorICAgICAgICBtc2cgPSAiIjsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9yICIg
KyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1z
ZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVu
KCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0p
OworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0
aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQor
CitmdW5jdGlvbiBzaG91bGRUaHJvd0FzeW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7Cisg
ICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVu
KGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVu
Y3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAg
ZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5u
YW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNl
b2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVu
ICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFj
dHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2Fn
ZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVu
ICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwu
bWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9uIEMxKCkgeworICAgIHJldHVybiBhc3luYyAo
KSA9PiBhd2FpdCBuZXcudGFyZ2V0OworfQorCitmdW5jdGlvbiBDMigpIHsKKyAgICByZXR1cm4g
YXN5bmMgKCkgPT4geyByZXR1cm4gYXdhaXQgbmV3LnRhcmdldCB9OworfQorCitzaG91bGRCZUFz
eW5jKEMxLCBuZXcgQzEoKSk7CitzaG91bGRCZUFzeW5jKHVuZGVmaW5lZCwgQzEoKSk7CitzaG91
bGRCZUFzeW5jKEMyLCBuZXcgQzIoKSk7CitzaG91bGRCZUFzeW5jKHVuZGVmaW5lZCwgQzIoKSk7
CisKK3Nob3VsZFRocm93QXN5bmMoYXN5bmMgKCkgPT4gYXdhaXQgbmV3LnRhcmdldCwgUmVmZXJl
bmNlRXJyb3IpOworc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiB7IHJldHVybiBhd2FpdCBu
ZXcudGFyZ2V0OyB9LCBSZWZlcmVuY2VFcnJvcik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9zdXBlcl9iaW5kaW5nLmpzIGIvSlNUZXN0
cy9zdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfc3VwZXJfYmluZGluZy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44M2VhNWNiYTBjZjg1ZGYwYmE3MzdjY2RiN2E3MzIwZTA0YjE4YTQ3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGlj
YWxfc3VwZXJfYmluZGluZy5qcwpAQCAtMCwwICsxLDU3IEBACisvLyBUaGlzIHRlc3QgcmVxdWly
ZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1
aWxkIHRpbWUuCisvL0Agc2tpcAorCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1
YWwsIG1zZykgeworICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNnID0gIiI7Cisg
ICAgZWxzZQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAi
OiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24g
c2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAg
IHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsg
YWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRF
cnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsK
KworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxk
QmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworY2xhc3MgQmFzZUNsYXNzIHsKKyAgICBi
YXNlQ2xhc3NWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJuICJCYXNlQ2xhc3NWYWx1ZSI7CisgICAg
fQorICAgIGdldCBwcm9wZXJ0eSgpIHsKKyAgICAgICAgcmV0dXJuICJ0ZXN0ISI7CisgICAgfQor
fQorCitjbGFzcyBDaGlsZENsYXNzIGV4dGVuZHMgQmFzZUNsYXNzIHsKKyAgICBhc3luY1N1cGVy
UHJvcCgpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jIHggPT4gc3VwZXIuYmFzZUNsYXNzVmFsdWUo
KTsKKyAgICB9CisgICAgYXN5bmNTdXBlclByb3AyKCkgeworICAgICAgICByZXR1cm4gYXN5bmMg
eCA9PiB7IHJldHVybiBzdXBlci5iYXNlQ2xhc3NWYWx1ZSgpOyB9CisgICAgfQorfQorCisvLyBG
SVhNRTogc3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBicm9rZW4K
K3Nob3VsZEJlQXN5bmMoIkJhc2VDbGFzc1ZhbHVlIiwgbmV3IENoaWxkQ2xhc3MoKS5hc3luY1N1
cGVyUHJvcCgpKTsKK3Nob3VsZEJlQXN5bmMoIkJhc2VDbGFzc1ZhbHVlIiwgbmV3IENoaWxkQ2xh
c3MoKS5hc3luY1N1cGVyUHJvcDIoKSk7CisKK2NsYXNzIENoaWxkQ2xhc3MyIGV4dGVuZHMgQmFz
ZUNsYXNzIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jIChzZWxm
ID0gc3VwZXIoKSkgPT4gc2VsZi5iYXNlQ2xhc3NWYWx1ZSgpICsgJyAnICsgc3VwZXIucHJvcGVy
dHk7CisgICAgfQorfQorCitzaG91bGRCZUFzeW5jKCJCYXNlQ2xhc3NWYWx1ZSB0ZXN0ISIsIG5l
dyBDaGlsZENsYXNzMigpKTsKKworcHJpbnQoIkRvbmUhIik7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25z
X2xleGljYWxfdGhpc19iaW5kaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmNfYXJyb3dfZnVu
Y3Rpb25zX2xleGljYWxfdGhpc19iaW5kaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyYWZhMTEzZmE5MTI2
YzNlMTY3ZmFlNDExYzNhMDRlODdhMTFiNWEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF90aGlzX2JpbmRpbmcuanMKQEAgLTAs
MCArMSwzMCBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5D
VElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVu
Y3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0g
dm9pZCAwKQorICAgICAgICBtc2cgPSAiIjsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9y
ICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4s
IG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAg
cnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7
IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAg
ICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOwor
fQorCit2YXIgZCA9ICh7IHggOiAiYmFyIiwgeSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gYXN5bmMg
eiA9PiB0aGlzLnggKyB6OyB9fSkueSgpOwordmFyIGUgPSB7IHggOiAiYmF6IiwgeSA6IGQgfTsK
Kworc2hvdWxkQmVBc3luYygiYmFybGV5IiwgKCkgPT4gZCgibGV5IikpOworc2hvdWxkQmVBc3lu
YygiYmFybGV5IiwgKCkgPT4gZS55KCJsZXkiKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292386</attachid>
            <date>2016-10-21 12:57:31 -0700</date>
            <delta_ts>2016-10-21 12:59:14 -0700</delta_ts>
            <desc>First round of comments</desc>
            <filename>bug-163760-20161021155351.patch</filename>
            <type>text/plain</type>
            <size>146027</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MjJmMzUxMGMwZWNkMGMyNWUwMDUxMWQyYjgxNmZmOTRlOGQ1NjE2Li5lZWE2MmVlMDIzYjM2YWIw
NjQyOTljYmU5MWZkNTg3YWM1MDE1NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTcgQEAKKzIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBm
dW5jdGlvbnMgZ2VuZXJhdGUgYnl0ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3
aGljaCBpcworICAgICAgICBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb246CisgICAgICAgIAorICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5z
bGF0aW9uOgorICAgICAgICBhc3luYyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAv
LyBBZnRlciB0cmFuc2xhdGlvbjoKKyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAg
ICAgICAgIGxldCBnZW5lcmF0b3IgPSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQm9keSBvZiBhc3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgQGdlbmVyYXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5l
cmF0b3JUaGlzOiB0aGlzLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8
ZnJhbWUgc3RhdGU+LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgQXdhaXQgRXhw
cmVzc2lvbnMgYXJlIGVxdWl2YWxlbnQgdG8gbm9uLWRlbGVnYXRpbmcgWWllbGQgZXhwcmVzc2lv
bnMsIGFuZCBlbWl0IGlkZW50aWNhbCBieXRlY29kZS4KKworICAgICAgICBJbiB0aGlzIGJ1Zywg
YXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBvbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCwgYXMg
c3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGRvIG5vdCB5ZXQgd29y
ayBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5q
czogQWRkZWQuCisgICAgICAgIChhc3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19hc3luY19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3
RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZSk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6QXN5bmNG
dW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6
SlNBc3luY0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJl
bnRseSk6CisKIDIwMTYtMTAtMjEgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbSlNDXSBkb24ndCBjcmFzaCB3aGVuIGFyZ3VtZW50cyB0byBgbmV3IEZ1bmN0
aW9uKClgIHByb2R1Y2UgdW5leHBlY3RlZCBBU1QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCAzOTVmZTJjYTU1ZjQ4ZTU2ZmM1MmRlNTQzMWY2ZjFkZmMwNjVjNTkwLi4xNzY5
ODQzZGY2N2VkYzI3NTg5OWY3MmI2NTAwNmM5ODJkMjZmYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC02MzUsNiArNjM1LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBydW50aW1lL0FycmF5Q29udmVudGlvbnMuY3BwCiAgICAgcnVudGltZS9BcnJh
eUl0ZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisg
ICAgcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9Bc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvQmFzaWNCbG9ja0xvY2F0aW9uLmNw
cAogICAgIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvQm9vbGVh
bk9iamVjdC5jcHAKQEAgLTcxMSw2ICs3MTMsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUv
SlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcAorICAgIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKICAgICBydW50aW1lL0pT
Q2FsbGVlLmNwcApAQCAtMTI5NSw2ICsxMjk4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxU
SU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlDb25z
dHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5
UHJvdG90eXBlLmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvRGF0
ZVByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9GdW5jdGlv
blByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0
b3JQcm90b3R5cGUuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggNjYzMDUzNzIwMjRlMWRkOTNhNGFjNzJkMDI5MDZhMzIwMzA1NDY2Mi4uMjg1NGQ1ZTc5
ODZkYjA5MWIyYjk4NGNhMGUzZjBmMjQ3OTBjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg5LDYgKzg5LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJ
TFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUNv
bnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheVBy
b3RvdHlwZS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXN5bmNGdW5jdGlv
blByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvRGF0ZVByb3Rv
dHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5
cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlw
ZS5qcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZkNDJiOWM3NWRlNGRhZGU3
ODI2MTkwNzg5YzA3ODI2OTNjYzI4NmIuLjliYTM2Njg4ODg5Zjk5ODcxMTlhMDdhOTY5Y2VkMjQx
YmQ0MzdjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjQzLDYgKzEyNDMs
MTIgQEAKIAkJNTNGQTJBRTMxQ0YzODAzOTAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZBMkFFMjFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCAqLzsgfTsKIAkJNTNGRDA0
RDMxRDdBQjI3NzAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZEMDREMTFEN0FCMTg3MDAz
Mjg3RDMgLyogV0FTTUNhbGxpbmdDb252ZW50aW9uLmNwcCAqLzsgfTsKIAkJNTNGRDA0RDQxRDdB
QjI5MTAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGRDA0RDIxRDdBQjE4NzAwMzI4N0QzIC8q
IFdBU01DYWxsaW5nQ29udmVudGlvbi5oICovOyB9OworCQk1QjcwQ0ZERTFEQjY5RTY2MDBFQzIz
RjkgLyogSlNBc3luY0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9u
LmggKi87IH07CisJCTVCNzBDRkRGMURCNjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENG
RDkxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgKi87IH07CisJCTVCNzBD
RkUwMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEQTFEQjY5RTVDMDBF
QzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oICovOyB9OworCQk1QjcwQ0ZFMTFEQjY5
RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEQjFEQjY5RTVDMDBFQzIzRjkg
LyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CisJCTVCNzBDRkUyMURCNjlFNjYw
MEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBB
c3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJNUI3MENGRTMxREI2OUU2NjAwRUMy
M0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZERDFEQjY5RTVDMDBFQzIzRjkgLyogQXN5
bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlD
NjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAq
LzsgfTsKIAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBT
dXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NTc3
NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsKIAkJNURCQjE1MjUxMzFEMEJE
NzAwNTZBRDM2IC8qIG1pbmlkb20uanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEyMTEwRDBBNDg3ODg3MDA0ODAyNTUgLyogbWlu
aWRvbS5qcyAqLzsgfTsKQEAgLTM1NDgsNiArMzU1NCwxMyBAQAogCQk1M0ZBMkFFMjFDRjM4MDM5
MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBXQVNNQ2FsbGluZ0NvbnZlbnRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0FTTUNhbGxpbmdD
b252ZW50aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNGRDA0RDIxRDdB
QjE4NzAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXQVNNQ2FsbGluZ0NvbnZlbnRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FzeW5jRnVuY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGRDkxREI2OUU1QzAwRUMyM0Y5IC8q
IEpTQXN5bmNGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0FzeW5jRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Qjcw
Q0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkRCMURCNjlFNUMwMEVDMjNGOSAvKiBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QjcwQ0ZEQzFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZERDFEQjY5RTVDMDBF
QzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCODI0MzA0MURCN0FBNDkwMEVBNjM4NCAvKiBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5
bGliIjsgbmFtZSA9IGxpYmVkaXQuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJlZGl0LmR5bGli
OyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk1REFGRDZDQjE0NkI2ODYzMDBGQkVG
QjQgLyogSlNDLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEpTQy54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUREREY0NDYxNEZFRTcyMjAwQjRGQjREIC8qIExMSW50RGVz
aXJlZE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnREZXNp
cmVkT2Zmc2V0cy5oOyBwYXRoID0gTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTU5MTUsNiArNTkyOCwxMCBA
QAogCQkJCUY2OTJBODREMDI1NTU5N0QwMUZGNjBGNyAvKiBBcnJheVByb3RvdHlwZS5jcHAgKi8s
CiAJCQkJRjY5MkE4NEUwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmggKi8sCiAJ
CQkJMEZCN0YzOEExNUVEOEUzODAwRjE2N0IyIC8qIEFycmF5U3RvcmFnZS5oICovLAorCQkJCTVC
NzBDRkREMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICov
LAorCQkJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3IuaCAqLywKKwkJCQk1QjcwQ0ZEQjFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblBy
b3RvdHlwZS5jcHAgKi8sCisJCQkJNUI3MENGREExREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQkwRjM4RDJBMDFENDQxOTY2MDA2ODA0OTkgLyogQXV4
aWxpYXJ5QmFycmllci5oICovLAogCQkJCTBGMzhEMkExMUQ0NDE5NjYwMDY4MDQ5OSAvKiBBdXhp
bGlhcnlCYXJyaWVySW5saW5lcy5oICovLAogCQkJCTUyNjc4RjhDMUEwMzEwMDkwMDZBMzA2RCAv
KiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwICovLApAQCAtNjEwMCw2ICs2MTE3LDggQEAKIAkJCQkw
RjJCNjZCQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCAqLywKIAkJCQkw
RjJCNjZCQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggKi8s
CiAJCQkJNTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggKi8sCisJ
CQkJNUI3MENGRDkxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgKi8sCisJ
CQkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oICovLAogCQkJ
CTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovLAogCQkJ
CTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLywKIAkJCQk2
NTdDRjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuY3BwICovLApAQCAtNzI4OCw2ICs3
MzA3LDcgQEAKIAkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXlQcm90b3R5cGUu
anMgKi8sCiAJCQkJN0NGOUJDNTgxQjY1RDlBMzAwOURCMUVGIC8qIEFycmF5Q29uc3RydWN0b3Iu
anMgKi8sCiAJCQkJN0NGOUJDNTkxQjY1RDlBMzAwOURCMUVGIC8qIEFycmF5SXRlcmF0b3JQcm90
b3R5cGUuanMgKi8sCisJCQkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUuanMgKi8sCiAJCQkJREUyNkU5MDYxQ0I1REQ5NjAwRDJCRTgyIC8qIEJ1aWx0
aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAgKi8sCiAJCQkJREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgy
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oICovLAogCQkJCUE3RDgwMUExMTg4MEQ2NkUw
MDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovLApAQCAtNzcyMCw2ICs3NzQwLDcg
QEAKIAkJCQlEQzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMgLyogSGVhcENlbGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzNDQ0ZDMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja01hcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZDM0NDRkQxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUI3MENGRTIxREI2OUU2NjAwRUMyM0Y5IC8qIEFz
eW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkUxOUFE
QTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJGMTU4
RDE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkMzQ0QwMDE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tXb3JrbGlzdC5oIGluIEhl
YWRlcnMgKi8sCkBAIC04Mjg4LDYgKzgzMDksNyBAQAogCQkJCTdDMTg0RTFCMTdCRURCRDMwMDdD
QjYzQSAvKiBKU1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTIzMTdCRUUyNDAw
MDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2
QjczMUUxQkRBMDhFRjAwMzMxQjg0IC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNUI3MENGREUxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDREIxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJv
bWlzZURlZmVycmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzE4NEUxRjE3QkVFMjJFMDA3Q0I2
M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTZCNzMxRjFC
REEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8s
CkBAIC04NDI4LDYgKzg0NTAsNyBAQAogCQkJCUJDMThDNDNGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBO
b2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNDVBMjgxOEExQjI1OTAwMjZEODhGIC8qIE5v
bmRldGVybWluaXN0aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDEwRTE2RjVD
RDAwQjM0NDYwIC8qIE51bWJlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Qjcw
Q0ZFMDFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0NDIwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlckNvbnN0cnVjdG9y
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDMwRTE2RjVDRDAwQjM0NDYwIC8qIE51
bWJlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDQwRTE2RjVDRDAwQjM0NDYw
IC8qIE51bWJlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MjkzLDYgKzkzMTYsNyBA
QAogCQkJCUE1NTcxNEJGMUNEODA0QTQwMDA0RDJDNiAvKiBDb25zb2xlT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRUM4NTI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BhdGNocG9pbnRT
cGVjaWFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTI3MUJEQUNEQUMwMDgwRkY3NCAv
KiBCM1BhdGNocG9pbnRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QjcwQ0ZFMzFEQjY5
RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTI5MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZFQzg1MkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQzNDIyQTYyMUMxNThFNkEwMEUyRUI5OCAvKiBCM0NvbnN0
RmxvYXRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk3MDYsNiArOTczMCw3IEBACiAJCQkJ
MEY1NTEzQTgxRDVBNjhDRDAwQzMyQkQ4IC8qIEZyZWVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZFOTlCMjRBMUMyNEMzRDcwMEM4MjE1OSAvKiBKSVROZWdHZW5lcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODZDQzg1QzQwRUU3QTg5NDAwMjg4NjgyIC8qIEpJVFByb3BlcnR5QWNj
ZXNzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCNzBDRkUxMURCNjlFNjYwMEVDMjNGOSAvKiBB
c3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QzFFOEU0MTEy
RTcyRUYwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQjQxNTg0MUQ3OEZCNEMwMERGOEQwOSAvKiBBcnJheUNvbnZlbnRpb25zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91
dGluZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk4ODMsNiArOTkwOCw3IEBACiAJCQkJMTQ4RjIx
QjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURDNjlB
QTY2MUNGN0ExRjIwMEM2MjcyRiAvKiBNYXRjaFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTVCNzBDRkRGMURCNjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1RUIyOUIxMENFMjU4MTAwMUE5OTBFIC8qIE5v
ZGVzQ29kZWdlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTQ2RjUyMTFBMzJCMzEzMDA2RjA3
RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMjJFNUEy
MURBNjQ0MzkwMDZFNzcwOSAvKiBERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5j
RnVuY3Rpb25Qcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTVhYjk3OWJhZDQ1NTRjNmJjN2Y1
MzIxOTFmM2VhY2YyMmQxY2VkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9u
IGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCit7
CisgICAgInVzZSBzdHJpY3QiOworICAgIGxldCBzdGF0ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9y
U3RhdGU7CisgICAgbGV0IHZhbHVlID0gQHVuZGVmaW5lZDsKKworICAgIGlmIChzdGF0ZSA9PT0g
QEdlbmVyYXRvclN0YXRlQ29tcGxldGVkIHx8IChyZXN1bWVNb2RlICE9PSBAR2VuZXJhdG9yUmVz
dW1lTW9kZU5vcm1hbCAmJiByZXN1bWVNb2RlICE9PSBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93
KSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIiIpOworCisgICAgdHJ5IHsKKyAgICAg
ICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsK
KyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9y
LkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUs
IGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5l
cmF0b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOworICAg
ICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKHZhbHVlKTsKKyAgICAgICAgfQorICAg
IH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBA
R2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0
KGVycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUodmFsdWUpLkB0
aGVuKAorICAgICAgICBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1
bWUoZ2VuZXJhdG9yLCB2YWx1ZSwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpOyB9LAorICAg
ICAgICBmdW5jdGlvbihlcnJvcikgeyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJh
dG9yLCBlcnJvciwgQEdlbmVyYXRvclJlc3VtZU1vZGVUaHJvdyk7IH0pOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDU3NmRl
NDAwNjA0ZDEwMTQ3NTFjYzYzYmVhY2VjNzdhNTVmZDRmZjcuLjg0YWUzYmRhMmYwMGI5MGQ4ZjFk
MjMwZjYxYmFkMDkyOGM4MTEzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTEwNSw2ICsxMDUsOCBAQAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiLCAibGVuZ3Ro
IiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hc3luY19mdW5jIiwgImxl
bmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXN5bmNfZnVuY19l
eHAiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3NldF9mdW5j
dGlvbl9uYW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9j
YWxsIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2Nh
bGwiLCAibGVuZ3RoIiA6IDkgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggZDk3M2JjZmIxMzdjMzJjMGM2ZGVlZGYzZGUwZTFkZDk0
MTY1NGM2Zi4uMTYyZGIyODJjZDU1MzkwNTAxODU1NzEwYzIxZWJiNDE3ZmE1MDVlNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE2
NCw2ICsxNjQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNv
ZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfZ2V0X2Vu
dW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4cDoK
ICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50OgogICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZToKQEAgLTE5Niw2ICsxOTcs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywg
T3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAg
Y2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICBj
YXNlIG9wX25ld19hc3luY19mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAg
ICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jl
c3Q6CkBAIC0zODgsNiArMzkwLDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNl
IG9wX25ld19mdW5jX2V4cDoKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBj
YXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVu
YzoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFy
YXJnczoKICAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9j
YWxsX2ZvcndhcmRfYXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCBiMTUyMTEyYjNhNmFlYjBiNTg2OGY2YWEyMDk5ZWVjNTU2N2Iy
YWY4Li4xYTI5OTc1MmMyZjEzYzI0ZTNlYjlmYjExNTZmNDgxNzYyYzgyYzM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ2Myw2ICsxNDYz
LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9uZXdfYXN5bmNfZnVuYzogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2FzeW5jX2Z1bmMiKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKQEAgLTE0NzksNiArMTQ4NywxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUo
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOiB7Cisg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJuZXdfYXN5bmNfZnVuY19leHAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0
YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3NldF9mdW5jdGlvbl9uYW1lOiB7CiAgICAgICAgICAgICBpbnQgZnVuY1JlZyA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG5hbWVSZWcgPSAoKytpdCktPnUub3BlcmFuZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKaW5kZXggMjVhMzU3YmY1NjExNjQ1MGMxYjBlMjU1Yzk3NzBhMjNhZDNlMTllYy4uZTkxOGE5
M2MyNGU2NzhkZTEyMmQ3NTUwMTE4MTkyZGI1NzdmMzE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTEyMiw3ICsxMjIs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lz
U3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNF
dmFsOyB9CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyc2VNb2RlOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3BhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CisgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJz
ZU1vZGUocGFyc2VNb2RlKCkpOyB9CiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4o
bV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxDb250ZXh0VHlwZT4obV9ldmFs
Q29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CmluZGV4IGJhYzQwNTQxM2E2YjJmZGQ5OTcyNzJjMjhmMGM3NGE3MjMwNmEzMzguLjZmNTU4Y2Y3
YTk3NGM4NTMzM2JhODUyMzAwMjE4ZmUyMzEyMmUxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9y
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVz
OyB9CiAgICAgCi0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CisgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1v
ZGUocGFyc2VNb2RlKCkpOyB9CiAKICAgICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUoKSBjb25zdCB7cmV0dXJuIHN0YXRpY19jYXN0PEpTQzo6RGVyaXZlZENvbnRl
eHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBm
N2UxMDMxN2EyMTRjNjQ4MzkwYjk0YjE4YmNmZDczNzNkNWNlMTdmLi5iMDc0YTYxZDRiNDk1NTIw
NDgxMGRiZTUyMzQ5MjU5ZGVhNjljZjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTU4LDcgKzE1
OCw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgfQog
ICAgIAogCi0gICAgaWYgKG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlv
bkJvZHlQYXJzZU1vZGUobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpKSkKICAgICAgICAgcGVyZm9y
bUdlbmVyYXRvcmlmaWNhdGlvbihtX2NvZGVCbG9jay5nZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXgpOwogCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9ucyhzdGQ6Om1ha2Vf
dW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+KG1faW5zdHJ1Y3Rpb25zKSk7CkBAIC0y
NjgsMTUgKzI2OCwxNSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hvdWxk
Q2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxv
Y2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUt
PnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9k
ZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAm
JiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAg
Ly8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZl
cmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2Nv
cGUuCisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJz
ZU1vZGUpKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBhbmQgQXN5bmNGdW5jdGlvbiBuZXZlciBw
cm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2
ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0Fy
Z3VtZW50cyA9IGZhbHNlOwogCi0gICAgICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2Nv
cGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3Bl
IGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCisgICAgICAgIC8vIEdlbmVyYXRvciBhbmQgQXN5bmNG
dW5jdGlvbiB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJs
ZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCiAgICAgICAg
IHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOwogICAgIH0KIAotICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2Rl
ICYmIG5lZWRzQXJndW1lbnRzKSB7CisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9u
V3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUpICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAg
IC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFw
cGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8g
VGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVh
dGVkIGJlZm9yZSBzdGFydGluZyBpdC4KICAgICAgICAgLy8gVG8gd29ya2Fyb3VuZCBpdCwgd2Ug
ZXZhbHVhdGUgdGhlc2UgYXJndW1lbnRzIGFzIGFyZ3VtZW50cyBvZiBhIHdyYXBwaW5nIGdlbmVy
YXRvciBmdW5jdGlvbiwgYW5kIHJlZmVyZW5jZSBpdCBmcm9tIGEgZ2VuZXJhdG9yLgpAQCAtMzIw
LDEzICszMjAsMTQgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIGVtaXRFbnRlcigp
OwogCi0gICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlN
b2RlKQorICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFy
c2VNb2RlKSkKICAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbMV07
CiAKICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlz
SW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2Rl
KCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSk7CisgICAgICAgIEFTU0VSVCghaXNBc3luY0Z1bmN0aW9uQm9keVBhcnNl
TW9kZShwYXJzZU1vZGUpKTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9u
TmFtZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSk7CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1
cmVzKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOwogICAgICAgICBib29sIG1hcmtBc0Nh
cHR1cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZDsKQEAgLTUw
NSw3ICs1MDYsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgYm9vbCBzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxlID0gIWhh
dmVQYXJhbWV0ZXJOYW1lZEFyZ3VtZW50cyAmJiAhbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlv
bigpOworICAgICAgICBib29sIHNob3VsZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUgPSAhaGF2ZVBh
cmFtZXRlck5hbWVkQXJndW1lbnRzCisgICAgICAgICAgICAmJiAhU291cmNlUGFyc2VNb2RlU2V0
KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpKTsK
ICAgICAgICAgc2hvdWxkQ3JlYXRlQXJndW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3BlID0g
c2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJpYWJsZSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0Owog
ICAgICAgICAvLyBEbyBub3QgY3JlYXRlIGFyZ3VtZW50cyB2YXJpYWJsZSBpbiBjYXNlIG9mIEFy
cm93IGZ1bmN0aW9uLiBWYWx1ZSB3aWxsIGJlIGxvYWRlZCBmcm9tIHBhcmVudCBzY29wZQogICAg
ICAgICBpZiAoc2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJpYWJsZSAmJiAhc2hvdWxkQ3JlYXRlQXJn
dW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3BlKSB7CkBAIC01NDksNiArNTUxLDI4IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIEFTU0VSVCghaXNDb25zdHJ1Y3RvcigpKTsKKyAg
ICAgICAgQVNTRVJUKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSk7
CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKworICAgICAgICAvKi8v
IEZJWE1FOiBFbWl0IHRvX3RoaXMgb25seSB3aGVuIEdlbmVyYXRvciB1c2VzIGl0LgorICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTg2CisgICAg
ICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CisgICAgICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7CisgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOworICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsq
LworCisgICAgICAgIGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lz
dGVyKTsKKyAgICAgICAgZW1pdE5ld09iamVjdChtX2dlbmVyYXRvclJlZ2lzdGVyKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rp
b25Cb2R5TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9u
Qm9keU1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7
CiAgICAgICAgIC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhl
cmUuCiAgICAgICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkp
OwpAQCAtNjA4LDcgKzYzMiw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAKICAgICAvLyBX
ZSBuZWVkIGxvYWQgfHN1cGVyfCAmIHx0aGlzfCBmb3IgYXJyb3cgZnVuY3Rpb24gYmVmb3JlIGlu
aXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2sK
ICAgICAvLyBpZiB3ZSBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb24uIEJlY2F1c2Ug
fHN1cGVyfCAmIHx0aGlzfCB2YWx1ZXMgY2FuIGJlIHVzZWQgdGhlcmUKLSAgICBpZiAoU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSA9PSBwYXJzZU1vZGUgJiYgIWlzU2ltcGxlUGFy
YW1ldGVyTGlzdCkgeworICAgIGlmICgoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9u
TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB8fCBw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkg
ewogICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGZ1bmN0aW9uTm9kZS0+
dXNlc1N1cGVyUHJvcGVydHkoKSkKICAgICAgICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1
bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAKQEAgLTYyNywxMiArNjUxLDQ2IEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVu
Y3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBl
biBiZWZvcmUgImluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlv
blNjb3BlU3RhY2soKSIgaXMgY2FsbGVkCiAgICAgLy8gYmVjYXVzZSBhIGZ1bmN0aW9uJ3MgZGVm
YXVsdCBwYXJhbWV0ZXIgRXhwcmVzc2lvbk5vZGVzIHdpbGwgdXNlIHRlbXBvcmFyeSByZWdpc3Rl
cnMuCiAgICAgcHVzaFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFREWkNo
ZWNrT3B0aW1pemF0aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFop
OworCisgICAgVHJ5RGF0YSogdHJ5Rm9ybWFsUGFyYW1ldGVyc0RhdGEgPSBudWxscHRyOworICAg
IGlmIChpc0FzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSkgJiYgIWlzU2lt
cGxlUGFyYW1ldGVyTGlzdCkgeworICAgICAgICBSZWZQdHI8TGFiZWw+IHRyeUZvcm1hbFBhcmFt
ZXRlcnNTdGFydCA9IGVtaXRMYWJlbChuZXdMYWJlbCgpLmdldCgpKTsKKyAgICAgICAgdHJ5Rm9y
bWFsUGFyYW1ldGVyc0RhdGEgPSBwdXNoVHJ5KHRyeUZvcm1hbFBhcmFtZXRlcnNTdGFydC5nZXQo
KSk7CisgICAgfQorCiAgICAgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1
cEZ1bmN0aW9uU2NvcGVTdGFjayhwYXJhbWV0ZXJzLCBpc1NpbXBsZVBhcmFtZXRlckxpc3QsIGZ1
bmN0aW9uTm9kZSwgZnVuY3Rpb25TeW1ib2xUYWJsZSwgc3ltYm9sVGFibGVDb25zdGFudEluZGV4
LCBjYXB0dXJlcywgc2hvdWxkQ3JlYXRlQXJndW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3Bl
KTsKLSAgICAKKworICAgIGlmIChpc0FzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNl
TW9kZSkgJiYgIWlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgeworICAgICAgICBSZWZQdHI8TGFiZWw+
IGRpZE5vdFRocm93ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXAoZGlkTm90VGhyb3cu
Z2V0KCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhjZXB0aW9uID0gbmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZSA9IG5ld1RlbXBv
cmFyeSgpOworICAgICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoSGVyZSA9IGVtaXRMYWJlbChuZXdM
YWJlbCgpLmdldCgpKTsKKyAgICAgICAgcG9wVHJ5QW5kRW1pdENhdGNoKHRyeUZvcm1hbFBhcmFt
ZXRlcnNEYXRhLCBleGNlcHRpb24uZ2V0KCksIHRocm93blZhbHVlLmdldCgpLCBjYXRjaEhlcmUu
Z2V0KCksIEhhbmRsZXJUeXBlOjpDYXRjaCk7CisKKyAgICAgICAgLy8gcmV0dXJuIEBQcm9taXNl
LkByZWplY3QodGhyb3duVmFsdWUpOworICAgICAgICBWYXJpYWJsZSBwcm9taXNlVmFyID0gdmFy
aWFibGUobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUHJvbWlzZVByaXZhdGVO
YW1lKCkpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBlbWl0UmVzb2x2ZVNj
b3BlKG5ld1RlbXBvcmFyeSgpLCBwcm9taXNlVmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHByb21pc2VDb25zdHJ1Y3RvciA9IGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5KCks
IHNjb3BlLmdldCgpLCBwcm9taXNlVmFyLCBSZXNvbHZlTW9kZTo6VGhyb3dJZk5vdEZvdW5kKTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb21pc2VSZWplY3QgPSBlbWl0R2V0QnlJZChu
ZXdUZW1wb3JhcnkoKSwgcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpLCBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgpKTsKKworICAgICAgICBDYWxs
QXJndW1lbnRzIGFyZ3MoKnRoaXMsIG51bGxwdHIsIDEpOworCisgICAgICAgIGVtaXRNb3ZlKGFy
Z3MudGhpc1JlZ2lzdGVyKCksIHByb21pc2VDb25zdHJ1Y3Rvci5nZXQoKSk7CisgICAgICAgIGVt
aXRNb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3RlcigwKSwgdGhyb3duVmFsdWUuZ2V0KCkpOworCisg
ICAgICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90KGZ1bmN0aW9uTm9kZS0+Zmlyc3RMaW5lKCksIGZ1
bmN0aW9uTm9kZS0+c3RhcnRPZmZzZXQoKSwgZnVuY3Rpb25Ob2RlLT5saW5lU3RhcnRPZmZzZXQo
KSk7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGVtaXRDYWxsKG5ld1Rl
bXBvcmFyeSgpLCBwcm9taXNlUmVqZWN0LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3Ms
IGRpdm90LCBkaXZvdCwgZGl2b3QsIERlYnVnZ2FibGVDYWxsOjpObyk7CisgICAgICAgIGVtaXRS
ZXR1cm4ocmVzdWx0LmdldCgpKTsKKworICAgICAgICBlbWl0TGFiZWwoZGlkTm90VGhyb3cuZ2V0
KCkpOworICAgIH0KKwogICAgIC8vIElmIHdlIGRvbid0IGhhdmUgIGRlZmF1bHQgcGFyYW1ldGVy
IGV4cHJlc3Npb24sIHRoZW4gbG9hZGluZyB8dGhpc3wgaW5zaWRlIGFuIGFycm93IGZ1bmN0aW9u
IG11c3QgYmUgZG9uZQogICAgIC8vIGFmdGVyIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFs
dWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2soKSBiZWNhdXNlIHRoYXQgZnVuY3Rpb24gc2V0
cyB1cCB0aGUKICAgICAvLyBTeW1ib2xUYWJsZSBzdGFjayBhbmQgZW1pdExvYWRUaGlzRnJvbUFy
cm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKSBjb25zdWx0cyB0aGUgU3ltYm9sVGFibGUg
c3RhY2sKLSAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSA9PSBwYXJz
ZU1vZGUgJiYgaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgaWYgKFNvdXJjZVBhcnNlTW9k
ZVNldChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSkgJiYgaXNTaW1wbGVQ
YXJhbWV0ZXJMaXN0KSB7CiAgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwg
ZnVuY3Rpb25Ob2RlLT51c2VzU3VwZXJQcm9wZXJ0eSgpKQogICAgICAgICAgICAgZW1pdExvYWRU
aGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICAKQEAgLTY0Miw3
ICs3MDAsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBG
dW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIAogICAgIC8vIFNldCB1cCB0
aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBz
dG9yZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMg
c2NvcGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCiAgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9s
IGtleWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwg
Y29kZS4KLSAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJz
ZU1vZGUpIHsKKyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2Rl
KHBhcnNlTW9kZSkpIHsKICAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0
ZXIpOwogICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0KCptX3ZtLCBmdW5j
dGlvblN5bWJvbFRhYmxlKTsKICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5k
ZXggPSBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7CkBAIC0yNjQ0LDYgKzI3MDIsMjEgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dFNldHRlckJ5VmFsKFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2V0dGVyLT5p
bmRleCgpKTsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEdlbmVyYXRvckZp
ZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCit7CisgICAgLy8gRklYTUU6IEN1cnJlbnRs
eSwgd2UganVzdCBjcmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBm
aWVsZHMgYXMgaXRzIHByb3BlcnRpZXMgZm9yIGVhc2UuCisgICAgLy8gQnV0IHRvIG1ha2UgaXQg
ZWZmaWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBjbGFzcywgYWRkIG9wY29k
ZSBuZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5zdGVhZCBvZiB0aGVzZSBw
cml2YXRlIHByb3BlcnRpZXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MTU0NQorCisgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdp
c3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRl
TmFtZSgpLCBuZXh0RnVuY3Rpb24sIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAg
ZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSgpLCAmbV90aGlzUmVnaXN0ZXIs
IFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9n
ZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clN0YXRlUHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpLCBQcm9w
ZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJh
dG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFt
ZVByaXZhdGVOYW1lKCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2Rl
OjpLbm93bkRpcmVjdCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
RGVsZXRlQnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5KQogewogICAgIGVtaXRPcGNvZGUob3BfZGVsX2J5X2lkKTsKQEAgLTI5
ODYsNiArMzA1OSwxMSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25F
eHByZXNzaW9uQ29tbW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3RpbwogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgogICAgICAgICBvcGNvZGVJ
RCA9IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6QXN5bmNNZXRob2RNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fy
cm93RnVuY3Rpb25Nb2RlOgorICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19hc3luY19mdW5jX2V4
cDsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMzAwNCw3ICszMDgyLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRO
ZXdGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXgKIAogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdp
c3RlcklEKiBkc3QsIEFycm93RnVuY0V4cHJOb2RlKiBmdW5jKQogewotICAgIEFTU0VSVChmdW5j
LT5tZXRhZGF0YSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlIHx8IGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSk7CisgICAgQVNTRVJUKFNvdXJjZVBhcnNlTW9kZVNl
dChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jQXJyb3dGdW5jdGlvbk1vZGUpLmNvbnRhaW5zKGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9k
ZSgpKSk7CiAgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMtPm1l
dGFkYXRhKCkpOwogICAgIHJldHVybiBkc3Q7CiB9CkBAIC0zMDM4LDYgKzMxMTYsOCBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRz
dCwgRnVuY3Rpb25NZXRhZGF0YQogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFk
ZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKICAgICBpZiAoZnVuY3Rpb24t
PnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9u
TW9kZSkKICAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworICAgIGVs
c2UgaWYgKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVu
Y3Rpb25Nb2RlKQorICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19hc3luY19mdW5jKTsKICAgICBl
bHNlCiAgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQ0YzFjOGU4ZWVhODhiMWMy
MGY0YTk1ZTQ1MzY5MmNjZGU0OWJmYmYuLmIzZWYwNDAxYjkyMDI1MDFjMmIzYWQwZmUyNWY5Njkw
ODIzNzAxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTU3Niw3ICs1NzYsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdFB1dEdldHRlclNldHRlcihSZWdpc3RlcklEKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgdW5zaWduZWQgYXR0cmlidXRlcywgUmVnaXN0ZXJJ
RCogZ2V0dGVyLCBSZWdpc3RlcklEKiBzZXR0ZXIpOwogICAgICAgICB2b2lkIGVtaXRQdXRHZXR0
ZXJCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgdW5zaWduZWQg
cHJvcGVydHlEZXNjcmlwdG9yT3B0aW9ucywgUmVnaXN0ZXJJRCogZ2V0dGVyKTsKICAgICAgICAg
dm9pZCBlbWl0UHV0U2V0dGVyQnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJv
cGVydHksIHVuc2lnbmVkIHByb3BlcnR5RGVzY3JpcHRvck9wdGlvbnMsIFJlZ2lzdGVySUQqIHNl
dHRlcik7Ci0gICAgICAgIAorCisgICAgICAgIC8vIEluaXRpYWxpemUgb2JqZWN0IHdpdGggZ2Vu
ZXJhdG9yIGZpZWxkcyAoQGdlbmVyYXRvclRoaXMsIEBnZW5lcmF0b3JOZXh0LCBAZ2VuZXJhdG9y
U3RhdGUsIEBnZW5lcmF0b3JGcmFtZSkKKyAgICAgICAgdm9pZCBlbWl0UHV0R2VuZXJhdG9yRmll
bGRzKFJlZ2lzdGVySUQqIG5leHRGdW5jdGlvbik7CisKICAgICAgICAgRXhwZWN0ZWRGdW5jdGlv
biBleHBlY3RlZEZ1bmN0aW9uRm9ySWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJik7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVu
YywgRXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGwpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0Q2FsbEluVGFpbFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywg
RXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCwgRGVidWdnYWJsZUNhbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGQzODdjZGY4MTUwMzg1
NDQxYTM0ZTk2M2Q2YjhhMjgwYWYwMzI0MDIuLmVmMmM1ZTYwMjRlNDE1NDQ0MTYyYmRmZDVmZWVl
YTg1MDU4NGNmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTM0MDIsMjUgKzM0MDIsNjQgQEAgdm9pZCBGdW5jdGlv
bk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKikKICAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgbmV4dC5nZXQo
KSwgaG9tZU9iamVjdC5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogQ3Vy
cmVudGx5LCB3ZSBqdXN0IGNyZWF0ZSBhbiBvYmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciByZWxh
dGVkIGZpZWxkcyBhcyBpdHMgcHJvcGVydGllcyBmb3IgZWFzZS4KLSAgICAgICAgLy8gQnV0IHRv
IG1ha2UgaXQgZWZmaWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBjbGFzcywg
YWRkIG9wY29kZSBuZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5zdGVhZCBv
ZiB0aGVzZSBwcml2YXRlIHByb3BlcnRpZXMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRH
ZW5lcmF0b3JGaWVsZHMobmV4dC5nZXQoKSk7CiAKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJl
Y3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSgpLCBuZXh0
LmdldCgpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICAgICAgQVNTRVJUKHN0YXJ0
T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxp
bmVTdGFydE9mZnNldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9y
LmdlbmVyYXRvclJlZ2lzdGVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CiAKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rlcigp
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclRoaXNQ
cml2YXRlTmFtZSgpLCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIFByb3BlcnR5Tm9kZTo6S25v
d25EaXJlY3QpOworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgorICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAg
ICBBU1NFUlQoc2luZ2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAgIEV4
cHJTdGF0ZW1lbnROb2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVu
dE5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwciA9
IGV4cHJTdGF0ZW1lbnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4cHJO
b2RlKCkpOworICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RnVu
Y0V4cHJOb2RlKj4oZXhwcik7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogaW5pdGlhbFN0YXRlID0g
Z2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKDApKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5l
cmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0
ZU5hbWUoKSwgaW5pdGlhbFN0YXRlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShuZXh0LmdldCgpLCBmdW5jRXhwcik7CiAKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rl
cigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZy
YW1lUHJpdmF0ZU5hbWUoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwg
UHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisgICAgICAgIGlmIChnZW5lcmF0b3Iuc3VwZXJC
aW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQgfHwgZ2VuZXJhdG9yLnBhcnNlTW9kZSgp
ID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkgeworICAgICAgICAg
ICAgLy8gRklYTUU6IERvbid0IGFsd2F5cyBsb2FkIGhvbWUgb2JqZWN0IGZvciBhc3luYyBhcnJv
d3MKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhvbWVP
YmplY3RGb3JDYWxsZWUoZ2VuZXJhdG9yKTsKKyAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0
KGdlbmVyYXRvciwgbmV4dC5nZXQoKSwgaG9tZU9iamVjdC5nZXQoKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhuZXh0LmdldCgpKTsKIAog
ICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUo
KSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisKKyAgICAgICAgLy8g
bG9hZCBAYXN5bmNGdW5jdGlvblJlc3VtZSwgYW5kIGNhbGwuCisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzdGFydEFzeW5jRnVuY3Rpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Cisg
ICAgICAgIGF1dG8gdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkuYXN5bmNGdW5jdGlvblJlc3VtZVByaXZhdGVOYW1lKCkpOwor
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoc2NvcGUu
Z2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXIpKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoc3RhcnRBc3luY0Z1bmN0aW9uLmdldCgp
LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworCisgICAgICAgIC8vIHJldHVy
biBAYXN5bmNGdW5jdGlvblJlc3VtZS5AY2FsbCh0aGlzLCBAZ2VuZXJhdG9yLCBAdW5kZWZpbmVk
LCBHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKQorICAgICAgICBDYWxsQXJndW1lbnRz
IGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAzKTsKKyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRD
b3VudCA9IDA7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLnRoaXNSZWdpc3Rlcigp
LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGFyZ3MuYXJndW1l
bnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIo
KSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJn
dW1lbnRDb3VudCsrKSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TG9h
ZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSkpKTsKKyAgICAgICAgLy8gSlNUZXh0UG9zaXRpb24oaW50IF9saW5lLCBpbnQg
X29mZnNldCwgaW50IF9saW5lU3RhcnRPZmZzZXQpCisgICAgICAgIEpTVGV4dFBvc2l0aW9uIGRp
dm90KGZpcnN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CisKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9zaXRpb24ocmVzdWx0LmdldCgp
LCBzdGFydEFzeW5jRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgZGl2
b3QsIGRpdm90LCBkaXZvdCwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRSZXR1cm4ocmVzdWx0LmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlOgorICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6CiAgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAgIFJlZlB0cjxMYWJlbD4g
Z2VuZXJhdG9yQm9keUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA1NDJhNDcxM2Y1MmQ1YTlmYTljNjNlNTZlMDE2
ZTIyMzA1YThhZGY2Li40OWIxYTg2ZWQxNWFmNDFhZmFhOWU3ZDEzYjg4YTVjNDQ3Nzg5YmZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yOTksNiArMjk5LDggQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNf
ZXhwKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jKQogICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKKyAgICAgICAgREVGSU5FX09QKG9w
X25ld19hc3luY19mdW5jKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FzeW5jX2Z1bmNfZXhw
KQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9w
X25ld19yZWdleHApCiAgICAgICAgIERFRklORV9PUChvcF9ub3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAppbmRleCAwNWRlMjhjZTFlZDY3MGI1MWZlYjhmNTNjMzlhNGZmNTQ0OTI4ZTRhLi42ZDIw
MjQ5Mzg3YjI5MWFiZWJkZmE5ZmJiNzQ3ZGE4MjcwNWY2ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKQEAgLTU0NCw2ICs1NDQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9uZXdfYXN5bmNfZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3
X2FzeW5jX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
b2JqZWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9ub3QoSW5zdHJ1Y3Rpb24qKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGI5MDFiYjQ2MzEwNjAw
MTIwZTExZjg0ZTFlY2E5Y2I2MjY3NDliOGQuLjlmOTlhYmE5Y2Y5OWVjZDI5YTAyOWQ4MTQ0MmJh
OGUyZmVlZjQwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApA
QCAtOTcxLDkgKzk3MSwxMSBAQCB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKICAg
ICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmMpCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxz
ZSBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKQogICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhl
Yyk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfYXN5bmNf
ZnVuYyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbiwg
ZHN0LCByZWdUMCwgZnVuY0V4ZWMpOwogICAgIH0KIH0KIApAQCAtOTg3LDYgKzk4OSwxMSBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwog
fQogCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlv
bik7Cit9CisKIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKdW1wIG5vdFVuZGVmaW5lZFNjb3BlOwpAQCAtMTAw
OCw5ICsxMDE1LDExIEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVu
Y19leHApCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwg
cmVnVDAsIGZ1bmN0aW9uKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG9wY29kZUlEID09
IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHApOworICAgIGVsc2UgaWYgKG9wY29kZUlEID09IG9w
X25ld19nZW5lcmF0b3JfZnVuY19leHApCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
TmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19hc3luY19mdW5jX2V4cCk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbiwgZHN0LCByZWdUMCwg
ZnVuY3Rpb24pOwogICAgIH0KIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTEwMjYsNiArMTAz
NSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJl
bnRJbnN0cnVjdGlvbik7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jX2V4
cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhw
ckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdf
YXJyYXkoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDhmOGQ0YWQzNDUzZmQ0NmIwMzA0MzJiMzE5YzA2
M2IwMzI5YzM5NTQuLmViZDc3Y2QwMzg2OGJkYzFmYjhhYWJhZTBmYmY5M2QwZTc2MWRhYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDgsNiAr
NDgsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNp
bmNsdWRlICJKSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUg
IkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
aCIKQEAgLTExNzAsNiArMTE3MSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvYwogICAgIHJl
dHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0dlbmVyYXRvckZ1bmN0aW9uPihleGVj
LCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVy
biBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jRnVuY3Rpb24+KGV4ZWMsIHNjb3Bl
LCBmdW5jdGlvbkV4ZWN1dGFibGUsIGZhbHNlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0
aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1
bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21t
b248SlNBc3luY0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVl
KTsKK30KKwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZShFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogZnVuY0NlbGwsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWROYW1l
KQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAppbmRleCBhZGZlZjc4YzZmMDBjNTAzZDA2ZmJmODY3NjU2ODdlN2Rj
MTQzYzI0Li5kYjViYTg5NjVhN2E1MDFiYTM1MjdhYTY1NDg4NWU2Y2YzZGQ5NTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzc1LDYgKzM3NSw4IEBA
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0
YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChF
eGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRF
Uk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXN5bmNGdW5j
dGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uV2l0aEludmFs
aWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxs
KikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldEZ1bmN0aW9u
TmFtZShFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld1JlZ2V4cChFeGVjU3RhdGUqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggODc1ODI1MWZh
NGExZDQ5ZjkxMDBiZWJlYzA4ODY1YmQ0MTJkN2RmNS4uZjU4ZjRmOTY2ZWE3NzQzYmZjNGVjODA3
YzExZWYzYWI0ZGQ0MjliYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5j
bHVkZSAiSklURXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCisjaW5jbHVk
ZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0xMTQ5
LDYgKzExNTAsMTcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0
b3JfZnVuYykKICAgICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBzY29wZSkpOwogfQog
CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJh
bmQpLlJlZ2lzdGVyOjpzY29wZSgpOworI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCisgICAg
ZGF0YUxvZ0YoIkNyZWF0aW5nIGFzeW5jIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAgICBMTElO
VF9SRVRVUk4oSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25E
ZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTExNzEs
NiArMTE4MywxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cCkKICAgICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbmV3X2FzeW5jX2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgCisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3Bl
KiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2Nv
cGUoKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1
bmN0aW9uRXhwcihwY1szXS51Lm9wZXJhbmQpOworICAgIAorICAgIExMSU5UX1JFVFVSTihKU0Fz
eW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKK30KKwogTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKQogewogICAgIExMSU5U
X0JFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5o
CmluZGV4IDk4NGU5Y2M0MDMwMzI3OWFhNzAyZGY4ZmViNzg4YzNiOGI5NjA1MGUuLmQ3NjEzOGMx
MjQ0ZmY3YWFmNDgzZDA4MDNhZDViYjgxMTdlYTc5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCkBAIC0xMDMsNiArMTAzLDggQEAgTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApOworTExJTlRfU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuYyk7CitMTElOVF9TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hc3luY19mdW5jX2V4cCk7CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY2FsbCk7CiBMTElOVF9TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNTYwZGYzZWNhYjgy
ZGE4MmIyN2Y0NDM2MjRkMGZkZThlNTAxY2U5ZS4uNjQ0NWE0N2NlZGE5YTVjZjc1OWExNmUxNzJj
M2JkODQ2YWI5ZGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTMyMSw2ICsxMzIxLDEyIEBAIF9sbGludF9vcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmM6CiAgICAgZGlzcGF0Y2goNCkKIAogCitfbGxpbnRfb3BfbmV3X2Fz
eW5jX2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX25ld19hc3luY19mdW5jKQorICAgIGRpc3BhdGNoKDQpCisKKwogX2xsaW50X29w
X25ld19hcnJheToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbE9wY29kZVNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbmV3X2FycmF5KQpAQCAtMTU5OSw2ICsxNjA1LDEyIEBAIF9sbGlu
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApCiAgICAgZGlzcGF0Y2goNCkKIAor
X2xsaW50X29wX25ld19hc3luY19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmNfZXhwKQorICAgIGRp
c3BhdGNoKDQpCisKKwogX2xsaW50X29wX3NldF9mdW5jdGlvbl9uYW1lOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9zZXRfZnVu
Y3Rpb25fbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA0
OTA4ODQxNTExZTJmNDAxNzczYjIwZmNlNjhmNTgzOTc2ZjZkMGExLi4yYjUyZTMyZDgxMzNlNjcw
ZmVkMjU4NzE4NDQ1NzdhMDFhZTRjODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCkBAIC0yNjEsNyArMjYxLDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gcGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUgJiYgIW1hdGNoKE9QRU5CUkFD
RSk7CiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQ
YXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwotICAgICAgICBpZiAo
U291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpLmNv
bnRhaW5zKHBhcnNlTW9kZSkgfHwgaXNBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1v
ZGUpKQorICAgICAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2Rl
KHBhcnNlTW9kZSkpCiAgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJz
KGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKQEAgLTU2OCwxMSArNTY4LDE4IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUFzeW5jRnVuCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYg
YXN5bmNGdW5jdGlvbkJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CiAgICAgICAgIGFzeW5j
RnVuY3Rpb25Cb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShpbm5lclBhcnNlTW9kZSk7Ci0g
ICAgICAgIFN5bnRheENoZWNrZXIgYXN5bmNGdW5jdGlvbkNvbnRleHQoY29uc3RfY2FzdDxWTSo+
KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKLSAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKQotICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VBcnJvd0Z1bmN0aW9uU2lu
Z2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhhc3luY0Z1bmN0aW9uQ29udGV4dCksICJD
YW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgYXJyb3cgZnVuY3Rpb24iKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhhc3luY0Z1
bmN0aW9uQ29udGV4dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgZnVu
Y3Rpb24iKTsKKyAgICAgICAgU3ludGF4Q2hlY2tlciBzeW50YXhDaGVja2VyKGNvbnN0X2Nhc3Q8
Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25C
b2R5RXhwcmVzc2lvbikgeworICAgICAgICAgICAgaWYgKG1fZGVidWdnZXJQYXJzZURhdGEpCisg
ICAgICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVz
c2lvbkJvZHlTb3VyY2VFbGVtZW50cyhjb250ZXh0KSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBv
ZiBhc3luYyBhcnJvdyBmdW5jdGlvbiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291
cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5
bmMgYXJyb3cgZnVuY3Rpb24iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICht
X2RlYnVnZ2VyUGFyc2VEYXRhKQorICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291
cmNlRWxlbWVudHMoY29udGV4dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5
bmMgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmYWlsSWZG
YWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIG1vZGUpLCAiQ2Fubm90IHBh
cnNlIHRoZSBib2R5IG9mIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgICAgIH0KICAgICAgICAgcG9w
U2NvcGUoYXN5bmNGdW5jdGlvbkJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlh
YmxlSW5mbyk7CiAgICAgfQogICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25N
ZXRhZGF0YShzdGFydExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tl
bkNvbHVtbigpLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3VwZXJC
aW5kaW5nLCBpbmZvLnBhcmFtZXRlckNvdW50LCBpbmZvLmZ1bmN0aW9uTGVuZ3RoLCBpbm5lclBh
cnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwpAQCAtMjM0MSw3ICsyMzQ4
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rp
b25Cb2R5KGNvbnRleHQsIHN5bnRheENoZWNrZXIsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1u
LCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFy
dCwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywgZnVuY3Rpb25Cb2R5VHlw
ZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBmdW5jdGlvbkluZm8uZnVuY3Rpb25MZW5n
dGgsIG1vZGUpOwogICAgIH07CiAKLSAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgfHwgaXNBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNl
TW9kZShtb2RlKSkgeworICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbldyYXBwZXJQ
YXJzZU1vZGUobW9kZSkpIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlT
Y29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBpbm5lclBh
cnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU7CiAgICAgICAgIGlm
IChpc0FzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKG1vZGUpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA4YzQ0NzRiMDk5MzM3MmU3NDI0NjAxZGI5YWEwNjQ0
NWRmOTM3ZWQ4Li4zYTE2Zjc2YWFkMDUyNDdjZDYxNjFiYmRhOGFmMzFkZWY4NjQyNzRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTI0NSw3ICsyNDUsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNGdW5jdGlvbkJvZHlNb2RlOgotICAgICAgICAgICAgc2V0SXNBc3luY0Fycm93RnVuY3Rp
b25Cb2R5KCk7CisgICAgICAgICAgICBzZXRJc0FzeW5jRnVuY3Rpb25Cb2R5KCk7CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9k
eU1vZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1v
ZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXgg
YTBkNzQwNDk0MTVlNGI4NDczNTYyZTM2ZTYyMjBkMzBjZTUxYmE2YS4uNmRhODgzN2EzNzk0MTcy
YjRjNTU2YjM3ZDIzZjk5NzZlZTZmMGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyTW9kZXMuaApAQCAtMTQ4LDYgKzE0OCwzMiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNNZXRob2RQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICAgICAgU291
cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7CiB9CiAK
K0FMV0FZU19JTkxJTkUgYm9vbCBpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1v
ZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKK3sKKyAgICByZXR1cm4gU291cmNlUGFyc2VN
b2RlU2V0KAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlLAorICAg
ICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZSwKKyAgICAgICAgU291
cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMocGFyc2VN
b2RlKTsKK30KKworQUxXQVlTX0lOTElORSBib29sIGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9u
V3JhcHBlclBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHJldHVy
biBTb3VyY2VQYXJzZU1vZGVTZXQoCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
V3JhcHBlckZ1bmN0aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0
aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2Rl
LAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZSkuY29udGFpbnMocGFy
c2VNb2RlKTsKK30KKworQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9k
ZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHJldHVybiBTb3VyY2VQYXJzZU1v
ZGVTZXQoCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsCisgICAg
ICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSwKKyAgICAgICAgU291
cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMocGFyc2VN
b2RlKTsKK30KKworCiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNb2R1bGVQYXJzZU1vZGUoU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkgCiB7IAogICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQo
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBkMTUyZWMyN2Y4OWRhYzliNDUzZTg4
MDliNjUyNDg1Y2E1YzE1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw3NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3RvcikgfTsKKworQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rp
b24odm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBl
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiQXN5bmNGdW5jdGlvbiIpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIHByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAg
Ly8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwg
UmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+
Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
OjpBc3luYykpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFy
Z0xpc3QgYXJncyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1
bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9i
amVjdCgpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7Cit9CisKK0Nh
bGxUeXBlIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxB
c3luY0Z1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworfQor
CitDb25zdHJ1Y3RUeXBlIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0
YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
OworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM1YTJjMWU0ZjkxNWNhYzBiNGIxNzczZTZk
MDU4OWUyNzQ3NDdkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU7CisKK2Ns
YXNzIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIERFQ0xB
UkVfSU5GTzsKKworICAgIHN0YXRpYyBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBhc3luY0Z1
bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKwor
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSopOworICAgIHN0
YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0
YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYp
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZi
MWYwZTEwNmVlNjcxMzZlOTI3MDFkNjhjMzlkOTViMmZjNDg2NTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNw
cApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90
dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5F
eGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0
cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgQ2xhc3NJbmZvIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkFzeW5j
RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUpIH07CisKK0FzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OkFzeW5j
RnVuY3Rpb25Qcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpT
Qzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9s
LCBqc1N0cmluZygmdm0sICJBc3luY0Z1bmN0aW9uIiksIERvbnRFbnVtIHwgUmVhZE9ubHkpOwor
ICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMDFlNmI4ZmQ1ODk4YTIyMWUwNjJhNzhm
M2VhNjBkZWE3OWE4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7
CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgQXN5bmNGdW5jdGlvblByb3RvdHlw
ZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBB
c3luY0Z1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBc3luY0Z1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgQXN5bmNGdW5jdGlvblByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2
bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKFZNJiwg
U3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZDJm
MzM1MmQ2MDY4YjExOWZlMDQ5MzEwYzkzODg2N2YyNzk4YjUxMi4uMzI0YmRkYzNlNWIzYTYzNDE4
Y2ZkMDI4MTNkMjQ0YzhiNzYyZmNjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAog
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKQEAgLTkzLDE4ICs5NCwzMiBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKKyAgICBjb25zdCBjaGFyKiBw
cmVmaXggPSBudWxscHRyOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbnVsbHB0cjsKKyAg
ICBzd2l0Y2ggKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkgeworICAgIGNhc2UgRnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbjoKKyAgICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2Jq
ZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpOworICAgICAgICBwcmVmaXggPSAie2Z1bmN0aW9uICI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5l
cmF0b3I6CisgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgcHJlZml4ID0gIntmdW5jdGlvbiAqIjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jOgorICAgICAg
ICBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAg
ICAgICAgcHJlZml4ID0gInthc3luYyBmdW5jdGlvbiAiOworICAgIH0KKwogICAgIC8vIEhvdyB3
ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21w
YXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgp
KQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciA/ICIq
IiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7CisgICAgICAgIHBy
b2dyYW0gPSBtYWtlU3RyaW5nKHByZWZpeCwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xu
XG59fSIpOwogICAgIGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0g
PSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yID8gIioiIDogIiIsIGZ1bmN0aW9uTmFt
ZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpLCAiXG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZyhwcmVmaXgsIGZ1bmN0
aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVsc2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie2Z1bmN0aW9uICIpOwotICAg
ICAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZTo6R2VuZXJhdG9yKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyonKTsKKyAgICAg
ICAgYnVpbGRlci5hcHBlbmQocHJlZml4KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rp
b25OYW1lLnN0cmluZygpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJygnKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKS5nZXQo
KSk7CkBAIC0xMjYsMTIgKzE0MSwxNyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lw
cGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3Ry
dWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywg
bmV3VGFyZ2V0LCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlOjpHZW5lcmF0b3IgPyBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlKCkgOiBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVy
ZSogc3ViY2xhc3NTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0
cnVjdHVyZShleGVjLCBuZXdUYXJnZXQsIHN0cnVjdHVyZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
ID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKQorICAgIHN3aXRjaCAoZnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKSB7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1v
ZGU6OkZ1bmN0aW9uOgorICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5j
dGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7Cisg
ICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcjoKICAgICAgICAgcmV0
dXJuIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVj
dC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOwotICAgIHJldHVybiBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIHN1
YmNsYXNzU3RydWN0dXJlKTsKKyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5
bmM6CisgICAgICAgIHJldHVybiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24s
IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOworICAgIH0K
IH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXgg
MzFjMzNkNmFmNGZmMTJiYzI0YzFlMmI1YmY0ZTU1NThkNzY1NjkwNi4uZGVlZTlhNTVkNmYyYzYx
ZTlmNzE0NDgzYjMxYWJkNTdmYjFjYWU1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2
YXRlOgogZW51bSBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgewogICAgIEZ1bmN0aW9u
LAogICAgIEdlbmVyYXRvciwKKyAgICBBc3luYywKIH07CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25z
dCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25z
dCBXVEY6OlRleHRQb3NpdGlvbiYsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZTo6RnVuY3Rpb24sIEpTVmFsdWUgbmV3VGFyZ2V0ID0gSlNWYWx1ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFiYTc0MzcyM2JkYzdmYWVlZmY2MjUxZTJmZjJhMmRkYzY0MjhlNzkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5j
RnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
Q2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJv
ci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRl
ICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXN5bmNGdW5j
dGlvbjo6c19pbmZvID0geyAiQXN5bmNGdW5jdGlvbiIsICAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQXN5bmNGdW5jdGlvbikgfTsKKworSlNBc3luY0Z1bmN0
aW9uOjpKU0FzeW5jRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0s
IGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0pTQXN5bmNGdW5jdGlvbiog
SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAg
SlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SlNBc3luY0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNBc3luY0Z1bmN0aW9uKHZtLCBleGVjdXRh
YmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBBU1NFUlQoYXN5bmNGdW5jdGlvbi0+c3RydWN0
dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICBhc3luY0Z1bmN0aW9uLT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcmV0dXJuIGFzeW5jRnVuY3Rpb247Cit9CisKK0pTQXN5bmNGdW5jdGlvbiog
SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5bmNGdW5j
dGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2Jq
ZWN0KCktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xl
dG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGFzeW5jRnVuY3Rpb24sICJBbGxvY2F0aW5n
IGFuIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIGFzeW5jRnVuY3Rpb247Cit9CisKK0pT
QXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKK3sKKyAgICBKU0FzeW5jRnVuY3Rpb24qIGFzeW5jRnVuY3Rpb24gPSBjcmVhdGVJbXBsKHZt
LCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0
b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgYXN5bmNGdW5jdGlvbiwgIkFsbG9jYXRpbmcg
YW4gYXN5bmMgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gYXN5bmNGdW5jdGlvbjsKK30KKworSlNB
c3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IEpTU2NvcGUqIHNjb3BlKQoreworICAgIHJldHVybiBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxl
LCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5hc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkp
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fz
eW5jRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5j
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZGE4N2RiNmQzODVhNzlkNTU3NmMxYjcyYTEzNGNhM2UyMWJm
MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fz
eW5jRnVuY3Rpb24uaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBKU0FzeW5jRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNsYXNz
IEpJVDsKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0
aW9uIEJhc2U7CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBz
dGF0aWMgSlNBc3luY0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBK
U1Njb3BlKik7CisgICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rp
b25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBKU0FzeW5j
RnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0m
LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGFs
bG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIHJldHVy
biBzaXplb2YoSlNBc3luY0Z1bmN0aW9uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOwor
ICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0FzeW5jRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1
dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CisKKyAgICBzdGF0aWMgSlNBc3luY0Z1bmN0
aW9uKiBjcmVhdGVJbXBsKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVj
dHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZjQ4Y2JjZjA5MTMyY2FhNjdl
YzcxZjU3NTE0OTAwYzhlY2UwMjgwYi4uYzRjM2NlMGM5OWQ3YTQxY2Y3MzdmZGU1ZDdmYWQ1YmRh
YzZmNzExYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQXJyYXlQ
cm90b3R5cGUuaCIKKyNpbmNsdWRlICJBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNs
dWRlICJBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQm9vbGVhbkNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5O
YW1lcy5oIgpAQCAtNjMsNiArNjUsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNp
bmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVm
ZmVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtNTg1LDYgKzU4OCw4IEBAIG1fICMjIHByb3Blck5h
bWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoCiAgICAgbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLnNldCh2bSwgdGhpcywgdGhy
b3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3Ig
PSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5zZXQodm0s
IHRoaXMsIChGdW5jdGlvbkNvbnN0cnVjdG9yKilmdW5jdGlvbkNvbnN0cnVjdG9yKTsKKwogICAg
IEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpj
cmVhdGUodm0sIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCksIG1f
c3BlY2llc0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgCkBAIC02MzAsNyArNjM1LDE3IEBAIG1f
ICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jCiAKICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS0+cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBt
X2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpLCBEb250RW51bSB8IFJlYWRPbmx5KTsK
ICAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtX2dlbmVyYXRvclByb3RvdHlw
ZS5nZXQoKSwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgCisKKyAgICBtX2FzeW5jRnVuY3Rp
b25TdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBbXShMYXp5Q2xhc3NTdHJ1Y3R1cmU6Oklu
aXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBh
c3luY0Z1bmN0aW9uUHJvdG90eXBlID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKGlu
aXQudm0sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBp
bml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAg
ICAgICAgICAgIGluaXQuc2V0UHJvdG90eXBlKGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworICAg
ICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQucHJvdG90eXBlKSk7CisgICAgICAgICAgICBp
bml0LnNldENvbnN0cnVjdG9yKFByb3BlcnR5TmFtZShudWxscHRyKSwgQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0aW9u
Q29uc3RydWN0b3IuZ2V0KCkpLCBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKSk7CisKKyAgICAgICAg
ICAgIGluaXQuZ2xvYmFsLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihpbml0LnZtLCBpbml0
LnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFzeW5jRnVuY3Rpb25SZXN1bWVQcml2
YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oaW5pdC52bSwgYXN5
bmNGdW5jdGlvblByb3RvdHlwZUFzeW5jRnVuY3Rpb25SZXN1bWVDb2RlR2VuZXJhdG9yKGluaXQu
dm0pLCBpbml0Lmdsb2JhbCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAg
ICAgICAgfSk7CisKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3Rv
ciwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25z
dHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fYXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgYXJyYXlDb25z
dHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMTEwMiw2ICsxMTE3LDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIudmlzaXQodmlzaXRv
cik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JBcmd1
bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fb2JqZWN0UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9mdW5jdGlvblByb3RvdHlwZSk7CkBAIC0xMTEwLDYgKzExMjYsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b3R5cGUpOwog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JQcm90b3R5
cGUpOworICAgIHRoaXNPYmplY3QtPm1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNp
dG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXJQcm90
b3R5cGUpOwogCiAgICAgdGhpc09iamVjdC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKaW5kZXggNDA4NDZjZTI5N2I0N2MyODVlYzQwOTFjZDczNDAyOTVjMDZkYTVmMC4uMmRk
NDQxNjlkMWYxY2MwOGJhYzYxN2ViNzViMjQwZjAzNjU2MzJjOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01Niw2ICs1Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBBcnJheUNvbnN0cnVjdG9yOwogY2xhc3MgQXJyYXlQcm90
b3R5cGU7CitjbGFzcyBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgQm9vbGVhblByb3Rv
dHlwZTsKIGNsYXNzIENvbnNvbGVDbGllbnQ7CiBjbGFzcyBEZWJ1Z2dlcjsKQEAgLTYzLDYgKzY0
LDcgQEAgY2xhc3MgRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNzIEVycm9yUHJvdG90eXBlOwogY2xh
c3MgRXZhbENvZGVCbG9jazsKIGNsYXNzIEV2YWxFeGVjdXRhYmxlOworY2xhc3MgRnVuY3Rpb25D
b25zdHJ1Y3RvcjsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgR2VuZXJhdG9yUHJv
dG90eXBlOwogY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CkBAIC0yMzMsNiArMjM1
LDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgTmF0aXZlRXJy
b3JDb25zdHJ1Y3Rvcj4gbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmll
cjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklF
cnJvckNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBt
X2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9y
PiBtX29iamVjdENvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxBcnJheUNvbnN0cnVjdG9y
PiBtX2FycmF5Q29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVj
dG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKQEAgLTMwNiw2ICszMDksNyBAQCBwdWJsaWM6CiAg
ICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9hc3lu
Y0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJh
dG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xs
YXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVz
dWx0T2JqZWN0U3RydWN0dXJlOwpAQCAtNTI3LDYgKzUzMSwxOSBAQCBwdWJsaWM6CiAgICAgR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQogICAgIEdl
bmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9n
ZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAorICAgIExhenlDbGFzc1N0cnVjdHVyZSYgbGF6
eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXN5bmNG
dW5jdGlvblN0cnVjdHVyZTsKKyAgICB9CisgICAgY29uc3QgTGF6eUNsYXNzU3RydWN0dXJlJiBs
YXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOworICAgIH0KKyAgICBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxBc3luY0Z1bmN0aW9uUHJvdG90eXBlKj4obGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUo
KS5wcm90b3R5cGUodGhpcykpOyB9CisgICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNG
dW5jdGlvblByb3RvdHlwZUNvbmN1cnJlbnRseSgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8QXN5bmNGdW5jdGlvblByb3RvdHlwZSo+KGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJl
KCkucHJvdG90eXBlQ29uY3VycmVudGx5KCkpOyB9CisgICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0
aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUo
KS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25j
dXJyZW50bHkoKSBjb25zdCB7IHJldHVybiBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLmdl
dENvbmN1cnJlbnRseSgpOyB9CisKICAgICBTdHJ1Y3R1cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9
CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dp
dGhTY29wZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2YWxB
Y3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZhdGlv
blN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCA4Nzg5NDQ1NzUzM2Q0YWVjMGMxOTFiN2ZkMTA3YWY1NWViNmNm
MmQzLi4wZDE1MWUwYTVkM2FjZWI4NDU0Mjg0M2Q4YTRjZmI0ZDlmNGJhNzJlIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
MCBAQAorMjAxNi0xMC0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtKU0NdIGltcGxlbWVudCBydW50aW1lIGZvciBhc3luYyBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mzc2MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FzeW5j
LWF3YWl0LWJhc2ljLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNo
b3VsZEJlQXN5bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhy
b3dBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKGxl
dC5Bc3luY0Z1bmN0aW9uLmFzeW5jKToKKyAgICAgICAgKGFzeW5jLmFzeW5jRnVuY3Rpb25Gb3JQ
cm90byk6CisgICAgICAgIChPYmplY3QuZ2V0UHJvdG90eXBlT2YuYXN5bmMpOgorICAgICAgICAo
T2JqZWN0LmdldFByb3RvdHlwZU9mLmFzeW5jLm1ldGhvZCk6CisgICAgICAgIChhc3luYyk6Cisg
ICAgICAgIChhc3luYy5tZXRob2QpOgorICAgICAgICAoYXN5bmMuYXN5bmNOb25Db25zdHJ1Y3Rv
ckRlY2wpOgorICAgICAgICAoc2hvdWxkVGhyb3cubmV3LmFzeW5jKToKKyAgICAgICAgKHNob3Vs
ZFRocm93Lm5ldy5hc3luYy5ub25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChhc3luYy5hc3luY0Rl
Y2wpOgorICAgICAgICAoYXN5bmMuZik6CisgICAgICAgIChNeUVycm9yKToKKyAgICAgICAgKGFz
eW5jLmFzeW5jRGVjbFRocm93ZXIpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYy5hc3luYyk6
CisgICAgICAgIChyZXNvbHZlTGF0ZXIpOgorICAgICAgICAocmVqZWN0TGF0ZXIpOgorICAgICAg
ICAoYXN5bmMucmVzdW1lQWZ0ZXJOb3JtYWwpOgorICAgICAgICAoTy5hc3luYy5yZXN1bWVBZnRl
ck5vcm1hbCk6CisgICAgICAgIChyZXN1bWVBZnRlck5vcm1hbEFycm93LmFzeW5jKToKKyAgICAg
ICAgKGFzeW5jLnJlc3VtZUFmdGVyVGhyb3cpOgorICAgICAgICAoTy5hc3luYy5yZXN1bWVBZnRl
clRocm93KToKKyAgICAgICAgKHJlc3VtZUFmdGVyVGhyb3dBcnJvdy5hc3luYyk6CisgICAgICAg
IChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13
b3JkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKFN5bnRheEVy
cm9yLkNhbnN0cmluZ19hcHBlYXJlZF9oZXJlYXdhaXQuY2hlY2tNb2R1bGVTeW50YXhFcnJvci5T
dHJpbmcucmF3LmF3YWl0KToKKyAgICAgICAgKGNoZWNrTW9kdWxlU3ludGF4RXJyb3IuU3RyaW5n
LnJhdy5hd2FpdCk6CisgICAgICAgIChjaGVja01vZHVsZVN5bnRheEVycm9yLlN0cmluZy5yYXcu
YXN5bmMuYXdhaXQpOgorICAgICAgICAoU3ludGF4RXJyb3IuQ2Fubm90LmRlY2xhcmUubmFtZWQp
OgorICAgICAgICAqIHN0cmVzcy9hc3luYy1hd2FpdC1tb3ppbGxhLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoc2hvdWxk
VGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChhc3NlcnQpOgor
ICAgICAgICAoc2hvdWxkVGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgIChtb3pTZW1hbnRpY3Mu
YXN5bmMuZW1wdHkpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZVJldHVybik6
CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuc2ltcGxlQXdhaXQpOgorICAgICAgICAobW96
U2VtYW50aWNzLmFzeW5jLnNpbXBsZUF3YWl0QXN5bmMpOgorICAgICAgICAobW96U2VtYW50aWNz
LmFzeW5jLnJldHVybk90aGVyQXN5bmMpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNp
bXBsZVRocm93ZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmRlbGVnYXRlZFRocm93
ZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnRyeUNhdGNoKToKKyAgICAgICAgKG1v
elNlbWFudGljcy5hc3luYy50cnlDYXRjaFRocm93KToKKyAgICAgICAgKG1velNlbWFudGljcy5h
c3luYy53ZWxsRmluYWxseSk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZmluYWxseU1h
eUZhaWwpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmVtYmVkZGVkLmFzeW5jLmlubmVy
KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5lbWJlZGRlZCk6CisgICAgICAgIChtb3pT
ZW1hbnRpY3MuYXN5bmMuZmliKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5pc09kZC5h
c3luYy5pc0V2ZW4pOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmlzT2RkKToKKyAgICAg
ICAgKG1velNlbWFudGljcy5oYXJkY29yZUZpYi5hc3luYy5maWIyKToKKyAgICAgICAgKG1velNl
bWFudGljcy5uYW1lZEFzeW5jRXhwci5hc3luYy5zaW1wbGUpOgorICAgICAgICAobW96U2VtYW50
aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFzeW5jLmZpcnN0KToKKyAgICAgICAgKG1velNlbWFu
dGljcy5hc3luYy5leGVjdXRpb25PcmRlci5hc3luYy5zZWNvbmQpOgorICAgICAgICAobW96U2Vt
YW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFzeW5jLnRoaXJkKToKKyAgICAgICAgKG1velNl
bWFudGljcy5hc3luYy5leGVjdXRpb25PcmRlcik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5
bmMubWlzY2VsbGFuZW91cyk6CisgICAgICAgIChtb3pTZW1hbnRpY3MudGhyb3dlcik6CisgICAg
ICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZGVmYXVsdEFyZ3MpOgorICAgICAgICAobW96U2VtYW50
aWNzLnNob3VsZFRocm93KToKKyAgICAgICAgKG1velNlbWFudGljcyk6CisgICAgICAgIChtb3pN
ZXRob2RzLlgpOgorICAgICAgICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5hc3luYy5nZXRWYWx1
ZSk6CisgICAgICAgIChtb3pNZXRob2RzLlgucHJvdG90eXBlLnNldFZhbHVlKToKKyAgICAgICAg
KG1vek1ldGhvZHMuWC5wcm90b3R5cGUuYXN5bmMuaW5jcmVtZW50KToKKyAgICAgICAgKG1vek1l
dGhvZHMuWC5wcm90b3R5cGUuYXN5bmMuZ2V0QmFzZUNsYXNzTmFtZSk6CisgICAgICAgIChtb3pN
ZXRob2RzLlguYXN5bmMuZ2V0U3RhdGljVmFsdWUpOgorICAgICAgICAobW96TWV0aG9kcy5ZLnBy
b3RvdHlwZS5hc3luYy5nZXRCYXNlQ2xhc3NOYW1lKToKKyAgICAgICAgKG1vek1ldGhvZHMuWSk6
CisgICAgICAgIChtb3pGdW5jdGlvbk5hbWVJbmZlcnJlbmNlLmFzeW5jLnRlc3QpOgorICAgICAg
ICAobW96U3ludGF4RXJyb3JzKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2
ZWQtd29yZC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoc2hvdWxkVGhy
b3dTeW50YXhFcnJvcik6CisgICAgICAgIChBc3luY0Z1bmN0aW9uLmFzeW5jKToKKyAgICAgICAg
KiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfYXJndW1lbnRzX2JpbmRpbmcu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6
CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKToKKyAgICAgICAgKG5vQXJndW1lbnRzQXJyb3cy
LmFzeW5jKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxf
bmV3LnRhcmdldF9iaW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAg
IChDMSk6CisgICAgICAgIChDMik6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jLmFzeW5jKToK
KyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfc3VwZXJfYmlu
ZGluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFz
eW5jKToKKyAgICAgICAgKEJhc2VDbGFzcy5wcm90b3R5cGUuYmFzZUNsYXNzVmFsdWUpOgorICAg
ICAgICAoQmFzZUNsYXNzLnByb3RvdHlwZS5nZXQgcHJvcGVydHkpOgorICAgICAgICAoQmFzZUNs
YXNzKToKKyAgICAgICAgKENoaWxkQ2xhc3MucHJvdG90eXBlLmFzeW5jU3VwZXJQcm9wKToKKyAg
ICAgICAgKENoaWxkQ2xhc3MucHJvdG90eXBlLmFzeW5jU3VwZXJQcm9wMik6CisgICAgICAgIChD
aGlsZENsYXNzKToKKyAgICAgICAgKENoaWxkQ2xhc3MyKToKKyAgICAgICAgKiBzdHJlc3MvYXN5
bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfdGhpc19iaW5kaW5nLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoZC55KToK
KwogMjAxNi0xMC0yMSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtKU0NdIGRvbid0IGNyYXNoIHdoZW4gYXJndW1lbnRzIHRvIGBuZXcgRnVuY3Rpb24oKWAg
cHJvZHVjZSB1bmV4cGVjdGVkIEFTVApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMt
YXJyb3ctZnVuY3Rpb25zLWxleGljYWwtYXJndW1lbnRzLWJpbmRpbmcuanMgYi9KU1Rlc3RzL3N0
cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1hcmd1bWVudHMtYmluZGluZy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNTFhZmRjOTMxZjE2MDFhZjQ3OWY5MDZlYjhmYTM2YWRlZmFhYjQ3Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGlj
YWwtYXJndW1lbnRzLWJpbmRpbmcuanMKQEAgLTAsMCArMSw1MCBAQAorLy8gVGhpcyB0ZXN0IHJl
cXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBh
dCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFj
dHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQorICAgICAgICBtc2cgPSAiIjsK
KyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyAr
ICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlv
biBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7Cisg
ICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkg
eyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhh
ZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygp
OworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91
bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0Fz
eW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIg
aGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVh
bCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3Ig
PSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAg
ICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBy
dW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhy
b3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJv
clR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1l
c3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVz
c2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK3Zh
ciBub0FyZ3VtZW50c0Fycm93ID0gYXN5bmMgKCkgPT4gYXdhaXQgWy4uLmFyZ3VtZW50c107Citz
aG91bGRUaHJvd0FzeW5jKCgpID0+IG5vQXJndW1lbnRzQXJyb3coMSwgMiwgMyksIFJlZmVyZW5j
ZUVycm9yKTsKK3ZhciBub0FyZ3VtZW50c0Fycm93MiA9IGFzeW5jICgpID0+IHsgcmV0dXJuIGF3
YWl0IFsuLi5hcmd1bWVudHNdOyB9CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IG5vQXJndW1lbnRz
QXJyb3cyKDEsIDIsIDMpLCBSZWZlcmVuY2VFcnJvcik7CisKK3Nob3VsZEJlQXN5bmMoIlsxLDIs
M10iLCAoKSA9PiAoZnVuY3Rpb24oKSB7IHJldHVybiAoYXN5bmMgKCkgPT4gSlNPTi5zdHJpbmdp
ZnkoWy4uLmFyZ3VtZW50c10pKSgpOyB9KSgxLCAyLCAzKSk7CitzaG91bGRCZUFzeW5jKCJbNCw1
LDZdIiwgKCkgPT4gKGZ1bmN0aW9uKCkgeyByZXR1cm4gKGFzeW5jICgpID0+IHsgcmV0dXJuIEpT
T04uc3RyaW5naWZ5KFsuLi5hd2FpdCBhcmd1bWVudHNdKSB9KSgpOyB9KSg0LCA1LCA2KSk7CisK
K3ZhciBhcmdzQmluZGluZzsKK3Nob3VsZEJlQXN5bmMoYXJnc0JpbmRpbmcsICgpID0+IChmdW5j
dGlvbigpIHsgYXJnc0JpbmRpbmcgPSBhcmd1bWVudHM7IHJldHVybiAoYXN5bmMgKCkgPT4gYXJn
dW1lbnRzKSgpIH0pKDEsIDIsIDMpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5j
LWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQtYmluZGluZy5qcyBiL0pTVGVzdHMv
c3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQtYmluZGluZy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40MjZhMzk4M2Y3YTkyNzQwZWU0NzhjM2ZmN2JiODMwYzc4NWFlNDA5Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxl
eGljYWwtbmV3LnRhcmdldC1iaW5kaW5nLmpzCkBAIC0wLDAgKzEsNTUgQEAKKy8vIFRoaXMgdGVz
dCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJs
ZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVk
LCBhY3R1YWwsIG1zZykgeworICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNnID0g
IiI7CisgICAgZWxzZQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBt
c2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVu
Y3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFs
OworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFs
dWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikg
eyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFz
a3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAg
c2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhy
b3dBc3luYyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAg
dmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBh
Y3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVy
cm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOwor
CisgICAgaWYgKCFoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAi
ICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90
IHRocm93LiIpOworICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsg
ZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlm
IChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiAr
IG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQor
CitmdW5jdGlvbiBDMSgpIHsKKyAgICByZXR1cm4gYXN5bmMgKCkgPT4gYXdhaXQgbmV3LnRhcmdl
dDsKK30KKworZnVuY3Rpb24gQzIoKSB7CisgICAgcmV0dXJuIGFzeW5jICgpID0+IHsgcmV0dXJu
IGF3YWl0IG5ldy50YXJnZXQgfTsKK30KKworc2hvdWxkQmVBc3luYyhDMSwgbmV3IEMxKCkpOwor
c2hvdWxkQmVBc3luYyh1bmRlZmluZWQsIEMxKCkpOworc2hvdWxkQmVBc3luYyhDMiwgbmV3IEMy
KCkpOworc2hvdWxkQmVBc3luYyh1bmRlZmluZWQsIEMyKCkpOworCitzaG91bGRUaHJvd0FzeW5j
KGFzeW5jICgpID0+IGF3YWl0IG5ldy50YXJnZXQsIFJlZmVyZW5jZUVycm9yKTsKK3Nob3VsZFRo
cm93QXN5bmMoYXN5bmMgKCkgPT4geyByZXR1cm4gYXdhaXQgbmV3LnRhcmdldDsgfSwgUmVmZXJl
bmNlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rp
b25zLWxleGljYWwtc3VwZXItYmluZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93
LWZ1bmN0aW9ucy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhiZjBmOWFj
ZTNjNzVmN2Q4ZjdlYmNiMjAzZjczOGRiMzljOWZkYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcuanMK
QEAgLTAsMCArMSw1NSBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZ
TkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAK
KworCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAo
bXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAgbXNn
ID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4
cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0
ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxz
ZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAor
ICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwg
PSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3Ip
CisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWws
IG1zZyk7Cit9CisKK2NsYXNzIEJhc2VDbGFzcyB7CisgICAgYmFzZUNsYXNzVmFsdWUoKSB7Cisg
ICAgICAgIHJldHVybiAiQmFzZUNsYXNzVmFsdWUiOworICAgIH0KKyAgICBnZXQgcHJvcGVydHko
KSB7CisgICAgICAgIHJldHVybiAidGVzdCEiOworICAgIH0KK30KKworY2xhc3MgQ2hpbGRDbGFz
cyBleHRlbmRzIEJhc2VDbGFzcyB7CisgICAgYXN5bmNTdXBlclByb3AoKSB7CisgICAgICAgIHJl
dHVybiBhc3luYyB4ID0+IHN1cGVyLmJhc2VDbGFzc1ZhbHVlKCk7CisgICAgfQorICAgIGFzeW5j
U3VwZXJQcm9wMigpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jIHggPT4geyByZXR1cm4gc3VwZXIu
YmFzZUNsYXNzVmFsdWUoKTsgfQorICAgIH0KK30KKworLy8gRklYTUU6IHN1cGVyIGJpbmRpbmdz
IGluIGFzeW5jIGFycm93IGZ1bmN0aW9ucyBhcmUgYnJva2VuCitzaG91bGRCZUFzeW5jKCJCYXNl
Q2xhc3NWYWx1ZSIsIG5ldyBDaGlsZENsYXNzKCkuYXN5bmNTdXBlclByb3AoKSk7CitzaG91bGRC
ZUFzeW5jKCJCYXNlQ2xhc3NWYWx1ZSIsIG5ldyBDaGlsZENsYXNzKCkuYXN5bmNTdXBlclByb3Ay
KCkpOworCitjbGFzcyBDaGlsZENsYXNzMiBleHRlbmRzIEJhc2VDbGFzcyB7CisgICAgY29uc3Ry
dWN0b3IoKSB7CisgICAgICAgIHJldHVybiBhc3luYyAoc2VsZiA9IHN1cGVyKCkpID0+IHNlbGYu
YmFzZUNsYXNzVmFsdWUoKSArICcgJyArIHN1cGVyLnByb3BlcnR5OworICAgIH0KK30KKworc2hv
dWxkQmVBc3luYygiQmFzZUNsYXNzVmFsdWUgdGVzdCEiLCBuZXcgQ2hpbGRDbGFzczIoKSk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC10
aGlzLWJpbmRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4
aWNhbC10aGlzLWJpbmRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJhZmExMTNmYTkxMjZjM2UxNjdmYWU0
MTFjM2EwNGU4N2ExMWI1YQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5j
LWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXRoaXMtYmluZGluZy5qcwpAQCAtMCwwICsxLDMwIEBA
CisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRB
WCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91
bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAobXNnID09PSB2b2lkIDApCisg
ICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJi
YWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7Cisg
ICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVu
KGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVu
Y3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAg
ZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFj
dHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK3ZhciBk
ID0gKHsgeCA6ICJiYXIiLCB5IDogZnVuY3Rpb24oKSB7IHJldHVybiBhc3luYyB6ID0+IHRoaXMu
eCArIHo7IH19KS55KCk7Cit2YXIgZSA9IHsgeCA6ICJiYXoiLCB5IDogZCB9OworCitzaG91bGRC
ZUFzeW5jKCJiYXJsZXkiLCAoKSA9PiBkKCJsZXkiKSk7CitzaG91bGRCZUFzeW5jKCJiYXJsZXki
LCAoKSA9PiBlLnkoImxleSIpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3
YWl0LWJhc2ljLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZThmMjA2NTM2NTNlY2FjZDdmM2VkYjYzYmIzMmQxMWI3NGE5MmQzZgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzCkBAIC0wLDAgKzEs
Mjk5IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9O
X1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlv
biBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cgPSAiIikgeworICAgIGlmIChtc2cpCisg
ICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1
YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFz
eW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVy
cm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2
YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1
ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYg
KGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3Rl
ZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhydW4sIGVycm9yVHlw
ZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7
CisKKyAgICB0cnkgeworICAgICAgICBhY3R1YWwgPSBydW4oKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgICAgYWN0dWFsID0gZTsKKyAgICB9CisK
KyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIg
KyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3Qg
dGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY2VkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVy
cm9yVHlwZS5uYW1lICsgIiAsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYg
KG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsg
bWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisK
K2Z1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAg
ICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4o
ZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5j
dGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBk
cmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmICghaGFkRXJyb3IpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5h
bWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5zdGFuY2Vv
ZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4g
KyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IHRocmV3ICciICsgYWN0
dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5tZXNzYWdl
ICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4g
KyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFjdHVhbC5t
ZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dTeW50YXhFcnJvcihzdHIs
IG1lc3NhZ2UpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHN0cik7CisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgYCIgKyBzdHIgKyAiYCB0byB0aHJvdyBhIFN5bnRheEVycm9y
LCBidXQgZGlkIG5vdCB0aHJvdy4iKQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUu
Y29uc3RydWN0b3IgIT09IFN5bnRheEVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCBgIiArIHN0ciArICJgIHRvIHRocm93IGEgU3ludGF4RXJyb3IsIGJ1dCB0aHJl
dyAnIiArIGUgKyAiJyIpOworICAgICAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGUubWVz
c2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQg
YCIgKyBzdHIgKyAiYCB0byB0aHJvdyBTeW50YXhFcnJvcjogJyIgKyBtZXNzYWdlICsgIicsIGJ1
dCB0aHJldyAnIiArIGUgKyAiJyIpOworICAgIH0KK30KKworLy8gRG8gbm90IGluc3RhbGwgYEFz
eW5jRnVuY3Rpb25gIGNvbnN0cnVjdG9yIG9uIGdsb2JhbCBvYmplY3QKK3Nob3VsZEJlKHVuZGVm
aW5lZCwgdGhpcy5Bc3luY0Z1bmN0aW9uKTsKK2xldCBBc3luY0Z1bmN0aW9uID0gKGFzeW5jIGZ1
bmN0aW9uKCkge30pLmNvbnN0cnVjdG9yOworCisvLyBMZXQgZnVuY3Rpb25Qcm90b3R5cGUgYmUg
dGhlIGludHJpbnNpYyBvYmplY3QgJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlLgorYXN5bmMgZnVu
Y3Rpb24gYXN5bmNGdW5jdGlvbkZvclByb3RvKCkge30KK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24u
cHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmNGdW5jdGlvbkZvclByb3RvKSk7
CitzaG91bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlwZU9m
KGFzeW5jIGZ1bmN0aW9uKCkge30pKTsKK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBl
LCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmMgKCkgPT4ge30pKTsKK3Nob3VsZEJlKEFzeW5j
RnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoeyBhc3luYyBtZXRob2Qo
KSB7fSB9Lm1ldGhvZCkpOworCisvLyBGSVhNRTogQXN5bmNGdW5jdGlvbiBjb25zdHJ1Y3RvciBz
aG91bGQgYnVpbGQgZnVuY3Rpb25zIHdpdGggY29ycmVjdCBwcm90b3R5cGUuCisvLyBzaG91bGRC
ZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKEFzeW5jRnVu
Y3Rpb24oKSkpOworCisvLyBBc3luY0Z1bmN0aW9uQ3JlYXRlIGRvZXMgbm90IHByb2R1Y2UgYW4g
b2JqZWN0IHdpdGggYSBQcm90b3R5cGUKK3Nob3VsZEJlKHVuZGVmaW5lZCwgYXN5bmNGdW5jdGlv
bkZvclByb3RvLnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgYXN5bmNGdW5jdGlvbkZvclBy
b3RvLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQsIChh
c3luYyBmdW5jdGlvbigpIHt9KS5wcm90b3R5cGUpOworc2hvdWxkQmUoZmFsc2UsIChhc3luYyBm
dW5jdGlvbigpIHt9KS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOworc2hvdWxkQmUodW5k
ZWZpbmVkLCAoYXN5bmMoKSA9PiB7fSkucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCAoYXN5
bmMoKSA9PiB7fSkuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKK3Nob3VsZEJlKHVuZGVm
aW5lZCwgKHsgYXN5bmMgbWV0aG9kKCkge30gfSkubWV0aG9kLnByb3RvdHlwZSk7CitzaG91bGRC
ZShmYWxzZSwgKHsgYXN5bmMgbWV0aG9kKCkge30gfSkubWV0aG9kLmhhc093blByb3BlcnR5KCJw
cm90b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQsIEFzeW5jRnVuY3Rpb24oKS5wcm90b3R5
cGUpOworc2hvdWxkQmUoZmFsc2UsIEFzeW5jRnVuY3Rpb24oKS5oYXNPd25Qcm9wZXJ0eSgicHJv
dG90eXBlIikpOworCisvLyBBc3luY0Z1bmN0aW9uLnByb3RvdHlwZVsgQEB0b1N0cmluZ1RhZyBd
Cit2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQXN5bmNG
dW5jdGlvbi5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZyk7CitzaG91bGRCZSgiQXN5bmNG
dW5jdGlvbiIsIGRlc2NyaXB0b3IudmFsdWUpOworc2hvdWxkQmUoZmFsc2UsIGRlc2NyaXB0b3Iu
ZW51bWVyYWJsZSk7CitzaG91bGRCZShmYWxzZSwgZGVzY3JpcHRvci53cml0YWJsZSk7CitzaG91
bGRCZSh0cnVlLCBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSk7CisKK3Nob3VsZEJlKDEsIEFzeW5j
RnVuY3Rpb24ubGVuZ3RoKTsKKworLy8gTGV0IEYgYmUgISBGdW5jdGlvbkFsbG9jYXRlKGZ1bmN0
aW9uUHJvdG90eXBlLCBTdHJpY3QsICJub24tY29uc3RydWN0b3IiKQorYXN5bmMgZnVuY3Rpb24g
YXN5bmNOb25Db25zdHJ1Y3RvckRlY2woKSB7fQorc2hvdWxkVGhyb3coKCkgPT4gbmV3IGFzeW5j
Tm9uQ29uc3RydWN0b3JEZWNsKCksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcg
KGFzeW5jIGZ1bmN0aW9uKCkge30pLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3
ICh7IGFzeW5jIG5vbkNvbnN0cnVjdG9yKCkge30gfSkubm9uQ29uc3RydWN0b3IoKSwgVHlwZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyAoKCkgPT4gIm5vdCBhIGNvbnN0cnVjdG9yISIp
LCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IChBc3luY0Z1bmN0aW9uKCkpLCBU
eXBlRXJyb3IpOworCisvLyBOb3JtYWwgY29tcGxldGlvbgorYXN5bmMgZnVuY3Rpb24gYXN5bmNE
ZWNsKCkgeyByZXR1cm4gInRlc3QiOyB9CitzaG91bGRCZUFzeW5jKCJ0ZXN0IiwgYXN5bmNEZWNs
KTsKK3Nob3VsZEJlQXN5bmMoInRlc3QyIiwgYXN5bmMgZnVuY3Rpb24oKSB7IHJldHVybiAidGVz
dDIiOyB9KTsKK3Nob3VsZEJlQXN5bmMoInRlc3QzIiwgYXN5bmMgKCkgPT4gInRlc3QzIik7Citz
aG91bGRCZUFzeW5jKCJ0ZXN0NCIsICgpID0+ICh7IGFzeW5jIGYoKSB7IHJldHVybiAidGVzdDQi
OyB9IH0pLmYoKSk7CisKK2NsYXNzIE15RXJyb3IgZXh0ZW5kcyBFcnJvciB7fTsKKworLy8gVGhy
b3cgY29tcGxldGlvbgorYXN5bmMgZnVuY3Rpb24gYXN5bmNEZWNsVGhyb3dlcihlKSB7IHRocm93
IG5ldyBNeUVycm9yKGUpOyB9CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IGFzeW5jRGVjbFRocm93
ZXIoImJvb20hIiksIE15RXJyb3IsICJib29tISIpOworc2hvdWxkVGhyb3dBc3luYygoKSA9PiAo
YXN5bmMgZnVuY3Rpb24oZSkgeyB0aHJvdyBuZXcgTXlFcnJvcihlKTsgfSkoImJvb20hISEiKSwg
TXlFcnJvciwgImJvb20hISEiKTsKK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gKGFzeW5jIGUgPT4g
eyB0aHJvdyBuZXcgTXlFcnJvcihlKSB9KSgiYm9vbSEhIiksIE15RXJyb3IsICJib29tISEiKTsK
K3Nob3VsZFRocm93QXN5bmMoKCkgPT4gKHsgYXN5bmMgdGhyb3dlcihlKSB7IHRocm93IG5ldyBN
eUVycm9yKGUpOyB9IH0pLnRocm93ZXIoImJvb20hISEhIiksIE15RXJyb3IsICJib29tISEhISIp
OworCitmdW5jdGlvbiByZXNvbHZlTGF0ZXIodmFsdWUpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2
ZSh2YWx1ZSk7IH0KK2Z1bmN0aW9uIHJlamVjdExhdGVyKGVycm9yKSB7IHJldHVybiBQcm9taXNl
LnJlamVjdChlcnJvcik7IH0KKworLy8gUmVzdW1lIGFmdGVyIE5vcm1hbCBjb21wbGV0aW9uCit2
YXIgbG9nID0gW107Cithc3luYyBmdW5jdGlvbiByZXN1bWVBZnRlck5vcm1hbCh2YWx1ZSkgewor
ICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2
ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAg
IHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJl
c3VtZToiICsgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZSArIDE7Cit9CisKK3Nob3VsZEJlQXN5
bmMoNCwgKCkgPT4gcmVzdW1lQWZ0ZXJOb3JtYWwoMSkpOworc2hvdWxkQmUoInN0YXJ0OjEgcmVz
dW1lOjIgcmVzdW1lOjMiLCBsb2cuam9pbigiICIpKTsKKwordmFyIE8gPSB7CisgICAgYXN5bmMg
cmVzdW1lQWZ0ZXJOb3JtYWwodmFsdWUpIHsKKyAgICAgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2
YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7Cisg
ICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhd2Fp
dCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsg
dmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWUgKyAxOworICAgIH0KK307Citsb2cgPSBbXTsK
K3Nob3VsZEJlQXN5bmMoNSwgKCkgPT4gTy5yZXN1bWVBZnRlck5vcm1hbCgyKSk7CitzaG91bGRC
ZSgic3RhcnQ6MiByZXN1bWU6MyByZXN1bWU6NCIsIGxvZy5qb2luKCIgIikpOworCit2YXIgcmVz
dW1lQWZ0ZXJOb3JtYWxBcnJvdyA9IGFzeW5jICh2YWx1ZSkgPT4geworICAgIGxvZy5wdXNoKCJz
dGFydDoiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsg
MSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQg
cmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUp
OworICAgIHJldHVybiB2YWx1ZSArIDE7Cit9OworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDYs
ICgpID0+IHJlc3VtZUFmdGVyTm9ybWFsQXJyb3coMykpOworc2hvdWxkQmUoInN0YXJ0OjMgcmVz
dW1lOjQgcmVzdW1lOjUiLCBsb2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyTm9ybWFs
RXZhbCA9IEFzeW5jRnVuY3Rpb24oInZhbHVlIiwgYAorICAgIGxvZy5wdXNoKCJzdGFydDoiICsg
dmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAg
bG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxh
dGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHJl
dHVybiB2YWx1ZSArIDE7CitgKTsKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg3LCAoKSA9PiBy
ZXN1bWVBZnRlck5vcm1hbEV2YWwoNCkpOworc2hvdWxkQmUoInN0YXJ0OjQgcmVzdW1lOjUgcmVz
dW1lOjYiLCBsb2cuam9pbigiICIpKTsKKworLy8gUmVzdW1lIGFmdGVyIFRocm93IGNvbXBsZXRp
b24KK2FzeW5jIGZ1bmN0aW9uIHJlc3VtZUFmdGVyVGhyb3codmFsdWUpIHsKKyAgICBsb2cucHVz
aCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJl
amVjdExhdGVyKCJ0aHJvdzEiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNo
KCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0
IHJlamVjdExhdGVyKCJ0aHJvdzIiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5w
dXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICByZXR1cm4gdmFsdWUgKyAxOworfQorCits
b2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoMiwgKCkgPT4gcmVzdW1lQWZ0ZXJUaHJvdygxKSk7Citz
aG91bGRCZSgic3RhcnQ6MSByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJvdzIiLCBsb2cuam9pbigi
ICIpKTsKKwordmFyIE8gPSB7CisgICAgYXN5bmMgcmVzdW1lQWZ0ZXJUaHJvdyh2YWx1ZSkgewor
ICAgICAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgICAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICAgICAg
fQorICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigi
dGhyb3cyIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGxvZy5wdXNoKCJy
ZXN1bWU6IiArIGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZSArIDE7CisgICAg
fQorfQorbG9nID0gW107CitzaG91bGRCZUFzeW5jKDMsICgpID0+IE8ucmVzdW1lQWZ0ZXJUaHJv
dygyKSk7CitzaG91bGRCZSgic3RhcnQ6MiByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJvdzIiLCBs
b2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyVGhyb3dBcnJvdyA9IGFzeW5jICh2YWx1
ZSkgPT4geworICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHRyeSB7CisgICAg
ICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHRyeSB7Cisg
ICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHJldHVy
biB2YWx1ZSArIDE7Cit9OworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDQsICgpID0+IHJlc3Vt
ZUFmdGVyVGhyb3dBcnJvdygzKSk7CitzaG91bGRCZSgic3RhcnQ6MyByZXN1bWU6dGhyb3cxIHJl
c3VtZTp0aHJvdzIiLCBsb2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyVGhyb3dFdmFs
ID0gQXN5bmNGdW5jdGlvbigidmFsdWUiLCBgCisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1
ZSk7CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cx
Iik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsK
KyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhy
b3cyIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBl
KTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK2ApOworbG9nID0gW107CitzaG91bGRC
ZUFzeW5jKDUsICgpID0+IHJlc3VtZUFmdGVyVGhyb3dFdmFsKDQpKTsKK3Nob3VsZEJlKCJzdGFy
dDo0IHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOworCisvLyBN
ZXRob29kRGVmaW5pdGlvbiBTeW50YXhFcnJvcnMKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBvYmogPSB7IGFzeW5jIGZvbyA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4
cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBmb28gPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQg
dG9rZW4gJz0nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgZm9vICwgYmFyIH07Iiwg
IlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVu
dCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgZm9v
IH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFy
Z3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFz
eW5jIDAgOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhIHBhcmVu
dGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IG9iaiA9IHsgYXN5bmMgMCA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVj
dGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAwICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4g
JywnLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgMCB9IiwgIlVuZXhwZWN0ZWQgdG9r
ZW4gJ30nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworCitz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAnZm9vJyA6IHRydWUgfTsi
LCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3Vt
ZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAn
Zm9vJyA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFyZW50
aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
b2JqID0geyBhc3luYyAnZm9vJyAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhw
ZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAn
fScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIFsnZm9vJ10gOiB0cnVlIH07Iiwg
IlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVu
dCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgWydm
b28nXSA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFyZW50
aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
b2JqID0geyBhc3luYyBbJ2ZvbyddICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBF
eHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSB9IiwgIlVuZXhwZWN0ZWQgdG9r
ZW4gJ30nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworCitz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgZm9vIDogdHJ1ZSB9OyIsICJV
bmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5
bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJj
bGFzcyBDIHsgYXN5bmMgZm9vID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhw
ZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxp
c3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgZm9vICwgYmFy
IH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZv
cmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImNsYXNzIEMgeyBhc3luYyBmb28gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhw
ZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxp
c3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAwIDogdHJ1
ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVm
b3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgMCA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAn
PScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFt
ZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIDAg
LCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygn
IGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIDAgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4g
RXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVy
IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAnZm9v
JyA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGFuIG9wZW5pbmcg
JygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nID0gdHJ1ZSB9OyIsICJVbmV4cGVj
dGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0
aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBD
IHsgYXN5bmMgJ2ZvbycgLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVk
IGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nIH0iLCAiVW5l
eHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5j
IG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJj
bGFzcyBDIHsgYXN5bmMgWydmb28nXSA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicu
IEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRl
ciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsnZm9v
J10gPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5n
ICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBbJ2ZvbyddICwgYmFyIH07IiwgIlVuZXhw
ZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBt
ZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNz
IEMgeyBhc3luYyBbJ2ZvbyddIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGFu
IG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVkLXdv
cmQuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wOGIyNGZlNzYwYjBhM2FiMmQ5ZmY1YjE1YzM0N2ZjZjcxYzJmODE5Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJlc2Vy
dmVkLXdvcmQuanMKQEAgLTAsMCArMSw3MiBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJM
RV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1l
LgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7
CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJv
clRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJv
clRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gY2hlY2tNb2R1
bGVTeW50YXhFcnJvcihzb3VyY2UsIGVycm9yTWVzc2FnZSkgeworICAgIHNob3VsZFRocm93KCgp
ID0+IGNoZWNrTW9kdWxlU3ludGF4KHNvdXJjZSksIGVycm9yTWVzc2FnZSk7Cit9CisKK2NoZWNr
TW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK3ZhciBhd2FpdDsKK2AsIGBTeW50YXhFcnJv
cjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7
CitjaGVja01vZHVsZVN5bnRheEVycm9yKGAKK2V4cG9ydCB2YXIgYXdhaXQ7CitgLCBgU3ludGF4
RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46
MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorbGV0IGF3YWl0OworYCwg
YFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAor
ZXhwb3J0IGxldCBhd2FpdDsKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AKK2NvbnN0IGF3YWl0ID0gMQorYCwgYFN5bnRheEVycm9yOiBD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46
MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZXhwb3J0IGNvbnN0IGF3
YWl0ID0gMQorYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwg
dmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworCitjaGVja01vZHVsZVN5bnRheEVycm9y
KFN0cmluZy5yYXdgCitmdW5jdGlvbiBhd2FpdCgpIHt9CitgLCBgU3ludGF4RXJyb3I6IENhbm5v
dCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNr
TW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2Z1bmN0aW9uKiBhd2FpdCgpIHt9CitgLCBg
U3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYSBt
b2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2FzeW5jIGZ1
bmN0aW9uIGF3YWl0KCkge30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgZnVuY3Rp
b24gbmFtZWQgJ2F3YWl0JyBpbiBhIG1vZHVsZS46MmApOworCitjaGVja01vZHVsZVN5bnRheEVy
cm9yKFN0cmluZy5yYXdgCitpbXBvcnQge2F3YWl0fSBmcm9tICdmb28nOworYCwgYFN5bnRheEVy
cm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7
CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQge2ZvbyBhcyBhd2Fp
dH0gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFu
IGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJp
bmcucmF3YAoraW1wb3J0ICogYXMgYXdhaXQgZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjog
Q2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hl
Y2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IGF3YWl0LCB7eCwgeSwgen0g
ZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGlt
cG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcu
cmF3YAoraW1wb3J0IGF3YWl0LCB7eCwgeSwgeix9IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJy
b3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsK
K2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCBhd2FpdCBmcm9tICdm
b28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQg
YmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitp
bXBvcnQgYXdhaXQsICogYXMgZm9vIGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanMgYi9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1hd2FpdC1tb3ppbGxhLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNWQ2YjkyZDNlNjFlNDk4Mzll
MDZjZDFkNGUxYjU4MDNlNzhhMGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9h
c3luYy1hd2FpdC1tb3ppbGxhLmpzCkBAIC0wLDAgKzEsMzA1IEBACisvKiBUaGlzIFNvdXJjZSBD
b2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCisg
KiBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0
ZWQgd2l0aCB0aGlzCisgKiBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vei5v
cmcvTVBMLzIuMC8uICovCisKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FT
WU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lw
CisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9ICIiKSB7CisgICAg
aWYgKG1zZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsg
IjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAg
ICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7
IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFk
RXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7
CisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisgICAgc2hvdWxkQmUo
ZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3cocnVuLCBl
cnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9
IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGFjdHVhbCA9IHJ1bigpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICBhY3R1YWwgPSBlOworICAg
IH0KKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
ICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBu
b3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY2VkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiAr
IGVycm9yVHlwZS5uYW1lICsgIiAsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAg
aWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICci
ICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsK
KyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRo
ZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBm
dW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAg
ICBkcmFpbk1pY3JvdGFza3MoKTsKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5u
YW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNl
b2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVu
ICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFj
dHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2Fn
ZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVu
ICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwu
bWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydChjb25kLCBtc2cgPSAiIikgewor
ICAgIGlmICghY29uZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZFRocm93U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7CisgICAgdmFyIGhhZEVy
cm9yID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzdHIpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikgeworICAgICAgICAg
ICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAi
c3RyaW5nIikKKyAgICAgICAgICAgICAgICBhc3NlcnQoZS5tZXNzYWdlID09PSBtZXNzYWdlLCAi
RXhwZWN0ZWQgJyIgKyBtZXNzYWdlICsgIicgYnV0IHRocmV3ICciICsgZS5tZXNzYWdlICsgIici
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoaGFkRXJyb3IsICJEaWQgbm90IHRocm93
IHN5bnRheCBlcnJvciIpOworfQorCisvLyBzZW1hbnRpY3MuanMKKyhmdW5jdGlvbiBtb3pTZW1h
bnRpY3MoKSB7CisKK2FzeW5jIGZ1bmN0aW9uIGVtcHR5KCkgeworfQorCithc3luYyBmdW5jdGlv
biBzaW1wbGVSZXR1cm4oKSB7CisgICAgcmV0dXJuIDE7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNp
bXBsZUF3YWl0KCkgeworICAgIHZhciByZXN1bHQgPSBhd2FpdCAyOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNpbXBsZUF3YWl0QXN5bmMoKSB7CisgICAgdmFyIHJl
c3VsdCA9IGF3YWl0IHNpbXBsZVJldHVybigpOworICAgIHJldHVybiAyICsgcmVzdWx0OworfQor
Cithc3luYyBmdW5jdGlvbiByZXR1cm5PdGhlckFzeW5jKCkgeworICAgIHJldHVybiAxICsgYXdh
aXQgc2ltcGxlQXdhaXRBc3luYygpOworfQorCithc3luYyBmdW5jdGlvbiBzaW1wbGVUaHJvd2Vy
KCkgeworICAgIHRocm93IG5ldyBFcnJvcigpOworfQorCithc3luYyBmdW5jdGlvbiBkZWxlZ2F0
ZWRUaHJvd2VyKCkgeworICAgIHZhciB2YWwgPSBhd2FpdCBzaW1wbGVUaHJvd2VyKCk7CisgICAg
cmV0dXJuIHZhbDsKK30KKworYXN5bmMgZnVuY3Rpb24gdHJ5Q2F0Y2goKSB7CisgICAgdHJ5IHsK
KyAgICAgICAgYXdhaXQgZGVsZWdhdGVkVGhyb3dlcigpOworICAgICAgICByZXR1cm4gJ0ZBSUxF
RCc7CisgICAgfSBjYXRjaCAoXykgeworICAgICAgICByZXR1cm4gNTsKKyAgICB9Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIHRyeUNhdGNoVGhyb3coKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQg
ZGVsZWdhdGVkVGhyb3dlcigpOworICAgICAgICByZXR1cm4gJ0ZBSUxFRCc7CisgICAgfSBjYXRj
aCAoXykgeworICAgICAgICByZXR1cm4gZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0KK30KKwor
YXN5bmMgZnVuY3Rpb24gd2VsbEZpbmFsbHkoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQg
ZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0dXJuICdG
QUlMRUQnOworICAgIH0gZmluYWxseSB7CisgICAgICAgIHJldHVybiA2OworICAgIH0KK30KKwor
YXN5bmMgZnVuY3Rpb24gZmluYWxseU1heUZhaWwoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdh
aXQgZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0dXJu
IDU7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgcmV0dXJuIGRlbGVnYXRlZFRocm93ZXIoKTsK
KyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGVtYmVkZGVkKCkgeworICAgIGFzeW5jIGZ1bmN0
aW9uIGlubmVyKCkgeworICAgICAgICByZXR1cm4gNzsKKyAgICB9CisgICAgcmV0dXJuIGF3YWl0
IGlubmVyKCk7Cit9CisKKy8vIHJlY3Vyc2lvbiwgaXQgd29ya3MhCithc3luYyBmdW5jdGlvbiBm
aWIobikgeworICAgIHJldHVybiAobiA9PSAwIHx8IG4gPT0gMSkgPyBuIDogYXdhaXQgZmliKG4g
LSAxKSArIGF3YWl0IGZpYihuIC0gMik7Cit9CisKKy8vIG11dHVhbCByZWN1cnNpb24KK2FzeW5j
IGZ1bmN0aW9uIGlzT2RkKG4pIHsKKyAgICBhc3luYyBmdW5jdGlvbiBpc0V2ZW4obikgeworICAg
ICAgICByZXR1cm4gbiA9PT0gMCB8fCBhd2FpdCBpc09kZChuIC0gMSk7CisgICAgfQorICAgIHJl
dHVybiBuICE9PSAwICYmIGF3YWl0IGlzRXZlbihuIC0gMSk7Cit9CisKKy8vIHJlY3Vyc2lvbiwg
dGFrZSB0aHJlZSEKK3ZhciBoYXJkY29yZUZpYiA9IGFzeW5jIGZ1bmN0aW9uIGZpYjIobikgewor
ICAgIHJldHVybiAobiA9PSAwIHx8IG4gPT0gMSkgPyBuIDogYXdhaXQgZmliMihuIC0gMSkgKyBh
d2FpdCBmaWIyKG4gLSAyKTsKK30KKwordmFyIGFzeW5jRXhwciA9IGFzeW5jIGZ1bmN0aW9uKCkg
eworICAgIHJldHVybiAxMDsKK30KKwordmFyIG5hbWVkQXN5bmNFeHByID0gYXN5bmMgZnVuY3Rp
b24gc2ltcGxlKCkgeworICAgIHJldHVybiAxMTsKK30KKworYXN5bmMgZnVuY3Rpb24gZXhlY3V0
aW9uT3JkZXIoKSB7CisgICAgdmFyIHZhbHVlID0gMDsKKyAgICBhc3luYyBmdW5jdGlvbiBmaXJz
dCgpIHsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAwID8gMSA6IHZhbHVlKTsK
KyAgICB9CisgICAgYXN5bmMgZnVuY3Rpb24gc2Vjb25kKCkgeworICAgICAgICByZXR1cm4gKHZh
bHVlID0gdmFsdWUgPT09IDAgPyAyIDogdmFsdWUpOworICAgIH0KKyAgICBhc3luYyBmdW5jdGlv
biB0aGlyZCgpIHsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAwID8gMyA6IHZh
bHVlKTsKKyAgICB9CisgICAgcmV0dXJuIGF3YWl0IGZpcnN0KCkgKyBhd2FpdCBzZWNvbmQoKSAr
IGF3YWl0IHRoaXJkKCkgKyA2OworfQorCithc3luYyBmdW5jdGlvbiBtaXNjZWxsYW5lb3VzKCkg
eworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzICYmCisgICAgICAgIGFyZ3VtZW50cy5j
YWxsZWUubmFtZSA9PT0gIm1pc2NlbGxhbmVvdXMiKQorICAgICAgICByZXR1cm4gMTQ7Cit9CisK
K2Z1bmN0aW9uIHRocm93ZXIoKSB7CisgICAgdGhyb3cgMTU7Cit9CisKK2FzeW5jIGZ1bmN0aW9u
IGRlZmF1bHRBcmdzKGFyZyA9IHRocm93ZXIoKSkgeworfQorCisvLyBBc3luYyBmdW5jdGlvbnMg
YXJlIG5vdCBjb25zdHJ1Y3RpYmxlCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgYXN5bmMgZnVu
Y3Rpb24gUGVyc29uKCkgeworICAgIH0KKyAgICBuZXcgUGVyc29uKCk7Cit9LCBUeXBlRXJyb3Ip
OworCitzaG91bGRCZUFzeW5jKHVuZGVmaW5lZCwgZW1wdHkpOworc2hvdWxkQmVBc3luYygxLCBz
aW1wbGVSZXR1cm4pOworc2hvdWxkQmVBc3luYygyLCBzaW1wbGVBd2FpdCk7CitzaG91bGRCZUFz
eW5jKDMsIHNpbXBsZUF3YWl0QXN5bmMpOworc2hvdWxkQmVBc3luYyg0LCByZXR1cm5PdGhlckFz
eW5jKTsKK3Nob3VsZFRocm93QXN5bmMoc2ltcGxlVGhyb3dlciwgRXJyb3IpOworc2hvdWxkQmVB
c3luYyg1LCB0cnlDYXRjaCk7CitzaG91bGRCZUFzeW5jKDYsIHdlbGxGaW5hbGx5KTsKK3Nob3Vs
ZFRocm93QXN5bmMoZmluYWxseU1heUZhaWwsIEVycm9yKTsKK3Nob3VsZEJlQXN5bmMoNywgZW1i
ZWRkZWQpOworc2hvdWxkQmVBc3luYyg4LCAoKSA9PiBmaWIoNikpOworc2hvdWxkQmVBc3luYyg5
LCBleGVjdXRpb25PcmRlcik7CitzaG91bGRCZUFzeW5jKDEwLCBhc3luY0V4cHIpOworc2hvdWxk
QmVBc3luYygxMSwgbmFtZWRBc3luY0V4cHIpOworc2hvdWxkQmVBc3luYygxMiwgKCkgPT4gaXNP
ZGQoMTIpLnRoZW4odiA9PiB2ID8gIm9vcHMiIDogMTIpKTsKK3Nob3VsZEJlQXN5bmMoMTMsICgp
ID0+IGhhcmRjb3JlRmliKDcpKTsKK3Nob3VsZEJlQXN5bmMoMTQsICgpID0+IG1pc2NlbGxhbmVv
dXMoMSwgMiwgMykpOworc2hvdWxkQmVBc3luYygxNSwgKCkgPT4gZGVmYXVsdEFyZ3MoKS5jYXRj
aChlID0+IGUpKTsKKworfSkoKTsKKworLy8gbWV0aG9kcy5qcworKGZ1bmN0aW9uIG1vek1ldGhv
ZHMoKSB7CisKK2NsYXNzIFggeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZh
bHVlID0gNDI7CisgICAgfQorICAgIGFzeW5jIGdldFZhbHVlKCkgeworICAgICAgICByZXR1cm4g
dGhpcy52YWx1ZTsKKyAgICB9CisgICAgc2V0VmFsdWUodmFsdWUpIHsKKyAgICAgICAgdGhpcy52
YWx1ZSA9IHZhbHVlOworICAgIH0KKyAgICBhc3luYyBpbmNyZW1lbnQoKSB7CisgICAgICAgIHZh
ciB2YWx1ZSA9IGF3YWl0IHRoaXMuZ2V0VmFsdWUoKTsKKyAgICAgICAgdGhpcy5zZXRWYWx1ZSh2
YWx1ZSArIDEpOworICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOworICAgIH0KKyAgICBh
c3luYyBnZXRCYXNlQ2xhc3NOYW1lKCkgeworICAgICAgICByZXR1cm4gJ1gnOworICAgIH0KKyAg
ICBzdGF0aWMgYXN5bmMgZ2V0U3RhdGljVmFsdWUoKSB7CisgICAgICAgIHJldHVybiA0NDsKKyAg
ICB9Cit9CisKK2NsYXNzIFkgZXh0ZW5kcyBYIHsKKyAgICBhc3luYyBnZXRCYXNlQ2xhc3NOYW1l
KCkgeworICAgICAgICByZXR1cm4gc3VwZXIuZ2V0QmFzZUNsYXNzTmFtZSgpOworICAgIH0KK30K
KwordmFyIG9iakxpdGVyYWwgPSB7CisgICAgYXN5bmMgZ2V0KCkgeworICAgICAgICByZXR1cm4g
NDU7CisgICAgfSwKKyAgICBzb21lU3R1ZmY6IDUKK307CisKK3ZhciB4ID0gbmV3IFgoKTsKK3Zh
ciB5ID0gbmV3IFkoKTsKKworc2hvdWxkQmVBc3luYyg0MiwgKCkgPT4geC5nZXRWYWx1ZSgpKTsK
K3Nob3VsZEJlQXN5bmMoNDMsICgpID0+IHguaW5jcmVtZW50KCkpOworc2hvdWxkQmVBc3luYyg0
NCwgKCkgPT4gWC5nZXRTdGF0aWNWYWx1ZSgpKTsKK3Nob3VsZEJlQXN5bmMoNDUsICgpID0+IG9i
akxpdGVyYWwuZ2V0KCkpOworc2hvdWxkQmVBc3luYygnWCcsICgpID0+IHkuZ2V0QmFzZUNsYXNz
TmFtZSgpKTsKKworfSkoKTsKKworKGZ1bmN0aW9uIG1vekZ1bmN0aW9uTmFtZUluZmVycmVuY2Uo
KSB7CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7IH0KKwordmFyIGFub24gPSBhc3luYyBmdW5j
dGlvbigpIHsgfQorCitzaG91bGRCZSgidGVzdCIsIHRlc3QubmFtZSk7CitzaG91bGRCZSgiYW5v
biIsIGFub24ubmFtZSk7CisKK30pKCk7CisKKyhmdW5jdGlvbiBtb3pTeW50YXhFcnJvcnMoKSB7
CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIid1c2Ugc3RyaWN0JzsgYXN5bmMgZnVuY3Rpb24g
ZXZhbCgpIHt9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIndXNlIHN0cmljdCc7IGFzeW5j
IGZ1bmN0aW9uIGFyZ3VtZW50cygpIHt9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3lu
YyBmdW5jdGlvbiBhKGsgPSBzdXBlci5wcm9wKSB7IH0iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoImFzeW5jIGZ1bmN0aW9uIGEoKSB7IHN1cGVyLnByb3AoKTsgfSIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gYSgpIHsgc3VwZXIoKTsgfSIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gYShrID0gYXdhaXQgMykge30iKTsKKworfSko
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdh
aXQtcmVzZXJ2ZWQtd29yZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGUxZDMzMjFjN2Y4MDA4N2JlZGYwZjE1
NzIxYjI5NWI4MWVlZmIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMt
YXdhaXQtcmVzZXJ2ZWQtd29yZC5qcwpAQCAtMCwwICsxLDE2NiBAQAorLy8gVGhpcyB0ZXN0IHJl
cXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBh
dCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmQsIG1zZyA9ICIi
KSB7CisgICAgaWYgKCFjb25kKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKK30KK25v
SW5saW5lKGFzc2VydCk7CisKK2Z1bmN0aW9uIHNob3VsZFRocm93U3ludGF4RXJyb3Ioc3RyLCBt
ZXNzYWdlKSB7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAg
ZXZhbChzdHIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBT
eW50YXhFcnJvcikgeworICAgICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAgICAg
aWYgKHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIikKKyAgICAgICAgICAgICAgICBhc3NlcnQo
ZS5tZXNzYWdlID09PSBtZXNzYWdlLCAiRXhwZWN0ZWQgJyIgKyBtZXNzYWdlICsgIicgYnV0IHRo
cmV3ICciICsgZS5tZXNzYWdlICsgIiciKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQo
aGFkRXJyb3IsICJEaWQgbm90IHRocm93IHN5bnRheCBlcnJvciIpOworfQorbm9JbmxpbmUoc2hv
dWxkVGhyb3dTeW50YXhFcnJvcik7CisKK3ZhciBBc3luY0Z1bmN0aW9uID0gKGFzeW5jIGZ1bmN0
aW9uKCkge30pLmNvbnN0cnVjdG9yOworCisvLyBBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbgorc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIgYXdhaXQ7IH0pIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIFth
d2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1
bmN0aW9uKCkgeyB2YXIgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciB7YXdhaXR9ID0ge307IH0pIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFz
eW5jIGZ1bmN0aW9uKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCBhd2FpdDsgfSki
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24o
KSB7IGxldCBbYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsg
bGV0IHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkg
eyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3QgYXdhaXQ7IH0pIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBj
b25zdCBbYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBj
b25zdCB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0p
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9u
KCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBmdW5jdGlvbiBhd2FpdCgp
IHt9IH0pIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24o
KSB7IGFzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30gfSkiLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rp
b24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbihhd2FpdCkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24gZihbYXdhaXRdKSB7fSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKFsuLi5hd2FpdF0pIHt9KSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoLi4uYXdh
aXQpIHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9u
IGYoe2F3YWl0fSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMg
ZnVuY3Rpb24gZih7aXNBc3luYzogYXdhaXR9KSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNGdW5j
dGlvbkRlY2xhcmF0aW9uCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBm
KCkgeyB2YXIgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMg
ZnVuY3Rpb24gZigpIHsgdmFyIFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIFsuLi5hd2FpdF0gPSBbXTsgfSki
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFy
IHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMg
ZnVuY3Rpb24gZigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIHtpc0FzeW5jOiBh
d2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVu
Y3Rpb24gZigpIHsgbGV0IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxl
dCBbLi4uYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IHtp
c0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0i
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBm
KCkgeyBjb25zdCBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0
IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0
IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7
fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0
aW9uIGYoKSB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlv
biBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fSB9
IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKGF3YWl0
KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZihb
YXdhaXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rp
b24gZihbLi4uYXdhaXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZiguLi5hd2FpdCkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJh
bWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoImFzeW5jIGZ1bmN0aW9uIGYoe2F3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoe2lzQXN5bmM6IGF3YWl0fSkge30iLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
KworLy8gQXN5bmNBcnJvd0Z1bmN0aW9uCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9
IGFzeW5jICgpID0+IHsgdmFyIGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIgW2F3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIFsuLi5hd2Fp
dF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3lu
YyAoKSA9PiB7IHZhciB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9
KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsg
dmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQgW2F3YWl0
XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYg
PSBhc3luYyAoKSA9PiB7IGxldCBbLi4uYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IHthd2FpdH0g
PSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0g
YXN5bmMgKCkgPT4geyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCB7aXNB
c3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3QgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3QgW2F3
YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCB7
YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7
IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBmdW5jdGlvbiBhd2FpdCgpIHt9
IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4g
eyBhc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24g
bmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBmID0gYXN5bmMgKGF3YWl0KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoW2F3YWl0XSkgPT4ge30iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKFsuLi5hd2FpdF0pID0+IHt9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICguLi5hd2FpdCkgPT4g
e30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKHthd2Fp
dH0pID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5j
ICh7aXNBc3luYzogYXdhaXR9KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFt
ZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIGYgPSBhc3luYyBhd2FpdCA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBh
cmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworCisvLyBBc3luY01ldGhvZAor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciBhd2FpdDsg
fSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkg
eyB2YXIgW2F3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciBbLi4uYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIHthd2FpdH0g
PSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3lu
YyBmKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciB7aXNBc3luYzogYXdhaXR9
ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5
bmMgZigpIHsgbGV0IGF3YWl0OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSB9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7
IGxldCBbLi4uYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9IH0iLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigp
IHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCB7aXNBc3luYzogYXdh
aXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBPID0geyBhc3luYyBmKCkgeyBjb25zdCBhd2FpdDsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IFthd2FpdF0g
PSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8g
PSB7IGFzeW5jIGYoKSB7IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IHth
d2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYo
KSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGZ1bmN0aW9uIGF3YWl0
KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5j
IGYoKSB7IGFzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30gfSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1
bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZihhd2FpdCkge30gfSAiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKFthd2FpdF0pIHt9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZihbLi4uYXdhaXRd
KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYo
Li4uYXdhaXQpIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsg
YXN5bmMgZih7YXdhaXR9KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IE8gPSB7IGFzeW5jIGYoe2lzQXN5bmM6IGF3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNG
dW5jdGlvbiBjb25zdHJ1Y3Rvcgorc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlv
bigndmFyIGF3YWl0OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVu
Y3Rpb24oJ3ZhciBbYXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiQXN5bmNGdW5jdGlvbigndmFyIFsuLi5hd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIge2F3YWl0fSA9IHt9OycpIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciB7aXNBc3luYzog
YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5j
dGlvbigndmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQgYXdhaXQ7JykiLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQgW2F3YWl0XSA9IFtdOycp
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbign
bGV0IFsuLi5hd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCB7YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQge2lzQXN5bmM6IGF3
YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5
bmNGdW5jdGlvbignbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IGF3YWl0OycpIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29u
c3QgW2F3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiQXN5bmNGdW5jdGlvbignY29uc3QgWy4uLmF3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qge2F3YWl0fSA9
IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5j
dGlvbignY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qge2lzQXN5bmM6IGF3YWl0
fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNG
dW5jdGlvbignZnVuY3Rpb24gYXdhaXQoKSB7fScpIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9u
IG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJBc3luY0Z1bmN0aW9uKCdhc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9JykiLCAiQ2Fu
bm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2F3YWl0JywgJycpIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdbYXdhaXRdJywg
JycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdbLi4u
YXdhaXRdJywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0
aW9uKCcuLi5hd2FpdCcsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5
bmNGdW5jdGlvbigne2F3YWl0fScsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFt
ZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiQXN5bmNGdW5jdGlvbigne2lzQXN5bmM6IGF3YWl0fScsICcnKSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292387</attachid>
            <date>2016-10-21 12:59:20 -0700</date>
            <delta_ts>2016-10-21 13:18:06 -0700</delta_ts>
            <desc>First round of comments + delete that commented out op_to_this</desc>
            <filename>bug-163760-20161021155540.patch</filename>
            <type>text/plain</type>
            <size>145668</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Njg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MjJmMzUxMGMwZWNkMGMyNWUwMDUxMWQyYjgxNmZmOTRlOGQ1NjE2Li5lZWE2MmVlMDIzYjM2YWIw
NjQyOTljYmU5MWZkNTg3YWM1MDE1NWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTcgQEAKKzIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBm
dW5jdGlvbnMgZ2VuZXJhdGUgYnl0ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3
aGljaCBpcworICAgICAgICBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb246CisgICAgICAgIAorICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5z
bGF0aW9uOgorICAgICAgICBhc3luYyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAv
LyBBZnRlciB0cmFuc2xhdGlvbjoKKyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAg
ICAgICAgIGxldCBnZW5lcmF0b3IgPSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQm9keSBvZiBhc3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgQGdlbmVyYXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5l
cmF0b3JUaGlzOiB0aGlzLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8
ZnJhbWUgc3RhdGU+LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgQXdhaXQgRXhw
cmVzc2lvbnMgYXJlIGVxdWl2YWxlbnQgdG8gbm9uLWRlbGVnYXRpbmcgWWllbGQgZXhwcmVzc2lv
bnMsIGFuZCBlbWl0IGlkZW50aWNhbCBieXRlY29kZS4KKworICAgICAgICBJbiB0aGlzIGJ1Zywg
YXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBvbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCwgYXMg
c3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGRvIG5vdCB5ZXQgd29y
ayBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5q
czogQWRkZWQuCisgICAgICAgIChhc3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19hc3luY19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3
RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZSk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6QXN5bmNG
dW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6
SlNBc3luY0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJl
bnRseSk6CisKIDIwMTYtMTAtMjEgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbSlNDXSBkb24ndCBjcmFzaCB3aGVuIGFyZ3VtZW50cyB0byBgbmV3IEZ1bmN0
aW9uKClgIHByb2R1Y2UgdW5leHBlY3RlZCBBU1QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCAzOTVmZTJjYTU1ZjQ4ZTU2ZmM1MmRlNTQzMWY2ZjFkZmMwNjVjNTkwLi4xNzY5
ODQzZGY2N2VkYzI3NTg5OWY3MmI2NTAwNmM5ODJkMjZmYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC02MzUsNiArNjM1LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBydW50aW1lL0FycmF5Q29udmVudGlvbnMuY3BwCiAgICAgcnVudGltZS9BcnJh
eUl0ZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisg
ICAgcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9Bc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvQmFzaWNCbG9ja0xvY2F0aW9uLmNw
cAogICAgIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvQm9vbGVh
bk9iamVjdC5jcHAKQEAgLTcxMSw2ICs3MTMsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUv
SlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmNwcAorICAgIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNCb3Vu
ZEZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKICAgICBydW50aW1lL0pT
Q2FsbGVlLmNwcApAQCAtMTI5NSw2ICsxMjk4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0JVSUxU
SU5TX1NPVVJDRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlDb25z
dHJ1Y3Rvci5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5
UHJvdG90eXBlLmpzCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvRGF0
ZVByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9GdW5jdGlv
blByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9HZW5lcmF0
b3JQcm90b3R5cGUuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggNjYzMDUzNzIwMjRlMWRkOTNhNGFjNzJkMDI5MDZhMzIwMzA1NDY2Mi4uMjg1NGQ1ZTc5
ODZkYjA5MWIyYjk4NGNhMGUzZjBmMjQ3OTBjMmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTg5LDYgKzg5LDcgQEAgSmF2YVNjcmlwdENvcmVfQlVJ
TFRJTlNfU09VUkNFUyA9IFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUNv
bnN0cnVjdG9yLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheUl0ZXJh
dG9yUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9BcnJheVBy
b3RvdHlwZS5qcyBcCisgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXN5bmNGdW5jdGlv
blByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvRGF0ZVByb3Rv
dHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5
cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlw
ZS5qcyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZkNDJiOWM3NWRlNGRhZGU3
ODI2MTkwNzg5YzA3ODI2OTNjYzI4NmIuLjliYTM2Njg4ODg5Zjk5ODcxMTlhMDdhOTY5Y2VkMjQx
YmQ0MzdjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjQzLDYgKzEyNDMs
MTIgQEAKIAkJNTNGQTJBRTMxQ0YzODAzOTAwMjI3MTFEIC8qIExMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZBMkFFMjFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCAqLzsgfTsKIAkJNTNGRDA0
RDMxRDdBQjI3NzAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZEMDREMTFEN0FCMTg3MDAz
Mjg3RDMgLyogV0FTTUNhbGxpbmdDb252ZW50aW9uLmNwcCAqLzsgfTsKIAkJNTNGRDA0RDQxRDdB
QjI5MTAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGRDA0RDIxRDdBQjE4NzAwMzI4N0QzIC8q
IFdBU01DYWxsaW5nQ29udmVudGlvbi5oICovOyB9OworCQk1QjcwQ0ZERTFEQjY5RTY2MDBFQzIz
RjkgLyogSlNBc3luY0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9u
LmggKi87IH07CisJCTVCNzBDRkRGMURCNjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENG
RDkxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgKi87IH07CisJCTVCNzBD
RkUwMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEQTFEQjY5RTVDMDBF
QzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oICovOyB9OworCQk1QjcwQ0ZFMTFEQjY5
RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEQjFEQjY5RTVDMDBFQzIzRjkg
LyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CisJCTVCNzBDRkUyMURCNjlFNjYw
MEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBB
c3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJNUI3MENGRTMxREI2OUU2NjAwRUMy
M0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZERDFEQjY5RTVDMDBFQzIzRjkgLyogQXN5
bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlD
NjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAq
LzsgfTsKIAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBT
dXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NTc3
NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsKIAkJNURCQjE1MjUxMzFEMEJE
NzAwNTZBRDM2IC8qIG1pbmlkb20uanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEyMTEwRDBBNDg3ODg3MDA0ODAyNTUgLyogbWlu
aWRvbS5qcyAqLzsgfTsKQEAgLTM1NDgsNiArMzU1NCwxMyBAQAogCQk1M0ZBMkFFMjFDRjM4MDM5
MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUzRkQwNEQxMUQ3QUIxODcwMDMyODdEMyAvKiBXQVNNQ2FsbGluZ0NvbnZlbnRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0FTTUNhbGxpbmdD
b252ZW50aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNGRDA0RDIxRDdB
QjE4NzAwMzI4N0QzIC8qIFdBU01DYWxsaW5nQ29udmVudGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXQVNNQ2FsbGluZ0NvbnZlbnRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FzeW5jRnVuY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGRDkxREI2OUU1QzAwRUMyM0Y5IC8q
IEpTQXN5bmNGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0FzeW5jRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Qjcw
Q0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkRCMURCNjlFNUMwMEVDMjNGOSAvKiBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QjcwQ0ZEQzFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZERDFEQjY5RTVDMDBF
QzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCODI0MzA0MURCN0FBNDkwMEVBNjM4NCAvKiBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5
bGliIjsgbmFtZSA9IGxpYmVkaXQuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJlZGl0LmR5bGli
OyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk1REFGRDZDQjE0NkI2ODYzMDBGQkVG
QjQgLyogSlNDLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEpTQy54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUREREY0NDYxNEZFRTcyMjAwQjRGQjREIC8qIExMSW50RGVz
aXJlZE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnREZXNp
cmVkT2Zmc2V0cy5oOyBwYXRoID0gTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTU5MTUsNiArNTkyOCwxMCBA
QAogCQkJCUY2OTJBODREMDI1NTU5N0QwMUZGNjBGNyAvKiBBcnJheVByb3RvdHlwZS5jcHAgKi8s
CiAJCQkJRjY5MkE4NEUwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmggKi8sCiAJ
CQkJMEZCN0YzOEExNUVEOEUzODAwRjE2N0IyIC8qIEFycmF5U3RvcmFnZS5oICovLAorCQkJCTVC
NzBDRkREMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICov
LAorCQkJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3IuaCAqLywKKwkJCQk1QjcwQ0ZEQjFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblBy
b3RvdHlwZS5jcHAgKi8sCisJCQkJNUI3MENGREExREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQkwRjM4RDJBMDFENDQxOTY2MDA2ODA0OTkgLyogQXV4
aWxpYXJ5QmFycmllci5oICovLAogCQkJCTBGMzhEMkExMUQ0NDE5NjYwMDY4MDQ5OSAvKiBBdXhp
bGlhcnlCYXJyaWVySW5saW5lcy5oICovLAogCQkJCTUyNjc4RjhDMUEwMzEwMDkwMDZBMzA2RCAv
KiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwICovLApAQCAtNjEwMCw2ICs2MTE3LDggQEAKIAkJCQkw
RjJCNjZCQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCAqLywKIAkJCQkw
RjJCNjZCQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggKi8s
CiAJCQkJNTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggKi8sCisJ
CQkJNUI3MENGRDkxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgKi8sCisJ
CQkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oICovLAogCQkJ
CTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovLAogCQkJ
CTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLywKIAkJCQk2
NTdDRjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuY3BwICovLApAQCAtNzI4OCw2ICs3
MzA3LDcgQEAKIAkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXlQcm90b3R5cGUu
anMgKi8sCiAJCQkJN0NGOUJDNTgxQjY1RDlBMzAwOURCMUVGIC8qIEFycmF5Q29uc3RydWN0b3Iu
anMgKi8sCiAJCQkJN0NGOUJDNTkxQjY1RDlBMzAwOURCMUVGIC8qIEFycmF5SXRlcmF0b3JQcm90
b3R5cGUuanMgKi8sCisJCQkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUuanMgKi8sCiAJCQkJREUyNkU5MDYxQ0I1REQ5NjAwRDJCRTgyIC8qIEJ1aWx0
aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAgKi8sCiAJCQkJREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgy
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oICovLAogCQkJCUE3RDgwMUExMTg4MEQ2NkUw
MDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovLApAQCAtNzcyMCw2ICs3NzQwLDcg
QEAKIAkJCQlEQzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMgLyogSGVhcENlbGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzNDQ0ZDMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja01hcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZDM0NDRkQxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUI3MENGRTIxREI2OUU2NjAwRUMyM0Y5IC8qIEFz
eW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkUxOUFE
QTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJGMTU4
RDE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkMzQ0QwMDE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tXb3JrbGlzdC5oIGluIEhl
YWRlcnMgKi8sCkBAIC04Mjg4LDYgKzgzMDksNyBAQAogCQkJCTdDMTg0RTFCMTdCRURCRDMwMDdD
QjYzQSAvKiBKU1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTIzMTdCRUUyNDAw
MDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2
QjczMUUxQkRBMDhFRjAwMzMxQjg0IC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNUI3MENGREUxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDREIxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJv
bWlzZURlZmVycmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzE4NEUxRjE3QkVFMjJFMDA3Q0I2
M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTZCNzMxRjFC
REEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8s
CkBAIC04NDI4LDYgKzg0NTAsNyBAQAogCQkJCUJDMThDNDNGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBO
b2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNDVBMjgxOEExQjI1OTAwMjZEODhGIC8qIE5v
bmRldGVybWluaXN0aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDEwRTE2RjVD
RDAwQjM0NDYwIC8qIE51bWJlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Qjcw
Q0ZFMDFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0NDIwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlckNvbnN0cnVjdG9y
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDMwRTE2RjVDRDAwQjM0NDYwIC8qIE51
bWJlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDQwRTE2RjVDRDAwQjM0NDYw
IC8qIE51bWJlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MjkzLDYgKzkzMTYsNyBA
QAogCQkJCUE1NTcxNEJGMUNEODA0QTQwMDA0RDJDNiAvKiBDb25zb2xlT2JqZWN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRUM4NTI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BhdGNocG9pbnRT
cGVjaWFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTI3MUJEQUNEQUMwMDgwRkY3NCAv
KiBCM1BhdGNocG9pbnRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QjcwQ0ZFMzFEQjY5
RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUM4NTI5MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZFQzg1MkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQzNDIyQTYyMUMxNThFNkEwMEUyRUI5OCAvKiBCM0NvbnN0
RmxvYXRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk3MDYsNiArOTczMCw3IEBACiAJCQkJ
MEY1NTEzQTgxRDVBNjhDRDAwQzMyQkQ4IC8qIEZyZWVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZFOTlCMjRBMUMyNEMzRDcwMEM4MjE1OSAvKiBKSVROZWdHZW5lcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODZDQzg1QzQwRUU3QTg5NDAwMjg4NjgyIC8qIEpJVFByb3BlcnR5QWNj
ZXNzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCNzBDRkUxMURCNjlFNjYwMEVDMjNGOSAvKiBB
c3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QzFFOEU0MTEy
RTcyRUYwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQjQxNTg0MUQ3OEZCNEMwMERGOEQwOSAvKiBBcnJheUNvbnZlbnRpb25zLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91
dGluZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk4ODMsNiArOTkwOCw3IEBACiAJCQkJMTQ4RjIx
QjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURDNjlB
QTY2MUNGN0ExRjIwMEM2MjcyRiAvKiBNYXRjaFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTVCNzBDRkRGMURCNjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1RUIyOUIxMENFMjU4MTAwMUE5OTBFIC8qIE5v
ZGVzQ29kZWdlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTQ2RjUyMTFBMzJCMzEzMDA2RjA3
RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMjJFNUEy
MURBNjQ0MzkwMDZFNzcwOSAvKiBERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5j
RnVuY3Rpb25Qcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTVhYjk3OWJhZDQ1NTRjNmJjN2Y1
MzIxOTFmM2VhY2YyMmQxY2VkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9u
IGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCit7
CisgICAgInVzZSBzdHJpY3QiOworICAgIGxldCBzdGF0ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9y
U3RhdGU7CisgICAgbGV0IHZhbHVlID0gQHVuZGVmaW5lZDsKKworICAgIGlmIChzdGF0ZSA9PT0g
QEdlbmVyYXRvclN0YXRlQ29tcGxldGVkIHx8IChyZXN1bWVNb2RlICE9PSBAR2VuZXJhdG9yUmVz
dW1lTW9kZU5vcm1hbCAmJiByZXN1bWVNb2RlICE9PSBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93
KSkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIiIpOworCisgICAgdHJ5IHsKKyAgICAg
ICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsK
KyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9y
LkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUs
IGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5l
cmF0b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOworICAg
ICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKHZhbHVlKTsKKyAgICAgICAgfQorICAg
IH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBA
R2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0
KGVycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUodmFsdWUpLkB0
aGVuKAorICAgICAgICBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1
bWUoZ2VuZXJhdG9yLCB2YWx1ZSwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpOyB9LAorICAg
ICAgICBmdW5jdGlvbihlcnJvcikgeyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJh
dG9yLCBlcnJvciwgQEdlbmVyYXRvclJlc3VtZU1vZGVUaHJvdyk7IH0pOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDU3NmRl
NDAwNjA0ZDEwMTQ3NTFjYzYzYmVhY2VjNzdhNTVmZDRmZjcuLjg0YWUzYmRhMmYwMGI5MGQ4ZjFk
MjMwZjYxYmFkMDkyOGM4MTEzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTEwNSw2ICsxMDUsOCBAQAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiLCAibGVuZ3Ro
IiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hc3luY19mdW5jIiwgImxl
bmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXN5bmNfZnVuY19l
eHAiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3NldF9mdW5j
dGlvbl9uYW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9j
YWxsIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2Nh
bGwiLCAibGVuZ3RoIiA6IDkgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggZDk3M2JjZmIxMzdjMzJjMGM2ZGVlZGYzZGUwZTFkZDk0
MTY1NGM2Zi4uMTYyZGIyODJjZDU1MzkwNTAxODU1NzEwYzIxZWJiNDE3ZmE1MDVlNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE2
NCw2ICsxNjQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNv
ZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfZ2V0X2Vu
dW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4cDoK
ICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50OgogICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZToKQEAgLTE5Niw2ICsxOTcs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywg
T3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAg
Y2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICBj
YXNlIG9wX25ld19hc3luY19mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAg
ICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jl
c3Q6CkBAIC0zODgsNiArMzkwLDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNl
IG9wX25ld19mdW5jX2V4cDoKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBj
YXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVu
YzoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFy
YXJnczoKICAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9j
YWxsX2ZvcndhcmRfYXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCBiMTUyMTEyYjNhNmFlYjBiNTg2OGY2YWEyMDk5ZWVjNTU2N2Iy
YWY4Li4xYTI5OTc1MmMyZjEzYzI0ZTNlYjlmYjExNTZmNDgxNzYyYzgyYzM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ2Myw2ICsxNDYz
LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9uZXdfYXN5bmNfZnVuYzogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2FzeW5jX2Z1bmMiKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKQEAgLTE0NzksNiArMTQ4NywxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUo
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOiB7Cisg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJuZXdfYXN5bmNfZnVuY19leHAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0
YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3NldF9mdW5jdGlvbl9uYW1lOiB7CiAgICAgICAgICAgICBpbnQgZnVuY1JlZyA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG5hbWVSZWcgPSAoKytpdCktPnUub3BlcmFuZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKaW5kZXggMjVhMzU3YmY1NjExNjQ1MGMxYjBlMjU1Yzk3NzBhMjNhZDNlMTllYy4uZTkxOGE5
M2MyNGU2NzhkZTEyMmQ3NTUwMTE4MTkyZGI1NzdmMzE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTEyMiw3ICsxMjIs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lz
U3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNF
dmFsOyB9CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyc2VNb2RlOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3BhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CisgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJz
ZU1vZGUocGFyc2VNb2RlKCkpOyB9CiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4o
bV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxDb250ZXh0VHlwZT4obV9ldmFs
Q29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CmluZGV4IGJhYzQwNTQxM2E2YjJmZGQ5OTcyNzJjMjhmMGM3NGE3MjMwNmEzMzguLjZmNTU4Y2Y3
YTk3NGM4NTMzM2JhODUyMzAwMjE4ZmUyMzEyMmUxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9y
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVz
OyB9CiAgICAgCi0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CisgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1v
ZGUocGFyc2VNb2RlKCkpOyB9CiAKICAgICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUoKSBjb25zdCB7cmV0dXJuIHN0YXRpY19jYXN0PEpTQzo6RGVyaXZlZENvbnRl
eHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBm
N2UxMDMxN2EyMTRjNjQ4MzkwYjk0YjE4YmNmZDczNzNkNWNlMTdmLi42MGE5YWU0MDJhYzNjMjg4
ZmZhNzU5M2E3MDc4YTc5NmE3NDRjZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTU4LDcgKzE1
OCw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgfQog
ICAgIAogCi0gICAgaWYgKG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlv
bkJvZHlQYXJzZU1vZGUobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpKSkKICAgICAgICAgcGVyZm9y
bUdlbmVyYXRvcmlmaWNhdGlvbihtX2NvZGVCbG9jay5nZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXgpOwogCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9ucyhzdGQ6Om1ha2Vf
dW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+KG1faW5zdHJ1Y3Rpb25zKSk7CkBAIC0y
NjgsMTUgKzI2OCwxNSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hvdWxk
Q2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxv
Y2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUt
PnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9k
ZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAm
JiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAg
Ly8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZl
cmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2Nv
cGUuCisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJz
ZU1vZGUpKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBhbmQgQXN5bmNGdW5jdGlvbiBuZXZlciBw
cm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2
ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0Fy
Z3VtZW50cyA9IGZhbHNlOwogCi0gICAgICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2Nv
cGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3Bl
IGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCisgICAgICAgIC8vIEdlbmVyYXRvciBhbmQgQXN5bmNG
dW5jdGlvbiB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJs
ZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCiAgICAgICAg
IHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOwogICAgIH0KIAotICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2Rl
ICYmIG5lZWRzQXJndW1lbnRzKSB7CisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9u
V3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUpICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAg
IC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFw
cGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8g
VGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVh
dGVkIGJlZm9yZSBzdGFydGluZyBpdC4KICAgICAgICAgLy8gVG8gd29ya2Fyb3VuZCBpdCwgd2Ug
ZXZhbHVhdGUgdGhlc2UgYXJndW1lbnRzIGFzIGFyZ3VtZW50cyBvZiBhIHdyYXBwaW5nIGdlbmVy
YXRvciBmdW5jdGlvbiwgYW5kIHJlZmVyZW5jZSBpdCBmcm9tIGEgZ2VuZXJhdG9yLgpAQCAtMzIw
LDEzICszMjAsMTQgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIGVtaXRFbnRlcigp
OwogCi0gICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlN
b2RlKQorICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFy
c2VNb2RlKSkKICAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbMV07
CiAKICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlz
SW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2Rl
KCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSk7CisgICAgICAgIEFTU0VSVCghaXNBc3luY0Z1bmN0aW9uQm9keVBhcnNl
TW9kZShwYXJzZU1vZGUpKTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9u
TmFtZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSk7CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1
cmVzKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOwogICAgICAgICBib29sIG1hcmtBc0Nh
cHR1cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZDsKQEAgLTUw
NSw3ICs1MDYsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgYm9vbCBzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxlID0gIWhh
dmVQYXJhbWV0ZXJOYW1lZEFyZ3VtZW50cyAmJiAhbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlv
bigpOworICAgICAgICBib29sIHNob3VsZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUgPSAhaGF2ZVBh
cmFtZXRlck5hbWVkQXJndW1lbnRzCisgICAgICAgICAgICAmJiAhU291cmNlUGFyc2VNb2RlU2V0
KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpKTsK
ICAgICAgICAgc2hvdWxkQ3JlYXRlQXJndW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3BlID0g
c2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJpYWJsZSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0Owog
ICAgICAgICAvLyBEbyBub3QgY3JlYXRlIGFyZ3VtZW50cyB2YXJpYWJsZSBpbiBjYXNlIG9mIEFy
cm93IGZ1bmN0aW9uLiBWYWx1ZSB3aWxsIGJlIGxvYWRlZCBmcm9tIHBhcmVudCBzY29wZQogICAg
ICAgICBpZiAoc2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJpYWJsZSAmJiAhc2hvdWxkQ3JlYXRlQXJn
dW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3BlKSB7CkBAIC01NDksNiArNTUxLDIwIEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIEFTU0VSVCghaXNDb25zdHJ1Y3RvcigpKTsKKyAg
ICAgICAgQVNTRVJUKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSk7
CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKworICAgICAgICBlbWl0
TW92ZShtX2dlbmVyYXRvclJlZ2lzdGVyLCAmbV9jYWxsZWVSZWdpc3Rlcik7CisgICAgICAgIGVt
aXROZXdPYmplY3QobV9nZW5lcmF0b3JSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6CisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlOgogICAgIGNh
c2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTogewogICAgICAgICAvLyB8dGhp
c3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgogICAgICAgICBlbWl0
TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTYwOCw3ICs2MjQs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogCiAgICAgLy8gV2UgbmVlZCBsb2FkIHxzdXBl
cnwgJiB8dGhpc3wgZm9yIGFycm93IGZ1bmN0aW9uIGJlZm9yZSBpbml0aWFsaXplRGVmYXVsdFBh
cmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrCiAgICAgLy8gaWYgd2UgaGF2
ZSBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9uLiBCZWNhdXNlIHxzdXBlcnwgJiB8dGhpc3wg
dmFsdWVzIGNhbiBiZSB1c2VkIHRoZXJlCi0gICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGUgPT0gcGFyc2VNb2RlICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAg
ICBpZiAoKFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25N
b2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpLmNvbnRhaW5zKHBh
cnNlTW9kZSkgJiYgIWlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgfHwgcGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpIHsKICAgICAgICAgaWYgKGZ1
bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5
KCkpCiAgICAgICAgICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZp
cm9ubWVudCgpOwogCkBAIC02MjcsMTIgKzY0Myw0NiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZQogICAgIC8vIEFsbCAiYWRkVmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFs
aXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlz
IGNhbGxlZAogICAgIC8vIGJlY2F1c2UgYSBmdW5jdGlvbidzIGRlZmF1bHQgcGFyYW1ldGVyIEV4
cHJlc3Npb25Ob2RlcyB3aWxsIHVzZSB0ZW1wb3JhcnkgcmVnaXN0ZXJzLgogICAgIHB1c2hURFpW
YXJpYWJsZXMoKnBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6
RG9Ob3RPcHRpbWl6ZSwgVERaUmVxdWlyZW1lbnQ6OlVuZGVyVERaKTsKKworICAgIFRyeURhdGEq
IHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoaXNBc3luY0Z1bmN0
aW9uV3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3Qp
IHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiB0cnlGb3JtYWxQYXJhbWV0ZXJzU3RhcnQgPSBlbWl0
TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7CisgICAgICAgIHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRh
ID0gcHVzaFRyeSh0cnlGb3JtYWxQYXJhbWV0ZXJzU3RhcnQuZ2V0KCkpOworICAgIH0KKwogICAg
IGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3Rh
Y2socGFyYW1ldGVycywgaXNTaW1wbGVQYXJhbWV0ZXJMaXN0LCBmdW5jdGlvbk5vZGUsIGZ1bmN0
aW9uU3ltYm9sVGFibGUsIHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwgY2FwdHVyZXMsIHNob3Vs
ZENyZWF0ZUFyZ3VtZW50c1ZhcmlhYmxlSW5QYXJhbWV0ZXJTY29wZSk7Ci0gICAgCisKKyAgICBp
ZiAoaXNBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUpICYmICFpc1NpbXBs
ZVBhcmFtZXRlckxpc3QpIHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkaWROb3RUaHJvdyA9IG5l
d0xhYmVsKCk7CisgICAgICAgIGVtaXRKdW1wKGRpZE5vdFRocm93LmdldCgpKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGV4Y2VwdGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAg
UmVmUHRyPExhYmVsPiBjYXRjaEhlcmUgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7Cisg
ICAgICAgIHBvcFRyeUFuZEVtaXRDYXRjaCh0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSwgZXhjZXB0
aW9uLmdldCgpLCB0aHJvd25WYWx1ZS5nZXQoKSwgY2F0Y2hIZXJlLmdldCgpLCBIYW5kbGVyVHlw
ZTo6Q2F0Y2gpOworCisgICAgICAgIC8vIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KHRocm93blZh
bHVlKTsKKyAgICAgICAgVmFyaWFibGUgcHJvbWlzZVZhciA9IHZhcmlhYmxlKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLlByb21pc2VQcml2YXRlTmFtZSgpKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZW1pdFJlc29sdmVTY29wZShuZXdUZW1wb3Jhcnko
KSwgcHJvbWlzZVZhcik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9taXNlQ29uc3Ry
dWN0b3IgPSBlbWl0R2V0RnJvbVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgcHJv
bWlzZVZhciwgUmVzb2x2ZU1vZGU6OlRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBwcm9taXNlUmVqZWN0ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHBy
b21pc2VDb25zdHJ1Y3Rvci5nZXQoKSwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkucmVqZWN0UHJpdmF0ZU5hbWUoKSk7CisKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0
aGlzLCBudWxscHRyLCAxKTsKKworICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3Rlcigp
LCBwcm9taXNlQ29uc3RydWN0b3IuZ2V0KCkpOworICAgICAgICBlbWl0TW92ZShhcmdzLmFyZ3Vt
ZW50UmVnaXN0ZXIoMCksIHRocm93blZhbHVlLmdldCgpKTsKKworICAgICAgICBKU1RleHRQb3Np
dGlvbiBkaXZvdChmdW5jdGlvbk5vZGUtPmZpcnN0TGluZSgpLCBmdW5jdGlvbk5vZGUtPnN0YXJ0
T2Zmc2V0KCksIGZ1bmN0aW9uTm9kZS0+bGluZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBlbWl0Q2FsbChuZXdUZW1wb3JhcnkoKSwgcHJvbWlz
ZVJlamVjdC5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCwgZGl2b3QsIGRp
dm90LCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworICAgICAgICBlbWl0UmV0dXJuKHJlc3VsdC5nZXQo
KSk7CisKKyAgICAgICAgZW1pdExhYmVsKGRpZE5vdFRocm93LmdldCgpKTsKKyAgICB9CisKICAg
ICAvLyBJZiB3ZSBkb24ndCBoYXZlICBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9uLCB0aGVu
IGxvYWRpbmcgfHRoaXN8IGluc2lkZSBhbiBhcnJvdyBmdW5jdGlvbiBtdXN0IGJlIGRvbmUKICAg
ICAvLyBhZnRlciBpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rp
b25TY29wZVN0YWNrKCkgYmVjYXVzZSB0aGF0IGZ1bmN0aW9uIHNldHMgdXAgdGhlCiAgICAgLy8g
U3ltYm9sVGFibGUgc3RhY2sgYW5kIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNh
bEVudmlyb25tZW50KCkgY29uc3VsdHMgdGhlIFN5bWJvbFRhYmxlIHN0YWNrCi0gICAgaWYgKFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgPT0gcGFyc2VNb2RlICYmIGlzU2ltcGxl
UGFyYW1ldGVyTGlzdCkgeworICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rp
b25Nb2RlKS5jb250YWlucyhwYXJzZU1vZGUpICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgewog
ICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGZ1bmN0aW9uTm9kZS0+dXNl
c1N1cGVyUHJvcGVydHkoKSkKICAgICAgICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0
aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgCkBAIC02NDIsNyArNjkyLDcgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5j
dGlvbk5vZGUsIFVubGlua2UKICAgICAKICAgICAvLyBTZXQgdXAgdGhlIGxleGljYWwgZW52aXJv
bm1lbnQgc2NvcGUgYXMgdGhlIGdlbmVyYXRvciBmcmFtZS4gV2Ugc3RvcmUgdGhlIHNhdmVkIGFu
ZCByZXN1bWVkIGdlbmVyYXRvciByZWdpc3RlcnMgaW50byB0aGlzIHNjb3BlIHdpdGggdGhlIHN5
bWJvbCBrZXlzLgogICAgIC8vIFNpbmNlIHRoZXkgYXJlIHN5bWJvbCBrZXllZCwgdGhlc2UgdmFy
aWFibGVzIGNhbm5vdCBiZSByZWFjaGVkIGZyb20gdGhlIHVzdWFsIGNvZGUuCi0gICAgaWYgKFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUgPT0gcGFyc2VNb2RlKSB7CisgICAgaWYg
KGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKSB7CiAg
ICAgICAgIEFTU0VSVChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKICAgICAgICAgbV9n
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLnNldCgqbV92bSwgZnVuY3Rpb25TeW1ib2xUYWJsZSk7
CiAgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4ID0gc3ltYm9sVGFibGVD
b25zdGFudEluZGV4OwpAQCAtMjY0NCw2ICsyNjk0LDIxIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRTZXR0ZXJCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNldHRlci0+aW5kZXgoKSk7CiB9CiAKK3Zv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRHZW5lcmF0b3JGaWVsZHMoUmVnaXN0ZXJJRCog
bmV4dEZ1bmN0aW9uKQoreworICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIGp1c3QgY3JlYXRl
IGFuIG9iamVjdCBhbmQgc3RvcmUgZ2VuZXJhdG9yIHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBwcm9w
ZXJ0aWVzIGZvciBlYXNlLgorICAgIC8vIEJ1dCB0byBtYWtlIGl0IGVmZmljaWVudCwgd2Ugd2ls
bCBpbnRyb2R1Y2UgSlNHZW5lcmF0b3IgY2xhc3MsIGFkZCBvcGNvZGUgbmV3X2dlbmVyYXRvciBh
bmQgdXNlIGl0cyBDKysgZmllbGRzIGluc3RlYWQgb2YgdGhlc2UgcHJpdmF0ZSBwcm9wZXJ0aWVz
LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUK
KworICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUoKSwgbmV4dEZ1bmN0
aW9uLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgIGVtaXREaXJlY3RQdXRCeUlk
KG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5l
cmF0b3JUaGlzUHJpdmF0ZU5hbWUoKSwgJm1fdGhpc1JlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6Oktu
b3duRGlyZWN0KTsKKworICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIs
IHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1l
KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKDApKSwgUHJvcGVydHlOb2RlOjpLbm93bkRp
cmVjdCk7CisKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9w
ZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBl
bWl0TG9hZChudWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwor
fQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5SWQoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkK
IHsKICAgICBlbWl0T3Bjb2RlKG9wX2RlbF9ieV9pZCk7CkBAIC0yOTg2LDYgKzMwNTEsMTEgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihS
ZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW8KICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yV3JhcHBlckZ1bmN0aW9uTW9kZToKICAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9k
TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZToK
KyAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfYXN5bmNfZnVuY19leHA7CisgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMwMDQsNyArMzA3NCw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNz
aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJv
d0Z1bmNFeHByTm9kZSogZnVuYykKIHsKLSAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFy
c2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBmdW5jLT5t
ZXRhZGF0YSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5j
dGlvbk1vZGUpOworICAgIEFTU0VSVChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25N
b2RlKS5jb250YWlucyhmdW5jLT5tZXRhZGF0YSgpLT5wYXJzZU1vZGUoKSkpOwogICAgIGVtaXRO
ZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oZHN0LCBmdW5jLT5tZXRhZGF0YSgpKTsKICAgICBy
ZXR1cm4gZHN0OwogfQpAQCAtMzAzOCw2ICszMTA4LDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRh
dGEKICAgICB1bnNpZ25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFr
ZUZ1bmN0aW9uKGZ1bmN0aW9uKSk7CiAgICAgaWYgKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUpCiAgICAgICAgIGVt
aXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlIGlmIChmdW5jdGlvbi0+
cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSkKKyAgICAg
ICAgZW1pdE9wY29kZShvcF9uZXdfYXN5bmNfZnVuYyk7CiAgICAgZWxzZQogICAgICAgICBlbWl0
T3Bjb2RlKG9wX25ld19mdW5jKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRl
eCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkNGMxYzhlOGVlYTg4YjFjMjBmNGE5NWU0NTM2OTJjY2Rl
NDliZmJmLi5iM2VmMDQwMWI5MjAyNTAxYzJiM2FkMGZlMjVmOTY5MDgyMzcwMTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCkBAIC01NzYsNyArNTc2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRQdXRHZXR0ZXJTZXR0ZXIoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHksIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIFJlZ2lzdGVySUQqIGdldHRlciwgUmVnaXN0
ZXJJRCogc2V0dGVyKTsKICAgICAgICAgdm9pZCBlbWl0UHV0R2V0dGVyQnlWYWwoUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIHVuc2lnbmVkIHByb3BlcnR5RGVzY3JpcHRv
ck9wdGlvbnMsIFJlZ2lzdGVySUQqIGdldHRlcik7CiAgICAgICAgIHZvaWQgZW1pdFB1dFNldHRl
ckJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCB1bnNpZ25lZCBw
cm9wZXJ0eURlc2NyaXB0b3JPcHRpb25zLCBSZWdpc3RlcklEKiBzZXR0ZXIpOwotICAgICAgICAK
KworICAgICAgICAvLyBJbml0aWFsaXplIG9iamVjdCB3aXRoIGdlbmVyYXRvciBmaWVsZHMgKEBn
ZW5lcmF0b3JUaGlzLCBAZ2VuZXJhdG9yTmV4dCwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9y
RnJhbWUpCisgICAgICAgIHZvaWQgZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBu
ZXh0RnVuY3Rpb24pOworCiAgICAgICAgIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlv
bkZvcklkZW50aWZpZXIoY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rp
b24sIENhbGxBcmd1bWVudHMmLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQs
IERlYnVnZ2FibGVDYWxsKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxJblRhaWxQb3Np
dGlvbihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24s
IENhbGxBcmd1bWVudHMmLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERl
YnVnZ2FibGVDYWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBkMzg3Y2RmODE1MDM4NTQ0MWEzNGU5NjNkNmI4YTI4
MGFmMDMyNDAyLi5lZjJjNWU2MDI0ZTQxNTQ0NDE2MmJkZmQ1ZmVlZWE4NTA1ODRjZmIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCkBAIC0zNDAyLDI1ICszNDAyLDY0IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgICAg
ICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIG5leHQuZ2V0KCksIGhvbWVPYmplY3QuZ2V0
KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBj
cmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRz
IHByb3BlcnRpZXMgZm9yIGVhc2UuCi0gICAgICAgIC8vIEJ1dCB0byBtYWtlIGl0IGVmZmljaWVu
dCwgd2Ugd2lsbCBpbnRyb2R1Y2UgSlNHZW5lcmF0b3IgY2xhc3MsIGFkZCBvcGNvZGUgbmV3X2dl
bmVyYXRvciBhbmQgdXNlIGl0cyBDKysgZmllbGRzIGluc3RlYWQgb2YgdGhlc2UgcHJpdmF0ZSBw
cm9wZXJ0aWVzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUxNTQ1CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0R2VuZXJhdG9yRmllbGRzKG5l
eHQuZ2V0KCkpOwogCi0gICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0
b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUoKSwgbmV4dC5nZXQoKSwgUHJvcGVydHlO
b2RlOjpLbm93bkRpcmVjdCk7CisgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVT
dGFydE9mZnNldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZl
Q2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rl
cigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAgIGdlbmVyYXRvci5lbWl0RGly
ZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JUaGlzUHJpdmF0ZU5hbWUoKSwgZ2Vu
ZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uTW9kZTogeworICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0
ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKHNpbmdsZVN0
YXRlbWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSog
ZXhwclN0YXRlbWVudCA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oc2luZ2xlU3Rh
dGVtZW50KTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIgPSBleHByU3RhdGVtZW50LT5l
eHByKCk7CisgICAgICAgIEFTU0VSVChleHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICAgICAg
RnVuY0V4cHJOb2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIp
OwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxTdGF0ZSA9IGdlbmVyYXRvci5lbWl0TG9h
ZChudWxscHRyLCBqc051bWJlcigwKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0
QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIGluaXRpYWxT
dGF0ZSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBuZXh0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdE5vZGUobmV4dC5nZXQoKSwgZnVuY0V4cHIpOwogCi0gICAgICAgIGdlbmVyYXRvci5lbWl0
RGlyZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCks
IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25v
d25EaXJlY3QpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnN1cGVyQmluZGluZygpID09IFN1cGVy
QmluZGluZzo6TmVlZGVkIHx8IGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBEb24n
dCBhbHdheXMgbG9hZCBob21lIG9iamVjdCBmb3IgYXN5bmMgYXJyb3dzCisgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKGdl
bmVyYXRvcik7CisgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIG5leHQu
Z2V0KCksIGhvbWVPYmplY3QuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQdXRHZW5lcmF0b3JGaWVsZHMobmV4dC5nZXQoKSk7CiAKICAgICAgICAgQVNTRVJUKHN0
YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCks
IGxpbmVTdGFydE9mZnNldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJh
dG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkpOworCisgICAgICAgIC8vIGxvYWQgQGFzeW5jRnVuY3Rp
b25SZXN1bWUsIGFuZCBjYWxsLgorICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3RhcnRBc3lu
Y0Z1bmN0aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBhdXRvIHZhciA9
IGdlbmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1l
cygpLmFzeW5jRnVuY3Rpb25SZXN1bWVQcml2YXRlTmFtZSgpKTsKKworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdl
bmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKHNjb3BlLmdldCgpLCBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0R2V0RnJvbVNjb3BlKHN0YXJ0QXN5bmNGdW5jdGlvbi5nZXQoKSwgc2NvcGUuZ2V0KCksIHZh
ciwgVGhyb3dJZk5vdEZvdW5kKTsKKworICAgICAgICAvLyByZXR1cm4gQGFzeW5jRnVuY3Rpb25S
ZXN1bWUuQGNhbGwodGhpcywgQGdlbmVyYXRvciwgQHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1l
TW9kZTo6Tm9ybWFsTW9kZSkKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwg
bnVsbHB0ciwgMyk7CisgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnQgPSAwOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7
CisgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1l
bnRDb3VudCsrKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpz
VW5kZWZpbmVkKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJl
Z2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
R2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7Cisg
ICAgICAgIC8vIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwgaW50IF9vZmZzZXQsIGludCBfbGlu
ZVN0YXJ0T2Zmc2V0KQorICAgICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdChmaXJzdExpbmUoKSwg
c3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2FsbEluVGFpbFBvc2l0aW9uKHJlc3VsdC5nZXQoKSwgc3RhcnRBc3luY0Z1bmN0
aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIGRpdm90LCBkaXZvdCwgZGl2b3Qs
IERlYnVnZ2FibGVDYWxsOjpObyk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHJlc3Vs
dC5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZTogewogICAgICAgICBSZWZQdHI8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJl
bCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKaW5kZXggNTQyYTQ3MTNmNTJkNWE5ZmE5YzYzZTU2ZTAxNmUyMjMwNWE4YWRmNi4uNDli
MWE4NmVkMTVhZjQxYWZhYTllN2QxM2I4OGE1YzQ0Nzc4OWJmYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcApAQCAtMjk5LDYgKzI5OSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jX2V4cCkKICAgICAgICAgREVG
SU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnVuYykKICAgICAgICAgREVGSU5FX09QKG9wX25ld19n
ZW5lcmF0b3JfZnVuY19leHApCisgICAgICAgIERFRklORV9PUChvcF9uZXdfYXN5bmNfZnVuYykK
KyAgICAgICAgREVGSU5FX09QKG9wX25ld19hc3luY19mdW5jX2V4cCkKICAgICAgICAgREVGSU5F
X09QKG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQogICAg
ICAgICBERUZJTkVfT1Aob3Bfbm90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMDVkZTI4
Y2UxZWQ2NzBiNTFmZWI4ZjUzYzM5YTRmZjU0NDkyOGU0YS4uNmQyMDI0OTM4N2IyOTFhYmViZGZh
OWZiYjc0N2RhODI3MDVmNmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01NDQsNiAr
NTQ0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19l
eHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVu
YyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5j
X2V4cChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmMo
SW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jX2V4cChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3Bfbm90KEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBiOTAxYmI0NjMxMDYwMDEyMGUxMWY4NGUxZWNhOWNi
NjI2NzQ5YjhkLi45Zjk5YWJhOWNmOTllY2QyOWEwMjlkODE0NDJiYThlMmZlZWY0MDkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTk3MSw5ICs5NzEsMTEg
QEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CiAgICAgaWYgKG9wY29kZUlEID09
IG9wX25ld19mdW5jKQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9u
LCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChvcGNv
ZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworICAgIGVsc2UgaWYgKG9wY29kZUlEID09
IG9wX25ld19nZW5lcmF0b3JfZnVuYykKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworICAgIGVsc2Ugewor
ICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2FzeW5jX2Z1bmMpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNF
eGVjKTsKICAgICB9CiB9CiAKQEAgLTk4Nyw2ICs5ODksMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAg
ZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAordm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2FzeW5jX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJ
VDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiB7CiAgICAgSnVtcCBub3RVbmRlZmluZWRTY29wZTsKQEAgLTEwMDgsOSArMTAxNSwxMSBAQCB2
b2lkIEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwKQogICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9y
X2Z1bmNfZXhwKTsKKyAgICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwKQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0
aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChv
cGNvZGVJRCA9PSBvcF9uZXdfYXN5bmNfZnVuY19leHApOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKICAgICB9
CiAKICAgICBkb25lLmxpbmsodGhpcyk7CkBAIC0xMDI2LDYgKzEwMzUsMTEgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwog
fQogCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudElu
c3RydWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAppbmRleCA4ZjhkNGFkMzQ1M2ZkNDZiMDMwNDMyYjMxOWMwNjNiMDMyOWMzOTU0Li5lYmQ3
N2NkMDM4NjhiZGMxZmI4YWFiYWUwZmJmOTNkMGU3NjFkYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSklUVG9ERkdE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCkBAIC0xMTcwLDYgKzEx
NzEsMTYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0
b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2MKICAgICByZXR1cm4gb3BlcmF0aW9uTmV3
RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9u
RXhlY3V0YWJsZSwgdHJ1ZSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3QXN5bmNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBK
U0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVu
Y3Rpb25Db21tb248SlNBc3luY0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRh
YmxlLCBmYWxzZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3QXN5bmNGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUp
Cit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlv
bj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7Cit9CisKIHZvaWQgSklU
X09QRVJBVElPTiBvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUoRXhlY1N0YXRlKiBleGVjLCBKU0Nl
bGwqIGZ1bmNDZWxsLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkTmFtZSkKIHsKICAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
aW5kZXggYWRmZWY3OGM2ZjAwYzUwM2QwNmZiZjg2NzY1Njg3ZTdkYzE0M2MyNC4uZGI1YmE4OTY1
YTdhNTAxYmEzNTI3YWE2NTQ4ODVlNmNmM2RkOTUzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTM3NSw2ICszNzUsOCBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBK
U0NlbGwqKQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlv
bldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29w
ZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2Vs
bCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24oRXhlY1N0YXRlKiwg
SlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUoRXhlY1N0YXRlKiwg
SlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVS
TkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhl
Y1N0YXRlKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDg3NTgyNTFmYTRhMWQ0OWY5MTAwYmViZWMw
ODg2NWJkNDEyZDdkZjUuLmY1OGY0Zjk2NmVhNzc0M2JmYzRlYzgwN2MxMWVmM2FiNGRkNDI5YmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApA
QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlv
bnMuaCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlv
bi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgpAQCAtMTE0OSw2ICsxMTUwLDE3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCiAgICAgTExJ
TlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5j
dGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKIH0KIAorTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX25ld19hc3luY19mdW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3Bl
KiBzY29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2Nv
cGUoKTsKKyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2dGKCJDcmVhdGlu
ZyBhc3luYyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKEpTQXN5bmNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJh
bmQpLCBzY29wZSkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1
bmNfZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xMTcxLDYgKzExODMsMTcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApCiAgICAg
TExJTlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwg
c2NvcGUpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hc3luY19m
dW5jX2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIAorICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51
bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10u
dS5vcGVyYW5kKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNBc3luY0Z1bmN0aW9uOjpjcmVh
dGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9zZXRfZnVuY3Rpb25fbmFtZSkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA5ODRlOWNjNDAz
MDMyNzlhYTcwMmRmOGZlYjc4OGMzYjhiOTYwNTBlLi5kNzYxMzhjMTI0NGZmN2FhZjQ4M2QwODAz
YWQ1YmI4MTE3ZWE3OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuaApAQCAtMTAzLDYgKzEwMyw4IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9uZXdfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9zZXRfZnVuY3Rpb25fbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jb25zdHJ1Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDU2MGRmM2VjYWI4MmRhODJiMjdmNDQzNjI0ZDBm
ZGU4ZTUwMWNlOWUuLjY0NDVhNDdjZWRhOWE1Y2Y3NTlhMTZlMTcyYzNiZDg0NmFiOWRiN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KQEAgLTEzMjEsNiArMTMyMSwxMiBAQCBfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5j
OgogICAgIGRpc3BhdGNoKDQpCiAKIAorX2xsaW50X29wX25ld19hc3luY19mdW5jOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXN5
bmNfZnVuYykKKyAgICBkaXNwYXRjaCg0KQorCisKIF9sbGludF9vcF9uZXdfYXJyYXk6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X25ld19hcnJheSkKQEAgLTE1OTksNiArMTYwNSwxMiBAQCBfbGxpbnRfb3BfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cDoKICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdf
Z2VuZXJhdG9yX2Z1bmNfZXhwKQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfYXN5
bmNfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX25ld19hc3luY19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg0KQorCisKIF9s
bGludF9vcF9zZXRfZnVuY3Rpb25fbmFtZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2Fs
bE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfc2V0X2Z1bmN0aW9uX25hbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNDkwODg0MTUxMWUyZjQwMTc3
M2IyMGZjZTY4ZjU4Mzk3NmY2ZDBhMS4uMmI1MmUzMmQ4MTMzZTY3MGZlZDI1ODcxODQ0NTc3YTAx
YWU0YzgzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjYx
LDcgKzI2MSw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJ
ZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vCiAgICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbiA9IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
QXJyb3dGdW5jdGlvbkJvZHlNb2RlICYmICFtYXRjaChPUEVOQlJBQ0UpOwogICAgIGlmIChtX2xl
eGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZv
PEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKLSAgICAgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNl
dChTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKS5jb250YWlucyhwYXJzZU1vZGUp
IHx8IGlzQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkKKyAgICAgICAgaWYg
KGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAg
ICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0
LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX3BhcmFtZXRlcnMgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1v
ZGUsIGZ1bmN0aW9uSW5mbyk7CkBAIC01NjgsMTEgKzU2OCwxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VB
c3luY0Z1bgogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGFzeW5jRnVuY3Rpb25Cb2R5
U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwogICAgICAgICBhc3luY0Z1bmN0aW9uQm9keVNjb3Bl
LT5zZXRTb3VyY2VQYXJzZU1vZGUoaW5uZXJQYXJzZU1vZGUpOwotICAgICAgICBTeW50YXhDaGVj
a2VyIGFzeW5jRnVuY3Rpb25Db250ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5n
ZXQoKSk7Ci0gICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKLSAgICAg
ICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5
U291cmNlRWxlbWVudHMoYXN5bmNGdW5jdGlvbkNvbnRleHQpLCAiQ2Fubm90IHBhcnNlIHRoZSBi
b2R5IG9mIGFzeW5jIGFycm93IGZ1bmN0aW9uIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoYXN5bmNGdW5jdGlvbkNvbnRleHQsIG1v
ZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgICAg
IFN5bnRheENoZWNrZXIgc3ludGF4Q2hlY2tlcihjb25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4
ZXIuZ2V0KCkpOworICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsK
KyAgICAgICAgICAgIGlmIChtX2RlYnVnZ2VyUGFyc2VEYXRhKQorICAgICAgICAgICAgICAgIGZh
aWxJZkZhbHNlKHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxl
bWVudHMoY29udGV4dCksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgYXJyb3cgZnVu
Y3Rpb24iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShw
YXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKHN5bnRh
eENoZWNrZXIpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGFzeW5jIGFycm93IGZ1bmN0aW9u
Iik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dlclBhcnNlRGF0
YSkKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRl
eHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGFzeW5jIGZ1bmN0aW9uIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VF
bGVtZW50cyhzeW50YXhDaGVja2VyLCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBh
c3luYyBmdW5jdGlvbiIpOworICAgICAgICB9CiAgICAgICAgIHBvcFNjb3BlKGFzeW5jRnVuY3Rp
b25Cb2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIH0K
ICAgICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmlj
dE1vZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJh
bWV0ZXJDb3VudCwgaW5mby5mdW5jdGlvbkxlbmd0aCwgaW5uZXJQYXJzZU1vZGUsIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKQEAgLTIzNDEsNyArMjM0OCw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbklu
Zm8oVHJlZUJ1aWxkCiAgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBz
eW50YXhDaGVja2VyLCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2lu
ZCwgZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5w
YXJhbWV0ZXJDb3VudCwgZnVuY3Rpb25JbmZvLmZ1bmN0aW9uTGVuZ3RoLCBtb2RlKTsKICAgICB9
OwogCi0gICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVu
Y3Rpb25Nb2RlIHx8IGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUobW9kZSkpIHsKKyAg
ICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKG1vZGUpKSB7
CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNj
b3BlKCkpOwogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgaW5uZXJQYXJzZU1vZGUgPSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOwogICAgICAgICBpZiAoaXNBc3luY0Z1bmN0aW9u
V3JhcHBlclBhcnNlTW9kZShtb2RlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKaW5kZXggOGM0NDc0YjA5OTMzNzJlNzQyNDYwMWRiOWFhMDY0NDVkZjkzN2VkOC4uM2ExNmY3
NmFhZDA1MjQ3Y2Q2MTYxYmJkYThhZjMxZGVmODY0Mjc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5
TW9kZToKLSAgICAgICAgICAgIHNldElzQXN5bmNBcnJvd0Z1bmN0aW9uQm9keSgpOworICAgICAg
ICAgICAgc2V0SXNBc3luY0Z1bmN0aW9uQm9keSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IGEwZDc0MDQ5NDE1ZTRiODQ3
MzU2MmUzNmU2MjIwZDMwY2U1MWJhNmEuLjZkYTg4MzdhMzc5NDE3MmI0YzU1NmIzN2QyM2Y5OTc2
ZWU2ZjBiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
TW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgK
QEAgLTE0OCw2ICsxNDgsMzIgQEAgQUxXQVlTX0lOTElORSBib29sIGlzTWV0aG9kUGFyc2VNb2Rl
KFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNNZXRob2RNb2RlKS5jb250YWlucyhwYXJzZU1vZGUpOwogfQogCitBTFdBWVNfSU5MSU5FIGJv
b2wgaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUpCit7CisgICAgcmV0dXJuIFNvdXJjZVBhcnNlTW9kZVNldCgKKyAgICAgICAg
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VN
b2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgYm9vbCBpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUo
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKK3sKKyAgICByZXR1cm4gU291cmNlUGFyc2VNb2Rl
U2V0KAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1v
ZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGUsCisgICAgICAg
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSwKKyAgICAgICAgU291cmNl
UGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7Cit9CisKK0FM
V0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUoU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSkKK3sKKyAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KAorICAgICAgICBT
b3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7Cit9CisKKwogQUxX
QVlTX0lOTElORSBib29sIGlzTW9kdWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUpIAogeyAKICAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KCAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUwZDE1MmVjMjdmODlkYWM5YjQ1M2U4ODA5YjY1MjQ4NWNhNWMxNTMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgi
CisKKyNpbmNsdWRlICJBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gQXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJBc3luY0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpIH07CisKK0FzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUp
Cit7Cit9CisKK3ZvaWQgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSwgIkFzeW5jRnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERv
bnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIC8vIE51bWJlciBvZiBhcmd1
bWVudHMgZm9yIGNvbnN0cnVjdG9yCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERl
bGV0ZSB8IERvbnRFbnVtKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
QXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0
RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFs
T2JqZWN0KCksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKK30KKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0lu
dGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgRnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYykpOworfQorCitDYWxsVHlwZSBBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkK
K3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yOworICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKK30KKworQ29uc3RydWN0VHlwZSBB
c3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3Ry
dWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5j
dGlvbiA9IGNvbnN0cnVjdEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ29u
c3RydWN0VHlwZTo6SG9zdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAzNWEyYzFlNGY5MTVjYWMwYjRiMTc3M2U2ZDA1ODllMjc0NzQ3ZDQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOworCitjbGFzcyBBc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBz
dGF0aWMgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I+KHZt
LmhlYXApKSBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAg
IGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgYXN5bmNGdW5jdGlvblByb3RvdHlwZSk7
CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0VHlw
ZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMg
Q2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
c3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjFmMGUxMDZlZTY3MTM2ZTky
NzAxZDY4YzM5ZDk1YjJmYzQ4NjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlh
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpT
QXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgiCisj
aW5jbHVkZSAiTGV4ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBB
c3luY0Z1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJBc3luY0Z1bmN0aW9uIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShBc3luY0Z1bmN0aW9uUHJvdG90
eXBlKSB9OworCitBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpBc3luY0Z1bmN0aW9uUHJvdG90eXBl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU0M6OkpTTm9uRmluYWxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcoJnZtLCAi
QXN5bmNGdW5jdGlvbiIpLCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICB2bS5wcm90b3R5cGVN
YXAuYWRkUHJvdG90eXBlKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iMjAxZTZiOGZkNTg5OGEyMjFlMDYyYTc4ZjNlYTYwZGVhNzlhODIyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5j
dGlvblByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBBc3luY0Z1bmN0aW9uUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgREVDTEFSRV9J
TkZPOworCisgICAgc3RhdGljIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgQXN5bmNGdW5jdGlvblByb3Rv
dHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNGdW5jdGlv
blByb3RvdHlwZT4odm0uaGVhcCkpIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1
cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8p
CisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3By
aXZhdGU6CisgICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGQyZjMzNTJkNjA2OGIxMTlmZTA0
OTMxMGM5Mzg4NjdmMjc5OGI1MTIuLjMyNGJkZGMzZTViM2E2MzQxOGNmZDAyODEzZDI0NGM4Yjc2
MmZjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJK
U0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC05Mywx
OCArOTQsMzIgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxl
ZENoZWNrKAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCisgICAgY29uc3QgY2hhciogcHJlZml4ID0gbnVsbHB0cjsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG51bGxwdHI7CisgICAgc3dpdGNoIChmdW5jdGlv
bkNvbnN0cnVjdGlvbk1vZGUpIHsKKyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6
RnVuY3Rpb246CisgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1
Y3R1cmUoKTsKKyAgICAgICAgcHJlZml4ID0gIntmdW5jdGlvbiAiOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yOgorICAgICAgICBz
dHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCk7Cisg
ICAgICAgIHByZWZpeCA9ICJ7ZnVuY3Rpb24gKiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYzoKKyAgICAgICAgc3RydWN0dXJlID0gZ2xv
YmFsT2JqZWN0LT5hc3luY0Z1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIHByZWZpeCA9ICJ7
YXN5bmMgZnVuY3Rpb24gIjsKKyAgICB9CisKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5IGZ1bmN0
aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUwLgogICAg
IFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKLSAgICAgICAgcHJvZ3Jh
bSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0g
RnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIgOiAiIiwgZnVuY3Rpb25O
YW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmlu
ZyhwcmVmaXgsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxufX0iKTsKICAgICBlbHNl
IGlmIChhcmdzLnNpemUoKSA9PSAxKQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1
bmN0aW9uICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGU6OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7
XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAg
ICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcocHJlZml4LCBmdW5jdGlvbk5hbWUuc3RyaW5nKCks
ICIoKSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0i
KTsKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIntmdW5jdGlvbiAiKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikK
LSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcqJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KHByZWZpeCk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSk7
CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFy
Z3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYykuZ2V0KCkpOwpAQCAtMTI2LDEyICsx
NDEsMTcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENo
ZWNrKAogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlv
bik7CiAgICAgfQogCi0gICAgU3RydWN0dXJlKiBzdWJjbGFzc1N0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG5ld1RhcmdldCwgZnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9y
ID8gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDogZ2xvYmFsT2Jq
ZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3RydWN0
dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbmV3
VGFyZ2V0LCBzdHJ1Y3R1cmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxw
dHIpOwogCi0gICAgaWYgKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0
cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZSkgeworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbjoKKyAg
ICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVj
dC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOworICAgIGNhc2UgRnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3I6CiAgICAgICAgIHJldHVybiBKU0dlbmVyYXRvckZ1
bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCks
IHN1YmNsYXNzU3RydWN0dXJlKTsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBm
dW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7
CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jOgorICAgICAgICByZXR1
cm4gSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmds
b2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAgICB9CiB9CiAKIC8vIEVDTUEgMTUu
My4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmluZGV4IDMxYzMzZDZhZjRmZjEyYmMy
NGMxZTJiNWJmNGU1NTU4ZDc2NTY5MDYuLmRlZWU5YTU1ZDZmMmM2MWU5ZjcxNDQ4M2IzMWFiZDU3
ZmIxY2FlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHJpdmF0ZToKIGVudW0gY2xhc3Mg
RnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIHsKICAgICBGdW5jdGlvbiwKICAgICBHZW5lcmF0b3Is
CisgICAgQXN5bmMsCiB9OwogCiBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVu
Y3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRp
b24mLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6
OkZ1bmN0aW9uLCBKU1ZhbHVlIG5ld1RhcmdldCA9IEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YmE3NDM3MjNiZGM3ZmFlZWZmNjI1MWUyZmYyYTJkZGM2NDI4ZTc5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcApAQCAt
MCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxj
YWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiUHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU0FzeW5jRnVuY3Rpb246OnNfaW5mbyA9IHsg
IkFzeW5jRnVuY3Rpb24iLCAgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0FzeW5jRnVuY3Rpb24pIH07CisKK0pTQXN5bmNGdW5jdGlvbjo6SlNBc3luY0Z1bmN0
aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29w
ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29w
ZSwgc3RydWN0dXJlKQoreworfQorCitKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6
Y3JlYXRlSW1wbChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTQXN5bmNGdW5jdGlvbiog
YXN5bmNGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNGdW5jdGlv
bj4odm0uaGVhcCkpIEpTQXN5bmNGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVj
dHVyZSk7CisgICAgQVNTRVJUKGFzeW5jRnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmpl
Y3QoKSk7CisgICAgYXN5bmNGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVy
biBhc3luY0Z1bmN0aW9uOworfQorCitKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6
Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBz
Y29wZSkKK3sKKyAgICBKU0FzeW5jRnVuY3Rpb24qIGFzeW5jRnVuY3Rpb24gPSBjcmVhdGVJbXBs
KHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5hc3luY0Z1bmN0
aW9uU3RydWN0dXJlKCkpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5v
dGlmeVdyaXRlKHZtLCBhc3luY0Z1bmN0aW9uLCAiQWxsb2NhdGluZyBhbiBhc3luYyBmdW5jdGlv
biIpOworICAgIHJldHVybiBhc3luY0Z1bmN0aW9uOworfQorCitKU0FzeW5jRnVuY3Rpb24qIEpT
QXN5bmNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRh
YmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNBc3lu
Y0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2Nv
cGUsIHN0cnVjdHVyZSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90
aWZ5V3JpdGUodm0sIGFzeW5jRnVuY3Rpb24sICJBbGxvY2F0aW5nIGFuIGFzeW5jIGZ1bmN0aW9u
Iik7CisgICAgcmV0dXJuIGFzeW5jRnVuY3Rpb247Cit9CisKK0pTQXN5bmNGdW5jdGlvbiogSlNB
c3luY0Z1bmN0aW9uOjpjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkK
K3sKKyAgICByZXR1cm4gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5n
bG9iYWxPYmplY3QoKS0+YXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpKTsKK30KKworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kN2RhODdkYjZkMzg1YTc5ZDU1NzZjMWI3MmExMzRjYTNlMjFiZjE0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmgKQEAg
LTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8
Y2FpdHBAaWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNBc3luY0Z1bmN0aW9u
IDogcHVibGljIEpTRnVuY3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5k
IGNsYXNzIFZNOworcHVibGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAg
Y29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpTQXN5bmNGdW5j
dGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0
YXRpYyBKU0FzeW5jRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpT
U2NvcGUqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgSlNBc3luY0Z1bmN0aW9uKiBjcmVhdGVX
aXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRh
YmxlKiwgSlNTY29wZSopOworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXpl
X3QgaW5saW5lQ2FwYWNpdHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNh
cGFjaXR5LCAhaW5saW5lQ2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTQXN5bmNG
dW5jdGlvbik7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgeworICAgICAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNG
dW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgSlNBc3luY0Z1bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSos
IFN0cnVjdHVyZSopOworCisgICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlSW1wbChW
TSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGY0OGNiY2YwOTEzMmNhYTY3ZWM3MWY1NzUxNDkwMGM4ZWNl
MDI4MGIuLmM0YzNjZTBjOTlkN2E0MWNmNzM3ZmRlNWQ3ZmFkNWJkYWM2ZjcxMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMz
LDYgKzMzLDggQEAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQXJy
YXlJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlv
blByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkJvb2xlYW5Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKQEAgLTYzLDYg
KzY1LDcgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1
ZmZlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0
b3IuaCIKQEAgLTU4NSw2ICs1ODgsOCBAQCBtXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIGluc3RhbmNlVHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aAogICAgIG1f
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbi5zZXQodm0sIHRoaXMsIHRocm93VHlwZUVycm9yRnVuY3Rp
b24pOwogCiAgICAgSlNDZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Y3JlYXRlKHZtLCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKTsKKyAgICBtX2Z1bmN0aW9uQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCAoRnVuY3Rpb25D
b25zdHJ1Y3RvciopZnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKICAgICBBcnJheUNvbnN0cnVjdG9y
KiBhcnJheUNvbnN0cnVjdG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBtX2FycmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0
ZXIuZ2V0KCkpOwogICAgIG1fYXJyYXlDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGFycmF5Q29u
c3RydWN0b3IpOwogICAgIApAQCAtNjMwLDcgKzYzNSwxNyBAQCBtXyAjIyBsb3dlck5hbWUgIyMg
UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+YwogCiAgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9nZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5nZXQoKSwgRG9udEVudW0gfCBSZWFkT25seSk7CiAgICAgbV9nZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCksIERvbnRFbnVt
IHwgUmVhZE9ubHkpOwotICAgIAorCisgICAgbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlLmluaXRM
YXRlcigKKyAgICAgICAgW10oTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkg
eworICAgICAgICAgICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3Rv
dHlwZSA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBBc3luY0Z1bmN0
aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQu
Z2xvYmFsLT5tX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgICAgICAgICBpbml0LnNl
dFByb3RvdHlwZShhc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgICAgIGluaXQuc2V0
U3RydWN0dXJlKEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQu
Z2xvYmFsLCBpbml0LnByb3RvdHlwZSkpOworICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1Y3Rv
cihQcm9wZXJ0eU5hbWUobnVsbHB0ciksIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRl
KGluaXQudm0sIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQu
dm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yLmdldCgp
KSwgYXN5bmNGdW5jdGlvblByb3RvdHlwZSkpOworCisgICAgICAgICAgICBpbml0Lmdsb2JhbC0+
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oaW5pdC52bSwgaW5pdC52bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5hc3luY0Z1bmN0aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKGluaXQudm0sIGFzeW5jRnVuY3Rpb25Qcm90b3R5
cGVBc3luY0Z1bmN0aW9uUmVzdW1lQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5nbG9iYWwp
LCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisgICAgICAgIH0pOworCiAgICAg
bV9vYmplY3RQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAg
ICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVt
KTsKICAgICBtX2FycmF5UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVt
KTsKQEAgLTExMDIsNiArMTExNyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5t
X3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2Fs
bGVyR2V0dGVyU2V0dGVyKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1
bGVMb2FkZXIpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJv
dG90eXBlKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamVjdFByb3Rv
dHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5
cGUpOwpAQCAtMTExMCw2ICsxMTI2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yUHJvdG90eXBlKTsKKyAgICB0aGlzT2Jq
ZWN0LT5tX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyUHJvdG90eXBlKTsKIAogICAgIHRo
aXNPYmplY3QtPm1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDQwODQ2
Y2UyOTdiNDdjMjg1ZWM0MDkxY2Q3MzQwMjk1YzA2ZGE1ZjAuLjJkZDQ0MTY5ZDFmMWNjMDhiYWM2
MTdlYjc1YjI0MGYwMzY1NjMyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
Y2xhc3MgQXJyYXlDb25zdHJ1Y3RvcjsKIGNsYXNzIEFycmF5UHJvdG90eXBlOworY2xhc3MgQXN5
bmNGdW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIEJvb2xlYW5Qcm90b3R5cGU7CiBjbGFzcyBDb25z
b2xlQ2xpZW50OwogY2xhc3MgRGVidWdnZXI7CkBAIC02Myw2ICs2NCw3IEBAIGNsYXNzIEVycm9y
Q29uc3RydWN0b3I7CiBjbGFzcyBFcnJvclByb3RvdHlwZTsKIGNsYXNzIEV2YWxDb2RlQmxvY2s7
CiBjbGFzcyBFdmFsRXhlY3V0YWJsZTsKK2NsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3I7CiBjbGFz
cyBGdW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIEdlbmVyYXRvclByb3RvdHlwZTsKIGNsYXNzIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlOwpAQCAtMjMzLDYgKzIzNSw3IEBAIHB1YmxpYzoKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1f
c3ludGF4RXJyb3JDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8TmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcj4gbV90eXBlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fVVJJRXJyb3JDb25zdHJ1Y3RvcjsK
KyAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4gbV9mdW5jdGlvbkNvbnN0cnVj
dG9yOwogICAgIFdyaXRlQmFycmllcjxPYmplY3RDb25zdHJ1Y3Rvcj4gbV9vYmplY3RDb25zdHJ1
Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8QXJyYXlDb25zdHJ1Y3Rvcj4gbV9hcnJheUNvbnN0cnVj
dG9yOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VDb25zdHJ1Y3Rvcj4gbV9wcm9taXNlQ29u
c3RydWN0b3I7CkBAIC0zMDYsNiArMzA5LDcgQEAgcHVibGljOgogICAgIFByb3BlcnR5T2Zmc2V0
IG1fZnVuY3Rpb25OYW1lT2Zmc2V0OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJp
dmF0ZU5hbWVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBT
dHJ1Y3R1cmU7CisgICAgTGF6eUNsYXNzU3RydWN0dXJlIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVy
ZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVy
ZTsKQEAgLTUyNyw2ICs1MzEsMTkgQEAgcHVibGljOgogICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKiBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCk7IH0KICAgICBHZW5lcmF0b3JQcm90b3R5cGUq
IGdlbmVyYXRvclByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yUHJvdG90eXBl
LmdldCgpOyB9CiAKKyAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUmIGxhenlBc3luY0Z1bmN0aW9uU3Ry
dWN0dXJlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7
CisgICAgfQorICAgIGNvbnN0IExhenlDbGFzc1N0cnVjdHVyZSYgbGF6eUFzeW5jRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXN5bmNGdW5jdGlvblN0
cnVjdHVyZTsKKyAgICB9CisgICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlv
blByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXN5bmNGdW5jdGlv
blByb3RvdHlwZSo+KGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkucHJvdG90eXBlKHRoaXMp
KTsgfQorICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGVD
b25jdXJyZW50bHkoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUqPihsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLnByb3RvdHlwZUNvbmN1
cnJlbnRseSgpKTsgfQorICAgIFN0cnVjdHVyZSogYXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkuZ2V0KHRoaXMpOyB9Cisg
ICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJlQ29uY3VycmVudGx5KCkgY29uc3Qg
eyByZXR1cm4gbGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5nZXRDb25jdXJyZW50bHkoKTsg
fQorCiAgICAgU3RydWN0dXJlKiBkZWJ1Z2dlclNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSog
d2l0aFNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBzdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggODc4OTQ0NTc1MzNkNGFlYzBjMTkxYjdmZDEwN2FmNTVlYjZjZjJkMy4uMGQxNTFlMGE1ZDNh
Y2ViODQ1NDI4NDNkOGE0Y2ZiNGQ5ZjRiYTcyZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjAgQEAKKzIwMTYtMTAtMjAg
IENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBbSlNDXSBpbXBs
ZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9hc3luYy1hd2FpdC1iYXNpYy5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAg
ICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMpOgorICAgICAg
ICAoc2hvdWxkVGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgIChsZXQuQXN5bmNGdW5jdGlvbi5h
c3luYyk6CisgICAgICAgIChhc3luYy5hc3luY0Z1bmN0aW9uRm9yUHJvdG8pOgorICAgICAgICAo
T2JqZWN0LmdldFByb3RvdHlwZU9mLmFzeW5jKToKKyAgICAgICAgKE9iamVjdC5nZXRQcm90b3R5
cGVPZi5hc3luYy5tZXRob2QpOgorICAgICAgICAoYXN5bmMpOgorICAgICAgICAoYXN5bmMubWV0
aG9kKToKKyAgICAgICAgKGFzeW5jLmFzeW5jTm9uQ29uc3RydWN0b3JEZWNsKToKKyAgICAgICAg
KHNob3VsZFRocm93Lm5ldy5hc3luYyk6CisgICAgICAgIChzaG91bGRUaHJvdy5uZXcuYXN5bmMu
bm9uQ29uc3RydWN0b3IpOgorICAgICAgICAoYXN5bmMuYXN5bmNEZWNsKToKKyAgICAgICAgKGFz
eW5jLmYpOgorICAgICAgICAoTXlFcnJvcik6CisgICAgICAgIChhc3luYy5hc3luY0RlY2xUaHJv
d2VyKToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMuYXN5bmMpOgorICAgICAgICAocmVzb2x2
ZUxhdGVyKToKKyAgICAgICAgKHJlamVjdExhdGVyKToKKyAgICAgICAgKGFzeW5jLnJlc3VtZUFm
dGVyTm9ybWFsKToKKyAgICAgICAgKE8uYXN5bmMucmVzdW1lQWZ0ZXJOb3JtYWwpOgorICAgICAg
ICAocmVzdW1lQWZ0ZXJOb3JtYWxBcnJvdy5hc3luYyk6CisgICAgICAgIChhc3luYy5yZXN1bWVB
ZnRlclRocm93KToKKyAgICAgICAgKE8uYXN5bmMucmVzdW1lQWZ0ZXJUaHJvdyk6CisgICAgICAg
IChyZXN1bWVBZnRlclRocm93QXJyb3cuYXN5bmMpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAg
ICAqIHN0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChTeW50YXhFcnJvci5DYW5zdHJpbmdfYXBw
ZWFyZWRfaGVyZWF3YWl0LmNoZWNrTW9kdWxlU3ludGF4RXJyb3IuU3RyaW5nLnJhdy5hd2FpdCk6
CisgICAgICAgIChjaGVja01vZHVsZVN5bnRheEVycm9yLlN0cmluZy5yYXcuYXdhaXQpOgorICAg
ICAgICAoY2hlY2tNb2R1bGVTeW50YXhFcnJvci5TdHJpbmcucmF3LmFzeW5jLmF3YWl0KToKKyAg
ICAgICAgKFN5bnRheEVycm9yLkNhbm5vdC5kZWNsYXJlLm5hbWVkKToKKyAgICAgICAgKiBzdHJl
c3MvYXN5bmMtYXdhaXQtbW96aWxsYS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAg
KHNob3VsZFRocm93QXN5bmMpOgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHNob3VsZFRo
cm93U3ludGF4RXJyb3IpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmVtcHR5KToKKyAg
ICAgICAgKG1velNlbWFudGljcy5hc3luYy5zaW1wbGVSZXR1cm4pOgorICAgICAgICAobW96U2Vt
YW50aWNzLmFzeW5jLnNpbXBsZUF3YWl0KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5z
aW1wbGVBd2FpdEFzeW5jKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5yZXR1cm5PdGhl
ckFzeW5jKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5zaW1wbGVUaHJvd2VyKToKKyAg
ICAgICAgKG1velNlbWFudGljcy5hc3luYy5kZWxlZ2F0ZWRUaHJvd2VyKToKKyAgICAgICAgKG1v
elNlbWFudGljcy5hc3luYy50cnlDYXRjaCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMu
dHJ5Q2F0Y2hUaHJvdyk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMud2VsbEZpbmFsbHkp
OgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmZpbmFsbHlNYXlGYWlsKToKKyAgICAgICAg
KG1velNlbWFudGljcy5hc3luYy5lbWJlZGRlZC5hc3luYy5pbm5lcik6CisgICAgICAgIChtb3pT
ZW1hbnRpY3MuYXN5bmMuZW1iZWRkZWQpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmZp
Yik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuaXNPZGQuYXN5bmMuaXNFdmVuKToKKyAg
ICAgICAgKG1velNlbWFudGljcy5hc3luYy5pc09kZCk6CisgICAgICAgIChtb3pTZW1hbnRpY3Mu
aGFyZGNvcmVGaWIuYXN5bmMuZmliMik6CisgICAgICAgIChtb3pTZW1hbnRpY3MubmFtZWRBc3lu
Y0V4cHIuYXN5bmMuc2ltcGxlKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5leGVjdXRp
b25PcmRlci5hc3luYy5maXJzdCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZXhlY3V0
aW9uT3JkZXIuYXN5bmMuc2Vjb25kKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5leGVj
dXRpb25PcmRlci5hc3luYy50aGlyZCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZXhl
Y3V0aW9uT3JkZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLm1pc2NlbGxhbmVvdXMp
OgorICAgICAgICAobW96U2VtYW50aWNzLnRocm93ZXIpOgorICAgICAgICAobW96U2VtYW50aWNz
LmFzeW5jLmRlZmF1bHRBcmdzKToKKyAgICAgICAgKG1velNlbWFudGljcy5zaG91bGRUaHJvdyk6
CisgICAgICAgIChtb3pTZW1hbnRpY3MpOgorICAgICAgICAobW96TWV0aG9kcy5YKToKKyAgICAg
ICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuYXN5bmMuZ2V0VmFsdWUpOgorICAgICAgICAobW96
TWV0aG9kcy5YLnByb3RvdHlwZS5zZXRWYWx1ZSk6CisgICAgICAgIChtb3pNZXRob2RzLlgucHJv
dG90eXBlLmFzeW5jLmluY3JlbWVudCk6CisgICAgICAgIChtb3pNZXRob2RzLlgucHJvdG90eXBl
LmFzeW5jLmdldEJhc2VDbGFzc05hbWUpOgorICAgICAgICAobW96TWV0aG9kcy5YLmFzeW5jLmdl
dFN0YXRpY1ZhbHVlKToKKyAgICAgICAgKG1vek1ldGhvZHMuWS5wcm90b3R5cGUuYXN5bmMuZ2V0
QmFzZUNsYXNzTmFtZSk6CisgICAgICAgIChtb3pNZXRob2RzLlkpOgorICAgICAgICAobW96RnVu
Y3Rpb25OYW1lSW5mZXJyZW5jZS5hc3luYy50ZXN0KToKKyAgICAgICAgKG1velN5bnRheEVycm9y
cyk6CisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdvcmQuanM6IEFkZGVk
LgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHNob3VsZFRocm93U3ludGF4RXJyb3IpOgor
ICAgICAgICAoQXN5bmNGdW5jdGlvbi5hc3luYyk6CisgICAgICAgICogc3RyZXNzL2FzeW5jX2Fy
cm93X2Z1bmN0aW9uc19sZXhpY2FsX2FyZ3VtZW50c19iaW5kaW5nLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoc2hvdWxk
VGhyb3dBc3luYyk6CisgICAgICAgIChub0FyZ3VtZW50c0Fycm93Mi5hc3luYyk6CisgICAgICAg
ICogc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX25ldy50YXJnZXRfYmluZGlu
Zy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5j
KToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMpOgorICAgICAgICAoQzEpOgorICAgICAgICAo
QzIpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYy5hc3luYyk6CisgICAgICAgICogc3RyZXNz
L2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX3N1cGVyX2JpbmRpbmcuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChC
YXNlQ2xhc3MucHJvdG90eXBlLmJhc2VDbGFzc1ZhbHVlKToKKyAgICAgICAgKEJhc2VDbGFzcy5w
cm90b3R5cGUuZ2V0IHByb3BlcnR5KToKKyAgICAgICAgKEJhc2VDbGFzcyk6CisgICAgICAgIChD
aGlsZENsYXNzLnByb3RvdHlwZS5hc3luY1N1cGVyUHJvcCk6CisgICAgICAgIChDaGlsZENsYXNz
LnByb3RvdHlwZS5hc3luY1N1cGVyUHJvcDIpOgorICAgICAgICAoQ2hpbGRDbGFzcyk6CisgICAg
ICAgIChDaGlsZENsYXNzMik6CisgICAgICAgICogc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9u
c19sZXhpY2FsX3RoaXNfYmluZGluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKGQueSk6CisKIDIwMTYtMTAtMjEgIENh
aXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBkb24ndCBj
cmFzaCB3aGVuIGFyZ3VtZW50cyB0byBgbmV3IEZ1bmN0aW9uKClgIHByb2R1Y2UgdW5leHBlY3Rl
ZCBBU1QKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1s
ZXhpY2FsLWFyZ3VtZW50cy1iaW5kaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ct
ZnVuY3Rpb25zLWxleGljYWwtYXJndW1lbnRzLWJpbmRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUxYWZk
YzkzMWYxNjAxYWY0NzlmOTA2ZWI4ZmEzNmFkZWZhYWI0NwotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLWFyZ3VtZW50cy1iaW5k
aW5nLmpzCkBAIC0wLDAgKzEsNTAgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMy
MDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8v
QCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZykgeworICAg
IGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNnID0gIiI7CisgICAgZWxzZQorICAgICAg
ICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsg
Ii4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhl
eHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9
IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7
IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFj
dHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmIChoYWRF
cnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFj
dHVhbCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3luYyhydW4sIGVycm9yVHlw
ZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7
CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0g
ZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKCFoYWRFcnJvcikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93
ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOworICAgIGlmICgh
KGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBi
dXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAg
JiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRo
cmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCit2YXIgbm9Bcmd1bWVudHNBcnJv
dyA9IGFzeW5jICgpID0+IGF3YWl0IFsuLi5hcmd1bWVudHNdOworc2hvdWxkVGhyb3dBc3luYygo
KSA9PiBub0FyZ3VtZW50c0Fycm93KDEsIDIsIDMpLCBSZWZlcmVuY2VFcnJvcik7Cit2YXIgbm9B
cmd1bWVudHNBcnJvdzIgPSBhc3luYyAoKSA9PiB7IHJldHVybiBhd2FpdCBbLi4uYXJndW1lbnRz
XTsgfQorc2hvdWxkVGhyb3dBc3luYygoKSA9PiBub0FyZ3VtZW50c0Fycm93MigxLCAyLCAzKSwg
UmVmZXJlbmNlRXJyb3IpOworCitzaG91bGRCZUFzeW5jKCJbMSwyLDNdIiwgKCkgPT4gKGZ1bmN0
aW9uKCkgeyByZXR1cm4gKGFzeW5jICgpID0+IEpTT04uc3RyaW5naWZ5KFsuLi5hcmd1bWVudHNd
KSkoKTsgfSkoMSwgMiwgMykpOworc2hvdWxkQmVBc3luYygiWzQsNSw2XSIsICgpID0+IChmdW5j
dGlvbigpIHsgcmV0dXJuIChhc3luYyAoKSA9PiB7IHJldHVybiBKU09OLnN0cmluZ2lmeShbLi4u
YXdhaXQgYXJndW1lbnRzXSkgfSkoKTsgfSkoNCwgNSwgNikpOworCit2YXIgYXJnc0JpbmRpbmc7
CitzaG91bGRCZUFzeW5jKGFyZ3NCaW5kaW5nLCAoKSA9PiAoZnVuY3Rpb24oKSB7IGFyZ3NCaW5k
aW5nID0gYXJndW1lbnRzOyByZXR1cm4gKGFzeW5jICgpID0+IGFyZ3VtZW50cykoKSB9KSgxLCAy
LCAzKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMt
bGV4aWNhbC1uZXcudGFyZ2V0LWJpbmRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJv
dy1mdW5jdGlvbnMtbGV4aWNhbC1uZXcudGFyZ2V0LWJpbmRpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI2
YTM5ODNmN2E5Mjc0MGVlNDc4YzNmZjdiYjgzMGM3ODVhZTQwOQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQt
YmluZGluZy5qcwpAQCAtMCwwICsxLDU1IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxF
X0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUu
CisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsK
KyAgICBpZiAobXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAg
ICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVh
bCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5
bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJy
b3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZh
bHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVl
OyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAo
aGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVk
LCBhY3R1YWwsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJv
clR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZh
bHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0s
CisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVh
bCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmICghaGFkRXJy
b3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0
aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBp
ZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsg
IiwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9p
ZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1
dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gQzEoKSB7
CisgICAgcmV0dXJuIGFzeW5jICgpID0+IGF3YWl0IG5ldy50YXJnZXQ7Cit9CisKK2Z1bmN0aW9u
IEMyKCkgeworICAgIHJldHVybiBhc3luYyAoKSA9PiB7IHJldHVybiBhd2FpdCBuZXcudGFyZ2V0
IH07Cit9CisKK3Nob3VsZEJlQXN5bmMoQzEsIG5ldyBDMSgpKTsKK3Nob3VsZEJlQXN5bmModW5k
ZWZpbmVkLCBDMSgpKTsKK3Nob3VsZEJlQXN5bmMoQzIsIG5ldyBDMigpKTsKK3Nob3VsZEJlQXN5
bmModW5kZWZpbmVkLCBDMigpKTsKKworc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiBhd2Fp
dCBuZXcudGFyZ2V0LCBSZWZlcmVuY2VFcnJvcik7CitzaG91bGRUaHJvd0FzeW5jKGFzeW5jICgp
ID0+IHsgcmV0dXJuIGF3YWl0IG5ldy50YXJnZXQ7IH0sIFJlZmVyZW5jZUVycm9yKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXN1cGVy
LWJpbmRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNh
bC1zdXBlci1iaW5kaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4YmYwZjlhY2UzYzc1ZjdkOGY3ZWJjYjIw
M2Y3MzhkYjM5YzlmZGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1h
cnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1zdXBlci1iaW5kaW5nLmpzCkBAIC0wLDAgKzEsNTUgQEAK
Ky8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFY
IHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKKworZnVuY3Rpb24gc2hv
dWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQor
ICAgICAgICBtc2cgPSAiIjsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
YmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgewor
ICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhl
bihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1
bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAg
IGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBh
Y3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitjbGFz
cyBCYXNlQ2xhc3MgeworICAgIGJhc2VDbGFzc1ZhbHVlKCkgeworICAgICAgICByZXR1cm4gIkJh
c2VDbGFzc1ZhbHVlIjsKKyAgICB9CisgICAgZ2V0IHByb3BlcnR5KCkgeworICAgICAgICByZXR1
cm4gInRlc3QhIjsKKyAgICB9Cit9CisKK2NsYXNzIENoaWxkQ2xhc3MgZXh0ZW5kcyBCYXNlQ2xh
c3MgeworICAgIGFzeW5jU3VwZXJQcm9wKCkgeworICAgICAgICByZXR1cm4gYXN5bmMgeCA9PiBz
dXBlci5iYXNlQ2xhc3NWYWx1ZSgpOworICAgIH0KKyAgICBhc3luY1N1cGVyUHJvcDIoKSB7Cisg
ICAgICAgIHJldHVybiBhc3luYyB4ID0+IHsgcmV0dXJuIHN1cGVyLmJhc2VDbGFzc1ZhbHVlKCk7
IH0KKyAgICB9Cit9CisKKy8vIEZJWE1FOiBzdXBlciBiaW5kaW5ncyBpbiBhc3luYyBhcnJvdyBm
dW5jdGlvbnMgYXJlIGJyb2tlbgorc2hvdWxkQmVBc3luYygiQmFzZUNsYXNzVmFsdWUiLCBuZXcg
Q2hpbGRDbGFzcygpLmFzeW5jU3VwZXJQcm9wKCkpOworc2hvdWxkQmVBc3luYygiQmFzZUNsYXNz
VmFsdWUiLCBuZXcgQ2hpbGRDbGFzcygpLmFzeW5jU3VwZXJQcm9wMigpKTsKKworY2xhc3MgQ2hp
bGRDbGFzczIgZXh0ZW5kcyBCYXNlQ2xhc3MgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAg
ICByZXR1cm4gYXN5bmMgKHNlbGYgPSBzdXBlcigpKSA9PiBzZWxmLmJhc2VDbGFzc1ZhbHVlKCkg
KyAnICcgKyBzdXBlci5wcm9wZXJ0eTsKKyAgICB9Cit9CisKK3Nob3VsZEJlQXN5bmMoIkJhc2VD
bGFzc1ZhbHVlIHRlc3QhIiwgbmV3IENoaWxkQ2xhc3MyKCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtdGhpcy1iaW5kaW5nLmpzIGIv
SlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtdGhpcy1iaW5kaW5n
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjcyYWZhMTEzZmE5MTI2YzNlMTY3ZmFlNDExYzNhMDRlODdhMTFiNWEK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMt
bGV4aWNhbC10aGlzLWJpbmRpbmcuanMKQEAgLTAsMCArMSwzMCBAQAorLy8gVGhpcyB0ZXN0IHJl
cXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBh
dCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFj
dHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQorICAgICAgICBtc2cgPSAiIjsK
KyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyAr
ICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlv
biBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7Cisg
ICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkg
eyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhh
ZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygp
OworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91
bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCit2YXIgZCA9ICh7IHggOiAiYmFyIiwg
eSA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gYXN5bmMgeiA9PiB0aGlzLnggKyB6OyB9fSkueSgpOwor
dmFyIGUgPSB7IHggOiAiYmF6IiwgeSA6IGQgfTsKKworc2hvdWxkQmVBc3luYygiYmFybGV5Iiwg
KCkgPT4gZCgibGV5IikpOworc2hvdWxkQmVBc3luYygiYmFybGV5IiwgKCkgPT4gZS55KCJsZXki
KSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1iYXNpYy5qcyBiL0pT
VGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZjIwNjUzNjUz
ZWNhY2Q3ZjNlZGI2M2JiMzJkMTFiNzRhOTJkM2YKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9hc3luYy1hd2FpdC1iYXNpYy5qcwpAQCAtMCwwICsxLDI5OSBAQAorLy8gVGhpcyB0
ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5h
YmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0
ZWQsIGFjdHVhbCwgbXNnID0gIiIpIHsKKyAgICBpZiAobXNnKQorICAgICAgICBtc2cgPSAiIGZv
ciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVu
LCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAg
IHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAg
ICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9y
OyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAg
ICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsK
K30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3cocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAg
ICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworCisgICAgdHJ5IHsKKyAg
ICAgICAgYWN0dWFsID0gcnVuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBoYWRFcnJv
ciA9IHRydWU7CisgICAgICAgIGFjdHVhbCA9IGU7CisgICAgfQorCisgICAgaWYgKCFoYWRFcnJv
cikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRo
cm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOworICAgIGlm
ICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWNlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIg
LCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdlICE9PSB2b2lk
IDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0
IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5jdGlvbiBzaG91bGRU
aHJvd0FzeW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAg
ICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7
IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFk
RXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7
CisKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
ICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBu
b3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIg
KyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAg
aWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICci
ICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7CisgICAg
dHJ5IHsKKyAgICAgICAgZXZhbChzdHIpOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIGAiICsgc3RyICsgImAgdG8gdGhyb3cgYSBTeW50YXhFcnJvciwgYnV0IGRpZCBub3QgdGhy
b3cuIikKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlLmNvbnN0cnVjdG9yICE9PSBT
eW50YXhFcnJvcikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgYCIgKyBz
dHIgKyAiYCB0byB0aHJvdyBhIFN5bnRheEVycm9yLCBidXQgdGhyZXcgJyIgKyBlICsgIiciKTsK
KyAgICAgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBlLm1lc3NhZ2UgIT09IG1lc3NhZ2Up
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGAiICsgc3RyICsgImAgdG8g
dGhyb3cgU3ludGF4RXJyb3I6ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBlICsg
IiciKTsKKyAgICB9Cit9CisKKy8vIERvIG5vdCBpbnN0YWxsIGBBc3luY0Z1bmN0aW9uYCBjb25z
dHJ1Y3RvciBvbiBnbG9iYWwgb2JqZWN0CitzaG91bGRCZSh1bmRlZmluZWQsIHRoaXMuQXN5bmNG
dW5jdGlvbik7CitsZXQgQXN5bmNGdW5jdGlvbiA9IChhc3luYyBmdW5jdGlvbigpIHt9KS5jb25z
dHJ1Y3RvcjsKKworLy8gTGV0IGZ1bmN0aW9uUHJvdG90eXBlIGJlIHRoZSBpbnRyaW5zaWMgb2Jq
ZWN0ICVBc3luY0Z1bmN0aW9uUHJvdG90eXBlJS4KK2FzeW5jIGZ1bmN0aW9uIGFzeW5jRnVuY3Rp
b25Gb3JQcm90bygpIHt9CitzaG91bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0
LmdldFByb3RvdHlwZU9mKGFzeW5jRnVuY3Rpb25Gb3JQcm90bykpOworc2hvdWxkQmUoQXN5bmNG
dW5jdGlvbi5wcm90b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZihhc3luYyBmdW5jdGlvbigp
IHt9KSk7CitzaG91bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3Rv
dHlwZU9mKGFzeW5jICgpID0+IHt9KSk7CitzaG91bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlw
ZSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHsgYXN5bmMgbWV0aG9kKCkge30gfS5tZXRob2QpKTsK
KworLy8gRklYTUU6IEFzeW5jRnVuY3Rpb24gY29uc3RydWN0b3Igc2hvdWxkIGJ1aWxkIGZ1bmN0
aW9ucyB3aXRoIGNvcnJlY3QgcHJvdG90eXBlLgorLy8gc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5w
cm90b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZihBc3luY0Z1bmN0aW9uKCkpKTsKKworLy8g
QXN5bmNGdW5jdGlvbkNyZWF0ZSBkb2VzIG5vdCBwcm9kdWNlIGFuIG9iamVjdCB3aXRoIGEgUHJv
dG90eXBlCitzaG91bGRCZSh1bmRlZmluZWQsIGFzeW5jRnVuY3Rpb25Gb3JQcm90by5wcm90b3R5
cGUpOworc2hvdWxkQmUoZmFsc2UsIGFzeW5jRnVuY3Rpb25Gb3JQcm90by5oYXNPd25Qcm9wZXJ0
eSgicHJvdG90eXBlIikpOworc2hvdWxkQmUodW5kZWZpbmVkLCAoYXN5bmMgZnVuY3Rpb24oKSB7
fSkucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCAoYXN5bmMgZnVuY3Rpb24oKSB7fSkuaGFz
T3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKK3Nob3VsZEJlKHVuZGVmaW5lZCwgKGFzeW5jKCkg
PT4ge30pLnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgKGFzeW5jKCkgPT4ge30pLmhhc093
blByb3BlcnR5KCJwcm90b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQsICh7IGFzeW5jIG1l
dGhvZCgpIHt9IH0pLm1ldGhvZC5wcm90b3R5cGUpOworc2hvdWxkQmUoZmFsc2UsICh7IGFzeW5j
IG1ldGhvZCgpIHt9IH0pLm1ldGhvZC5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOworc2hv
dWxkQmUodW5kZWZpbmVkLCBBc3luY0Z1bmN0aW9uKCkucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZh
bHNlLCBBc3luY0Z1bmN0aW9uKCkuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKKworLy8g
QXN5bmNGdW5jdGlvbi5wcm90b3R5cGVbIEBAdG9TdHJpbmdUYWcgXQordmFyIGRlc2NyaXB0b3Ig
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBl
LCBTeW1ib2wudG9TdHJpbmdUYWcpOworc2hvdWxkQmUoIkFzeW5jRnVuY3Rpb24iLCBkZXNjcmlw
dG9yLnZhbHVlKTsKK3Nob3VsZEJlKGZhbHNlLCBkZXNjcmlwdG9yLmVudW1lcmFibGUpOworc2hv
dWxkQmUoZmFsc2UsIGRlc2NyaXB0b3Iud3JpdGFibGUpOworc2hvdWxkQmUodHJ1ZSwgZGVzY3Jp
cHRvci5jb25maWd1cmFibGUpOworCitzaG91bGRCZSgxLCBBc3luY0Z1bmN0aW9uLmxlbmd0aCk7
CisKKy8vIExldCBGIGJlICEgRnVuY3Rpb25BbGxvY2F0ZShmdW5jdGlvblByb3RvdHlwZSwgU3Ry
aWN0LCAibm9uLWNvbnN0cnVjdG9yIikKK2FzeW5jIGZ1bmN0aW9uIGFzeW5jTm9uQ29uc3RydWN0
b3JEZWNsKCkge30KK3Nob3VsZFRocm93KCgpID0+IG5ldyBhc3luY05vbkNvbnN0cnVjdG9yRGVj
bCgpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IChhc3luYyBmdW5jdGlvbigp
IHt9KSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyAoeyBhc3luYyBub25Db25z
dHJ1Y3RvcigpIHt9IH0pLm5vbkNvbnN0cnVjdG9yKCksIFR5cGVFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiBuZXcgKCgpID0+ICJub3QgYSBjb25zdHJ1Y3RvciEiKSwgVHlwZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IG5ldyAoQXN5bmNGdW5jdGlvbigpKSwgVHlwZUVycm9yKTsKKworLy8g
Tm9ybWFsIGNvbXBsZXRpb24KK2FzeW5jIGZ1bmN0aW9uIGFzeW5jRGVjbCgpIHsgcmV0dXJuICJ0
ZXN0IjsgfQorc2hvdWxkQmVBc3luYygidGVzdCIsIGFzeW5jRGVjbCk7CitzaG91bGRCZUFzeW5j
KCJ0ZXN0MiIsIGFzeW5jIGZ1bmN0aW9uKCkgeyByZXR1cm4gInRlc3QyIjsgfSk7CitzaG91bGRC
ZUFzeW5jKCJ0ZXN0MyIsIGFzeW5jICgpID0+ICJ0ZXN0MyIpOworc2hvdWxkQmVBc3luYygidGVz
dDQiLCAoKSA9PiAoeyBhc3luYyBmKCkgeyByZXR1cm4gInRlc3Q0IjsgfSB9KS5mKCkpOworCitj
bGFzcyBNeUVycm9yIGV4dGVuZHMgRXJyb3Ige307CisKKy8vIFRocm93IGNvbXBsZXRpb24KK2Fz
eW5jIGZ1bmN0aW9uIGFzeW5jRGVjbFRocm93ZXIoZSkgeyB0aHJvdyBuZXcgTXlFcnJvcihlKTsg
fQorc2hvdWxkVGhyb3dBc3luYygoKSA9PiBhc3luY0RlY2xUaHJvd2VyKCJib29tISIpLCBNeUVy
cm9yLCAiYm9vbSEiKTsKK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gKGFzeW5jIGZ1bmN0aW9uKGUp
IHsgdGhyb3cgbmV3IE15RXJyb3IoZSk7IH0pKCJib29tISEhIiksIE15RXJyb3IsICJib29tISEh
Iik7CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IChhc3luYyBlID0+IHsgdGhyb3cgbmV3IE15RXJy
b3IoZSkgfSkoImJvb20hISIpLCBNeUVycm9yLCAiYm9vbSEhIik7CitzaG91bGRUaHJvd0FzeW5j
KCgpID0+ICh7IGFzeW5jIHRocm93ZXIoZSkgeyB0aHJvdyBuZXcgTXlFcnJvcihlKTsgfSB9KS50
aHJvd2VyKCJib29tISEhISIpLCBNeUVycm9yLCAiYm9vbSEhISEiKTsKKworZnVuY3Rpb24gcmVz
b2x2ZUxhdGVyKHZhbHVlKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpOyB9CitmdW5j
dGlvbiByZWplY3RMYXRlcihlcnJvcikgeyByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOyB9
CisKKy8vIFJlc3VtZSBhZnRlciBOb3JtYWwgY29tcGxldGlvbgordmFyIGxvZyA9IFtdOworYXN5
bmMgZnVuY3Rpb24gcmVzdW1lQWZ0ZXJOb3JtYWwodmFsdWUpIHsKKyAgICBsb2cucHVzaCgic3Rh
cnQ6IiArIHZhbHVlKTsKKyAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEp
OworICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICB2YWx1ZSA9IGF3YWl0IHJl
c29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsK
KyAgICByZXR1cm4gdmFsdWUgKyAxOworfQorCitzaG91bGRCZUFzeW5jKDQsICgpID0+IHJlc3Vt
ZUFmdGVyTm9ybWFsKDEpKTsKK3Nob3VsZEJlKCJzdGFydDoxIHJlc3VtZToyIHJlc3VtZTozIiwg
bG9nLmpvaW4oIiAiKSk7CisKK3ZhciBPID0geworICAgIGFzeW5jIHJlc3VtZUFmdGVyTm9ybWFs
KHZhbHVlKSB7CisgICAgICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgICAgICB2
YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgICAgICBsb2cucHVzaCgi
cmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZh
bHVlICsgMSk7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIHZhbHVlICsgMTsKKyAgICB9Cit9OworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDUs
ICgpID0+IE8ucmVzdW1lQWZ0ZXJOb3JtYWwoMikpOworc2hvdWxkQmUoInN0YXJ0OjIgcmVzdW1l
OjMgcmVzdW1lOjQiLCBsb2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyTm9ybWFsQXJy
b3cgPSBhc3luYyAodmFsdWUpID0+IHsKKyAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsK
KyAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgIGxvZy5wdXNo
KCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1
ZSArIDEpOworICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICByZXR1cm4gdmFs
dWUgKyAxOworfTsKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg2LCAoKSA9PiByZXN1bWVBZnRl
ck5vcm1hbEFycm93KDMpKTsKK3Nob3VsZEJlKCJzdGFydDozIHJlc3VtZTo0IHJlc3VtZTo1Iiwg
bG9nLmpvaW4oIiAiKSk7CisKK3ZhciByZXN1bWVBZnRlck5vcm1hbEV2YWwgPSBBc3luY0Z1bmN0
aW9uKCJ2YWx1ZSIsIGAKKyAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB2YWx1
ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgIGxvZy5wdXNoKCJyZXN1bWU6
IiArIHZhbHVlKTsKKyAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOwor
ICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWUgKyAxOwor
YCk7Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoNywgKCkgPT4gcmVzdW1lQWZ0ZXJOb3JtYWxF
dmFsKDQpKTsKK3Nob3VsZEJlKCJzdGFydDo0IHJlc3VtZTo1IHJlc3VtZTo2IiwgbG9nLmpvaW4o
IiAiKSk7CisKKy8vIFJlc3VtZSBhZnRlciBUaHJvdyBjb21wbGV0aW9uCithc3luYyBmdW5jdGlv
biByZXN1bWVBZnRlclRocm93KHZhbHVlKSB7CisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1
ZSk7CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cx
Iik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsK
KyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhy
b3cyIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBl
KTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK30KKworbG9nID0gW107CitzaG91bGRC
ZUFzeW5jKDIsICgpID0+IHJlc3VtZUFmdGVyVGhyb3coMSkpOworc2hvdWxkQmUoInN0YXJ0OjEg
cmVzdW1lOnRocm93MSByZXN1bWU6dGhyb3cyIiwgbG9nLmpvaW4oIiAiKSk7CisKK3ZhciBPID0g
eworICAgIGFzeW5jIHJlc3VtZUFmdGVyVGhyb3codmFsdWUpIHsKKyAgICAgICAgbG9nLnB1c2go
InN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YWx1ZSA9IGF3
YWl0IHJlamVjdExhdGVyKCJ0aHJvdzEiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOworICAgICAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWUgKyAxOworICAgIH0KK30KK2xvZyA9IFtdOwor
c2hvdWxkQmVBc3luYygzLCAoKSA9PiBPLnJlc3VtZUFmdGVyVGhyb3coMikpOworc2hvdWxkQmUo
InN0YXJ0OjIgcmVzdW1lOnRocm93MSByZXN1bWU6dGhyb3cyIiwgbG9nLmpvaW4oIiAiKSk7CisK
K3ZhciByZXN1bWVBZnRlclRocm93QXJyb3cgPSBhc3luYyAodmFsdWUpID0+IHsKKyAgICBsb2cu
cHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0
IHJlamVjdExhdGVyKCJ0aHJvdzEiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5w
dXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3
YWl0IHJlamVjdExhdGVyKCJ0aHJvdzIiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxv
Zy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICByZXR1cm4gdmFsdWUgKyAxOworfTsK
K2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg0LCAoKSA9PiByZXN1bWVBZnRlclRocm93QXJyb3co
MykpOworc2hvdWxkQmUoInN0YXJ0OjMgcmVzdW1lOnRocm93MSByZXN1bWU6dGhyb3cyIiwgbG9n
LmpvaW4oIiAiKSk7CisKK3ZhciByZXN1bWVBZnRlclRocm93RXZhbCA9IEFzeW5jRnVuY3Rpb24o
InZhbHVlIiwgYAorICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHRyeSB7Cisg
ICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHRyeSB7
CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHJl
dHVybiB2YWx1ZSArIDE7CitgKTsKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg1LCAoKSA9PiBy
ZXN1bWVBZnRlclRocm93RXZhbCg0KSk7CitzaG91bGRCZSgic3RhcnQ6NCByZXN1bWU6dGhyb3cx
IHJlc3VtZTp0aHJvdzIiLCBsb2cuam9pbigiICIpKTsKKworLy8gTWV0aG9vZERlZmluaXRpb24g
U3ludGF4RXJyb3JzCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBm
b28gOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhIHBhcmVudGhl
c2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9i
aiA9IHsgYXN5bmMgZm9vID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0
ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIGZvbyAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2Vu
ICcsJy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIGZvbyB9IiwgIlVuZXhwZWN0ZWQg
dG9rZW4gJ30nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOwor
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAwIDogdHJ1ZSB9OyIs
ICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1l
bnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIDAg
PSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lz
IGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9
IHsgYXN5bmMgMCAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBw
YXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBvYmogPSB7IGFzeW5jIDAgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQg
YSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIG9iaiA9IHsgYXN5bmMgJ2ZvbycgOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9r
ZW4gJzonLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgJ2ZvbycgPSB0cnVlIH07Iiwg
IlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVu
dCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgJ2Zv
bycgLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgcGFyZW50aGVz
aXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2Jq
ID0geyBhc3luYyAnZm9vJyB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhIHBh
cmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgb2JqID0geyBhc3luYyBbJ2ZvbyddIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2Vu
ICc6Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIFsnZm9vJ10gPSB0cnVlIH07Iiwg
IlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVu
dCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgWydm
b28nXSAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBwYXJlbnRo
ZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBv
YmogPSB7IGFzeW5jIFsnZm9vJ10gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQg
YSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiY2xhc3MgQyB7IGFzeW5jIGZvbyA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAn
OicuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFt
ZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIGZv
byA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGFuIG9wZW5pbmcg
JygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIGZvbyAsIGJhciB9OyIsICJVbmV4cGVjdGVk
IHRva2VuICcsJy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9k
J3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsg
YXN5bmMgZm9vIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcg
JygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworCitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgMCA6IHRydWUgfTsiLCAiVW5leHBlY3Rl
ZCB0b2tlbiAnOicuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhv
ZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7
IGFzeW5jIDAgPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBv
cGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAwICwgYmFyIH07IiwgIlVuZXhw
ZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBt
ZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNz
IEMgeyBhc3luYyAwIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5p
bmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworCitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgJ2ZvbycgOiB0cnVlIH07IiwgIlVu
ZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3lu
YyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNs
YXNzIEMgeyBhc3luYyAnZm9vJyA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4
cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBs
aXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nICwg
YmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBi
ZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAnZm9vJyB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30n
LiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0
ZXIgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsn
Zm9vJ10gOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhbiBvcGVu
aW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBbJ2ZvbyddID0gdHJ1ZSB9OyIsICJV
bmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5
bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJj
bGFzcyBDIHsgYXN5bmMgWydmb28nXSAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4g
RXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVy
IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgWydmb28n
XSB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZv
cmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzIGIvSlNUZXN0cy9z
dHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVkLXdvcmQuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhi
MjRmZTc2MGIwYTNhYjJkOWZmNWIxNWMzNDdmY2Y3MWMyZjgxOQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzCkBAIC0w
LDAgKzEsNzIgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVO
Q1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1
bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRo
cm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAg
ZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOwor
ICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9
PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0
cmluZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTW9kdWxlU3ludGF4RXJyb3Ioc291
cmNlLCBlcnJvck1lc3NhZ2UpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBjaGVja01vZHVsZVN5
bnRheChzb3VyY2UpLCBlcnJvck1lc3NhZ2UpOworfQorCitjaGVja01vZHVsZVN5bnRheEVycm9y
KFN0cmluZy5yYXdgCit2YXIgYXdhaXQ7CitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdh
aXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50
YXhFcnJvcihgCitleHBvcnQgdmFyIGF3YWl0OworYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxl
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2xldCBhd2FpdDsKK2AsIGBTeW50YXhFcnJvcjogQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJg
KTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCBsZXQgYXdhaXQ7
CitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5y
YXdgCitjb25zdCBhd2FpdCA9IDEKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxl
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCBjb25zdCBhd2FpdCA9IDEKK2AsIGBTeW50
YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YSBtb2R1bGUuOjJgKTsKKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZnVu
Y3Rpb24gYXdhaXQoKSB7fQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBmdW5jdGlv
biBuYW1lZCAnYXdhaXQnIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9y
KFN0cmluZy5yYXdgCitmdW5jdGlvbiogYXdhaXQoKSB7fQorYCwgYFN5bnRheEVycm9yOiBDYW5u
b3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGEgbW9kdWxlLjoyYCk7CitjaGVj
a01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCithc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9
CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcg
aW4gYSBtb2R1bGUuOjJgKTsKKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAor
aW1wb3J0IHthd2FpdH0gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAn
YXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50
YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IHtmb28gYXMgYXdhaXR9IGZyb20gJ2Zvbyc7Citg
LCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5n
IG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCAq
IGFzIGF3YWl0IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0
JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJy
b3IoU3RyaW5nLnJhd2AKK2ltcG9ydCBhd2FpdCwge3gsIHksIHp9IGZyb20gJ2Zvbyc7CitgLCBg
U3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5h
bWUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCBhd2Fp
dCwge3gsIHksIHosfSBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdh
d2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRh
eEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgYXdhaXQgZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhF
cnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmAp
OworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IGF3YWl0LCAqIGFz
IGZvbyBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMg
YW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1hd2FpdC1tb3ppbGxhLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW96
aWxsYS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYzVkNmI5MmQzZTYxZTQ5ODM5ZTA2Y2QxZDRlMWI1ODAzZTc4
YTBiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW96aWxs
YS5qcwpAQCAtMCwwICsxLDMwNSBAQAorLyogVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1Ympl
Y3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpYworICogTGljZW5zZSwgdi4gMi4w
LiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICog
ZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3oub3JnL01QTC8yLjAvLiAqLwor
CisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRB
WCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91
bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cgPSAiIikgeworICAgIGlmIChtc2cpCisgICAgICAg
IG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAi
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4
cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0g
ZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsg
fSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0
dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworICAgIGlmIChoYWRFcnJv
cikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWws
IG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdl
KSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICB0cnkg
eworICAgICAgICBhY3R1YWwgPSBydW4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGhh
ZEVycm9yID0gdHJ1ZTsKKyAgICAgICAgYWN0dWFsID0gZTsKKyAgICB9CisgICAgaWYgKCFoYWRF
cnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRv
IHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOworICAg
IGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWNlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSAr
ICIgLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdlICE9PSB2
b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywg
YnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5jdGlvbiBzaG91
bGRUaHJvd0FzeW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsK
KyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVl
KSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsg
aGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tz
KCk7CisgICAgaWYgKCFoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQg
bm90IHRocm93LiIpOworICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAi
ICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAg
IGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAn
IiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOwor
fQorCitmdW5jdGlvbiBhc3NlcnQoY29uZCwgbXNnID0gIiIpIHsKKyAgICBpZiAoIWNvbmQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd1N5
bnRheEVycm9yKHN0ciwgbWVzc2FnZSkgeworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIGV2YWwoc3RyKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlm
IChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHsKKyAgICAgICAgICAgIGhhZEVycm9yID0gdHJ1
ZTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gInN0cmluZyIpCisgICAgICAg
ICAgICAgICAgYXNzZXJ0KGUubWVzc2FnZSA9PT0gbWVzc2FnZSwgIkV4cGVjdGVkICciICsgbWVz
c2FnZSArICInIGJ1dCB0aHJldyAnIiArIGUubWVzc2FnZSArICInIik7CisgICAgICAgIH0KKyAg
ICB9CisgICAgYXNzZXJ0KGhhZEVycm9yLCAiRGlkIG5vdCB0aHJvdyBzeW50YXggZXJyb3IiKTsK
K30KKworLy8gc2VtYW50aWNzLmpzCisoZnVuY3Rpb24gbW96U2VtYW50aWNzKCkgeworCithc3lu
YyBmdW5jdGlvbiBlbXB0eSgpIHsKK30KKworYXN5bmMgZnVuY3Rpb24gc2ltcGxlUmV0dXJuKCkg
eworICAgIHJldHVybiAxOworfQorCithc3luYyBmdW5jdGlvbiBzaW1wbGVBd2FpdCgpIHsKKyAg
ICB2YXIgcmVzdWx0ID0gYXdhaXQgMjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCithc3luYyBm
dW5jdGlvbiBzaW1wbGVBd2FpdEFzeW5jKCkgeworICAgIHZhciByZXN1bHQgPSBhd2FpdCBzaW1w
bGVSZXR1cm4oKTsKKyAgICByZXR1cm4gMiArIHJlc3VsdDsKK30KKworYXN5bmMgZnVuY3Rpb24g
cmV0dXJuT3RoZXJBc3luYygpIHsKKyAgICByZXR1cm4gMSArIGF3YWl0IHNpbXBsZUF3YWl0QXN5
bmMoKTsKK30KKworYXN5bmMgZnVuY3Rpb24gc2ltcGxlVGhyb3dlcigpIHsKKyAgICB0aHJvdyBu
ZXcgRXJyb3IoKTsKK30KKworYXN5bmMgZnVuY3Rpb24gZGVsZWdhdGVkVGhyb3dlcigpIHsKKyAg
ICB2YXIgdmFsID0gYXdhaXQgc2ltcGxlVGhyb3dlcigpOworICAgIHJldHVybiB2YWw7Cit9CisK
K2FzeW5jIGZ1bmN0aW9uIHRyeUNhdGNoKCkgeworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGRl
bGVnYXRlZFRocm93ZXIoKTsKKyAgICAgICAgcmV0dXJuICdGQUlMRUQnOworICAgIH0gY2F0Y2gg
KF8pIHsKKyAgICAgICAgcmV0dXJuIDU7CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiB0cnlD
YXRjaFRocm93KCkgeworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGRlbGVnYXRlZFRocm93ZXIo
KTsKKyAgICAgICAgcmV0dXJuICdGQUlMRUQnOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAg
cmV0dXJuIGRlbGVnYXRlZFRocm93ZXIoKTsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHdl
bGxGaW5hbGx5KCkgeworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGRlbGVnYXRlZFRocm93ZXIo
KTsKKyAgICB9IGNhdGNoIChfKSB7CisgICAgICAgIHJldHVybiAnRkFJTEVEJzsKKyAgICB9IGZp
bmFsbHkgeworICAgICAgICByZXR1cm4gNjsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGZp
bmFsbHlNYXlGYWlsKCkgeworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGRlbGVnYXRlZFRocm93
ZXIoKTsKKyAgICB9IGNhdGNoIChfKSB7CisgICAgICAgIHJldHVybiA1OworICAgIH0gZmluYWxs
eSB7CisgICAgICAgIHJldHVybiBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgfQorfQorCithc3lu
YyBmdW5jdGlvbiBlbWJlZGRlZCgpIHsKKyAgICBhc3luYyBmdW5jdGlvbiBpbm5lcigpIHsKKyAg
ICAgICAgcmV0dXJuIDc7CisgICAgfQorICAgIHJldHVybiBhd2FpdCBpbm5lcigpOworfQorCisv
LyByZWN1cnNpb24sIGl0IHdvcmtzIQorYXN5bmMgZnVuY3Rpb24gZmliKG4pIHsKKyAgICByZXR1
cm4gKG4gPT0gMCB8fCBuID09IDEpID8gbiA6IGF3YWl0IGZpYihuIC0gMSkgKyBhd2FpdCBmaWIo
biAtIDIpOworfQorCisvLyBtdXR1YWwgcmVjdXJzaW9uCithc3luYyBmdW5jdGlvbiBpc09kZChu
KSB7CisgICAgYXN5bmMgZnVuY3Rpb24gaXNFdmVuKG4pIHsKKyAgICAgICAgcmV0dXJuIG4gPT09
IDAgfHwgYXdhaXQgaXNPZGQobiAtIDEpOworICAgIH0KKyAgICByZXR1cm4gbiAhPT0gMCAmJiBh
d2FpdCBpc0V2ZW4obiAtIDEpOworfQorCisvLyByZWN1cnNpb24sIHRha2UgdGhyZWUhCit2YXIg
aGFyZGNvcmVGaWIgPSBhc3luYyBmdW5jdGlvbiBmaWIyKG4pIHsKKyAgICByZXR1cm4gKG4gPT0g
MCB8fCBuID09IDEpID8gbiA6IGF3YWl0IGZpYjIobiAtIDEpICsgYXdhaXQgZmliMihuIC0gMik7
Cit9CisKK3ZhciBhc3luY0V4cHIgPSBhc3luYyBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gMTA7
Cit9CisKK3ZhciBuYW1lZEFzeW5jRXhwciA9IGFzeW5jIGZ1bmN0aW9uIHNpbXBsZSgpIHsKKyAg
ICByZXR1cm4gMTE7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGV4ZWN1dGlvbk9yZGVyKCkgeworICAg
IHZhciB2YWx1ZSA9IDA7CisgICAgYXN5bmMgZnVuY3Rpb24gZmlyc3QoKSB7CisgICAgICAgIHJl
dHVybiAodmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDEgOiB2YWx1ZSk7CisgICAgfQorICAgIGFzeW5j
IGZ1bmN0aW9uIHNlY29uZCgpIHsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAw
ID8gMiA6IHZhbHVlKTsKKyAgICB9CisgICAgYXN5bmMgZnVuY3Rpb24gdGhpcmQoKSB7CisgICAg
ICAgIHJldHVybiAodmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDMgOiB2YWx1ZSk7CisgICAgfQorICAg
IHJldHVybiBhd2FpdCBmaXJzdCgpICsgYXdhaXQgc2Vjb25kKCkgKyBhd2FpdCB0aGlyZCgpICsg
NjsKK30KKworYXN5bmMgZnVuY3Rpb24gbWlzY2VsbGFuZW91cygpIHsKKyAgICBpZiAoYXJndW1l
bnRzLmxlbmd0aCA9PT0gMyAmJgorICAgICAgICBhcmd1bWVudHMuY2FsbGVlLm5hbWUgPT09ICJt
aXNjZWxsYW5lb3VzIikKKyAgICAgICAgcmV0dXJuIDE0OworfQorCitmdW5jdGlvbiB0aHJvd2Vy
KCkgeworICAgIHRocm93IDE1OworfQorCithc3luYyBmdW5jdGlvbiBkZWZhdWx0QXJncyhhcmcg
PSB0aHJvd2VyKCkpIHsKK30KKworLy8gQXN5bmMgZnVuY3Rpb25zIGFyZSBub3QgY29uc3RydWN0
aWJsZQorc2hvdWxkVGhyb3coKCkgPT4geworICAgIGFzeW5jIGZ1bmN0aW9uIFBlcnNvbigpIHsK
KyAgICB9CisgICAgbmV3IFBlcnNvbigpOworfSwgVHlwZUVycm9yKTsKKworc2hvdWxkQmVBc3lu
Yyh1bmRlZmluZWQsIGVtcHR5KTsKK3Nob3VsZEJlQXN5bmMoMSwgc2ltcGxlUmV0dXJuKTsKK3No
b3VsZEJlQXN5bmMoMiwgc2ltcGxlQXdhaXQpOworc2hvdWxkQmVBc3luYygzLCBzaW1wbGVBd2Fp
dEFzeW5jKTsKK3Nob3VsZEJlQXN5bmMoNCwgcmV0dXJuT3RoZXJBc3luYyk7CitzaG91bGRUaHJv
d0FzeW5jKHNpbXBsZVRocm93ZXIsIEVycm9yKTsKK3Nob3VsZEJlQXN5bmMoNSwgdHJ5Q2F0Y2gp
Oworc2hvdWxkQmVBc3luYyg2LCB3ZWxsRmluYWxseSk7CitzaG91bGRUaHJvd0FzeW5jKGZpbmFs
bHlNYXlGYWlsLCBFcnJvcik7CitzaG91bGRCZUFzeW5jKDcsIGVtYmVkZGVkKTsKK3Nob3VsZEJl
QXN5bmMoOCwgKCkgPT4gZmliKDYpKTsKK3Nob3VsZEJlQXN5bmMoOSwgZXhlY3V0aW9uT3JkZXIp
Oworc2hvdWxkQmVBc3luYygxMCwgYXN5bmNFeHByKTsKK3Nob3VsZEJlQXN5bmMoMTEsIG5hbWVk
QXN5bmNFeHByKTsKK3Nob3VsZEJlQXN5bmMoMTIsICgpID0+IGlzT2RkKDEyKS50aGVuKHYgPT4g
diA/ICJvb3BzIiA6IDEyKSk7CitzaG91bGRCZUFzeW5jKDEzLCAoKSA9PiBoYXJkY29yZUZpYig3
KSk7CitzaG91bGRCZUFzeW5jKDE0LCAoKSA9PiBtaXNjZWxsYW5lb3VzKDEsIDIsIDMpKTsKK3No
b3VsZEJlQXN5bmMoMTUsICgpID0+IGRlZmF1bHRBcmdzKCkuY2F0Y2goZSA9PiBlKSk7CisKK30p
KCk7CisKKy8vIG1ldGhvZHMuanMKKyhmdW5jdGlvbiBtb3pNZXRob2RzKCkgeworCitjbGFzcyBY
IHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IDQyOworICAgIH0K
KyAgICBhc3luYyBnZXRWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CisgICAg
fQorICAgIHNldFZhbHVlKHZhbHVlKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAg
ICB9CisgICAgYXN5bmMgaW5jcmVtZW50KCkgeworICAgICAgICB2YXIgdmFsdWUgPSBhd2FpdCB0
aGlzLmdldFZhbHVlKCk7CisgICAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUgKyAxKTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTsKKyAgICB9CisgICAgYXN5bmMgZ2V0QmFzZUNsYXNz
TmFtZSgpIHsKKyAgICAgICAgcmV0dXJuICdYJzsKKyAgICB9CisgICAgc3RhdGljIGFzeW5jIGdl
dFN0YXRpY1ZhbHVlKCkgeworICAgICAgICByZXR1cm4gNDQ7CisgICAgfQorfQorCitjbGFzcyBZ
IGV4dGVuZHMgWCB7CisgICAgYXN5bmMgZ2V0QmFzZUNsYXNzTmFtZSgpIHsKKyAgICAgICAgcmV0
dXJuIHN1cGVyLmdldEJhc2VDbGFzc05hbWUoKTsKKyAgICB9Cit9CisKK3ZhciBvYmpMaXRlcmFs
ID0geworICAgIGFzeW5jIGdldCgpIHsKKyAgICAgICAgcmV0dXJuIDQ1OworICAgIH0sCisgICAg
c29tZVN0dWZmOiA1Cit9OworCit2YXIgeCA9IG5ldyBYKCk7Cit2YXIgeSA9IG5ldyBZKCk7CisK
K3Nob3VsZEJlQXN5bmMoNDIsICgpID0+IHguZ2V0VmFsdWUoKSk7CitzaG91bGRCZUFzeW5jKDQz
LCAoKSA9PiB4LmluY3JlbWVudCgpKTsKK3Nob3VsZEJlQXN5bmMoNDQsICgpID0+IFguZ2V0U3Rh
dGljVmFsdWUoKSk7CitzaG91bGRCZUFzeW5jKDQ1LCAoKSA9PiBvYmpMaXRlcmFsLmdldCgpKTsK
K3Nob3VsZEJlQXN5bmMoJ1gnLCAoKSA9PiB5LmdldEJhc2VDbGFzc05hbWUoKSk7CisKK30pKCk7
CisKKyhmdW5jdGlvbiBtb3pGdW5jdGlvbk5hbWVJbmZlcnJlbmNlKCkgeworCithc3luYyBmdW5j
dGlvbiB0ZXN0KCkgeyB9CisKK3ZhciBhbm9uID0gYXN5bmMgZnVuY3Rpb24oKSB7IH0KKworc2hv
dWxkQmUoInRlc3QiLCB0ZXN0Lm5hbWUpOworc2hvdWxkQmUoImFub24iLCBhbm9uLm5hbWUpOwor
Cit9KSgpOworCisoZnVuY3Rpb24gbW96U3ludGF4RXJyb3JzKCkgeworCitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCIndXNlIHN0cmljdCc7IGFzeW5jIGZ1bmN0aW9uIGV2YWwoKSB7fSIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiJ3VzZSBzdHJpY3QnOyBhc3luYyBmdW5jdGlvbiBhcmd1bWVu
dHMoKSB7fSIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gYShrID0g
c3VwZXIucHJvcCkgeyB9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlv
biBhKCkgeyBzdXBlci5wcm9wKCk7IH0iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGEoKSB7IHN1cGVyKCk7IH0iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFz
eW5jIGZ1bmN0aW9uIGEoayA9IGF3YWl0IDMpIHt9Iik7CisKK30pKCk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtcmVz
ZXJ2ZWQtd29yZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdvcmQu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzhlMWQzMzIxYzdmODAwODdiZWRmMGYxNTcyMWIyOTViODFlZWZiMwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdv
cmQuanMKQEAgLTAsMCArMSwxNjYgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMy
MDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8v
QCBza2lwCisKK2Z1bmN0aW9uIGFzc2VydChjb25kLCBtc2cgPSAiIikgeworICAgIGlmICghY29u
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7Cit9Citub0lubGluZShhc3NlcnQpOwor
CitmdW5jdGlvbiBzaG91bGRUaHJvd1N5bnRheEVycm9yKHN0ciwgbWVzc2FnZSkgeworICAgIHZh
ciBoYWRFcnJvciA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc3RyKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHsKKyAg
ICAgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2Fn
ZSA9PT0gInN0cmluZyIpCisgICAgICAgICAgICAgICAgYXNzZXJ0KGUubWVzc2FnZSA9PT0gbWVz
c2FnZSwgIkV4cGVjdGVkICciICsgbWVzc2FnZSArICInIGJ1dCB0aHJldyAnIiArIGUubWVzc2Fn
ZSArICInIik7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KGhhZEVycm9yLCAiRGlkIG5v
dCB0aHJvdyBzeW50YXggZXJyb3IiKTsKK30KK25vSW5saW5lKHNob3VsZFRocm93U3ludGF4RXJy
b3IpOworCit2YXIgQXN5bmNGdW5jdGlvbiA9IChhc3luYyBmdW5jdGlvbigpIHt9KS5jb25zdHJ1
Y3RvcjsKKworLy8gQXN5bmNGdW5jdGlvbkV4cHJlc3Npb24KK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIGF3YWl0OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciBbYXdhaXRdID0gW107IH0pIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIFsu
Li5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5j
IGZ1bmN0aW9uKCkgeyB2YXIge2F3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307
IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsg
dmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQgYXdhaXQ7IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQgW2F3YWl0XSA9
IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBm
dW5jdGlvbigpIHsgbGV0IFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCB7YXdhaXR9ID0ge307
IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0
aW9uKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IHtpc0FzeW5jOiBh
d2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIo
YXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IGF3YWl0OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3QgW2F3YWl0XSA9IFtd
OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5j
dGlvbigpIHsgY29uc3QgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3Qge2F3YWl0fSA9IHt9
OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5j
dGlvbigpIHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3Qge2lzQXN5
bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoIihhc3luYyBmdW5jdGlvbigpIHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9KSIsICJDYW5ub3Qg
ZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBhc3luYyBmdW5jdGlv
biBhd2FpdCgpIHt9IH0pIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMg
ZnVuY3Rpb24oYXdhaXQpIHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFz
eW5jIGZ1bmN0aW9uIGYoW2F3YWl0XSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFy
YW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCIoYXN5bmMgZnVuY3Rpb24gZihbLi4uYXdhaXRdKSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKC4uLmF3YWl0KSB7fSkiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKHthd2FpdH0pIHt9KSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoe2lzQXN5
bmM6IGF3YWl0fSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CisKKy8vIEFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbgor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIGF3YWl0OyB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZh
ciBbYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGYoKSB7IHZhciBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciB7YXdhaXR9ID0ge307IH0p
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZh
ciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCBh
d2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1
bmN0aW9uIGYoKSB7IGxldCBbYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQgWy4uLmF3YWl0XSA9IFtd
OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rp
b24gZigpIHsgbGV0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0g
e307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5j
dGlvbiBmKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3QgYXdhaXQ7
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlv
biBmKCkgeyBjb25zdCBbYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCBbLi4uYXdhaXRdID0gW107
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlv
biBmKCkgeyBjb25zdCB7YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9
ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBm
dW5jdGlvbiBmKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBmdW5jdGlv
biBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1
bmN0aW9uIGYoKSB7IGFzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFy
ZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZihhd2FpdCkge30iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoW2F3YWl0XSkge30iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoWy4uLmF3YWl0XSkg
e30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoLi4u
YXdhaXQpIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlv
biBmKHthd2FpdH0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBm
dW5jdGlvbiBmKHtpc0FzeW5jOiBhd2FpdH0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
cGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CisKKy8vIEFzeW5jQXJyb3dG
dW5jdGlvbgorc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZh
ciBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5j
ICgpID0+IHsgdmFyIFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIge2F3
YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFz
eW5jICgpID0+IHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciB7aXNBc3luYzogYXdh
aXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5
bmMgKCkgPT4geyBsZXQgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBs
ZXQgWy4uLmF3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCB7YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0
IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9
OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3lu
YyAoKSA9PiB7IGNvbnN0IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4g
eyBjb25zdCBbLi4uYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3Qge2F3YWl0fSA9IHt9OyB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9
PiB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCB7aXNBc3luYzog
YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgZiA9IGFzeW5jICgpID0+IHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBkZWNs
YXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgYXN5bmMgZnVuY3Rpb24g
YXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFz
eW5jIChhd2FpdCkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBm
ID0gYXN5bmMgKFthd2FpdF0pID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1l
dGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgZiA9IGFzeW5jIChbLi4uYXdhaXRdKSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoLi4uYXdhaXQpID0+IHt9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICh7YXdhaXR9KSA9PiB7fSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoe2lzQXN5bmM6IGF3YWl0
fSkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMg
YXdhaXQgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNNZXRob2QKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIgYXdhaXQ7IH0gfSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIFthd2FpdF0gPSBb
XTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBm
KCkgeyB2YXIgWy4uLmF3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciB7YXdhaXR9ID0ge307IH0gfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBPID0geyBhc3luYyBmKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCBhd2Fp
dDsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7
IGFzeW5jIGYoKSB7IGxldCBbYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQgWy4uLmF3YWl0XSA9
IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9
IHsgYXN5bmMgZigpIHsgbGV0IHthd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCB7aXNBc3luYzog
YXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBPID0geyBhc3luYyBmKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigp
IHsgY29uc3QgYXdhaXQ7IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCBbYXdhaXRdID0gW107IH0gfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBj
b25zdCBbLi4uYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCB7YXdhaXR9ID0ge307IH0gfSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBm
KCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCB7aXNBc3lu
YzogYXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBPID0geyBhc3luYyBmKCkgeyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90
IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBhc3luYyBmdW5j
dGlvbiBhd2FpdCgpIHt9IH0gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdh
aXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IE8gPSB7IGFzeW5jIGYoYXdhaXQpIHt9IH0gIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFy
YW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgTyA9IHsgYXN5bmMgZihbYXdhaXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoWy4uLmF3YWl0XSkge30iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKC4uLmF3YWl0KSB7fSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoe2F3YWl0fSkg
e30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKHtp
c0FzeW5jOiBhd2FpdH0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CisKKy8vIEFzeW5jRnVuY3Rpb24gY29uc3RydWN0
b3IKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciBhd2FpdDsnKSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIgW2F3YWl0
XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24o
J3ZhciBbLi4uYXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
QXN5bmNGdW5jdGlvbigndmFyIHthd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciB7aXNBc3lu
YzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNG
dW5jdGlvbignbGV0IGF3YWl0OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiQXN5bmNGdW5jdGlvbignbGV0IFthd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCBbLi4uYXdhaXRdID0g
W107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0
aW9uKCdsZXQge2F3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiQXN5bmNGdW5jdGlvbignbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCB7
aXNBc3luYzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCBhd2FpdDsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IFthd2FpdF0gPSBbXTsn
KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24o
J2NvbnN0IFsuLi5hd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IHthd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2Z1bmN0aW9u
IGF3YWl0KCkge30nKSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5j
dGlvbignYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fScpIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0
aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdhd2FpdCcsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignW2F3YWl0XScsICcnKSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignWy4uLmF3YWl0XScsICcnKSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignLi4uYXdhaXQnLCAn
JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3thd2Fp
dH0nLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24o
J3tpc0FzeW5jOiBhd2FpdH0nLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0
ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292390</attachid>
            <date>2016-10-21 13:18:12 -0700</date>
            <delta_ts>2016-10-21 16:04:14 -0700</delta_ts>
            <desc>All those other fixes + a rebase</desc>
            <filename>bug-163760-20161021161432.patch</filename>
            <type>text/plain</type>
            <size>145616</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Njk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OWEwN2Y1MTVjNGZhNjU0MGQ4YjlkYTk3MzhiZWI4YmQyOTI4OTNmLi41NjM4MTg2ZjZmODExMDU5
ZjM0ODg4ZTMzODgwYzEwYTQzNmQ5MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTcgQEAKKzIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBm
dW5jdGlvbnMgZ2VuZXJhdGUgYnl0ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3
aGljaCBpcworICAgICAgICBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb246CisgICAgICAgIAorICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5z
bGF0aW9uOgorICAgICAgICBhc3luYyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAv
LyBBZnRlciB0cmFuc2xhdGlvbjoKKyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAg
ICAgICAgIGxldCBnZW5lcmF0b3IgPSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQm9keSBvZiBhc3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgQGdlbmVyYXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5l
cmF0b3JUaGlzOiB0aGlzLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8
ZnJhbWUgc3RhdGU+LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgQXdhaXQgRXhw
cmVzc2lvbnMgYXJlIGVxdWl2YWxlbnQgdG8gbm9uLWRlbGVnYXRpbmcgWWllbGQgZXhwcmVzc2lv
bnMsIGFuZCBlbWl0IGlkZW50aWNhbCBieXRlY29kZS4KKworICAgICAgICBJbiB0aGlzIGJ1Zywg
YXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBvbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCwgYXMg
c3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGRvIG5vdCB5ZXQgd29y
ayBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5q
czogQWRkZWQuCisgICAgICAgIChhc3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19hc3luY19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3
RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZSk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6QXN5bmNG
dW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6
SlNBc3luY0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJl
bnRseSk6CisKIDIwMTYtMTAtMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVuYW1lIFdBU00gdG8gV2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDAxY2IyOTQ3MzdiMjQ0ZjIxZGI3YTk1Mzk3OWU0OTJiNzMwMDQyZDgu
LmFlMTE5YmFmZWQ2YjcwMDUyN2M1YTI0NTM0MmEzZDUxMWY5ZDkxZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTYzNSw2ICs2MzUsOCBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIHJ1bnRpbWUvQXJyYXlDb252ZW50aW9ucy5jcHAKICAgICBydW50aW1l
L0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKKyAgICBydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1l
L0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9CYXNpY0Jsb2NrTG9jYXRp
b24uY3BwCiAgICAgcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9C
b29sZWFuT2JqZWN0LmNwcApAQCAtNzExLDYgKzcxMyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCisgICAgcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0NKU1ZhbHVlLmNwcAogICAgIHJ1bnRp
bWUvSlNDYWxsZWUuY3BwCkBAIC0xMjk1LDYgKzEyOTgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
QlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJh
eUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
QXJyYXlQcm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9EYXRlUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1
bmN0aW9uUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA2NjMwNTM3MjAyNGUxZGQ5M2E0YWM3MmQwMjkwNmEzMjAzMDU0NjYyLi4yODU0
ZDVlNzk4NmRiMDkxYjJiOTg0Y2EwZTNmMGYyNDc5MGMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODksNiArODksNyBAQCBKYXZhU2NyaXB0Q29y
ZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5UHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Bc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9EYXRl
UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9GdW5jdGlvblBy
b3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvR2VuZXJhdG9yUHJv
dG90eXBlLmpzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhYTA4NGU4MTFk
YTMxNGRhNmNmYjQ3MDFhMzMzOGZiMzBjMzM3MS4uMThmZTU3MTdlYjYzNzViZDRiMDhiNGIwZWE0
ZTRkNzEzMzI1YWJjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNDMsNiAr
MTI0MywxMiBAQAogCQk1M0ZBMkFFMzFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovOyB9OwogCQk1
M0ZEMDREMzFEN0FCMjc3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQxMUQ3QUIx
ODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovOyB9OwogCQk1M0ZEMDRE
NDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZEMDREMjFEN0FCMTg3MDAzMjg3
RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi87IH07CisJCTVCNzBDRkRFMURCNjlFNjYw
MEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVu
Y3Rpb24uaCAqLzsgfTsKKwkJNUI3MENGREYxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5j
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLzsgfTsKKwkJ
NUI3MENGRTAxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRBMURCNjlF
NUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi87IH07CisJCTVCNzBDRkUx
MURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRCMURCNjlFNUMwMEVD
MjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNUI3MENGRTIxREI2
OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREMxREI2OUU1QzAwRUMyM0Y5
IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyB9OworCQk1QjcwQ0ZFMzFEQjY5RTY2
MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAv
KiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk1RDVEOEFEMTBFMEQwRUJF
MDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5
bGliICovOyB9OwogCQk1REJCMTUxQjEzMUQwQjMxMDA1NkFEMzYgLyogdGVzdGFwaS5qcyBpbiBD
b3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovOyB9OwogCQk1REJCMTUyNTEz
MUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTIxMTBEMEE0ODc4ODcwMDQ4MDI1NSAv
KiBtaW5pZG9tLmpzICovOyB9OwpAQCAtMzU0OCw2ICszNTU0LDEzIEBACiAJCTUzRkEyQUUyMUNG
MzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTNGRDA0RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29u
dmVudGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ2Fs
bGluZ0NvbnZlbnRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZEMDRE
MjFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DYWxsaW5nQ29udmVudGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXN5bmNGdW5jdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIz
RjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQXN5bmNGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVCNzBDRkRBMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGREIxREI2OUU1QzAwRUMyM0Y5IC8q
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkREMURCNjlF
NUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZHlsaWIiOyBuYW1lID0gbGliZWRpdC5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmVkaXQu
ZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTVEQUZENkNCMTQ2QjY4NjMw
MEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gSlNDLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RERERjQ0NjE0RkVFNzIyMDBCNEZCNEQgLyogTExJ
bnREZXNpcmVkT2Zmc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTElu
dERlc2lyZWRPZmZzZXRzLmg7IHBhdGggPSBMTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNTkxNSw2ICs1OTI4
LDEwIEBACiAJCQkJRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNw
cCAqLywKIAkJCQlGNjkyQTg0RTAyNTU1OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuaCAq
LywKIAkJCQkwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggKi8sCisJ
CQkJNUI3MENGREQxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgKi8sCisJCQkJNUI3MENGREMxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oICovLAorCQkJCTVCNzBDRkRCMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0
aW9uUHJvdG90eXBlLmNwcCAqLywKKwkJCQk1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJCTBGMzhEMkEwMUQ0NDE5NjYwMDY4MDQ5OSAv
KiBBdXhpbGlhcnlCYXJyaWVyLmggKi8sCiAJCQkJMEYzOEQyQTExRDQ0MTk2NjAwNjgwNDk5IC8q
IEF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmggKi8sCiAJCQkJNTI2NzhGOEMxQTAzMTAwOTAwNkEz
MDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5jcHAgKi8sCkBAIC02MTAwLDYgKzYxMTcsOCBAQAog
CQkJCTBGMkI2NkJCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5oICovLAog
CQkJCTBGMkI2NkJDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlld0lubGluZXMu
aCAqLywKIAkJCQk1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAq
LywKKwkJCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8s
CiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8s
CiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAog
CQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCkBAIC03Mjg4
LDYgKzczMDcsNyBAQAogCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheVByb3Rv
dHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1ODFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlDb25zdHJ1
Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1OTFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5qcyAqLywKKwkJCQk1QjgyNDMwNDFEQjdBQTQ5MDBFQTYzODQgLyogQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5qcyAqLywKIAkJCQlERTI2RTkwNjFDQjVERDk2MDBEMkJFODIgLyog
QnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCAqLywKIAkJCQlERTI2RTkwMjFDQjVERDA1MDBE
MkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi8sCiAJCQkJQTdEODAxQTExODgw
RDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCkBAIC03NzIwLDYgKzc3
NDAsNyBAQAogCQkJCURDM0QyQjBBMUQzNDMxNjIwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZDM0NDRkMxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGRDE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tN
YXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZFMjFEQjY5RTY2MDBFQzIzRjkg
LyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NG
RTE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QkYxNThEMTlCN0E1MzEwMDY5NUREMCAvKiBERkdCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzNDRDAwMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja1dvcmtsaXN0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTgyODgsNiArODMwOSw3IEBACiAJCQkJN0MxODRFMUIxN0JFREJE
MzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxODRFMjMxN0JF
RTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OTZCNzMxRTFCREEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNlQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZERTFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1
bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyog
SlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTFGMTdCRUUyMkUw
MDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3
MzFGMUJEQTA4RUYwMDMzMUI4NCAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTg0MjgsNiArODQ1MCw3IEBACiAJCQkJQkMxOEM0M0YwRTE2RjVDRDAwQjM0NDYw
IC8qIE5vZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUU0NUEyODE4QTFCMjU5MDAyNkQ4OEYg
LyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MTBF
MTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTVCNzBDRkUwMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MjBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MzBFMTZGNUNEMDBCMzQ0NjAg
LyogTnVtYmVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0NDBFMTZGNUNEMDBC
MzQ0NjAgLyogTnVtYmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTkyOTMsNiArOTMx
Niw3IEBACiAJCQkJQTU1NzE0QkYxQ0Q4MDRBNDAwMDREMkM2IC8qIENvbnNvbGVPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hw
b2ludFNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjcxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCNzBDRkUz
MURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQzg1MjkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGhhc2VTY29wZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUyQjFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1
cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MjJBNjIxQzE1OEU2QTAwRTJFQjk4IC8qIEIz
Q29uc3RGbG9hdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTcwNiw2ICs5NzMwLDcgQEAK
IAkJCQkwRjU1MTNBODFENUE2OENEMDBDMzJCRDggLyogRnJlZUxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkU5OUIyNEExQzI0QzNENzAwQzgyMTU5IC8qIEpJVE5lZ0dlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVy
dHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENGRTExREI2OUU2NjAwRUMyM0Y5
IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4
RTQxMTJFNzJFRjAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZCNDE1ODQxRDc4RkI0QzAwREY4RDA5IC8qIEFycmF5Q29udmVudGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTg4Myw2ICs5OTA4LDcgQEAKIAkJCQkx
NDhGMjFCNzEwN0VDNTQ3MDA0MkVDMkMgLyogTm9kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
REM2OUFBNjYxQ0Y3QTFGMjAwQzYyNzJGIC8qIE1hdGNoUmVzdWx0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENGREYxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUg
LyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDZGNTIxMUEzMkIzMTMw
MDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMy
MkU1QTIxREE2NDQzOTAwNkU3NzA5IC8qIERGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNWFiOTc5YmFkNDU1NGM2
YmM3ZjUzMjE5MWYzZWFjZjIyZDFjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2Fs
aWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVu
Y3Rpb24gYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9k
ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgbGV0IHN0YXRlID0gZ2VuZXJhdG9yLkBnZW5l
cmF0b3JTdGF0ZTsKKyAgICBsZXQgdmFsdWUgPSBAdW5kZWZpbmVkOworCisgICAgaWYgKHN0YXRl
ID09PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQgfHwgKHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0
b3JSZXN1bWVNb2RlTm9ybWFsICYmIHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVNb2Rl
VGhyb3cpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiIik7CisKKyAgICB0cnkgewor
ICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0
aW5nOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5l
cmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1l
TW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CisgICAgICAgIGlmIChnZW5lcmF0b3Iu
QGdlbmVyYXRvclN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7
CisgICAgICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUodmFsdWUpOworICAgICAgICB9
CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0
ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkBy
ZWplY3QoZXJyb3IpOworICAgIH0KKworICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZSh2YWx1
ZSkuQHRoZW4oCisgICAgICAgIGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiBAYXN5bmNGdW5jdGlv
blJlc3VtZShnZW5lcmF0b3IsIHZhbHVlLCBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCk7IH0s
CisgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IHJldHVybiBAYXN5bmNGdW5jdGlvblJlc3VtZShn
ZW5lcmF0b3IsIGVycm9yLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KTsgfSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXgg
NTc2ZGU0MDA2MDRkMTAxNDc1MWNjNjNiZWFjZWM3N2E1NWZkNGZmNy4uODRhZTNiZGEyZjAwYjkw
ZDhmMWQyMzBmNjFiYWQwOTI4YzgxMTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTA1LDYgKzEwNSw4IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuYyIsICJsZW5ndGgiIDogNCB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIsICJs
ZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FzeW5jX2Z1bmMi
LCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hc3luY19m
dW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2V0
X2Z1bmN0aW9uX25hbWUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Rh
aWxfY2FsbCIsICJsZW5ndGgiIDogOSB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCBkOTczYmNmYjEzN2MzMmMwYzZkZWVkZjNkZTBl
MWRkOTQxNjU0YzZmLi4xNjJkYjI4MmNkNTUzOTA1MDE4NTU3MTBjMjFlYmI0MTdmYTUwNWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApA
QCAtMTY0LDYgKzE2NCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9n
ZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CiAgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNf
ZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQ6CiAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOgpAQCAtMTk2LDYg
KzE5Nyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJs
b2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF91bnNpZ25lZDoK
ICAgICBjYXNlIG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgor
ICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3Bl
OgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVh
dGVfcmVzdDoKQEAgLTM4OCw2ICszOTAsOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAg
IGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgog
ICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19hc3lu
Y19mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY2Fs
bF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90
YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGIxNTIxMTJiM2E2YWViMGI1ODY4ZjZhYTIwOTllZWM1
NTY3YjJhZjguLjFhMjk5NzUyYzJmMTNjMjRlM2ViOWZiMTE1NmY0ODE3NjJjODJjMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNDYzLDYg
KzE0NjMsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAg
ICAgICBjYXNlIG9wX25ld19hc3luY19mdW5jOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfYXN5bmNfZnVuYyIp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwpAQCAtMTQ3OSw2ICsxNDg3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVy
TmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6
IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgIm5ld19hc3luY19mdW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIx
KS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3Bfc2V0X2Z1bmN0aW9uX25hbWU6IHsKICAgICAgICAgICAgIGludCBmdW5jUmVnID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbmFtZVJlZyA9ICgrK2l0KS0+dS5vcGVy
YW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAppbmRleCAyNWEzNTdiZjU2MTE2NDUwYzFiMGUyNTVjOTc3MGEyM2FkM2UxOWVjLi5l
OTE4YTkzYzI0ZTY3OGRlMTIyZDc1NTAxMTgxOTJkYjU3N2YzMTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIyLDcg
KzEyMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZU1vZGU7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0K
KyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlv
blBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRU
eXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENv
bnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbENvbnRleHRUeXBlPiht
X2V2YWxDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKaW5kZXggYmFjNDA1NDEzYTZiMmZkZDk5NzI3MmMyOGYwYzc0YTcyMzA2YTMzOC4uNmY1
NThjZjdhOTc0Yzg1MzMzYmE4NTIzMDAyMThmZTIzMTIyZTE2NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NsYXNzQ29uc3Ry
dWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJp
YWJsZXM7IH0KICAgICAKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KKyAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBh
cnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KIAogICAgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHtyZXR1cm4gc3RhdGljX2Nhc3Q8SlNDOjpEZXJpdmVk
Q29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRUeXBlKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IGY3ZTEwMzE3YTIxNGM2NDgzOTBiOTRiMThiY2ZkNzM3M2Q1Y2UxN2YuLjYwYTlhZTQwMmFj
M2MyODhmZmE3NTkzYTcwNzhhNzk2YTc0NGNmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNTgs
NyArMTU4LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAg
ICB9CiAgICAgCiAKLSAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1
bmN0aW9uQm9keVBhcnNlTW9kZShtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkpKQogICAgICAgICBw
ZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKG1fY29kZUJsb2NrLmdldCgpLCBtX2luc3RydWN0aW9u
cywgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGVJbmRleCk7CiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6
bWFrZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4obV9pbnN0cnVjdGlvbnMpKTsK
QEAgLTI2OCwxNSArMjY4LDE1IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBz
aG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNv
ZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gKGZ1bmN0aW9u
Tm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rp
b25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlv
bigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKTsKIAotICAgIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAg
ICAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMi
IHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlv
biBzY29wZS4KKyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2Rl
KHBhcnNlTW9kZSkpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIGFuZCBBc3luY0Z1bmN0aW9uIG5l
dmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSBy
ZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCiAgICAgICAgIG5l
ZWRzQXJndW1lbnRzID0gZmFsc2U7CiAKLSAgICAgICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhlIHZh
ciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwg
c2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KKyAgICAgICAgLy8gR2VuZXJhdG9yIGFuZCBB
c3luY0Z1bmN0aW9uIHVzZXMgdGhlIHZhciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZh
cmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KICAg
ICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7CiAgICAgfQogCi0gICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlv
bk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVu
Y3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSkgJiYgbmVlZHNBcmd1bWVudHMpIHsKICAg
ICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQs
IHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMiLgogICAgICAg
ICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBl
dmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgogICAgICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0
LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMgYXMgYXJndW1lbnRzIG9mIGEgd3JhcHBpbmcg
Z2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJlbmNlIGl0IGZyb20gYSBnZW5lcmF0b3IuCkBA
IC0zMjAsMTMgKzMyMCwxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogCiAgICAgZW1pdEVu
dGVyKCk7CiAKLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpCisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9k
ZShwYXJzZU1vZGUpKQogICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVy
c1sxXTsKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKICAgICBpZiAoZnVuY3Rpb25O
YW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlv
bk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlKTsKKyAgICAgICAgQVNTRVJUKCFpc0FzeW5jRnVuY3Rpb25Cb2R5
UGFyc2VNb2RlKHBhcnNlTW9kZSkpOwogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVu
Y3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0g
Y2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFy
a0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwpA
QCAtNTA1LDcgKzUwNiw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICBib29sIHNob3VsZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUg
PSAhaGF2ZVBhcmFtZXRlck5hbWVkQXJndW1lbnRzICYmICFtX2NvZGVCbG9jay0+aXNBcnJvd0Z1
bmN0aW9uKCk7CisgICAgICAgIGJvb2wgc2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJpYWJsZSA9ICFo
YXZlUGFyYW1ldGVyTmFtZWRBcmd1bWVudHMKKyAgICAgICAgICAgICYmICFTb3VyY2VQYXJzZU1v
ZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250YWlucyhtX2NvZGVCbG9jay0+cGFyc2VNb2Rl
KCkpOwogICAgICAgICBzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2Nv
cGUgPSBzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxlICYmICFpc1NpbXBsZVBhcmFtZXRlckxp
c3Q7CiAgICAgICAgIC8vIERvIG5vdCBjcmVhdGUgYXJndW1lbnRzIHZhcmlhYmxlIGluIGNhc2Ug
b2YgQXJyb3cgZnVuY3Rpb24uIFZhbHVlIHdpbGwgYmUgbG9hZGVkIGZyb20gcGFyZW50IHNjb3Bl
CiAgICAgICAgIGlmIChzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxlICYmICFzaG91bGRDcmVh
dGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2NvcGUpIHsKQEAgLTU0OSw2ICs1NTEsMjAg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25O
b2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgQVNTRVJUKCFpc0NvbnN0cnVjdG9yKCkp
OworICAgICAgICBBU1NFUlQoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lKTsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworCisgICAgICAg
IGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAgICAg
ICAgZW1pdE5ld09iamVjdChtX2dlbmVyYXRvclJlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6CiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAgIC8v
IHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCiAgICAgICAg
IGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOwpAQCAtNjA4LDcg
KzYyNCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAKICAgICAvLyBXZSBuZWVkIGxvYWQg
fHN1cGVyfCAmIHx0aGlzfCBmb3IgYXJyb3cgZnVuY3Rpb24gYmVmb3JlIGluaXRpYWxpemVEZWZh
dWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2sKICAgICAvLyBpZiB3
ZSBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb24uIEJlY2F1c2UgfHN1cGVyfCAmIHx0
aGlzfCB2YWx1ZXMgY2FuIGJlIHVzZWQgdGhlcmUKLSAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZSA9PSBwYXJzZU1vZGUgJiYgIWlzU2ltcGxlUGFyYW1ldGVyTGlzdCkg
eworICAgIGlmICgoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5j
dGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFp
bnMocGFyc2VNb2RlKSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB8fCBwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkgewogICAgICAgICBp
ZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJv
cGVydHkoKSkKICAgICAgICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNh
bEVudmlyb25tZW50KCk7CiAKQEAgLTYyNywxMiArNjQzLDQ2IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgImlu
aXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2so
KSIgaXMgY2FsbGVkCiAgICAgLy8gYmVjYXVzZSBhIGZ1bmN0aW9uJ3MgZGVmYXVsdCBwYXJhbWV0
ZXIgRXhwcmVzc2lvbk5vZGVzIHdpbGwgdXNlIHRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgcHVz
aFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFREWkNoZWNrT3B0aW1pemF0
aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFopOworCisgICAgVHJ5
RGF0YSogdHJ5Rm9ybWFsUGFyYW1ldGVyc0RhdGEgPSBudWxscHRyOworICAgIGlmIChpc0FzeW5j
RnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSkgJiYgIWlzU2ltcGxlUGFyYW1ldGVy
TGlzdCkgeworICAgICAgICBSZWZQdHI8TGFiZWw+IHRyeUZvcm1hbFBhcmFtZXRlcnNTdGFydCA9
IGVtaXRMYWJlbChuZXdMYWJlbCgpLmdldCgpKTsKKyAgICAgICAgdHJ5Rm9ybWFsUGFyYW1ldGVy
c0RhdGEgPSBwdXNoVHJ5KHRyeUZvcm1hbFBhcmFtZXRlcnNTdGFydC5nZXQoKSk7CisgICAgfQor
CiAgICAgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2Nv
cGVTdGFjayhwYXJhbWV0ZXJzLCBpc1NpbXBsZVBhcmFtZXRlckxpc3QsIGZ1bmN0aW9uTm9kZSwg
ZnVuY3Rpb25TeW1ib2xUYWJsZSwgc3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBjYXB0dXJlcywg
c2hvdWxkQ3JlYXRlQXJndW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3BlKTsKLSAgICAKKwor
ICAgIGlmIChpc0FzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSkgJiYgIWlz
U2ltcGxlUGFyYW1ldGVyTGlzdCkgeworICAgICAgICBSZWZQdHI8TGFiZWw+IGRpZE5vdFRocm93
ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXAoZGlkTm90VGhyb3cuZ2V0KCkpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhjZXB0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAg
ICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoSGVyZSA9IGVtaXRMYWJlbChuZXdMYWJlbCgpLmdldCgp
KTsKKyAgICAgICAgcG9wVHJ5QW5kRW1pdENhdGNoKHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhLCBl
eGNlcHRpb24uZ2V0KCksIHRocm93blZhbHVlLmdldCgpLCBjYXRjaEhlcmUuZ2V0KCksIEhhbmRs
ZXJUeXBlOjpDYXRjaCk7CisKKyAgICAgICAgLy8gcmV0dXJuIEBQcm9taXNlLkByZWplY3QodGhy
b3duVmFsdWUpOworICAgICAgICBWYXJpYWJsZSBwcm9taXNlVmFyID0gdmFyaWFibGUobV92bS0+
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUHJvbWlzZVByaXZhdGVOYW1lKCkpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBlbWl0UmVzb2x2ZVNjb3BlKG5ld1RlbXBv
cmFyeSgpLCBwcm9taXNlVmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb21pc2VD
b25zdHJ1Y3RvciA9IGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgp
LCBwcm9taXNlVmFyLCBSZXNvbHZlTW9kZTo6VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHByb21pc2VSZWplY3QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3Jhcnko
KSwgcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgpKTsKKworICAgICAgICBDYWxsQXJndW1lbnRzIGFy
Z3MoKnRoaXMsIG51bGxwdHIsIDEpOworCisgICAgICAgIGVtaXRNb3ZlKGFyZ3MudGhpc1JlZ2lz
dGVyKCksIHByb21pc2VDb25zdHJ1Y3Rvci5nZXQoKSk7CisgICAgICAgIGVtaXRNb3ZlKGFyZ3Mu
YXJndW1lbnRSZWdpc3RlcigwKSwgdGhyb3duVmFsdWUuZ2V0KCkpOworCisgICAgICAgIEpTVGV4
dFBvc2l0aW9uIGRpdm90KGZ1bmN0aW9uTm9kZS0+Zmlyc3RMaW5lKCksIGZ1bmN0aW9uTm9kZS0+
c3RhcnRPZmZzZXQoKSwgZnVuY3Rpb25Ob2RlLT5saW5lU3RhcnRPZmZzZXQoKSk7CisKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGVtaXRDYWxsKG5ld1RlbXBvcmFyeSgpLCBw
cm9taXNlUmVqZWN0LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIGRpdm90LCBkaXZv
dCwgZGl2b3QsIERlYnVnZ2FibGVDYWxsOjpObyk7CisgICAgICAgIGVtaXRSZXR1cm4ocmVzdWx0
LmdldCgpKTsKKworICAgICAgICBlbWl0TGFiZWwoZGlkTm90VGhyb3cuZ2V0KCkpOworICAgIH0K
KwogICAgIC8vIElmIHdlIGRvbid0IGhhdmUgIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb24s
IHRoZW4gbG9hZGluZyB8dGhpc3wgaW5zaWRlIGFuIGFycm93IGZ1bmN0aW9uIG11c3QgYmUgZG9u
ZQogICAgIC8vIGFmdGVyIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBG
dW5jdGlvblNjb3BlU3RhY2soKSBiZWNhdXNlIHRoYXQgZnVuY3Rpb24gc2V0cyB1cCB0aGUKICAg
ICAvLyBTeW1ib2xUYWJsZSBzdGFjayBhbmQgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25M
ZXhpY2FsRW52aXJvbm1lbnQoKSBjb25zdWx0cyB0aGUgU3ltYm9sVGFibGUgc3RhY2sKLSAgICBp
ZiAoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSA9PSBwYXJzZU1vZGUgJiYgaXNT
aW1wbGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dG
dW5jdGlvbk1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSkgJiYgaXNTaW1wbGVQYXJhbWV0ZXJMaXN0
KSB7CiAgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgZnVuY3Rpb25Ob2Rl
LT51c2VzU3VwZXJQcm9wZXJ0eSgpKQogICAgICAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93
RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICAKQEAgLTY0Miw3ICs2OTIsNyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUq
IGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIAogICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBl
bnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2
ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0
aGUgc3ltYm9sIGtleXMuCiAgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVz
ZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KLSAgICBp
ZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAg
ICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkp
IHsKICAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOwogICAgICAg
ICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRh
YmxlKTsKICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xU
YWJsZUNvbnN0YW50SW5kZXg7CkBAIC0yNjQ0LDYgKzI2OTQsMjEgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dFNldHRlckJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHByb3BlcnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2V0dGVyLT5pbmRleCgpKTsKIH0K
IAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhSZWdpc3Rl
cklEKiBuZXh0RnVuY3Rpb24pCit7CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBj
cmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRz
IHByb3BlcnRpZXMgZm9yIGVhc2UuCisgICAgLy8gQnV0IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3
ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBjbGFzcywgYWRkIG9wY29kZSBuZXdfZ2VuZXJh
dG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5zdGVhZCBvZiB0aGVzZSBwcml2YXRlIHByb3Bl
cnRpZXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MTU0NQorCisgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSgpLCBuZXh0
RnVuY3Rpb24sIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgZW1pdERpcmVjdFB1
dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSgpLCAmbV90aGlzUmVnaXN0ZXIsIFByb3BlcnR5Tm9k
ZTo6S25vd25EaXJlY3QpOworCisgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdp
c3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0
ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpLCBQcm9wZXJ0eU5vZGU6Oktu
b3duRGlyZWN0KTsKKworICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIs
IHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1l
KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVj
dCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlJZChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5KQogewogICAgIGVtaXRPcGNvZGUob3BfZGVsX2J5X2lkKTsKQEAgLTI5ODYsNiArMzA1MSwx
MSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29t
bW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3RpbwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgogICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19n
ZW5lcmF0b3JfZnVuY19leHA7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNN
ZXRob2RNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25N
b2RlOgorICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19hc3luY19mdW5jX2V4cDsKKyAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzAwNCw3ICsz
MDc0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXgKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3Qs
IEFycm93RnVuY0V4cHJOb2RlKiBmdW5jKQogewotICAgIEFTU0VSVChmdW5jLT5tZXRhZGF0YSgp
LT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IGZ1
bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJv
d0Z1bmN0aW9uTW9kZSk7CisgICAgQVNTRVJUKFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5j
dGlvbk1vZGUpLmNvbnRhaW5zKGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpKSk7CiAgICAg
ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMtPm1ldGFkYXRhKCkpOwog
ICAgIHJldHVybiBkc3Q7CiB9CkBAIC0zMDM4LDYgKzMxMDgsOCBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25N
ZXRhZGF0YQogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVj
bChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKICAgICBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgp
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSkKICAgICAg
ICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworICAgIGVsc2UgaWYgKGZ1bmN0
aW9uLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlKQor
ICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19hc3luY19mdW5jKTsKICAgICBlbHNlCiAgICAgICAg
IGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3Qt
PmluZGV4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQ0YzFjOGU4ZWVhODhiMWMyMGY0YTk1ZTQ1MzY5
MmNjZGU0OWJmYmYuLmIzZWYwNDAxYjkyMDI1MDFjMmIzYWQwZmUyNWY5NjkwODIzNzAxN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTU3Niw3ICs1NzYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdFB1dEdldHRlclNldHRlcihSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eSwgdW5zaWduZWQgYXR0cmlidXRlcywgUmVnaXN0ZXJJRCogZ2V0dGVyLCBS
ZWdpc3RlcklEKiBzZXR0ZXIpOwogICAgICAgICB2b2lkIGVtaXRQdXRHZXR0ZXJCeVZhbChSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgdW5zaWduZWQgcHJvcGVydHlEZXNj
cmlwdG9yT3B0aW9ucywgUmVnaXN0ZXJJRCogZ2V0dGVyKTsKICAgICAgICAgdm9pZCBlbWl0UHV0
U2V0dGVyQnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIHVuc2ln
bmVkIHByb3BlcnR5RGVzY3JpcHRvck9wdGlvbnMsIFJlZ2lzdGVySUQqIHNldHRlcik7Ci0gICAg
ICAgIAorCisgICAgICAgIC8vIEluaXRpYWxpemUgb2JqZWN0IHdpdGggZ2VuZXJhdG9yIGZpZWxk
cyAoQGdlbmVyYXRvclRoaXMsIEBnZW5lcmF0b3JOZXh0LCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5l
cmF0b3JGcmFtZSkKKyAgICAgICAgdm9pZCBlbWl0UHV0R2VuZXJhdG9yRmllbGRzKFJlZ2lzdGVy
SUQqIG5leHRGdW5jdGlvbik7CisKICAgICAgICAgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1
bmN0aW9uRm9ySWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRG
dW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCwgRGVidWdnYWJsZUNhbGwpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbEluVGFp
bFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5j
dGlvbiwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCwgRGVidWdnYWJsZUNhbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGQzODdjZGY4MTUwMzg1NDQxYTM0ZTk2M2Q2
YjhhMjgwYWYwMzI0MDIuLmVmMmM1ZTYwMjRlNDE1NDQ0MTYyYmRmZDVmZWVlYTg1MDU4NGNmYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKQEAgLTM0MDIsMjUgKzM0MDIsNjQgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAg
ICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgbmV4dC5nZXQoKSwgaG9tZU9iamVj
dC5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBq
dXN0IGNyZWF0ZSBhbiBvYmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciByZWxhdGVkIGZpZWxkcyBh
cyBpdHMgcHJvcGVydGllcyBmb3IgZWFzZS4KLSAgICAgICAgLy8gQnV0IHRvIG1ha2UgaXQgZWZm
aWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBjbGFzcywgYWRkIG9wY29kZSBu
ZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5zdGVhZCBvZiB0aGVzZSBwcml2
YXRlIHByb3BlcnRpZXMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRHZW5lcmF0b3JGaWVs
ZHMobmV4dC5nZXQoKSk7CiAKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdl
bmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSgpLCBuZXh0LmdldCgpLCBQcm9w
ZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0g
bGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
TGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNl
dCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRvclJl
Z2lzdGVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CiAKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSgp
LCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwor
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmds
ZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBBU1NFUlQoc2lu
Z2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1lbnRO
b2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihzaW5n
bGVTdGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0ZW1l
bnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAg
ICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4o
ZXhwcik7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogaW5pdGlhbFN0YXRlID0gZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKDApKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJl
Y3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgaW5p
dGlhbFN0YXRlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShuZXh0LmdldCgpLCBmdW5jRXhwcik7CiAKLSAgICAgICAgZ2VuZXJhdG9y
LmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5h
bWUoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2Rl
OjpLbm93bkRpcmVjdCk7CisgICAgICAgIGlmIChnZW5lcmF0b3Iuc3VwZXJCaW5kaW5nKCkgPT0g
U3VwZXJCaW5kaW5nOjpOZWVkZWQgfHwgZ2VuZXJhdG9yLnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IERvbid0IGFsd2F5cyBsb2FkIGhvbWUgb2JqZWN0IGZvciBhc3luYyBhcnJvd3MKKyAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhvbWVPYmplY3RGb3JDYWxs
ZWUoZ2VuZXJhdG9yKTsKKyAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwg
bmV4dC5nZXQoKSwgaG9tZU9iamVjdC5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhuZXh0LmdldCgpKTsKIAogICAgICAgICBBU1NF
UlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZz
ZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihn
ZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisKKyAgICAgICAgLy8gbG9hZCBAYXN5bmNG
dW5jdGlvblJlc3VtZSwgYW5kIGNhbGwuCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdGFy
dEFzeW5jRnVuY3Rpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGF1dG8g
dmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuYXN5bmNGdW5jdGlvblJlc3VtZVByaXZhdGVOYW1lKCkpOworCisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoc2NvcGUuZ2V0KCksIGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXIpKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRGcm9tU2NvcGUoc3RhcnRBc3luY0Z1bmN0aW9uLmdldCgpLCBzY29wZS5nZXQo
KSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworCisgICAgICAgIC8vIHJldHVybiBAYXN5bmNGdW5j
dGlvblJlc3VtZS5AY2FsbCh0aGlzLCBAZ2VuZXJhdG9yLCBAdW5kZWZpbmVkLCBHZW5lcmF0b3JS
ZXN1bWVNb2RlOjpOb3JtYWxNb2RlKQorICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJh
dG9yLCBudWxscHRyLCAzKTsKKyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudCA9IDA7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5l
ZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihh
cmd1bWVudENvdW50KyspLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsr
KSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3Vt
ZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkp
KTsKKyAgICAgICAgLy8gSlNUZXh0UG9zaXRpb24oaW50IF9saW5lLCBpbnQgX29mZnNldCwgaW50
IF9saW5lU3RhcnRPZmZzZXQpCisgICAgICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90KGZpcnN0TGlu
ZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CisKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9zaXRpb24ocmVzdWx0LmdldCgpLCBzdGFydEFzeW5j
RnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgZGl2b3QsIGRpdm90LCBk
aXZvdCwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4o
cmVzdWx0LmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlOgorICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAgIFJlZlB0cjxMYWJlbD4gZ2VuZXJhdG9yQm9k
eUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCA1NDJhNDcxM2Y1MmQ1YTlmYTljNjNlNTZlMDE2ZTIyMzA1YThhZGY2
Li40OWIxYTg2ZWQxNWFmNDFhZmFhOWU3ZDEzYjg4YTVjNDQ3Nzg5YmZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC0yOTksNiArMjk5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhwKQogICAgICAg
ICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3Bf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKKyAgICAgICAgREVGSU5FX09QKG9wX25ld19hc3luY19m
dW5jKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FzeW5jX2Z1bmNfZXhwKQogICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdleHAp
CiAgICAgICAgIERFRklORV9PUChvcF9ub3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAw
NWRlMjhjZTFlZDY3MGI1MWZlYjhmNTNjMzlhNGZmNTQ0OTI4ZTRhLi42ZDIwMjQ5Mzg3YjI5MWFi
ZWJkZmE5ZmJiNzQ3ZGE4MjcwNWY2ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU0
NCw2ICs1NDQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19m
dW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRv
cl9mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9y
X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNf
ZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmNf
ZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfb2JqZWN0KEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9ub3QoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGI5MDFiYjQ2MzEwNjAwMTIwZTExZjg0ZTFl
Y2E5Y2I2MjY3NDliOGQuLjlmOTlhYmE5Y2Y5OWVjZDI5YTAyOWQ4MTQ0MmJhOGUyZmVlZjQwOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtOTcxLDkgKzk3
MSwxMSBAQCB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKICAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfbmV3X2Z1bmMpCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVu
Y3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJU
KG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxzZSBpZiAob3Bjb2Rl
SUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisgICAgZWxz
ZSB7CisgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfYXN5bmNfZnVuYyk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbiwgZHN0LCByZWdUMCwg
ZnVuY0V4ZWMpOwogICAgIH0KIH0KIApAQCAtOTg3LDYgKzk4OSwxMSBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZv
aWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBKdW1wIG5vdFVuZGVmaW5lZFNjb3BlOwpAQCAtMTAwOCw5ICsxMDE1LDEx
IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCiAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0
aW9uKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5l
cmF0b3JfZnVuY19leHApOworICAgIGVsc2UgaWYgKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0
b3JfZnVuY19leHApCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNT
RVJUKG9wY29kZUlEID09IG9wX25ld19hc3luY19mdW5jX2V4cCk7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOwog
ICAgIH0KIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTEwMjYsNiArMTAzNSwxMSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlv
bik7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jX2V4cChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJy
ZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXkoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDhmOGQ0YWQzNDUzZmQ0NmIwMzA0MzJiMzE5YzA2M2IwMzI5YzM5NTQu
LmViZDc3Y2QwMzg2OGJkYzFmYjhhYWJhZTBmYmY5M2QwZTc2MWRhYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2lu
Y2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJKSVRU
b0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKQEAgLTExNzAs
NiArMTE3MSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dl
bmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvYwogICAgIHJldHVybiBvcGVyYXRp
b25OZXdGdW5jdGlvbkNvbW1vbjxKU0dlbmVyYXRvckZ1bmN0aW9uPihleGVjLCBzY29wZSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4
ZWN1dGFibGUsIGZhbHNlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBc3luY0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2lu
dChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0
YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNBc3luY0Z1
bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZShFeGVjU3RhdGUqIGV4ZWMs
IEpTQ2VsbCogZnVuY0NlbGwsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWROYW1lKQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAppbmRleCBhZGZlZjc4YzZmMDBjNTAzZDA2ZmJmODY3NjU2ODdlN2RjMTQzYzI0Li5kYjVi
YTg5NjVhN2E1MDFiYTM1MjdhYTY1NDg4NWU2Y2YzZGQ5NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzc1LDYgKzM3NSw4IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29w
ZSosIEpTQ2VsbCopCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBK
U1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwg
SlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZShFeGVjU3Rh
dGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4
cChFeGVjU3RhdGUqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggODc1ODI1MWZhNGExZDQ5ZjkxMDBi
ZWJlYzA4ODY1YmQ0MTJkN2RmNS4uZjU4ZjRmOTY2ZWE3NzQzYmZjNGVjODA3YzExZWYzYWI0ZGQ0
MjliYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhj
ZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0xMTQ5LDYgKzExNTAsMTcg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKICAg
ICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2st
PmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpT
U2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVy
OjpzY29wZSgpOworI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCisgICAgZGF0YUxvZ0YoIkNy
ZWF0aW5nIGFzeW5jIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAgICBMTElOVF9SRVRVUk4oSlNB
c3luY0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUu
b3BlcmFuZCksIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9u
ZXdfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTExNzEsNiArMTE4MywxNyBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkK
ICAgICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRh
YmxlLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Fz
eW5jX2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgCisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4
ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihw
Y1szXS51Lm9wZXJhbmQpOworICAgIAorICAgIExMSU5UX1JFVFVSTihKU0FzeW5jRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDk4NGU5
Y2M0MDMwMzI3OWFhNzAyZGY4ZmViNzg4YzNiOGI5NjA1MGUuLmQ3NjEzOGMxMjQ0ZmY3YWFmNDgz
ZDA4MDNhZDViYjgxMTdlYTc5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCkBAIC0xMDMsNiArMTAzLDggQEAgTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX25ld19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX25ld19nZW5lcmF0b3JfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuYyk7CitMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25ld19hc3luY19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfY2FsbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2NvbnN0cnVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNTYwZGYzZWNhYjgyZGE4MmIyN2Y0NDM2
MjRkMGZkZThlNTAxY2U5ZS4uNjQ0NWE0N2NlZGE5YTVjZjc1OWExNmUxNzJjM2JkODQ2YWI5ZGI3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQpAQCAtMTMyMSw2ICsxMzIxLDEyIEBAIF9sbGludF9vcF9uZXdfZ2VuZXJhdG9y
X2Z1bmM6CiAgICAgZGlzcGF0Y2goNCkKIAogCitfbGxpbnRfb3BfbmV3X2FzeW5jX2Z1bmM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25l
d19hc3luY19mdW5jKQorICAgIGRpc3BhdGNoKDQpCisKKwogX2xsaW50X29wX25ld19hcnJheToK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfbmV3X2FycmF5KQpAQCAtMTU5OSw2ICsxNjA1LDEyIEBAIF9sbGludF9vcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X25ld19nZW5lcmF0b3JfZnVuY19leHApCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25l
d19hc3luY19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDQpCisK
KwogX2xsaW50X29wX3NldF9mdW5jdGlvbl9uYW1lOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9zZXRfZnVuY3Rpb25fbmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA0OTA4ODQxNTExZTJm
NDAxNzczYjIwZmNlNjhmNTgzOTc2ZjZkMGExLi4yYjUyZTMyZDgxMzNlNjcwZmVkMjU4NzE4NDQ1
NzdhMDFhZTRjODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0yNjEsNyArMjYxLDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNv
bnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUgJiYgIW1hdGNoKE9QRU5CUkFDRSk7CiAgICAgaWYg
KG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlv
bkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwotICAgICAgICBpZiAoU291cmNlUGFyc2VN
b2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpLmNvbnRhaW5zKHBhcnNl
TW9kZSkgfHwgaXNBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKQorICAgICAg
ICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkp
CiAgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNv
bnRleHQsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG1fcGFyYW1ldGVycyA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBh
cnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKQEAgLTU2OCwxMSArNTY4LDE4IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUFzeW5jRnVuCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgYXN5bmNGdW5jdGlv
bkJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CiAgICAgICAgIGFzeW5jRnVuY3Rpb25Cb2R5
U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShpbm5lclBhcnNlTW9kZSk7Ci0gICAgICAgIFN5bnRh
eENoZWNrZXIgYXN5bmNGdW5jdGlvbkNvbnRleHQoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xl
eGVyLmdldCgpKTsKLSAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQot
ICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lv
bkJvZHlTb3VyY2VFbGVtZW50cyhhc3luY0Z1bmN0aW9uQ29udGV4dCksICJDYW5ub3QgcGFyc2Ug
dGhlIGJvZHkgb2YgYXN5bmMgYXJyb3cgZnVuY3Rpb24iKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhhc3luY0Z1bmN0aW9uQ29udGV4
dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgZnVuY3Rpb24iKTsKKyAg
ICAgICAgU3ludGF4Q2hlY2tlciBzeW50YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwg
bV9sZXhlci5nZXQoKSk7CisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikgeworICAgICAgICAgICAgaWYgKG1fZGVidWdnZXJQYXJzZURhdGEpCisgICAgICAgICAgICAg
ICAgZmFpbElmRmFsc2UocGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3Vy
Y2VFbGVtZW50cyhjb250ZXh0KSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBhcnJv
dyBmdW5jdGlvbiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZhaWxJZkZh
bHNlKHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMo
c3ludGF4Q2hlY2tlciksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgYXJyb3cgZnVu
Y3Rpb24iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtX2RlYnVnZ2VyUGFy
c2VEYXRhKQorICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMo
Y29udGV4dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgZnVuY3Rpb24i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNv
dXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5
IG9mIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgICAgIH0KICAgICAgICAgcG9wU2NvcGUoYXN5bmNG
dW5jdGlvbkJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAg
ICAgfQogICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFy
dExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBm
dW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwg
c3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZv
LnBhcmFtZXRlckNvdW50LCBpbmZvLmZ1bmN0aW9uTGVuZ3RoLCBpbm5lclBhcnNlTW9kZSwgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwpAQCAtMjM0MSw3ICsyMzQ4LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRl
eHQsIHN5bnRheENoZWNrZXIsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0
b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25J
bmZvLnBhcmFtZXRlckNvdW50LCBmdW5jdGlvbkluZm8uZnVuY3Rpb25MZW5ndGgsIG1vZGUpOwog
ICAgIH07CiAKLSAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBw
ZXJGdW5jdGlvbk1vZGUgfHwgaXNBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShtb2RlKSkg
eworICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUobW9k
ZSkpIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBw
dXNoU2NvcGUoKSk7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBpbm5lclBhcnNlTW9kZSA9IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU7CiAgICAgICAgIGlmIChpc0FzeW5jRnVu
Y3Rpb25XcmFwcGVyUGFyc2VNb2RlKG1vZGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAppbmRleCA4YzQ0NzRiMDk5MzM3MmU3NDI0NjAxZGI5YWEwNjQ0NWRmOTM3ZWQ4Li4z
YTE2Zjc2YWFkMDUyNDdjZDYxNjFiYmRhOGFmMzFkZWY4NjQyNzRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTI0NSw3ICsyNDUsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlv
bkJvZHlNb2RlOgotICAgICAgICAgICAgc2V0SXNBc3luY0Fycm93RnVuY3Rpb25Cb2R5KCk7Cisg
ICAgICAgICAgICBzZXRJc0FzeW5jRnVuY3Rpb25Cb2R5KCk7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggYTBkNzQwNDk0MTVl
NGI4NDczNTYyZTM2ZTYyMjBkMzBjZTUxYmE2YS4uNmRhODgzN2EzNzk0MTcyYjRjNTU2YjM3ZDIz
Zjk5NzZlZTZmMGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9k
ZXMuaApAQCAtMTQ4LDYgKzE0OCwzMiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNZXRob2RQYXJz
ZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICAgICAgU291cmNlUGFyc2VNb2Rl
OjpBc3luY01ldGhvZE1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7CiB9CiAKK0FMV0FZU19JTkxJ
TkUgYm9vbCBpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUoU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSkKK3sKKyAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KAorICAg
ICAgICBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlLAorICAgICAgICBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKK30KKwor
QUxXQVlTX0lOTElORSBib29sIGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNl
TW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHJldHVybiBTb3VyY2VQYXJz
ZU1vZGVTZXQoCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0
aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSwKKyAg
ICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKK30K
KworQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCisgICAg
ICAgIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsCisgICAgICAgIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKK30KKwor
CiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNb2R1bGVQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSkgCiB7IAogICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBkMTUyZWMyN2Y4OWRhYzliNDUzZTg4MDliNjUyNDg1Y2E1
YzE1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fz
eW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3IuaCIKKworI2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJG
dW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBBc3luY0Z1bmN0aW9uQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKKwor
QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVj
dHVyZSkKK3sKK30KKwordm9pZCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiQXN5bmNGdW5jdGlvbiIpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlw
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAgLy8gTnVtYmVyIG9m
IGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBE
b250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5n
bG9iYWxPYmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYykpOwor
fQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFyZ0xpc3QgYXJncyhl
eGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMs
IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdz
LCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7Cit9CisKK0NhbGxUeXBlIEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxE
YXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxBc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworfQorCitDb25zdHJ1Y3RU
eXBlIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVy
biBDb25zdHJ1Y3RUeXBlOjpIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDM1YTJjMWU0ZjkxNWNhYzBiNGIxNzczZTZkMDU4OWUyNzQ3NDdk
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU7CisKK2NsYXNzIEFzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIERFQ0xBUkVfSU5GTzsKKwor
ICAgIHN0YXRpYyBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
cj4odm0uaGVhcCkpIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBhc3luY0Z1bmN0aW9uUHJvdG90
eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSopOworICAgIHN0YXRpYyBDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMWYwZTEwNmVlNjcx
MzZlOTI3MDFkNjhjMzlkOTViMmZjNDg2NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMCwwICsx
LDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBp
Z2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5o
IgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVk
ZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIu
aCIKKyNpbmNsdWRlICJMZXhlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUpIH07CisKK0FzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OkFzeW5jRnVuY3Rpb25Qcm90
b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTQzo6SlNOb25GaW5h
bE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEFzeW5jRnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygm
dm0sICJBc3luY0Z1bmN0aW9uIiksIERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHZtLnByb3Rv
dHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIyMDFlNmI4ZmQ1ODk4YTIyMWUwNjJhNzhmM2VhNjBkZWE3OWE4
MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBzdGF0aWMgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBBc3luY0Z1bmN0aW9u
UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0Z1
bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgQXN5bmNGdW5jdGlvblByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAg
IHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
KworcHJpdmF0ZToKKyAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZDJmMzM1MmQ2MDY4YjEx
OWZlMDQ5MzEwYzkzODg2N2YyNzk4YjUxMi4uMzI0YmRkYzNlNWIzYTYzNDE4Y2ZkMDI4MTNkMjQ0
YzhiNzYyZmNjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAg
LTkzLDE4ICs5NCwzMiBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxF
bmFibGVkQ2hlY2soCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKKyAgICBjb25zdCBjaGFyKiBwcmVmaXggPSBudWxs
cHRyOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKGZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkgeworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlOjpGdW5jdGlvbjoKKyAgICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blN0cnVjdHVyZSgpOworICAgICAgICBwcmVmaXggPSAie2Z1bmN0aW9uICI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3I6CisgICAg
ICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUo
KTsKKyAgICAgICAgcHJlZml4ID0gIntmdW5jdGlvbiAqIjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jOgorICAgICAgICBzdHJ1Y3R1cmUg
PSBnbG9iYWxPYmplY3QtPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgcHJlZml4
ID0gInthc3luYyBmdW5jdGlvbiAiOworICAgIH0KKwogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkg
ZnVuY3Rpb25zIGlzIHNvbWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5Lgog
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAu
CiAgICAgU3RyaW5nIHByb2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQotICAgICAgICBw
cm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBmdW5j
dGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG5cbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtl
U3RyaW5nKHByZWZpeCwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOwogICAg
IGVsc2UgaWYgKGFyZ3Muc2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5n
KCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZTo6R2VuZXJhdG9yID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwg
IigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIp
OworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZyhwcmVmaXgsIGZ1bmN0aW9uTmFtZS5zdHJp
bmcoKSwgIigpIHtcbiIsIGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAi
XG59fSIpOwogICAgIGVsc2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgie2Z1bmN0aW9uICIpOwotICAgICAgICBpZiAoZnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJh
dG9yKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyonKTsKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQocHJlZml4KTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lLnN0cmlu
ZygpKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJygnKTsKICAgICAgICAgYnVpbGRlci5hcHBl
bmQoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmlldyhleGVjKS5nZXQoKSk7CkBAIC0xMjYs
MTIgKzE0MSwxNyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFi
bGVkQ2hlY2soCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhj
ZXB0aW9uKTsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3RydWN0dXJlID0gSW50
ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbmV3VGFyZ2V0LCBm
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5l
cmF0b3IgPyBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgOiBnbG9i
YWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogc3ViY2xhc3NT
dHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVj
LCBuZXdUYXJnZXQsIHN0cnVjdHVyZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CiAKLSAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKQorICAgIHN3aXRjaCAoZnVuY3Rpb25Db25zdHJ1
Y3Rpb25Nb2RlKSB7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9u
OgorICAgICAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7CisgICAgY2FzZSBGdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcjoKICAgICAgICAgcmV0dXJuIEpTR2VuZXJh
dG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2Nv
cGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOwotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0
dXJlKTsKKyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmM6CisgICAgICAg
IHJldHVybiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVj
dC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOworICAgIH0KIH0KIAogLy8gRUNN
QSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXggMzFjMzNkNmFmNGZm
MTJiYzI0YzFlMmI1YmY0ZTU1NThkNzY1NjkwNi4uZGVlZTlhNTVkNmYyYzYxZTlmNzE0NDgzYjMx
YWJkNTdmYjFjYWU1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgogZW51bSBj
bGFzcyBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgewogICAgIEZ1bmN0aW9uLAogICAgIEdlbmVy
YXRvciwKKyAgICBBc3luYywKIH07CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVy
JiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQ
b3NpdGlvbiYsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZTo6RnVuY3Rpb24sIEpTVmFsdWUgbmV3VGFyZ2V0ID0gSlNWYWx1ZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFiYTc0MzcyM2JkYzdmYWVlZmY2MjUxZTJmZjJhMmRkYzY0MjhlNzkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3Bw
CkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0
ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXN5bmNGdW5jdGlvbjo6c19pbmZv
ID0geyAiQXN5bmNGdW5jdGlvbiIsICAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTQXN5bmNGdW5jdGlvbikgfTsKKworSlNBc3luY0Z1bmN0aW9uOjpKU0FzeW5j
RnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUq
IHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUs
IHNjb3BlLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0pTQXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0
aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBK
U1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNBc3luY0Z1bmN0
aW9uKiBhc3luY0Z1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBc3luY0Z1
bmN0aW9uPih2bS5oZWFwKSkgSlNBc3luY0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwg
c3RydWN0dXJlKTsKKyAgICBBU1NFUlQoYXN5bmNGdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2Jh
bE9iamVjdCgpKTsKKyAgICBhc3luY0Z1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cmV0dXJuIGFzeW5jRnVuY3Rpb247Cit9CisKK0pTQXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0
aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2Nv
cGUqIHNjb3BlKQoreworICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5bmNGdW5jdGlvbiA9IGNyZWF0
ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmFzeW5j
RnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24o
KS0+bm90aWZ5V3JpdGUodm0sIGFzeW5jRnVuY3Rpb24sICJBbGxvY2F0aW5nIGFuIGFzeW5jIGZ1
bmN0aW9uIik7CisgICAgcmV0dXJuIGFzeW5jRnVuY3Rpb247Cit9CisKK0pTQXN5bmNGdW5jdGlv
biogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBK
U0FzeW5jRnVuY3Rpb24qIGFzeW5jRnVuY3Rpb24gPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxl
LCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigp
LT5ub3RpZnlXcml0ZSh2bSwgYXN5bmNGdW5jdGlvbiwgIkFsbG9jYXRpbmcgYW4gYXN5bmMgZnVu
Y3Rpb24iKTsKKyAgICByZXR1cm4gYXN5bmNGdW5jdGlvbjsKK30KKworSlNBc3luY0Z1bmN0aW9u
KiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNj
b3BlKQoreworICAgIHJldHVybiBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2Nv
cGUtPmdsb2JhbE9iamVjdCgpLT5hc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmQ3ZGE4N2RiNmQzODVhNzlkNTU3NmMxYjcyYTEzNGNhM2UyMWJmMTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24u
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90
dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0FzeW5jRnVu
Y3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBm
cmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisK
KyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNBc3lu
Y0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7Cisg
ICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBKU0FzeW5jRnVuY3Rpb24qIGNy
ZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4
ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXpl
KHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5s
aW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIHJldHVybiBzaXplb2YoSlNB
c3luY0Z1bmN0aW9uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBKU0FzeW5jRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Nj
b3BlKiwgU3RydWN0dXJlKik7CisKKyAgICBzdGF0aWMgSlNBc3luY0Z1bmN0aW9uKiBjcmVhdGVJ
bXBsKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZjQ4Y2JjZjA5MTMyY2FhNjdlYzcxZjU3NTE0OTAw
YzhlY2UwMjgwYi4uYzRjM2NlMGM5OWQ3YTQxY2Y3MzdmZGU1ZDdmYWQ1YmRhYzZmNzExYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApA
QCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJBc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQm9vbGVhbkNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgpAQCAt
NjMsNiArNjUsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0Fy
cmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25z
dHJ1Y3Rvci5oIgpAQCAtNTg1LDYgKzU4OCw4IEBAIG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoCiAg
ICAgbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLnNldCh2bSwgdGhpcywgdGhyb3dUeXBlRXJyb3JG
dW5jdGlvbik7CiAKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNv
bnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5
cGUuZ2V0KCkpOworICAgIG1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIChGdW5j
dGlvbkNvbnN0cnVjdG9yKilmdW5jdGlvbkNvbnN0cnVjdG9yKTsKKwogICAgIEFycmF5Q29uc3Ry
dWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRo
aXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCksIG1fc3BlY2llc0dldHRl
clNldHRlci5nZXQoKSk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgYXJy
YXlDb25zdHJ1Y3Rvcik7CiAgICAgCkBAIC02MzAsNyArNjM1LDE3IEBAIG1fICMjIGxvd2VyTmFt
ZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jCiAKICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX2dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmdldCgpLCBEb250RW51bSB8IFJlYWRPbmx5KTsKICAgICBtX2dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKSwgRG9u
dEVudW0gfCBSZWFkT25seSk7Ci0gICAgCisKKyAgICBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUu
aW5pdExhdGVyKAorICAgICAgICBbXShMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBp
bml0KSB7CisgICAgICAgICAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9u
UHJvdG90eXBlID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIEFzeW5j
RnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwg
aW5pdC5nbG9iYWwtPm1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICAgICAgICAgIGlu
aXQuc2V0UHJvdG90eXBlKGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICAgICAgaW5p
dC5zZXRTdHJ1Y3R1cmUoSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
aW5pdC5nbG9iYWwsIGluaXQucHJvdG90eXBlKSk7CisgICAgICAgICAgICBpbml0LnNldENvbnN0
cnVjdG9yKFByb3BlcnR5TmFtZShudWxscHRyKSwgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGUoaW5pdC52bSwgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
aW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0aW9uQ29uc3RydWN0b3Iu
Z2V0KCkpLCBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKSk7CisKKyAgICAgICAgICAgIGluaXQuZ2xv
YmFsLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihpbml0LnZtLCBpbml0LnZtLnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFzeW5jRnVuY3Rpb25SZXN1bWVQcml2YXRlTmFtZSgpLCBK
U0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oaW5pdC52bSwgYXN5bmNGdW5jdGlvblBy
b3RvdHlwZUFzeW5jRnVuY3Rpb25SZXN1bWVDb2RlR2VuZXJhdG9yKGluaXQudm0pLCBpbml0Lmds
b2JhbCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICAgICAgfSk7CisK
ICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0p
OwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9u
dEVudW0pOwogICAgIG1fYXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgYXJyYXlDb25zdHJ1Y3RvciwgRG9u
dEVudW0pOwpAQCAtMTEwMiw2ICsxMTE3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmpl
Y3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIudmlzaXQodmlzaXRvcik7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVB
bmRDYWxsZXJHZXR0ZXJTZXR0ZXIpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X21vZHVsZUxvYWRlcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rp
b25Qcm90b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0
UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblBy
b3RvdHlwZSk7CkBAIC0xMTEwLDYgKzExMjYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JQcm90b3R5cGUpOworICAgIHRo
aXNPYmplY3QtPm1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXJQcm90b3R5cGUpOwogCiAg
ICAgdGhpc09iamVjdC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXgg
NDA4NDZjZTI5N2I0N2MyODVlYzQwOTFjZDczNDAyOTVjMDZkYTVmMC4uMmRkNDQxNjlkMWYxY2Mw
OGJhYzYxN2ViNzViMjQwZjAzNjU2MzJjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBBcnJheUNvbnN0cnVjdG9yOwogY2xhc3MgQXJyYXlQcm90b3R5cGU7CitjbGFz
cyBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgQm9vbGVhblByb3RvdHlwZTsKIGNsYXNz
IENvbnNvbGVDbGllbnQ7CiBjbGFzcyBEZWJ1Z2dlcjsKQEAgLTYzLDYgKzY0LDcgQEAgY2xhc3Mg
RXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNzIEVycm9yUHJvdG90eXBlOwogY2xhc3MgRXZhbENvZGVC
bG9jazsKIGNsYXNzIEV2YWxFeGVjdXRhYmxlOworY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3RvcjsK
IGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlOwogY2xh
c3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CkBAIC0yMzMsNiArMjM1LDcgQEAgcHVibGlj
OgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
cj4gbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yOwogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVj
dG9yOworICAgIFdyaXRlQmFycmllcjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0aW9uQ29u
c3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENv
bnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxBcnJheUNvbnN0cnVjdG9yPiBtX2FycmF5Q29u
c3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21p
c2VDb25zdHJ1Y3RvcjsKQEAgLTMwNiw2ICszMDksNyBAQCBwdWJsaWM6CiAgICAgUHJvcGVydHlP
ZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Jl
Z0V4cFN0cnVjdHVyZTsKKyAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9hc3luY0Z1bmN0aW9uU3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25T
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xsYXJWTVN0cnVjdHVy
ZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3Ry
dWN0dXJlOwpAQCAtNTI3LDYgKzUzMSwxOSBAQCBwdWJsaWM6CiAgICAgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQogICAgIEdlbmVyYXRvclByb3Rv
dHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQcm90
b3R5cGUuZ2V0KCk7IH0KIAorICAgIExhenlDbGFzc1N0cnVjdHVyZSYgbGF6eUFzeW5jRnVuY3Rp
b25TdHJ1Y3R1cmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXN5bmNGdW5jdGlvblN0cnVj
dHVyZTsKKyAgICB9CisgICAgY29uc3QgTGF6eUNsYXNzU3RydWN0dXJlJiBsYXp5QXN5bmNGdW5j
dGlvblN0cnVjdHVyZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hc3luY0Z1bmN0
aW9uU3RydWN0dXJlOworICAgIH0KKyAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1
bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBc3luY0Z1
bmN0aW9uUHJvdG90eXBlKj4obGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5wcm90b3R5cGUo
dGhpcykpOyB9CisgICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3Rv
dHlwZUNvbmN1cnJlbnRseSgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXN5bmNG
dW5jdGlvblByb3RvdHlwZSo+KGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkucHJvdG90eXBl
Q29uY3VycmVudGx5KCkpOyB9CisgICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5nZXQodGhpcyk7
IH0KKyAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25jdXJyZW50bHkoKSBj
b25zdCB7IHJldHVybiBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLmdldENvbmN1cnJlbnRs
eSgpOyB9CisKICAgICBTdHJ1Y3R1cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0
dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVj
dHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2YWxBY3RpdmF0aW9uU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCA4Nzg5NDQ1NzUzM2Q0YWVjMGMxOTFiN2ZkMTA3YWY1NWViNmNmMmQzLi4wZDE1MWUw
YTVkM2FjZWI4NDU0Mjg0M2Q4YTRjZmI0ZDlmNGJhNzJlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAxNi0x
MC0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0Nd
IGltcGxlbWVudCBydW50aW1lIGZvciBhc3luYyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mzc2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2lj
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMp
OgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYyk6Cisg
ICAgICAgIChzaG91bGRUaHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKGxldC5Bc3luY0Z1bmN0
aW9uLmFzeW5jKToKKyAgICAgICAgKGFzeW5jLmFzeW5jRnVuY3Rpb25Gb3JQcm90byk6CisgICAg
ICAgIChPYmplY3QuZ2V0UHJvdG90eXBlT2YuYXN5bmMpOgorICAgICAgICAoT2JqZWN0LmdldFBy
b3RvdHlwZU9mLmFzeW5jLm1ldGhvZCk6CisgICAgICAgIChhc3luYyk6CisgICAgICAgIChhc3lu
Yy5tZXRob2QpOgorICAgICAgICAoYXN5bmMuYXN5bmNOb25Db25zdHJ1Y3RvckRlY2wpOgorICAg
ICAgICAoc2hvdWxkVGhyb3cubmV3LmFzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93Lm5ldy5h
c3luYy5ub25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChhc3luYy5hc3luY0RlY2wpOgorICAgICAg
ICAoYXN5bmMuZik6CisgICAgICAgIChNeUVycm9yKToKKyAgICAgICAgKGFzeW5jLmFzeW5jRGVj
bFRocm93ZXIpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYy5hc3luYyk6CisgICAgICAgIChy
ZXNvbHZlTGF0ZXIpOgorICAgICAgICAocmVqZWN0TGF0ZXIpOgorICAgICAgICAoYXN5bmMucmVz
dW1lQWZ0ZXJOb3JtYWwpOgorICAgICAgICAoTy5hc3luYy5yZXN1bWVBZnRlck5vcm1hbCk6Cisg
ICAgICAgIChyZXN1bWVBZnRlck5vcm1hbEFycm93LmFzeW5jKToKKyAgICAgICAgKGFzeW5jLnJl
c3VtZUFmdGVyVGhyb3cpOgorICAgICAgICAoTy5hc3luYy5yZXN1bWVBZnRlclRocm93KToKKyAg
ICAgICAgKHJlc3VtZUFmdGVyVGhyb3dBcnJvdy5hc3luYyk6CisgICAgICAgIChjYXRjaCk6Cisg
ICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKFN5bnRheEVycm9yLkNhbnN0cmlu
Z19hcHBlYXJlZF9oZXJlYXdhaXQuY2hlY2tNb2R1bGVTeW50YXhFcnJvci5TdHJpbmcucmF3LmF3
YWl0KToKKyAgICAgICAgKGNoZWNrTW9kdWxlU3ludGF4RXJyb3IuU3RyaW5nLnJhdy5hd2FpdCk6
CisgICAgICAgIChjaGVja01vZHVsZVN5bnRheEVycm9yLlN0cmluZy5yYXcuYXN5bmMuYXdhaXQp
OgorICAgICAgICAoU3ludGF4RXJyb3IuQ2Fubm90LmRlY2xhcmUubmFtZWQpOgorICAgICAgICAq
IHN0cmVzcy9hc3luYy1hd2FpdC1tb3ppbGxhLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAg
ICAgICAoc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoc2hv
dWxkVGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZW1wdHkp
OgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZVJldHVybik6CisgICAgICAgICht
b3pTZW1hbnRpY3MuYXN5bmMuc2ltcGxlQXdhaXQpOgorICAgICAgICAobW96U2VtYW50aWNzLmFz
eW5jLnNpbXBsZUF3YWl0QXN5bmMpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnJldHVy
bk90aGVyQXN5bmMpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZVRocm93ZXIp
OgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmRlbGVnYXRlZFRocm93ZXIpOgorICAgICAg
ICAobW96U2VtYW50aWNzLmFzeW5jLnRyeUNhdGNoKToKKyAgICAgICAgKG1velNlbWFudGljcy5h
c3luYy50cnlDYXRjaFRocm93KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy53ZWxsRmlu
YWxseSk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZmluYWxseU1heUZhaWwpOgorICAg
ICAgICAobW96U2VtYW50aWNzLmFzeW5jLmVtYmVkZGVkLmFzeW5jLmlubmVyKToKKyAgICAgICAg
KG1velNlbWFudGljcy5hc3luYy5lbWJlZGRlZCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5
bmMuZmliKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5pc09kZC5hc3luYy5pc0V2ZW4p
OgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmlzT2RkKToKKyAgICAgICAgKG1velNlbWFu
dGljcy5oYXJkY29yZUZpYi5hc3luYy5maWIyKToKKyAgICAgICAgKG1velNlbWFudGljcy5uYW1l
ZEFzeW5jRXhwci5hc3luYy5zaW1wbGUpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4
ZWN1dGlvbk9yZGVyLmFzeW5jLmZpcnN0KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5l
eGVjdXRpb25PcmRlci5hc3luYy5zZWNvbmQpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5j
LmV4ZWN1dGlvbk9yZGVyLmFzeW5jLnRoaXJkKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3lu
Yy5leGVjdXRpb25PcmRlcik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMubWlzY2VsbGFu
ZW91cyk6CisgICAgICAgIChtb3pTZW1hbnRpY3MudGhyb3dlcik6CisgICAgICAgIChtb3pTZW1h
bnRpY3MuYXN5bmMuZGVmYXVsdEFyZ3MpOgorICAgICAgICAobW96U2VtYW50aWNzLnNob3VsZFRo
cm93KToKKyAgICAgICAgKG1velNlbWFudGljcyk6CisgICAgICAgIChtb3pNZXRob2RzLlgpOgor
ICAgICAgICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5hc3luYy5nZXRWYWx1ZSk6CisgICAgICAg
IChtb3pNZXRob2RzLlgucHJvdG90eXBlLnNldFZhbHVlKToKKyAgICAgICAgKG1vek1ldGhvZHMu
WC5wcm90b3R5cGUuYXN5bmMuaW5jcmVtZW50KToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5wcm90
b3R5cGUuYXN5bmMuZ2V0QmFzZUNsYXNzTmFtZSk6CisgICAgICAgIChtb3pNZXRob2RzLlguYXN5
bmMuZ2V0U3RhdGljVmFsdWUpOgorICAgICAgICAobW96TWV0aG9kcy5ZLnByb3RvdHlwZS5hc3lu
Yy5nZXRCYXNlQ2xhc3NOYW1lKToKKyAgICAgICAgKG1vek1ldGhvZHMuWSk6CisgICAgICAgICht
b3pGdW5jdGlvbk5hbWVJbmZlcnJlbmNlLmFzeW5jLnRlc3QpOgorICAgICAgICAobW96U3ludGF4
RXJyb3JzKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2ZWQtd29yZC5qczog
QWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoc2hvdWxkVGhyb3dTeW50YXhFcnJv
cik6CisgICAgICAgIChBc3luY0Z1bmN0aW9uLmFzeW5jKToKKyAgICAgICAgKiBzdHJlc3MvYXN5
bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfYXJndW1lbnRzX2JpbmRpbmcuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChz
aG91bGRUaHJvd0FzeW5jKToKKyAgICAgICAgKG5vQXJndW1lbnRzQXJyb3cyLmFzeW5jKToKKyAg
ICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfbmV3LnRhcmdldF9i
aW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJl
QXN5bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChDMSk6CisgICAg
ICAgIChDMik6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jLmFzeW5jKToKKyAgICAgICAgKiBz
dHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfc3VwZXJfYmluZGluZy5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAg
ICAgKEJhc2VDbGFzcy5wcm90b3R5cGUuYmFzZUNsYXNzVmFsdWUpOgorICAgICAgICAoQmFzZUNs
YXNzLnByb3RvdHlwZS5nZXQgcHJvcGVydHkpOgorICAgICAgICAoQmFzZUNsYXNzKToKKyAgICAg
ICAgKENoaWxkQ2xhc3MucHJvdG90eXBlLmFzeW5jU3VwZXJQcm9wKToKKyAgICAgICAgKENoaWxk
Q2xhc3MucHJvdG90eXBlLmFzeW5jU3VwZXJQcm9wMik6CisgICAgICAgIChDaGlsZENsYXNzKToK
KyAgICAgICAgKENoaWxkQ2xhc3MyKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVu
Y3Rpb25zX2xleGljYWxfdGhpc19iaW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoZC55KToKKwogMjAxNi0xMC0y
MSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIGRv
bid0IGNyYXNoIHdoZW4gYXJndW1lbnRzIHRvIGBuZXcgRnVuY3Rpb24oKWAgcHJvZHVjZSB1bmV4
cGVjdGVkIEFTVApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rp
b25zLWxleGljYWwtYXJndW1lbnRzLWJpbmRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1h
cnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1hcmd1bWVudHMtYmluZGluZy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NTFhZmRjOTMxZjE2MDFhZjQ3OWY5MDZlYjhmYTM2YWRlZmFhYjQ3Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtYXJndW1lbnRz
LWJpbmRpbmcuanMKQEAgLTAsMCArMSw1MCBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJM
RV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1l
LgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7
CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQorICAgICAgICBtc2cgPSAiIjsKKyAgICBlbHNlCisg
ICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1
YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFz
eW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVy
cm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2
YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1
ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYg
KGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3Rl
ZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0FzeW5jKHJ1biwgZXJy
b3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBm
YWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9
LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1
YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoIWhhZEVy
cm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8g
dGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7CisgICAg
aWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSAr
ICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09IHZv
aWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICInLCBi
dXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK3ZhciBub0FyZ3VtZW50
c0Fycm93ID0gYXN5bmMgKCkgPT4gYXdhaXQgWy4uLmFyZ3VtZW50c107CitzaG91bGRUaHJvd0Fz
eW5jKCgpID0+IG5vQXJndW1lbnRzQXJyb3coMSwgMiwgMyksIFJlZmVyZW5jZUVycm9yKTsKK3Zh
ciBub0FyZ3VtZW50c0Fycm93MiA9IGFzeW5jICgpID0+IHsgcmV0dXJuIGF3YWl0IFsuLi5hcmd1
bWVudHNdOyB9CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IG5vQXJndW1lbnRzQXJyb3cyKDEsIDIs
IDMpLCBSZWZlcmVuY2VFcnJvcik7CisKK3Nob3VsZEJlQXN5bmMoIlsxLDIsM10iLCAoKSA9PiAo
ZnVuY3Rpb24oKSB7IHJldHVybiAoYXN5bmMgKCkgPT4gSlNPTi5zdHJpbmdpZnkoWy4uLmFyZ3Vt
ZW50c10pKSgpOyB9KSgxLCAyLCAzKSk7CitzaG91bGRCZUFzeW5jKCJbNCw1LDZdIiwgKCkgPT4g
KGZ1bmN0aW9uKCkgeyByZXR1cm4gKGFzeW5jICgpID0+IHsgcmV0dXJuIEpTT04uc3RyaW5naWZ5
KFsuLi5hd2FpdCBhcmd1bWVudHNdKSB9KSgpOyB9KSg0LCA1LCA2KSk7CisKK3ZhciBhcmdzQmlu
ZGluZzsKK3Nob3VsZEJlQXN5bmMoYXJnc0JpbmRpbmcsICgpID0+IChmdW5jdGlvbigpIHsgYXJn
c0JpbmRpbmcgPSBhcmd1bWVudHM7IHJldHVybiAoYXN5bmMgKCkgPT4gYXJndW1lbnRzKSgpIH0p
KDEsIDIsIDMpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0
aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQtYmluZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5j
LWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQtYmluZGluZy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MjZhMzk4M2Y3YTkyNzQwZWU0NzhjM2ZmN2JiODMwYzc4NWFlNDA5Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtbmV3LnRh
cmdldC1iaW5kaW5nLmpzCkBAIC0wLDAgKzEsNTUgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBF
TkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQg
dGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1z
ZykgeworICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNnID0gIiI7CisgICAgZWxz
ZQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsg
YWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
QmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBo
YWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFs
ID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9
IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAg
IGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhw
ZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3luYyhydW4s
IGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9y
ID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1
ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsg
YWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKCFo
YWRFcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigp
IHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOwor
ICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5h
bWUgKyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdlICE9
PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAi
JywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5jdGlvbiBD
MSgpIHsKKyAgICByZXR1cm4gYXN5bmMgKCkgPT4gYXdhaXQgbmV3LnRhcmdldDsKK30KKworZnVu
Y3Rpb24gQzIoKSB7CisgICAgcmV0dXJuIGFzeW5jICgpID0+IHsgcmV0dXJuIGF3YWl0IG5ldy50
YXJnZXQgfTsKK30KKworc2hvdWxkQmVBc3luYyhDMSwgbmV3IEMxKCkpOworc2hvdWxkQmVBc3lu
Yyh1bmRlZmluZWQsIEMxKCkpOworc2hvdWxkQmVBc3luYyhDMiwgbmV3IEMyKCkpOworc2hvdWxk
QmVBc3luYyh1bmRlZmluZWQsIEMyKCkpOworCitzaG91bGRUaHJvd0FzeW5jKGFzeW5jICgpID0+
IGF3YWl0IG5ldy50YXJnZXQsIFJlZmVyZW5jZUVycm9yKTsKK3Nob3VsZFRocm93QXN5bmMoYXN5
bmMgKCkgPT4geyByZXR1cm4gYXdhaXQgbmV3LnRhcmdldDsgfSwgUmVmZXJlbmNlRXJyb3IpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwt
c3VwZXItYmluZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1s
ZXhpY2FsLXN1cGVyLWJpbmRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhiZjBmOWFjZTNjNzVmN2Q4Zjdl
YmNiMjAzZjczOGRiMzljOWZkYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Fz
eW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcuanMKQEAgLTAsMCArMSw1
NSBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9T
WU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworCitmdW5jdGlv
biBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAobXNnID09PSB2b2lk
IDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAgbXNnID0gIiBmb3IgIiAr
IG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNn
KSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4o
KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAg
ICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7
CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRo
cm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisK
K2NsYXNzIEJhc2VDbGFzcyB7CisgICAgYmFzZUNsYXNzVmFsdWUoKSB7CisgICAgICAgIHJldHVy
biAiQmFzZUNsYXNzVmFsdWUiOworICAgIH0KKyAgICBnZXQgcHJvcGVydHkoKSB7CisgICAgICAg
IHJldHVybiAidGVzdCEiOworICAgIH0KK30KKworY2xhc3MgQ2hpbGRDbGFzcyBleHRlbmRzIEJh
c2VDbGFzcyB7CisgICAgYXN5bmNTdXBlclByb3AoKSB7CisgICAgICAgIHJldHVybiBhc3luYyB4
ID0+IHN1cGVyLmJhc2VDbGFzc1ZhbHVlKCk7CisgICAgfQorICAgIGFzeW5jU3VwZXJQcm9wMigp
IHsKKyAgICAgICAgcmV0dXJuIGFzeW5jIHggPT4geyByZXR1cm4gc3VwZXIuYmFzZUNsYXNzVmFs
dWUoKTsgfQorICAgIH0KK30KKworLy8gRklYTUU6IHN1cGVyIGJpbmRpbmdzIGluIGFzeW5jIGFy
cm93IGZ1bmN0aW9ucyBhcmUgYnJva2VuCitzaG91bGRCZUFzeW5jKCJCYXNlQ2xhc3NWYWx1ZSIs
IG5ldyBDaGlsZENsYXNzKCkuYXN5bmNTdXBlclByb3AoKSk7CitzaG91bGRCZUFzeW5jKCJCYXNl
Q2xhc3NWYWx1ZSIsIG5ldyBDaGlsZENsYXNzKCkuYXN5bmNTdXBlclByb3AyKCkpOworCitjbGFz
cyBDaGlsZENsYXNzMiBleHRlbmRzIEJhc2VDbGFzcyB7CisgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICAgIHJldHVybiBhc3luYyAoc2VsZiA9IHN1cGVyKCkpID0+IHNlbGYuYmFzZUNsYXNzVmFs
dWUoKSArICcgJyArIHN1cGVyLnByb3BlcnR5OworICAgIH0KK30KKworc2hvdWxkQmVBc3luYygi
QmFzZUNsYXNzVmFsdWUgdGVzdCEiLCBuZXcgQ2hpbGRDbGFzczIoKSk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC10aGlzLWJpbmRpbmcu
anMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC10aGlzLWJp
bmRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJhZmExMTNmYTkxMjZjM2UxNjdmYWU0MTFjM2EwNGU4N2Ex
MWI1YQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0
aW9ucy1sZXhpY2FsLXRoaXMtYmluZGluZy5qcwpAQCAtMCwwICsxLDMwIEBACisvLyBUaGlzIHRl
c3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFi
bGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3Rl
ZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAobXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9
ICIiOworICAgIGVsc2UKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsg
bXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1
bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVh
bDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZh
bHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3Ip
IHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rh
c2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAg
IHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK3ZhciBkID0gKHsgeCA6ICJi
YXIiLCB5IDogZnVuY3Rpb24oKSB7IHJldHVybiBhc3luYyB6ID0+IHRoaXMueCArIHo7IH19KS55
KCk7Cit2YXIgZSA9IHsgeCA6ICJiYXoiLCB5IDogZCB9OworCitzaG91bGRCZUFzeW5jKCJiYXJs
ZXkiLCAoKSA9PiBkKCJsZXkiKSk7CitzaG91bGRCZUFzeW5jKCJiYXJsZXkiLCAoKSA9PiBlLnko
ImxleSIpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpz
IGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThmMjA2
NTM2NTNlY2FjZDdmM2VkYjYzYmIzMmQxMWI3NGE5MmQzZgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzCkBAIC0wLDAgKzEsMjk5IEBACisvLyBU
aGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBi
ZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShl
eHBlY3RlZCwgYWN0dWFsLCBtc2cgPSAiIikgeworICAgIGlmIChtc2cpCisgICAgICAgIG1zZyA9
ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBl
Y3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVk
LCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7
CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0g
ZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQor
ICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBt
c2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkg
eworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisKKyAgICB0cnkg
eworICAgICAgICBhY3R1YWwgPSBydW4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGhh
ZEVycm9yID0gdHJ1ZTsKKyAgICAgICAgYWN0dWFsID0gZTsKKyAgICB9CisKKyAgICBpZiAoIWhh
ZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkg
dG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7Cisg
ICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY2VkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1l
ICsgIiAsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09
IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICIn
LCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFs
OworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFs
dWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikg
eyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFz
a3MoKTsKKworICAgIGlmICghaGFkRXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQg
ZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUp
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhy
b3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsK
KyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhy
b3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIici
KTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dTeW50YXhFcnJvcihzdHIsIG1lc3NhZ2UpIHsK
KyAgICB0cnkgeworICAgICAgICBldmFsKHN0cik7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgYCIgKyBzdHIgKyAiYCB0byB0aHJvdyBhIFN5bnRheEVycm9yLCBidXQgZGlkIG5v
dCB0aHJvdy4iKQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUuY29uc3RydWN0b3Ig
IT09IFN5bnRheEVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBg
IiArIHN0ciArICJgIHRvIHRocm93IGEgU3ludGF4RXJyb3IsIGJ1dCB0aHJldyAnIiArIGUgKyAi
JyIpOworICAgICAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGUubWVzc2FnZSAhPT0gbWVz
c2FnZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgYCIgKyBzdHIgKyAi
YCB0byB0aHJvdyBTeW50YXhFcnJvcjogJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiAr
IGUgKyAiJyIpOworICAgIH0KK30KKworLy8gRG8gbm90IGluc3RhbGwgYEFzeW5jRnVuY3Rpb25g
IGNvbnN0cnVjdG9yIG9uIGdsb2JhbCBvYmplY3QKK3Nob3VsZEJlKHVuZGVmaW5lZCwgdGhpcy5B
c3luY0Z1bmN0aW9uKTsKK2xldCBBc3luY0Z1bmN0aW9uID0gKGFzeW5jIGZ1bmN0aW9uKCkge30p
LmNvbnN0cnVjdG9yOworCisvLyBMZXQgZnVuY3Rpb25Qcm90b3R5cGUgYmUgdGhlIGludHJpbnNp
YyBvYmplY3QgJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlLgorYXN5bmMgZnVuY3Rpb24gYXN5bmNG
dW5jdGlvbkZvclByb3RvKCkge30KK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBP
YmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmNGdW5jdGlvbkZvclByb3RvKSk7CitzaG91bGRCZShB
c3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKGFzeW5jIGZ1bmN0
aW9uKCkge30pKTsKK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3QuZ2V0
UHJvdG90eXBlT2YoYXN5bmMgKCkgPT4ge30pKTsKK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJv
dG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoeyBhc3luYyBtZXRob2QoKSB7fSB9Lm1ldGhv
ZCkpOworCisvLyBGSVhNRTogQXN5bmNGdW5jdGlvbiBjb25zdHJ1Y3RvciBzaG91bGQgYnVpbGQg
ZnVuY3Rpb25zIHdpdGggY29ycmVjdCBwcm90b3R5cGUuCisvLyBzaG91bGRCZShBc3luY0Z1bmN0
aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKEFzeW5jRnVuY3Rpb24oKSkpOwor
CisvLyBBc3luY0Z1bmN0aW9uQ3JlYXRlIGRvZXMgbm90IHByb2R1Y2UgYW4gb2JqZWN0IHdpdGgg
YSBQcm90b3R5cGUKK3Nob3VsZEJlKHVuZGVmaW5lZCwgYXN5bmNGdW5jdGlvbkZvclByb3RvLnBy
b3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgYXN5bmNGdW5jdGlvbkZvclByb3RvLmhhc093blBy
b3BlcnR5KCJwcm90b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQsIChhc3luYyBmdW5jdGlv
bigpIHt9KS5wcm90b3R5cGUpOworc2hvdWxkQmUoZmFsc2UsIChhc3luYyBmdW5jdGlvbigpIHt9
KS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOworc2hvdWxkQmUodW5kZWZpbmVkLCAoYXN5
bmMoKSA9PiB7fSkucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCAoYXN5bmMoKSA9PiB7fSku
aGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKK3Nob3VsZEJlKHVuZGVmaW5lZCwgKHsgYXN5
bmMgbWV0aG9kKCkge30gfSkubWV0aG9kLnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgKHsg
YXN5bmMgbWV0aG9kKCkge30gfSkubWV0aG9kLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKSk7
CitzaG91bGRCZSh1bmRlZmluZWQsIEFzeW5jRnVuY3Rpb24oKS5wcm90b3R5cGUpOworc2hvdWxk
QmUoZmFsc2UsIEFzeW5jRnVuY3Rpb24oKS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOwor
CisvLyBBc3luY0Z1bmN0aW9uLnByb3RvdHlwZVsgQEB0b1N0cmluZ1RhZyBdCit2YXIgZGVzY3Jp
cHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQXN5bmNGdW5jdGlvbi5wcm90
b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZyk7CitzaG91bGRCZSgiQXN5bmNGdW5jdGlvbiIsIGRl
c2NyaXB0b3IudmFsdWUpOworc2hvdWxkQmUoZmFsc2UsIGRlc2NyaXB0b3IuZW51bWVyYWJsZSk7
CitzaG91bGRCZShmYWxzZSwgZGVzY3JpcHRvci53cml0YWJsZSk7CitzaG91bGRCZSh0cnVlLCBk
ZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSk7CisKK3Nob3VsZEJlKDEsIEFzeW5jRnVuY3Rpb24ubGVu
Z3RoKTsKKworLy8gTGV0IEYgYmUgISBGdW5jdGlvbkFsbG9jYXRlKGZ1bmN0aW9uUHJvdG90eXBl
LCBTdHJpY3QsICJub24tY29uc3RydWN0b3IiKQorYXN5bmMgZnVuY3Rpb24gYXN5bmNOb25Db25z
dHJ1Y3RvckRlY2woKSB7fQorc2hvdWxkVGhyb3coKCkgPT4gbmV3IGFzeW5jTm9uQ29uc3RydWN0
b3JEZWNsKCksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgKGFzeW5jIGZ1bmN0
aW9uKCkge30pLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3ICh7IGFzeW5jIG5v
bkNvbnN0cnVjdG9yKCkge30gfSkubm9uQ29uc3RydWN0b3IoKSwgVHlwZUVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IG5ldyAoKCkgPT4gIm5vdCBhIGNvbnN0cnVjdG9yISIpLCBUeXBlRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4gbmV3IChBc3luY0Z1bmN0aW9uKCkpLCBUeXBlRXJyb3IpOwor
CisvLyBOb3JtYWwgY29tcGxldGlvbgorYXN5bmMgZnVuY3Rpb24gYXN5bmNEZWNsKCkgeyByZXR1
cm4gInRlc3QiOyB9CitzaG91bGRCZUFzeW5jKCJ0ZXN0IiwgYXN5bmNEZWNsKTsKK3Nob3VsZEJl
QXN5bmMoInRlc3QyIiwgYXN5bmMgZnVuY3Rpb24oKSB7IHJldHVybiAidGVzdDIiOyB9KTsKK3No
b3VsZEJlQXN5bmMoInRlc3QzIiwgYXN5bmMgKCkgPT4gInRlc3QzIik7CitzaG91bGRCZUFzeW5j
KCJ0ZXN0NCIsICgpID0+ICh7IGFzeW5jIGYoKSB7IHJldHVybiAidGVzdDQiOyB9IH0pLmYoKSk7
CisKK2NsYXNzIE15RXJyb3IgZXh0ZW5kcyBFcnJvciB7fTsKKworLy8gVGhyb3cgY29tcGxldGlv
bgorYXN5bmMgZnVuY3Rpb24gYXN5bmNEZWNsVGhyb3dlcihlKSB7IHRocm93IG5ldyBNeUVycm9y
KGUpOyB9CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IGFzeW5jRGVjbFRocm93ZXIoImJvb20hIiks
IE15RXJyb3IsICJib29tISIpOworc2hvdWxkVGhyb3dBc3luYygoKSA9PiAoYXN5bmMgZnVuY3Rp
b24oZSkgeyB0aHJvdyBuZXcgTXlFcnJvcihlKTsgfSkoImJvb20hISEiKSwgTXlFcnJvciwgImJv
b20hISEiKTsKK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gKGFzeW5jIGUgPT4geyB0aHJvdyBuZXcg
TXlFcnJvcihlKSB9KSgiYm9vbSEhIiksIE15RXJyb3IsICJib29tISEiKTsKK3Nob3VsZFRocm93
QXN5bmMoKCkgPT4gKHsgYXN5bmMgdGhyb3dlcihlKSB7IHRocm93IG5ldyBNeUVycm9yKGUpOyB9
IH0pLnRocm93ZXIoImJvb20hISEhIiksIE15RXJyb3IsICJib29tISEhISIpOworCitmdW5jdGlv
biByZXNvbHZlTGF0ZXIodmFsdWUpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSk7IH0K
K2Z1bmN0aW9uIHJlamVjdExhdGVyKGVycm9yKSB7IHJldHVybiBQcm9taXNlLnJlamVjdChlcnJv
cik7IH0KKworLy8gUmVzdW1lIGFmdGVyIE5vcm1hbCBjb21wbGV0aW9uCit2YXIgbG9nID0gW107
Cithc3luYyBmdW5jdGlvbiByZXN1bWVBZnRlck5vcm1hbCh2YWx1ZSkgeworICAgIGxvZy5wdXNo
KCJzdGFydDoiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVl
ICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdh
aXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZSArIDE7Cit9CisKK3Nob3VsZEJlQXN5bmMoNCwgKCkgPT4g
cmVzdW1lQWZ0ZXJOb3JtYWwoMSkpOworc2hvdWxkQmUoInN0YXJ0OjEgcmVzdW1lOjIgcmVzdW1l
OjMiLCBsb2cuam9pbigiICIpKTsKKwordmFyIE8gPSB7CisgICAgYXN5bmMgcmVzdW1lQWZ0ZXJO
b3JtYWwodmFsdWUpIHsKKyAgICAgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAg
ICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgICAgIGxvZy5w
dXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0
ZXIodmFsdWUgKyAxKTsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAg
ICAgICByZXR1cm4gdmFsdWUgKyAxOworICAgIH0KK307Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5
bmMoNSwgKCkgPT4gTy5yZXN1bWVBZnRlck5vcm1hbCgyKSk7CitzaG91bGRCZSgic3RhcnQ6MiBy
ZXN1bWU6MyByZXN1bWU6NCIsIGxvZy5qb2luKCIgIikpOworCit2YXIgcmVzdW1lQWZ0ZXJOb3Jt
YWxBcnJvdyA9IGFzeW5jICh2YWx1ZSkgPT4geworICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFs
dWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9n
LnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVy
KHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHJldHVy
biB2YWx1ZSArIDE7Cit9OworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDYsICgpID0+IHJlc3Vt
ZUFmdGVyTm9ybWFsQXJyb3coMykpOworc2hvdWxkQmUoInN0YXJ0OjMgcmVzdW1lOjQgcmVzdW1l
OjUiLCBsb2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyTm9ybWFsRXZhbCA9IEFzeW5j
RnVuY3Rpb24oInZhbHVlIiwgYAorICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAg
IHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJl
c3VtZToiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsg
MSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZSAr
IDE7CitgKTsKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg3LCAoKSA9PiByZXN1bWVBZnRlck5v
cm1hbEV2YWwoNCkpOworc2hvdWxkQmUoInN0YXJ0OjQgcmVzdW1lOjUgcmVzdW1lOjYiLCBsb2cu
am9pbigiICIpKTsKKworLy8gUmVzdW1lIGFmdGVyIFRocm93IGNvbXBsZXRpb24KK2FzeW5jIGZ1
bmN0aW9uIHJlc3VtZUFmdGVyVGhyb3codmFsdWUpIHsKKyAgICBsb2cucHVzaCgic3RhcnQ6IiAr
IHZhbHVlKTsKKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0
aHJvdzEiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiAr
IGUpOworICAgIH0KKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVy
KCJ0aHJvdzIiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6
IiArIGUpOworICAgIH0KKyAgICByZXR1cm4gdmFsdWUgKyAxOworfQorCitsb2cgPSBbXTsKK3No
b3VsZEJlQXN5bmMoMiwgKCkgPT4gcmVzdW1lQWZ0ZXJUaHJvdygxKSk7CitzaG91bGRCZSgic3Rh
cnQ6MSByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJvdzIiLCBsb2cuam9pbigiICIpKTsKKwordmFy
IE8gPSB7CisgICAgYXN5bmMgcmVzdW1lQWZ0ZXJUaHJvdyh2YWx1ZSkgeworICAgICAgICBsb2cu
cHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZhbHVl
ID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgICAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICAgICAgfQorICAgICAgICB0
cnkgeworICAgICAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cyIik7Cisg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZSArIDE7CisgICAgfQorfQorbG9nID0g
W107CitzaG91bGRCZUFzeW5jKDMsICgpID0+IE8ucmVzdW1lQWZ0ZXJUaHJvdygyKSk7CitzaG91
bGRCZSgic3RhcnQ6MiByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJvdzIiLCBsb2cuam9pbigiICIp
KTsKKwordmFyIHJlc3VtZUFmdGVyVGhyb3dBcnJvdyA9IGFzeW5jICh2YWx1ZSkgPT4geworICAg
IGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHRyeSB7CisgICAgICAgIHZhbHVlID0g
YXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
bG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIHZhbHVl
ID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHJldHVybiB2YWx1ZSArIDE7
Cit9OworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDQsICgpID0+IHJlc3VtZUFmdGVyVGhyb3dB
cnJvdygzKSk7CitzaG91bGRCZSgic3RhcnQ6MyByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJvdzIi
LCBsb2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyVGhyb3dFdmFsID0gQXN5bmNGdW5j
dGlvbigidmFsdWUiLCBgCisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdHJ5
IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cxIik7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9CisgICAg
dHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cyIik7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHZhbHVlICsgMTsKK2ApOworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDUsICgp
ID0+IHJlc3VtZUFmdGVyVGhyb3dFdmFsKDQpKTsKK3Nob3VsZEJlKCJzdGFydDo0IHJlc3VtZTp0
aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOworCisvLyBNZXRob29kRGVmaW5p
dGlvbiBTeW50YXhFcnJvcnMKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFz
eW5jIGZvbyA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEgcGFy
ZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgb2JqID0geyBhc3luYyBmb28gPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBF
eHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgZm9vICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQg
dG9rZW4gJywnLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgZm9vIH0iLCAiVW5leHBl
Y3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3Qu
Iik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIDAgOiB0cnVl
IH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBh
cmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5
bmMgMCA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFyZW50
aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
b2JqID0geyBhc3luYyAwICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3Rl
ZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIG9iaiA9IHsgYXN5bmMgMCB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBl
Y3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAnZm9vJyA6IHRydWUgfTsiLCAiVW5leHBlY3Rl
ZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAnZm9vJyA9IHRydWUg
fTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFy
Z3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3lu
YyAnZm9vJyAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBwYXJl
bnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBvYmogPSB7IGFzeW5jICdmb28nIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVk
IGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIFsnZm9vJ10gOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQg
dG9rZW4gJzonLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSA9IHRydWUg
fTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFy
Z3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3lu
YyBbJ2ZvbyddICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHBh
cmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBl
Y3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgZm9vIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRv
a2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3Mg
cGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5
bmMgZm9vID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4gb3Bl
bmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgZm9vICwgYmFyIH07IiwgIlVuZXhw
ZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBt
ZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNz
IEMgeyBhc3luYyBmb28gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYW4gb3Bl
bmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CisKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAwIDogdHJ1ZSB9OyIsICJVbmV4
cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMg
bWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFz
cyBDIHsgYXN5bmMgMCA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVk
IGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIDAgLCBiYXIgfTsiLCAi
VW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFz
eW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
Y2xhc3MgQyB7IGFzeW5jIDAgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYW4g
b3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CisK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAnZm9vJyA6IHRydWUgfTsi
LCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBh
IGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiY2xhc3MgQyB7IGFzeW5jICdmb28nID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9
Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1l
dGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgJ2Zv
bycgLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5pbmcg
JygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nIH0iLCAiVW5leHBlY3RlZCB0b2tl
biAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBh
cmFtZXRlciBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5
bmMgWydmb28nXSA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGFu
IG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsnZm9vJ10gPSB0cnVlIH07
IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUg
YSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoImNsYXNzIEMgeyBhc3luYyBbJ2ZvbyddICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4g
JywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJh
bWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBb
J2ZvbyddIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygn
IGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVkLXdvcmQuanMgYi9KU1Rl
c3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wOGIyNGZlNzYwYjBhM2FiMmQ5ZmY1YjE1YzM0N2ZjZjcxYzJmODE5Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVkLXdvcmQuanMK
QEAgLTAsMCArMSw3MiBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZ
TkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAK
KworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVy
cm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAg
ICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRy
dWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJv
cikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6
ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gY2hlY2tNb2R1bGVTeW50YXhFcnJv
cihzb3VyY2UsIGVycm9yTWVzc2FnZSkgeworICAgIHNob3VsZFRocm93KCgpID0+IGNoZWNrTW9k
dWxlU3ludGF4KHNvdXJjZSksIGVycm9yTWVzc2FnZSk7Cit9CisKK2NoZWNrTW9kdWxlU3ludGF4
RXJyb3IoU3RyaW5nLnJhd2AKK3ZhciBhd2FpdDsKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVs
ZVN5bnRheEVycm9yKGAKK2V4cG9ydCB2YXIgYXdhaXQ7CitgLCBgU3ludGF4RXJyb3I6IENhbid0
IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hlY2tN
b2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorbGV0IGF3YWl0OworYCwgYFN5bnRheEVycm9y
OiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVs
ZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZXhwb3J0IGxldCBh
d2FpdDsKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3Ry
aW5nLnJhd2AKK2NvbnN0IGF3YWl0ID0gMQorYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hlY2tN
b2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZXhwb3J0IGNvbnN0IGF3YWl0ID0gMQorYCwg
YFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhIG1vZHVsZS46MmApOworCitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdg
CitmdW5jdGlvbiBhd2FpdCgpIHt9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGZ1
bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4
RXJyb3IoU3RyaW5nLnJhd2AKK2Z1bmN0aW9uKiBhd2FpdCgpIHt9CitgLCBgU3ludGF4RXJyb3I6
IENhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYSBtb2R1bGUuOjJgKTsK
K2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2FzeW5jIGZ1bmN0aW9uIGF3YWl0
KCkge30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3
YWl0JyBpbiBhIG1vZHVsZS46MmApOworCitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5y
YXdgCitpbXBvcnQge2F3YWl0fSBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3Qg
dXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVs
ZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQge2ZvbyBhcyBhd2FpdH0gZnJvbSAnZm9v
JzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJp
bmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1w
b3J0ICogYXMgYXdhaXQgZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAn
YXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50
YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IGF3YWl0LCB7eCwgeSwgen0gZnJvbSAnZm9vJzsK
K2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRp
bmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0
IGF3YWl0LCB7eCwgeSwgeix9IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1
c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxl
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCBhd2FpdCBmcm9tICdmb28nOworYCwgYFN5
bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1l
LjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgYXdhaXQs
ICogYXMgZm9vIGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0
JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2Fp
dC1tb3ppbGxhLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNWQ2YjkyZDNlNjFlNDk4MzllMDZjZDFkNGUxYjU4
MDNlNzhhMGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1t
b3ppbGxhLmpzCkBAIC0wLDAgKzEsMzA1IEBACisvKiBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMg
c3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCisgKiBMaWNlbnNlLCB2
LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlz
CisgKiBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vei5vcmcvTVBMLzIuMC8u
ICovCisKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05f
U1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9u
IHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9ICIiKSB7CisgICAgaWYgKG1zZykKKyAg
ICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVh
bCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5
bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJy
b3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZh
bHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVl
OyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisgICAgaWYgKGhh
ZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFj
dHVhbCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3cocnVuLCBlcnJvclR5cGUsIG1l
c3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAg
IHRyeSB7CisgICAgICAgIGFjdHVhbCA9IHJ1bigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICBhY3R1YWwgPSBlOworICAgIH0KKyAgICBpZiAo
IWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAi
KCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7
CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY2VkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5u
YW1lICsgIiAsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2Ug
IT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSAr
ICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0
dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24o
dmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJv
cikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3Jv
dGFza3MoKTsKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0
IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBl
KSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRo
cm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7
CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2Fn
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRo
cm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICIn
Iik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydChjb25kLCBtc2cgPSAiIikgeworICAgIGlmICghY29u
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRo
cm93U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7
CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzdHIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgaWYgKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikgeworICAgICAgICAgICAgaGFkRXJyb3Ig
PSB0cnVlOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIikKKyAg
ICAgICAgICAgICAgICBhc3NlcnQoZS5tZXNzYWdlID09PSBtZXNzYWdlLCAiRXhwZWN0ZWQgJyIg
KyBtZXNzYWdlICsgIicgYnV0IHRocmV3ICciICsgZS5tZXNzYWdlICsgIiciKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBhc3NlcnQoaGFkRXJyb3IsICJEaWQgbm90IHRocm93IHN5bnRheCBlcnJv
ciIpOworfQorCisvLyBzZW1hbnRpY3MuanMKKyhmdW5jdGlvbiBtb3pTZW1hbnRpY3MoKSB7CisK
K2FzeW5jIGZ1bmN0aW9uIGVtcHR5KCkgeworfQorCithc3luYyBmdW5jdGlvbiBzaW1wbGVSZXR1
cm4oKSB7CisgICAgcmV0dXJuIDE7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNpbXBsZUF3YWl0KCkg
eworICAgIHZhciByZXN1bHQgPSBhd2FpdCAyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIHNpbXBsZUF3YWl0QXN5bmMoKSB7CisgICAgdmFyIHJlc3VsdCA9IGF3YWl0
IHNpbXBsZVJldHVybigpOworICAgIHJldHVybiAyICsgcmVzdWx0OworfQorCithc3luYyBmdW5j
dGlvbiByZXR1cm5PdGhlckFzeW5jKCkgeworICAgIHJldHVybiAxICsgYXdhaXQgc2ltcGxlQXdh
aXRBc3luYygpOworfQorCithc3luYyBmdW5jdGlvbiBzaW1wbGVUaHJvd2VyKCkgeworICAgIHRo
cm93IG5ldyBFcnJvcigpOworfQorCithc3luYyBmdW5jdGlvbiBkZWxlZ2F0ZWRUaHJvd2VyKCkg
eworICAgIHZhciB2YWwgPSBhd2FpdCBzaW1wbGVUaHJvd2VyKCk7CisgICAgcmV0dXJuIHZhbDsK
K30KKworYXN5bmMgZnVuY3Rpb24gdHJ5Q2F0Y2goKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdh
aXQgZGVsZWdhdGVkVGhyb3dlcigpOworICAgICAgICByZXR1cm4gJ0ZBSUxFRCc7CisgICAgfSBj
YXRjaCAoXykgeworICAgICAgICByZXR1cm4gNTsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9u
IHRyeUNhdGNoVGhyb3coKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVkVGhy
b3dlcigpOworICAgICAgICByZXR1cm4gJ0ZBSUxFRCc7CisgICAgfSBjYXRjaCAoXykgeworICAg
ICAgICByZXR1cm4gZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0KK30KKworYXN5bmMgZnVuY3Rp
b24gd2VsbEZpbmFsbHkoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVkVGhy
b3dlcigpOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0dXJuICdGQUlMRUQnOworICAg
IH0gZmluYWxseSB7CisgICAgICAgIHJldHVybiA2OworICAgIH0KK30KKworYXN5bmMgZnVuY3Rp
b24gZmluYWxseU1heUZhaWwoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVk
VGhyb3dlcigpOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0dXJuIDU7CisgICAgfSBm
aW5hbGx5IHsKKyAgICAgICAgcmV0dXJuIGRlbGVnYXRlZFRocm93ZXIoKTsKKyAgICB9Cit9CisK
K2FzeW5jIGZ1bmN0aW9uIGVtYmVkZGVkKCkgeworICAgIGFzeW5jIGZ1bmN0aW9uIGlubmVyKCkg
eworICAgICAgICByZXR1cm4gNzsKKyAgICB9CisgICAgcmV0dXJuIGF3YWl0IGlubmVyKCk7Cit9
CisKKy8vIHJlY3Vyc2lvbiwgaXQgd29ya3MhCithc3luYyBmdW5jdGlvbiBmaWIobikgeworICAg
IHJldHVybiAobiA9PSAwIHx8IG4gPT0gMSkgPyBuIDogYXdhaXQgZmliKG4gLSAxKSArIGF3YWl0
IGZpYihuIC0gMik7Cit9CisKKy8vIG11dHVhbCByZWN1cnNpb24KK2FzeW5jIGZ1bmN0aW9uIGlz
T2RkKG4pIHsKKyAgICBhc3luYyBmdW5jdGlvbiBpc0V2ZW4obikgeworICAgICAgICByZXR1cm4g
biA9PT0gMCB8fCBhd2FpdCBpc09kZChuIC0gMSk7CisgICAgfQorICAgIHJldHVybiBuICE9PSAw
ICYmIGF3YWl0IGlzRXZlbihuIC0gMSk7Cit9CisKKy8vIHJlY3Vyc2lvbiwgdGFrZSB0aHJlZSEK
K3ZhciBoYXJkY29yZUZpYiA9IGFzeW5jIGZ1bmN0aW9uIGZpYjIobikgeworICAgIHJldHVybiAo
biA9PSAwIHx8IG4gPT0gMSkgPyBuIDogYXdhaXQgZmliMihuIC0gMSkgKyBhd2FpdCBmaWIyKG4g
LSAyKTsKK30KKwordmFyIGFzeW5jRXhwciA9IGFzeW5jIGZ1bmN0aW9uKCkgeworICAgIHJldHVy
biAxMDsKK30KKwordmFyIG5hbWVkQXN5bmNFeHByID0gYXN5bmMgZnVuY3Rpb24gc2ltcGxlKCkg
eworICAgIHJldHVybiAxMTsKK30KKworYXN5bmMgZnVuY3Rpb24gZXhlY3V0aW9uT3JkZXIoKSB7
CisgICAgdmFyIHZhbHVlID0gMDsKKyAgICBhc3luYyBmdW5jdGlvbiBmaXJzdCgpIHsKKyAgICAg
ICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAwID8gMSA6IHZhbHVlKTsKKyAgICB9CisgICAg
YXN5bmMgZnVuY3Rpb24gc2Vjb25kKCkgeworICAgICAgICByZXR1cm4gKHZhbHVlID0gdmFsdWUg
PT09IDAgPyAyIDogdmFsdWUpOworICAgIH0KKyAgICBhc3luYyBmdW5jdGlvbiB0aGlyZCgpIHsK
KyAgICAgICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAwID8gMyA6IHZhbHVlKTsKKyAgICB9
CisgICAgcmV0dXJuIGF3YWl0IGZpcnN0KCkgKyBhd2FpdCBzZWNvbmQoKSArIGF3YWl0IHRoaXJk
KCkgKyA2OworfQorCithc3luYyBmdW5jdGlvbiBtaXNjZWxsYW5lb3VzKCkgeworICAgIGlmIChh
cmd1bWVudHMubGVuZ3RoID09PSAzICYmCisgICAgICAgIGFyZ3VtZW50cy5jYWxsZWUubmFtZSA9
PT0gIm1pc2NlbGxhbmVvdXMiKQorICAgICAgICByZXR1cm4gMTQ7Cit9CisKK2Z1bmN0aW9uIHRo
cm93ZXIoKSB7CisgICAgdGhyb3cgMTU7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGRlZmF1bHRBcmdz
KGFyZyA9IHRocm93ZXIoKSkgeworfQorCisvLyBBc3luYyBmdW5jdGlvbnMgYXJlIG5vdCBjb25z
dHJ1Y3RpYmxlCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgYXN5bmMgZnVuY3Rpb24gUGVyc29u
KCkgeworICAgIH0KKyAgICBuZXcgUGVyc29uKCk7Cit9LCBUeXBlRXJyb3IpOworCitzaG91bGRC
ZUFzeW5jKHVuZGVmaW5lZCwgZW1wdHkpOworc2hvdWxkQmVBc3luYygxLCBzaW1wbGVSZXR1cm4p
Oworc2hvdWxkQmVBc3luYygyLCBzaW1wbGVBd2FpdCk7CitzaG91bGRCZUFzeW5jKDMsIHNpbXBs
ZUF3YWl0QXN5bmMpOworc2hvdWxkQmVBc3luYyg0LCByZXR1cm5PdGhlckFzeW5jKTsKK3Nob3Vs
ZFRocm93QXN5bmMoc2ltcGxlVGhyb3dlciwgRXJyb3IpOworc2hvdWxkQmVBc3luYyg1LCB0cnlD
YXRjaCk7CitzaG91bGRCZUFzeW5jKDYsIHdlbGxGaW5hbGx5KTsKK3Nob3VsZFRocm93QXN5bmMo
ZmluYWxseU1heUZhaWwsIEVycm9yKTsKK3Nob3VsZEJlQXN5bmMoNywgZW1iZWRkZWQpOworc2hv
dWxkQmVBc3luYyg4LCAoKSA9PiBmaWIoNikpOworc2hvdWxkQmVBc3luYyg5LCBleGVjdXRpb25P
cmRlcik7CitzaG91bGRCZUFzeW5jKDEwLCBhc3luY0V4cHIpOworc2hvdWxkQmVBc3luYygxMSwg
bmFtZWRBc3luY0V4cHIpOworc2hvdWxkQmVBc3luYygxMiwgKCkgPT4gaXNPZGQoMTIpLnRoZW4o
diA9PiB2ID8gIm9vcHMiIDogMTIpKTsKK3Nob3VsZEJlQXN5bmMoMTMsICgpID0+IGhhcmRjb3Jl
RmliKDcpKTsKK3Nob3VsZEJlQXN5bmMoMTQsICgpID0+IG1pc2NlbGxhbmVvdXMoMSwgMiwgMykp
Oworc2hvdWxkQmVBc3luYygxNSwgKCkgPT4gZGVmYXVsdEFyZ3MoKS5jYXRjaChlID0+IGUpKTsK
KworfSkoKTsKKworLy8gbWV0aG9kcy5qcworKGZ1bmN0aW9uIG1vek1ldGhvZHMoKSB7CisKK2Ns
YXNzIFggeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZhbHVlID0gNDI7Cisg
ICAgfQorICAgIGFzeW5jIGdldFZhbHVlKCkgeworICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsK
KyAgICB9CisgICAgc2V0VmFsdWUodmFsdWUpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVl
OworICAgIH0KKyAgICBhc3luYyBpbmNyZW1lbnQoKSB7CisgICAgICAgIHZhciB2YWx1ZSA9IGF3
YWl0IHRoaXMuZ2V0VmFsdWUoKTsKKyAgICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSArIDEpOwor
ICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOworICAgIH0KKyAgICBhc3luYyBnZXRCYXNl
Q2xhc3NOYW1lKCkgeworICAgICAgICByZXR1cm4gJ1gnOworICAgIH0KKyAgICBzdGF0aWMgYXN5
bmMgZ2V0U3RhdGljVmFsdWUoKSB7CisgICAgICAgIHJldHVybiA0NDsKKyAgICB9Cit9CisKK2Ns
YXNzIFkgZXh0ZW5kcyBYIHsKKyAgICBhc3luYyBnZXRCYXNlQ2xhc3NOYW1lKCkgeworICAgICAg
ICByZXR1cm4gc3VwZXIuZ2V0QmFzZUNsYXNzTmFtZSgpOworICAgIH0KK30KKwordmFyIG9iakxp
dGVyYWwgPSB7CisgICAgYXN5bmMgZ2V0KCkgeworICAgICAgICByZXR1cm4gNDU7CisgICAgfSwK
KyAgICBzb21lU3R1ZmY6IDUKK307CisKK3ZhciB4ID0gbmV3IFgoKTsKK3ZhciB5ID0gbmV3IFko
KTsKKworc2hvdWxkQmVBc3luYyg0MiwgKCkgPT4geC5nZXRWYWx1ZSgpKTsKK3Nob3VsZEJlQXN5
bmMoNDMsICgpID0+IHguaW5jcmVtZW50KCkpOworc2hvdWxkQmVBc3luYyg0NCwgKCkgPT4gWC5n
ZXRTdGF0aWNWYWx1ZSgpKTsKK3Nob3VsZEJlQXN5bmMoNDUsICgpID0+IG9iakxpdGVyYWwuZ2V0
KCkpOworc2hvdWxkQmVBc3luYygnWCcsICgpID0+IHkuZ2V0QmFzZUNsYXNzTmFtZSgpKTsKKwor
fSkoKTsKKworKGZ1bmN0aW9uIG1vekZ1bmN0aW9uTmFtZUluZmVycmVuY2UoKSB7CisKK2FzeW5j
IGZ1bmN0aW9uIHRlc3QoKSB7IH0KKwordmFyIGFub24gPSBhc3luYyBmdW5jdGlvbigpIHsgfQor
CitzaG91bGRCZSgidGVzdCIsIHRlc3QubmFtZSk7CitzaG91bGRCZSgiYW5vbiIsIGFub24ubmFt
ZSk7CisKK30pKCk7CisKKyhmdW5jdGlvbiBtb3pTeW50YXhFcnJvcnMoKSB7CisKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIid1c2Ugc3RyaWN0JzsgYXN5bmMgZnVuY3Rpb24gZXZhbCgpIHt9Iik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIndXNlIHN0cmljdCc7IGFzeW5jIGZ1bmN0aW9uIGFy
Z3VtZW50cygpIHt9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBh
KGsgPSBzdXBlci5wcm9wKSB7IH0iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1
bmN0aW9uIGEoKSB7IHN1cGVyLnByb3AoKTsgfSIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
YXN5bmMgZnVuY3Rpb24gYSgpIHsgc3VwZXIoKTsgfSIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiYXN5bmMgZnVuY3Rpb24gYShrID0gYXdhaXQgMykge30iKTsKKworfSkoKTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2Fp
dC1yZXNlcnZlZC13b3JkLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2ZWQt
d29yZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jOGUxZDMzMjFjN2Y4MDA4N2JlZGYwZjE1NzIxYjI5NWI4MWVl
ZmIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2
ZWQtd29yZC5qcwpAQCAtMCwwICsxLDE2NiBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJM
RV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1l
LgorLy9AIHNraXAKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmQsIG1zZyA9ICIiKSB7CisgICAgaWYg
KCFjb25kKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKK30KK25vSW5saW5lKGFzc2Vy
dCk7CisKK2Z1bmN0aW9uIHNob3VsZFRocm93U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7Cisg
ICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzdHIpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikg
eworICAgICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAgICAgaWYgKHR5cGVvZiBt
ZXNzYWdlID09PSAic3RyaW5nIikKKyAgICAgICAgICAgICAgICBhc3NlcnQoZS5tZXNzYWdlID09
PSBtZXNzYWdlLCAiRXhwZWN0ZWQgJyIgKyBtZXNzYWdlICsgIicgYnV0IHRocmV3ICciICsgZS5t
ZXNzYWdlICsgIiciKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoaGFkRXJyb3IsICJE
aWQgbm90IHRocm93IHN5bnRheCBlcnJvciIpOworfQorbm9JbmxpbmUoc2hvdWxkVGhyb3dTeW50
YXhFcnJvcik7CisKK3ZhciBBc3luY0Z1bmN0aW9uID0gKGFzeW5jIGZ1bmN0aW9uKCkge30pLmNv
bnN0cnVjdG9yOworCisvLyBBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbgorc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIgYXdhaXQ7IH0pIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIFthd2FpdF0gPSBbXTsg
fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2
YXIgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIo
YXN5bmMgZnVuY3Rpb24oKSB7IHZhciB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0g
PSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9u
KCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCBhd2FpdDsgfSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCBbYXdh
aXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFz
eW5jIGZ1bmN0aW9uKCkgeyBsZXQgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IHthd2FpdH0g
PSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMg
ZnVuY3Rpb24oKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQge2lzQXN5
bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3QgYXdhaXQ7IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCBbYXdhaXRd
ID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5j
IGZ1bmN0aW9uKCkgeyBjb25zdCBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCB7YXdhaXR9
ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5j
IGZ1bmN0aW9uKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCB7
aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0pIiwgIkNh
bm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGFzeW5jIGZ1
bmN0aW9uIGF3YWl0KCkge30gfSkiLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3
YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihh
c3luYyBmdW5jdGlvbihhd2FpdCkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1l
dGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCIoYXN5bmMgZnVuY3Rpb24gZihbYXdhaXRdKSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKFsuLi5hd2FpdF0pIHt9KSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoLi4uYXdhaXQpIHt9KSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoe2F3YWl0fSkg
e30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24gZih7
aXNBc3luYzogYXdhaXR9KSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNGdW5jdGlvbkRlY2xhcmF0
aW9uCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIgYXdh
aXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigp
IHsgdmFyIFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
YXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIHthd2FpdH0gPSB7
fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigp
IHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsg
fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsg
bGV0IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCBbLi4uYXdhaXRd
ID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBm
dW5jdGlvbiBmKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IHtpc0FzeW5jOiBhd2Fp
dH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCBh
d2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1
bmN0aW9uIGYoKSB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IFsuLi5hd2FpdF0g
PSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1
bmN0aW9uIGYoKSB7IGNvbnN0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBh
d2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFz
eW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGZ1
bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdh
aXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZigpIHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBk
ZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKGF3YWl0KSB7fSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZihbYXdhaXRdKSB7fSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZihbLi4uYXdh
aXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24g
ZiguLi5hd2FpdCkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1
bmN0aW9uIGYoe2F3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFz
eW5jIGZ1bmN0aW9uIGYoe2lzQXN5bmM6IGF3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNB
cnJvd0Z1bmN0aW9uCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+
IHsgdmFyIGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0g
YXN5bmMgKCkgPT4geyB2YXIgW2F3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIFsuLi5hd2FpdF0gPSBbXTsgfSki
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZh
ciB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBm
ID0gYXN5bmMgKCkgPT4geyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIHtpc0FzeW5j
OiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYg
PSBhc3luYyAoKSA9PiB7IGxldCBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQgW2F3YWl0XSA9IFtdOyB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9
PiB7IGxldCBbLi4uYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IHthd2FpdH0gPSB7fTsgfSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4g
eyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCB7aXNBc3luYzogYXdhaXR9
ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9
IGFzeW5jICgpID0+IHsgY29uc3QgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3QgW2F3YWl0XSA9IFtdOyB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAo
KSA9PiB7IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCB7YXdhaXR9ID0ge307
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5j
ICgpID0+IHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90
IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBhc3luYyBmdW5j
dGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0
JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBm
ID0gYXN5bmMgKGF3YWl0KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRl
ciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIGYgPSBhc3luYyAoW2F3YWl0XSkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBw
YXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBmID0gYXN5bmMgKFsuLi5hd2FpdF0pID0+IHt9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICguLi5hd2FpdCkgPT4ge30iLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKHthd2FpdH0pID0+IHt9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICh7aXNBc3luYzog
YXdhaXR9KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBh
c3luYyBhd2FpdCA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworCisvLyBBc3luY01ldGhvZAorc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciBhd2FpdDsgfSB9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIgW2F3YWl0
XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFz
eW5jIGYoKSB7IHZhciBbLi4uYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIHthd2FpdH0gPSB7fTsgfSB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIg
e2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0
IGF3YWl0OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
TyA9IHsgYXN5bmMgZigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCBbLi4uYXdh
aXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBPID0geyBhc3luYyBmKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0g
fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3lu
YyBmKCkgeyBjb25zdCBhd2FpdDsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYo
KSB7IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IHthd2FpdH0gPSB7fTsg
fSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFz
eW5jIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IHtp
c0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJD
YW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGFzeW5j
IGZ1bmN0aW9uIGF3YWl0KCkge30gfSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVk
ICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgTyA9IHsgYXN5bmMgZihhd2FpdCkge30gfSAiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKFthd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZihbLi4uYXdhaXRdKSB7fSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoLi4uYXdhaXQpIHt9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZih7YXdh
aXR9KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5j
IGYoe2lzQXN5bmM6IGF3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0
ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNGdW5jdGlvbiBjb25z
dHJ1Y3Rvcgorc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIGF3YWl0
OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciBb
YXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5j
dGlvbigndmFyIFsuLi5hd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIge2F3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciB7aXNBc3luYzogYXdhaXR9ID0ge307
JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIHtp
c0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJB
c3luY0Z1bmN0aW9uKCdsZXQgYXdhaXQ7JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQgW2F3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignbGV0IFsuLi5hd2Fp
dF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5j
RnVuY3Rpb24oJ2xldCB7YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9Oycp
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbign
bGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IGF3YWl0OycpIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3QgW2F3YWl0XSA9
IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5j
dGlvbignY29uc3QgWy4uLmF3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qge2F3YWl0fSA9IHt9OycpIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qg
e2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignZnVu
Y3Rpb24gYXdhaXQoKSB7fScpIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2Fp
dCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3lu
Y0Z1bmN0aW9uKCdhc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9JykiLCAiQ2Fubm90IGRlY2xhcmUg
ZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2F3YWl0JywgJycpIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdbYXdhaXRdJywgJycpIiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdbLi4uYXdhaXRdJywgJycp
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCcuLi5hd2Fp
dCcsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbign
e2F3YWl0fScsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5j
dGlvbigne2lzQXN5bmM6IGF3YWl0fScsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBh
cmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292424</attachid>
            <date>2016-10-21 16:04:20 -0700</date>
            <delta_ts>2016-10-21 22:41:54 -0700</delta_ts>
            <desc>fix the FunctionConstructor.cpp unreachable code</desc>
            <filename>bug-163760-20161021190040.patch</filename>
            <type>text/plain</type>
            <size>145688</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OWEwN2Y1MTVjNGZhNjU0MGQ4YjlkYTk3MzhiZWI4YmQyOTI4OTNmLi41NjM4MTg2ZjZmODExMDU5
ZjM0ODg4ZTMzODgwYzEwYTQzNmQ5MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTcgQEAKKzIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBm
dW5jdGlvbnMgZ2VuZXJhdGUgYnl0ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3
aGljaCBpcworICAgICAgICBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb246CisgICAgICAgIAorICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5z
bGF0aW9uOgorICAgICAgICBhc3luYyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAv
LyBBZnRlciB0cmFuc2xhdGlvbjoKKyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAg
ICAgICAgIGxldCBnZW5lcmF0b3IgPSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQm9keSBvZiBhc3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgQGdlbmVyYXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5l
cmF0b3JUaGlzOiB0aGlzLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8
ZnJhbWUgc3RhdGU+LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgQXdhaXQgRXhw
cmVzc2lvbnMgYXJlIGVxdWl2YWxlbnQgdG8gbm9uLWRlbGVnYXRpbmcgWWllbGQgZXhwcmVzc2lv
bnMsIGFuZCBlbWl0IGlkZW50aWNhbCBieXRlY29kZS4KKworICAgICAgICBJbiB0aGlzIGJ1Zywg
YXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBvbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCwgYXMg
c3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGRvIG5vdCB5ZXQgd29y
ayBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5q
czogQWRkZWQuCisgICAgICAgIChhc3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19hc3luY19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3
RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZSk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6QXN5bmNG
dW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6
SlNBc3luY0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJl
bnRseSk6CisKIDIwMTYtMTAtMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVuYW1lIFdBU00gdG8gV2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDAxY2IyOTQ3MzdiMjQ0ZjIxZGI3YTk1Mzk3OWU0OTJiNzMwMDQyZDgu
LmFlMTE5YmFmZWQ2YjcwMDUyN2M1YTI0NTM0MmEzZDUxMWY5ZDkxZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTYzNSw2ICs2MzUsOCBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIHJ1bnRpbWUvQXJyYXlDb252ZW50aW9ucy5jcHAKICAgICBydW50aW1l
L0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKKyAgICBydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1l
L0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9CYXNpY0Jsb2NrTG9jYXRp
b24uY3BwCiAgICAgcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9C
b29sZWFuT2JqZWN0LmNwcApAQCAtNzExLDYgKzcxMyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCisgICAgcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0NKU1ZhbHVlLmNwcAogICAgIHJ1bnRp
bWUvSlNDYWxsZWUuY3BwCkBAIC0xMjk1LDYgKzEyOTgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
QlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJh
eUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
QXJyYXlQcm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9EYXRlUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1
bmN0aW9uUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA2NjMwNTM3MjAyNGUxZGQ5M2E0YWM3MmQwMjkwNmEzMjAzMDU0NjYyLi4yODU0
ZDVlNzk4NmRiMDkxYjJiOTg0Y2EwZTNmMGYyNDc5MGMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODksNiArODksNyBAQCBKYXZhU2NyaXB0Q29y
ZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5UHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Bc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9EYXRl
UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9GdW5jdGlvblBy
b3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvR2VuZXJhdG9yUHJv
dG90eXBlLmpzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhYTA4NGU4MTFk
YTMxNGRhNmNmYjQ3MDFhMzMzOGZiMzBjMzM3MS4uMThmZTU3MTdlYjYzNzViZDRiMDhiNGIwZWE0
ZTRkNzEzMzI1YWJjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNDMsNiAr
MTI0MywxMiBAQAogCQk1M0ZBMkFFMzFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovOyB9OwogCQk1
M0ZEMDREMzFEN0FCMjc3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQxMUQ3QUIx
ODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovOyB9OwogCQk1M0ZEMDRE
NDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZEMDREMjFEN0FCMTg3MDAzMjg3
RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi87IH07CisJCTVCNzBDRkRFMURCNjlFNjYw
MEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVu
Y3Rpb24uaCAqLzsgfTsKKwkJNUI3MENGREYxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5j
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLzsgfTsKKwkJ
NUI3MENGRTAxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRBMURCNjlF
NUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi87IH07CisJCTVCNzBDRkUx
MURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRCMURCNjlFNUMwMEVD
MjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNUI3MENGRTIxREI2
OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREMxREI2OUU1QzAwRUMyM0Y5
IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyB9OworCQk1QjcwQ0ZFMzFEQjY5RTY2
MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAv
KiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk1RDVEOEFEMTBFMEQwRUJF
MDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5
bGliICovOyB9OwogCQk1REJCMTUxQjEzMUQwQjMxMDA1NkFEMzYgLyogdGVzdGFwaS5qcyBpbiBD
b3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovOyB9OwogCQk1REJCMTUyNTEz
MUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTIxMTBEMEE0ODc4ODcwMDQ4MDI1NSAv
KiBtaW5pZG9tLmpzICovOyB9OwpAQCAtMzU0OCw2ICszNTU0LDEzIEBACiAJCTUzRkEyQUUyMUNG
MzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTNGRDA0RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29u
dmVudGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ2Fs
bGluZ0NvbnZlbnRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZEMDRE
MjFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DYWxsaW5nQ29udmVudGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXN5bmNGdW5jdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIz
RjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQXN5bmNGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVCNzBDRkRBMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGREIxREI2OUU1QzAwRUMyM0Y5IC8q
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkREMURCNjlF
NUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZHlsaWIiOyBuYW1lID0gbGliZWRpdC5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmVkaXQu
ZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTVEQUZENkNCMTQ2QjY4NjMw
MEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gSlNDLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RERERjQ0NjE0RkVFNzIyMDBCNEZCNEQgLyogTExJ
bnREZXNpcmVkT2Zmc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTElu
dERlc2lyZWRPZmZzZXRzLmg7IHBhdGggPSBMTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNTkxNSw2ICs1OTI4
LDEwIEBACiAJCQkJRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNw
cCAqLywKIAkJCQlGNjkyQTg0RTAyNTU1OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuaCAq
LywKIAkJCQkwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggKi8sCisJ
CQkJNUI3MENGREQxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgKi8sCisJCQkJNUI3MENGREMxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oICovLAorCQkJCTVCNzBDRkRCMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0
aW9uUHJvdG90eXBlLmNwcCAqLywKKwkJCQk1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJCTBGMzhEMkEwMUQ0NDE5NjYwMDY4MDQ5OSAv
KiBBdXhpbGlhcnlCYXJyaWVyLmggKi8sCiAJCQkJMEYzOEQyQTExRDQ0MTk2NjAwNjgwNDk5IC8q
IEF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmggKi8sCiAJCQkJNTI2NzhGOEMxQTAzMTAwOTAwNkEz
MDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5jcHAgKi8sCkBAIC02MTAwLDYgKzYxMTcsOCBAQAog
CQkJCTBGMkI2NkJCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5oICovLAog
CQkJCTBGMkI2NkJDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlld0lubGluZXMu
aCAqLywKIAkJCQk1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAq
LywKKwkJCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8s
CiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8s
CiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAog
CQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCkBAIC03Mjg4
LDYgKzczMDcsNyBAQAogCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheVByb3Rv
dHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1ODFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlDb25zdHJ1
Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1OTFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5qcyAqLywKKwkJCQk1QjgyNDMwNDFEQjdBQTQ5MDBFQTYzODQgLyogQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5qcyAqLywKIAkJCQlERTI2RTkwNjFDQjVERDk2MDBEMkJFODIgLyog
QnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCAqLywKIAkJCQlERTI2RTkwMjFDQjVERDA1MDBE
MkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi8sCiAJCQkJQTdEODAxQTExODgw
RDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCkBAIC03NzIwLDYgKzc3
NDAsNyBAQAogCQkJCURDM0QyQjBBMUQzNDMxNjIwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZDM0NDRkMxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGRDE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tN
YXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZFMjFEQjY5RTY2MDBFQzIzRjkg
LyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NG
RTE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QkYxNThEMTlCN0E1MzEwMDY5NUREMCAvKiBERkdCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzNDRDAwMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja1dvcmtsaXN0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTgyODgsNiArODMwOSw3IEBACiAJCQkJN0MxODRFMUIxN0JFREJE
MzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxODRFMjMxN0JF
RTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OTZCNzMxRTFCREEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNlQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZERTFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1
bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyog
SlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTFGMTdCRUUyMkUw
MDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3
MzFGMUJEQTA4RUYwMDMzMUI4NCAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTg0MjgsNiArODQ1MCw3IEBACiAJCQkJQkMxOEM0M0YwRTE2RjVDRDAwQjM0NDYw
IC8qIE5vZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUU0NUEyODE4QTFCMjU5MDAyNkQ4OEYg
LyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MTBF
MTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTVCNzBDRkUwMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MjBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MzBFMTZGNUNEMDBCMzQ0NjAg
LyogTnVtYmVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0NDBFMTZGNUNEMDBC
MzQ0NjAgLyogTnVtYmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTkyOTMsNiArOTMx
Niw3IEBACiAJCQkJQTU1NzE0QkYxQ0Q4MDRBNDAwMDREMkM2IC8qIENvbnNvbGVPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hw
b2ludFNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjcxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCNzBDRkUz
MURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQzg1MjkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGhhc2VTY29wZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUyQjFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1
cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MjJBNjIxQzE1OEU2QTAwRTJFQjk4IC8qIEIz
Q29uc3RGbG9hdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTcwNiw2ICs5NzMwLDcgQEAK
IAkJCQkwRjU1MTNBODFENUE2OENEMDBDMzJCRDggLyogRnJlZUxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkU5OUIyNEExQzI0QzNENzAwQzgyMTU5IC8qIEpJVE5lZ0dlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVy
dHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENGRTExREI2OUU2NjAwRUMyM0Y5
IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4
RTQxMTJFNzJFRjAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZCNDE1ODQxRDc4RkI0QzAwREY4RDA5IC8qIEFycmF5Q29udmVudGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTg4Myw2ICs5OTA4LDcgQEAKIAkJCQkx
NDhGMjFCNzEwN0VDNTQ3MDA0MkVDMkMgLyogTm9kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
REM2OUFBNjYxQ0Y3QTFGMjAwQzYyNzJGIC8qIE1hdGNoUmVzdWx0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENGREYxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUg
LyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDZGNTIxMUEzMkIzMTMw
MDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMy
MkU1QTIxREE2NDQzOTAwNkU3NzA5IC8qIERGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNWFiOTc5YmFkNDU1NGM2
YmM3ZjUzMjE5MWYzZWFjZjIyZDFjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2Fs
aWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVu
Y3Rpb24gYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9k
ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgbGV0IHN0YXRlID0gZ2VuZXJhdG9yLkBnZW5l
cmF0b3JTdGF0ZTsKKyAgICBsZXQgdmFsdWUgPSBAdW5kZWZpbmVkOworCisgICAgaWYgKHN0YXRl
ID09PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQgfHwgKHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0
b3JSZXN1bWVNb2RlTm9ybWFsICYmIHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVNb2Rl
VGhyb3cpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiIik7CisKKyAgICB0cnkgewor
ICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0
aW5nOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5l
cmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1l
TW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CisgICAgICAgIGlmIChnZW5lcmF0b3Iu
QGdlbmVyYXRvclN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7
CisgICAgICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUodmFsdWUpOworICAgICAgICB9
CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0
ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkBy
ZWplY3QoZXJyb3IpOworICAgIH0KKworICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZSh2YWx1
ZSkuQHRoZW4oCisgICAgICAgIGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiBAYXN5bmNGdW5jdGlv
blJlc3VtZShnZW5lcmF0b3IsIHZhbHVlLCBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCk7IH0s
CisgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IHJldHVybiBAYXN5bmNGdW5jdGlvblJlc3VtZShn
ZW5lcmF0b3IsIGVycm9yLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KTsgfSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXgg
NTc2ZGU0MDA2MDRkMTAxNDc1MWNjNjNiZWFjZWM3N2E1NWZkNGZmNy4uODRhZTNiZGEyZjAwYjkw
ZDhmMWQyMzBmNjFiYWQwOTI4YzgxMTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTA1LDYgKzEwNSw4IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuYyIsICJsZW5ndGgiIDogNCB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIsICJs
ZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FzeW5jX2Z1bmMi
LCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hc3luY19m
dW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2V0
X2Z1bmN0aW9uX25hbWUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Rh
aWxfY2FsbCIsICJsZW5ndGgiIDogOSB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCBkOTczYmNmYjEzN2MzMmMwYzZkZWVkZjNkZTBl
MWRkOTQxNjU0YzZmLi4xNjJkYjI4MmNkNTUzOTA1MDE4NTU3MTBjMjFlYmI0MTdmYTUwNWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApA
QCAtMTY0LDYgKzE2NCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9n
ZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CiAgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNf
ZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQ6CiAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOgpAQCAtMTk2LDYg
KzE5Nyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJs
b2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF91bnNpZ25lZDoK
ICAgICBjYXNlIG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgor
ICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3Bl
OgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVh
dGVfcmVzdDoKQEAgLTM4OCw2ICszOTAsOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAg
IGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgog
ICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19hc3lu
Y19mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY2Fs
bF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90
YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGIxNTIxMTJiM2E2YWViMGI1ODY4ZjZhYTIwOTllZWM1
NTY3YjJhZjguLjFhMjk5NzUyYzJmMTNjMjRlM2ViOWZiMTE1NmY0ODE3NjJjODJjMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNDYzLDYg
KzE0NjMsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAg
ICAgICBjYXNlIG9wX25ld19hc3luY19mdW5jOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfYXN5bmNfZnVuYyIp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwpAQCAtMTQ3OSw2ICsxNDg3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVy
TmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6
IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgIm5ld19hc3luY19mdW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIx
KS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3Bfc2V0X2Z1bmN0aW9uX25hbWU6IHsKICAgICAgICAgICAgIGludCBmdW5jUmVnID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbmFtZVJlZyA9ICgrK2l0KS0+dS5vcGVy
YW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAppbmRleCAyNWEzNTdiZjU2MTE2NDUwYzFiMGUyNTVjOTc3MGEyM2FkM2UxOWVjLi5l
OTE4YTkzYzI0ZTY3OGRlMTIyZDc1NTAxMTgxOTJkYjU3N2YzMTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIyLDcg
KzEyMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZU1vZGU7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0K
KyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlv
blBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRU
eXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENv
bnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbENvbnRleHRUeXBlPiht
X2V2YWxDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKaW5kZXggYmFjNDA1NDEzYTZiMmZkZDk5NzI3MmMyOGYwYzc0YTcyMzA2YTMzOC4uNmY1
NThjZjdhOTc0Yzg1MzMzYmE4NTIzMDAyMThmZTIzMTIyZTE2NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NsYXNzQ29uc3Ry
dWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJp
YWJsZXM7IH0KICAgICAKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KKyAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBh
cnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KIAogICAgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHtyZXR1cm4gc3RhdGljX2Nhc3Q8SlNDOjpEZXJpdmVk
Q29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRUeXBlKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IGY3ZTEwMzE3YTIxNGM2NDgzOTBiOTRiMThiY2ZkNzM3M2Q1Y2UxN2YuLjYwYTlhZTQwMmFj
M2MyODhmZmE3NTkzYTcwNzhhNzk2YTc0NGNmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNTgs
NyArMTU4LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAg
ICB9CiAgICAgCiAKLSAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1
bmN0aW9uQm9keVBhcnNlTW9kZShtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkpKQogICAgICAgICBw
ZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKG1fY29kZUJsb2NrLmdldCgpLCBtX2luc3RydWN0aW9u
cywgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGVJbmRleCk7CiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6
bWFrZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4obV9pbnN0cnVjdGlvbnMpKTsK
QEAgLTI2OCwxNSArMjY4LDE1IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBz
aG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNv
ZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gKGZ1bmN0aW9u
Tm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rp
b25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlv
bigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKTsKIAotICAgIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAg
ICAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMi
IHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlv
biBzY29wZS4KKyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2Rl
KHBhcnNlTW9kZSkpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIGFuZCBBc3luY0Z1bmN0aW9uIG5l
dmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSBy
ZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCiAgICAgICAgIG5l
ZWRzQXJndW1lbnRzID0gZmFsc2U7CiAKLSAgICAgICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhlIHZh
ciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwg
c2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KKyAgICAgICAgLy8gR2VuZXJhdG9yIGFuZCBB
c3luY0Z1bmN0aW9uIHVzZXMgdGhlIHZhciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZh
cmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KICAg
ICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7CiAgICAgfQogCi0gICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlv
bk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVu
Y3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSkgJiYgbmVlZHNBcmd1bWVudHMpIHsKICAg
ICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQs
IHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMiLgogICAgICAg
ICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBl
dmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgogICAgICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0
LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMgYXMgYXJndW1lbnRzIG9mIGEgd3JhcHBpbmcg
Z2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJlbmNlIGl0IGZyb20gYSBnZW5lcmF0b3IuCkBA
IC0zMjAsMTMgKzMyMCwxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogCiAgICAgZW1pdEVu
dGVyKCk7CiAKLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpCisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9k
ZShwYXJzZU1vZGUpKQogICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVy
c1sxXTsKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKICAgICBpZiAoZnVuY3Rpb25O
YW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlv
bk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlKTsKKyAgICAgICAgQVNTRVJUKCFpc0FzeW5jRnVuY3Rpb25Cb2R5
UGFyc2VNb2RlKHBhcnNlTW9kZSkpOwogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVu
Y3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0g
Y2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFy
a0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwpA
QCAtNTA1LDcgKzUwNiw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICBib29sIHNob3VsZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUg
PSAhaGF2ZVBhcmFtZXRlck5hbWVkQXJndW1lbnRzICYmICFtX2NvZGVCbG9jay0+aXNBcnJvd0Z1
bmN0aW9uKCk7CisgICAgICAgIGJvb2wgc2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJpYWJsZSA9ICFo
YXZlUGFyYW1ldGVyTmFtZWRBcmd1bWVudHMKKyAgICAgICAgICAgICYmICFTb3VyY2VQYXJzZU1v
ZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250YWlucyhtX2NvZGVCbG9jay0+cGFyc2VNb2Rl
KCkpOwogICAgICAgICBzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2Nv
cGUgPSBzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxlICYmICFpc1NpbXBsZVBhcmFtZXRlckxp
c3Q7CiAgICAgICAgIC8vIERvIG5vdCBjcmVhdGUgYXJndW1lbnRzIHZhcmlhYmxlIGluIGNhc2Ug
b2YgQXJyb3cgZnVuY3Rpb24uIFZhbHVlIHdpbGwgYmUgbG9hZGVkIGZyb20gcGFyZW50IHNjb3Bl
CiAgICAgICAgIGlmIChzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxlICYmICFzaG91bGRDcmVh
dGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2NvcGUpIHsKQEAgLTU0OSw2ICs1NTEsMjAg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25O
b2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgQVNTRVJUKCFpc0NvbnN0cnVjdG9yKCkp
OworICAgICAgICBBU1NFUlQoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lKTsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworCisgICAgICAg
IGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKKyAgICAg
ICAgZW1pdE5ld09iamVjdChtX2dlbmVyYXRvclJlZ2lzdGVyKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6CiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAgIC8v
IHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCiAgICAgICAg
IGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOwpAQCAtNjA4LDcg
KzYyNCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAKICAgICAvLyBXZSBuZWVkIGxvYWQg
fHN1cGVyfCAmIHx0aGlzfCBmb3IgYXJyb3cgZnVuY3Rpb24gYmVmb3JlIGluaXRpYWxpemVEZWZh
dWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2sKICAgICAvLyBpZiB3
ZSBoYXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb24uIEJlY2F1c2UgfHN1cGVyfCAmIHx0
aGlzfCB2YWx1ZXMgY2FuIGJlIHVzZWQgdGhlcmUKLSAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZSA9PSBwYXJzZU1vZGUgJiYgIWlzU2ltcGxlUGFyYW1ldGVyTGlzdCkg
eworICAgIGlmICgoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5j
dGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFp
bnMocGFyc2VNb2RlKSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB8fCBwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkgewogICAgICAgICBp
ZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJv
cGVydHkoKSkKICAgICAgICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNh
bEVudmlyb25tZW50KCk7CiAKQEAgLTYyNywxMiArNjQzLDQ2IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgImlu
aXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2so
KSIgaXMgY2FsbGVkCiAgICAgLy8gYmVjYXVzZSBhIGZ1bmN0aW9uJ3MgZGVmYXVsdCBwYXJhbWV0
ZXIgRXhwcmVzc2lvbk5vZGVzIHdpbGwgdXNlIHRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgcHVz
aFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFREWkNoZWNrT3B0aW1pemF0
aW9uOjpEb05vdE9wdGltaXplLCBURFpSZXF1aXJlbWVudDo6VW5kZXJURFopOworCisgICAgVHJ5
RGF0YSogdHJ5Rm9ybWFsUGFyYW1ldGVyc0RhdGEgPSBudWxscHRyOworICAgIGlmIChpc0FzeW5j
RnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSkgJiYgIWlzU2ltcGxlUGFyYW1ldGVy
TGlzdCkgeworICAgICAgICBSZWZQdHI8TGFiZWw+IHRyeUZvcm1hbFBhcmFtZXRlcnNTdGFydCA9
IGVtaXRMYWJlbChuZXdMYWJlbCgpLmdldCgpKTsKKyAgICAgICAgdHJ5Rm9ybWFsUGFyYW1ldGVy
c0RhdGEgPSBwdXNoVHJ5KHRyeUZvcm1hbFBhcmFtZXRlcnNTdGFydC5nZXQoKSk7CisgICAgfQor
CiAgICAgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2Nv
cGVTdGFjayhwYXJhbWV0ZXJzLCBpc1NpbXBsZVBhcmFtZXRlckxpc3QsIGZ1bmN0aW9uTm9kZSwg
ZnVuY3Rpb25TeW1ib2xUYWJsZSwgc3ltYm9sVGFibGVDb25zdGFudEluZGV4LCBjYXB0dXJlcywg
c2hvdWxkQ3JlYXRlQXJndW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3BlKTsKLSAgICAKKwor
ICAgIGlmIChpc0FzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSkgJiYgIWlz
U2ltcGxlUGFyYW1ldGVyTGlzdCkgeworICAgICAgICBSZWZQdHI8TGFiZWw+IGRpZE5vdFRocm93
ID0gbmV3TGFiZWwoKTsKKyAgICAgICAgZW1pdEp1bXAoZGlkTm90VGhyb3cuZ2V0KCkpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhjZXB0aW9uID0gbmV3VGVtcG9yYXJ5KCk7CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aHJvd25WYWx1ZSA9IG5ld1RlbXBvcmFyeSgpOworICAg
ICAgICBSZWZQdHI8TGFiZWw+IGNhdGNoSGVyZSA9IGVtaXRMYWJlbChuZXdMYWJlbCgpLmdldCgp
KTsKKyAgICAgICAgcG9wVHJ5QW5kRW1pdENhdGNoKHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhLCBl
eGNlcHRpb24uZ2V0KCksIHRocm93blZhbHVlLmdldCgpLCBjYXRjaEhlcmUuZ2V0KCksIEhhbmRs
ZXJUeXBlOjpDYXRjaCk7CisKKyAgICAgICAgLy8gcmV0dXJuIEBQcm9taXNlLkByZWplY3QodGhy
b3duVmFsdWUpOworICAgICAgICBWYXJpYWJsZSBwcm9taXNlVmFyID0gdmFyaWFibGUobV92bS0+
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuUHJvbWlzZVByaXZhdGVOYW1lKCkpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBlbWl0UmVzb2x2ZVNjb3BlKG5ld1RlbXBv
cmFyeSgpLCBwcm9taXNlVmFyKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb21pc2VD
b25zdHJ1Y3RvciA9IGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgp
LCBwcm9taXNlVmFyLCBSZXNvbHZlTW9kZTo6VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHByb21pc2VSZWplY3QgPSBlbWl0R2V0QnlJZChuZXdUZW1wb3Jhcnko
KSwgcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgpKTsKKworICAgICAgICBDYWxsQXJndW1lbnRzIGFy
Z3MoKnRoaXMsIG51bGxwdHIsIDEpOworCisgICAgICAgIGVtaXRNb3ZlKGFyZ3MudGhpc1JlZ2lz
dGVyKCksIHByb21pc2VDb25zdHJ1Y3Rvci5nZXQoKSk7CisgICAgICAgIGVtaXRNb3ZlKGFyZ3Mu
YXJndW1lbnRSZWdpc3RlcigwKSwgdGhyb3duVmFsdWUuZ2V0KCkpOworCisgICAgICAgIEpTVGV4
dFBvc2l0aW9uIGRpdm90KGZ1bmN0aW9uTm9kZS0+Zmlyc3RMaW5lKCksIGZ1bmN0aW9uTm9kZS0+
c3RhcnRPZmZzZXQoKSwgZnVuY3Rpb25Ob2RlLT5saW5lU3RhcnRPZmZzZXQoKSk7CisKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGVtaXRDYWxsKG5ld1RlbXBvcmFyeSgpLCBw
cm9taXNlUmVqZWN0LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIGRpdm90LCBkaXZv
dCwgZGl2b3QsIERlYnVnZ2FibGVDYWxsOjpObyk7CisgICAgICAgIGVtaXRSZXR1cm4ocmVzdWx0
LmdldCgpKTsKKworICAgICAgICBlbWl0TGFiZWwoZGlkTm90VGhyb3cuZ2V0KCkpOworICAgIH0K
KwogICAgIC8vIElmIHdlIGRvbid0IGhhdmUgIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb24s
IHRoZW4gbG9hZGluZyB8dGhpc3wgaW5zaWRlIGFuIGFycm93IGZ1bmN0aW9uIG11c3QgYmUgZG9u
ZQogICAgIC8vIGFmdGVyIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBG
dW5jdGlvblNjb3BlU3RhY2soKSBiZWNhdXNlIHRoYXQgZnVuY3Rpb24gc2V0cyB1cCB0aGUKICAg
ICAvLyBTeW1ib2xUYWJsZSBzdGFjayBhbmQgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25M
ZXhpY2FsRW52aXJvbm1lbnQoKSBjb25zdWx0cyB0aGUgU3ltYm9sVGFibGUgc3RhY2sKLSAgICBp
ZiAoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSA9PSBwYXJzZU1vZGUgJiYgaXNT
aW1wbGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dG
dW5jdGlvbk1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSkgJiYgaXNTaW1wbGVQYXJhbWV0ZXJMaXN0
KSB7CiAgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgZnVuY3Rpb25Ob2Rl
LT51c2VzU3VwZXJQcm9wZXJ0eSgpKQogICAgICAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93
RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICAKQEAgLTY0Miw3ICs2OTIsNyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUq
IGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIAogICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBl
bnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2
ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0
aGUgc3ltYm9sIGtleXMuCiAgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVz
ZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KLSAgICBp
ZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAg
ICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkp
IHsKICAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOwogICAgICAg
ICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRh
YmxlKTsKICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xU
YWJsZUNvbnN0YW50SW5kZXg7CkBAIC0yNjQ0LDYgKzI2OTQsMjEgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dFNldHRlckJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHByb3BlcnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2V0dGVyLT5pbmRleCgpKTsKIH0K
IAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhSZWdpc3Rl
cklEKiBuZXh0RnVuY3Rpb24pCit7CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBj
cmVhdGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRz
IHByb3BlcnRpZXMgZm9yIGVhc2UuCisgICAgLy8gQnV0IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3
ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBjbGFzcywgYWRkIG9wY29kZSBuZXdfZ2VuZXJh
dG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5zdGVhZCBvZiB0aGVzZSBwcml2YXRlIHByb3Bl
cnRpZXMuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MTU0NQorCisgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSgpLCBuZXh0
RnVuY3Rpb24sIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgZW1pdERpcmVjdFB1
dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSgpLCAmbV90aGlzUmVnaXN0ZXIsIFByb3BlcnR5Tm9k
ZTo6S25vd25EaXJlY3QpOworCisgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdp
c3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0
ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpLCBQcm9wZXJ0eU5vZGU6Oktu
b3duRGlyZWN0KTsKKworICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIs
IHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1l
KCksIGVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVj
dCk7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlJZChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5KQogewogICAgIGVtaXRPcGNvZGUob3BfZGVsX2J5X2lkKTsKQEAgLTI5ODYsNiArMzA1MSwx
MSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29t
bW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3RpbwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgogICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19n
ZW5lcmF0b3JfZnVuY19leHA7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNN
ZXRob2RNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25N
b2RlOgorICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19hc3luY19mdW5jX2V4cDsKKyAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzAwNCw3ICsz
MDc0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jRXgKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3Qs
IEFycm93RnVuY0V4cHJOb2RlKiBmdW5jKQogewotICAgIEFTU0VSVChmdW5jLT5tZXRhZGF0YSgp
LT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IGZ1
bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJv
d0Z1bmN0aW9uTW9kZSk7CisgICAgQVNTRVJUKFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5j
dGlvbk1vZGUpLmNvbnRhaW5zKGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpKSk7CiAgICAg
ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMtPm1ldGFkYXRhKCkpOwog
ICAgIHJldHVybiBkc3Q7CiB9CkBAIC0zMDM4LDYgKzMxMDgsOCBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25N
ZXRhZGF0YQogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVj
bChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKICAgICBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgp
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSkKICAgICAg
ICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworICAgIGVsc2UgaWYgKGZ1bmN0
aW9uLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlKQor
ICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19hc3luY19mdW5jKTsKICAgICBlbHNlCiAgICAgICAg
IGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3Qt
PmluZGV4KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGQ0YzFjOGU4ZWVhODhiMWMyMGY0YTk1ZTQ1MzY5
MmNjZGU0OWJmYmYuLmIzZWYwNDAxYjkyMDI1MDFjMmIzYWQwZmUyNWY5NjkwODIzNzAxN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTU3Niw3ICs1NzYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW1pdFB1dEdldHRlclNldHRlcihSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eSwgdW5zaWduZWQgYXR0cmlidXRlcywgUmVnaXN0ZXJJRCogZ2V0dGVyLCBS
ZWdpc3RlcklEKiBzZXR0ZXIpOwogICAgICAgICB2b2lkIGVtaXRQdXRHZXR0ZXJCeVZhbChSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgdW5zaWduZWQgcHJvcGVydHlEZXNj
cmlwdG9yT3B0aW9ucywgUmVnaXN0ZXJJRCogZ2V0dGVyKTsKICAgICAgICAgdm9pZCBlbWl0UHV0
U2V0dGVyQnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIHVuc2ln
bmVkIHByb3BlcnR5RGVzY3JpcHRvck9wdGlvbnMsIFJlZ2lzdGVySUQqIHNldHRlcik7Ci0gICAg
ICAgIAorCisgICAgICAgIC8vIEluaXRpYWxpemUgb2JqZWN0IHdpdGggZ2VuZXJhdG9yIGZpZWxk
cyAoQGdlbmVyYXRvclRoaXMsIEBnZW5lcmF0b3JOZXh0LCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5l
cmF0b3JGcmFtZSkKKyAgICAgICAgdm9pZCBlbWl0UHV0R2VuZXJhdG9yRmllbGRzKFJlZ2lzdGVy
SUQqIG5leHRGdW5jdGlvbik7CisKICAgICAgICAgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1
bmN0aW9uRm9ySWRlbnRpZmllcihjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRG
dW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCwgRGVidWdnYWJsZUNhbGwpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbEluVGFp
bFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5j
dGlvbiwgQ2FsbEFyZ3VtZW50cyYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCwgRGVidWdnYWJsZUNhbGwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGQzODdjZGY4MTUwMzg1NDQxYTM0ZTk2M2Q2
YjhhMjgwYWYwMzI0MDIuLmVmMmM1ZTYwMjRlNDE1NDQ0MTYyYmRmZDVmZWVlYTg1MDU4NGNmYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKQEAgLTM0MDIsMjUgKzM0MDIsNjQgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAg
ICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgbmV4dC5nZXQoKSwgaG9tZU9iamVj
dC5nZXQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBq
dXN0IGNyZWF0ZSBhbiBvYmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciByZWxhdGVkIGZpZWxkcyBh
cyBpdHMgcHJvcGVydGllcyBmb3IgZWFzZS4KLSAgICAgICAgLy8gQnV0IHRvIG1ha2UgaXQgZWZm
aWNpZW50LCB3ZSB3aWxsIGludHJvZHVjZSBKU0dlbmVyYXRvciBjbGFzcywgYWRkIG9wY29kZSBu
ZXdfZ2VuZXJhdG9yIGFuZCB1c2UgaXRzIEMrKyBmaWVsZHMgaW5zdGVhZCBvZiB0aGVzZSBwcml2
YXRlIHByb3BlcnRpZXMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTE1NDUKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRHZW5lcmF0b3JGaWVs
ZHMobmV4dC5nZXQoKSk7CiAKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdl
bmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSgpLCBuZXh0LmdldCgpLCBQcm9w
ZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0KCkgPj0g
bGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
TGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNl
dCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmdlbmVyYXRvclJl
Z2lzdGVyKCkpOworICAgICAgICBicmVhazsKKyAgICB9CiAKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclRoaXNQcml2YXRlTmFtZSgp
LCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwor
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIFN0YXRlbWVudE5vZGUqIHNpbmds
ZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOworICAgICAgICBBU1NFUlQoc2lu
Z2xlU3RhdGVtZW50LT5pc0V4cHJTdGF0ZW1lbnQoKSk7CisgICAgICAgIEV4cHJTdGF0ZW1lbnRO
b2RlKiBleHByU3RhdGVtZW50ID0gc3RhdGljX2Nhc3Q8RXhwclN0YXRlbWVudE5vZGUqPihzaW5n
bGVTdGF0ZW1lbnQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwciA9IGV4cHJTdGF0ZW1l
bnQtPmV4cHIoKTsKKyAgICAgICAgQVNTRVJUKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpOworICAg
ICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4o
ZXhwcik7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogaW5pdGlhbFN0YXRlID0gZ2VuZXJhdG9yLmVt
aXRMb2FkKG51bGxwdHIsIGpzTnVtYmVyKDApKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJl
Y3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgaW5p
dGlhbFN0YXRlLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IG5leHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShuZXh0LmdldCgpLCBmdW5jRXhwcik7CiAKLSAgICAgICAgZ2VuZXJhdG9y
LmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5h
bWUoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2Rl
OjpLbm93bkRpcmVjdCk7CisgICAgICAgIGlmIChnZW5lcmF0b3Iuc3VwZXJCaW5kaW5nKCkgPT0g
U3VwZXJCaW5kaW5nOjpOZWVkZWQgfHwgZ2VuZXJhdG9yLnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IERvbid0IGFsd2F5cyBsb2FkIGhvbWUgb2JqZWN0IGZvciBhc3luYyBhcnJvd3MKKyAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBob21lT2JqZWN0ID0gZW1pdEhvbWVPYmplY3RGb3JDYWxs
ZWUoZ2VuZXJhdG9yKTsKKyAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwg
bmV4dC5nZXQoKSwgaG9tZU9iamVjdC5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhuZXh0LmdldCgpKTsKIAogICAgICAgICBBU1NF
UlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZz
ZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihn
ZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisKKyAgICAgICAgLy8gbG9hZCBAYXN5bmNG
dW5jdGlvblJlc3VtZSwgYW5kIGNhbGwuCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdGFy
dEFzeW5jRnVuY3Rpb24gPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGF1dG8g
dmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuYXN5bmNGdW5jdGlvblJlc3VtZVByaXZhdGVOYW1lKCkpOworCisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAg
ICAgZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoc2NvcGUuZ2V0KCksIGdlbmVy
YXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNjb3BlLmdldCgpLCB2YXIpKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRGcm9tU2NvcGUoc3RhcnRBc3luY0Z1bmN0aW9uLmdldCgpLCBzY29wZS5nZXQo
KSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworCisgICAgICAgIC8vIHJldHVybiBAYXN5bmNGdW5j
dGlvblJlc3VtZS5AY2FsbCh0aGlzLCBAZ2VuZXJhdG9yLCBAdW5kZWZpbmVkLCBHZW5lcmF0b3JS
ZXN1bWVNb2RlOjpOb3JtYWxNb2RlKQorICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJh
dG9yLCBudWxscHRyLCAzKTsKKyAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudCA9IDA7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5l
ZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihh
cmd1bWVudENvdW50KyspLCBnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsr
KSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLmFyZ3Vt
ZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yUmVzdW1lTW9kZTo6Tm9ybWFsTW9kZSkp
KTsKKyAgICAgICAgLy8gSlNUZXh0UG9zaXRpb24oaW50IF9saW5lLCBpbnQgX29mZnNldCwgaW50
IF9saW5lU3RhcnRPZmZzZXQpCisgICAgICAgIEpTVGV4dFBvc2l0aW9uIGRpdm90KGZpcnN0TGlu
ZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7CisKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9zaXRpb24ocmVzdWx0LmdldCgpLCBzdGFydEFzeW5j
RnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgZGl2b3QsIGRpdm90LCBk
aXZvdCwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4o
cmVzdWx0LmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlOgorICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAgIFJlZlB0cjxMYWJlbD4gZ2VuZXJhdG9yQm9k
eUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCA1NDJhNDcxM2Y1MmQ1YTlmYTljNjNlNTZlMDE2ZTIyMzA1YThhZGY2
Li40OWIxYTg2ZWQxNWFmNDFhZmFhOWU3ZDEzYjg4YTVjNDQ3Nzg5YmZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC0yOTksNiArMjk5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhwKQogICAgICAg
ICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jKQogICAgICAgICBERUZJTkVfT1Aob3Bf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKKyAgICAgICAgREVGSU5FX09QKG9wX25ld19hc3luY19m
dW5jKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FzeW5jX2Z1bmNfZXhwKQogICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19yZWdleHAp
CiAgICAgICAgIERFRklORV9PUChvcF9ub3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAw
NWRlMjhjZTFlZDY3MGI1MWZlYjhmNTNjMzlhNGZmNTQ0OTI4ZTRhLi42ZDIwMjQ5Mzg3YjI5MWFi
ZWJkZmE5ZmJiNzQ3ZGE4MjcwNWY2ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTU0
NCw2ICs1NDQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19m
dW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRv
cl9mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9y
X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNf
ZnVuYyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmNf
ZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfb2JqZWN0KEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9ub3QoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGI5MDFiYjQ2MzEwNjAwMTIwZTExZjg0ZTFl
Y2E5Y2I2MjY3NDliOGQuLjlmOTlhYmE5Y2Y5OWVjZDI5YTAyOWQ4MTQ0MmJhOGUyZmVlZjQwOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtOTcxLDkgKzk3
MSwxMSBAQCB2b2lkIEpJVDo6ZW1pdE5ld0Z1bmNDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKICAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfbmV3X2Z1bmMpCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVu
Y3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJU
KG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxzZSBpZiAob3Bjb2Rl
SUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CisgICAgZWxz
ZSB7CisgICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfYXN5bmNfZnVuYyk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbiwgZHN0LCByZWdUMCwg
ZnVuY0V4ZWMpOwogICAgIH0KIH0KIApAQCAtOTg3LDYgKzk4OSwxMSBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZv
aWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKICAgICBKdW1wIG5vdFVuZGVmaW5lZFNjb3BlOwpAQCAtMTAwOCw5ICsxMDE1LDEx
IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCiAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0
aW9uKTsKLSAgICBlbHNlIHsKLSAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5l
cmF0b3JfZnVuY19leHApOworICAgIGVsc2UgaWYgKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0
b3JfZnVuY19leHApCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNT
RVJUKG9wY29kZUlEID09IG9wX25ld19hc3luY19mdW5jX2V4cCk7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOwog
ICAgIH0KIAogICAgIGRvbmUubGluayh0aGlzKTsKQEAgLTEwMjYsNiArMTAzNSwxMSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlv
bik7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jX2V4cChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJy
ZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXkoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDhmOGQ0YWQzNDUzZmQ0NmIwMzA0MzJiMzE5YzA2M2IwMzI5YzM5NTQu
LmViZDc3Y2QwMzg2OGJkYzFmYjhhYWJhZTBmYmY5M2QwZTc2MWRhYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2lu
Y2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJKSVRU
b0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKQEAgLTExNzAs
NiArMTE3MSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dl
bmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvYwogICAgIHJldHVybiBvcGVyYXRp
b25OZXdGdW5jdGlvbkNvbW1vbjxKU0dlbmVyYXRvckZ1bmN0aW9uPihleGVjLCBzY29wZSwgZnVu
Y3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4
ZWN1dGFibGUsIGZhbHNlKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBc3luY0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2lu
dChFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0
YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNBc3luY0Z1
bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKK30KKwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZShFeGVjU3RhdGUqIGV4ZWMs
IEpTQ2VsbCogZnVuY0NlbGwsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWROYW1lKQogewogICAgIFZN
KiB2bSA9ICZleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAppbmRleCBhZGZlZjc4YzZmMDBjNTAzZDA2ZmJmODY3NjU2ODdlN2RjMTQzYzI0Li5kYjVi
YTg5NjVhN2E1MDFiYTM1MjdhYTY1NDg4NWU2Y2YzZGQ5NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzc1LDYgKzM3NSw4IEBAIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29w
ZSosIEpTQ2VsbCopCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1
bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBK
U1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwg
SlNDZWxsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZShFeGVjU3Rh
dGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1JlZ2V4
cChFeGVjU3RhdGUqLCB2b2lkKikgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggODc1ODI1MWZhNGExZDQ5ZjkxMDBi
ZWJlYzA4ODY1YmQ0MTJkN2RmNS4uZjU4ZjRmOTY2ZWE3NzQzYmZjNGVjODA3YzExZWYzYWI0ZGQ0
MjliYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhj
ZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpJVFdvcmtsaXN0LmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC0xMTQ5LDYgKzExNTAsMTcg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKICAg
ICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2st
PmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpT
U2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVy
OjpzY29wZSgpOworI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCisgICAgZGF0YUxvZ0YoIkNy
ZWF0aW5nIGFzeW5jIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAgICBMTElOVF9SRVRVUk4oSlNB
c3luY0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUu
b3BlcmFuZCksIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9u
ZXdfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTExNzEsNiArMTE4MywxNyBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkK
ICAgICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRh
YmxlLCBzY29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Fz
eW5jX2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgCisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBzY29wZSA9IGV4
ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKKyAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihw
Y1szXS51Lm9wZXJhbmQpOworICAgIAorICAgIExMSU5UX1JFVFVSTihKU0FzeW5jRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IDk4NGU5
Y2M0MDMwMzI3OWFhNzAyZGY4ZmViNzg4YzNiOGI5NjA1MGUuLmQ3NjEzOGMxMjQ0ZmY3YWFmNDgz
ZDA4MDNhZDViYjgxMTdlYTc5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oCkBAIC0xMDMsNiArMTAzLDggQEAgTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX25ld19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX25ld19nZW5lcmF0b3JfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuYyk7CitMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25ld19hc3luY19mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfY2FsbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2NvbnN0cnVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNTYwZGYzZWNhYjgyZGE4MmIyN2Y0NDM2
MjRkMGZkZThlNTAxY2U5ZS4uNjQ0NWE0N2NlZGE5YTVjZjc1OWExNmUxNzJjM2JkODQ2YWI5ZGI3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQpAQCAtMTMyMSw2ICsxMzIxLDEyIEBAIF9sbGludF9vcF9uZXdfZ2VuZXJhdG9y
X2Z1bmM6CiAgICAgZGlzcGF0Y2goNCkKIAogCitfbGxpbnRfb3BfbmV3X2FzeW5jX2Z1bmM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25l
d19hc3luY19mdW5jKQorICAgIGRpc3BhdGNoKDQpCisKKwogX2xsaW50X29wX25ld19hcnJheToK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfbmV3X2FycmF5KQpAQCAtMTU5OSw2ICsxNjA1LDEyIEBAIF9sbGludF9vcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmNfZXhwOgogICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X25ld19nZW5lcmF0b3JfZnVuY19leHApCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25l
d19hc3luY19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDQpCisK
KwogX2xsaW50X29wX3NldF9mdW5jdGlvbl9uYW1lOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAg
ICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9zZXRfZnVuY3Rpb25fbmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA0OTA4ODQxNTExZTJm
NDAxNzczYjIwZmNlNjhmNTgzOTc2ZjZkMGExLi4yYjUyZTMyZDgxMzNlNjcwZmVkMjU4NzE4NDQ1
NzdhMDFhZTRjODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0yNjEsNyArMjYxLDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNv
bnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUgJiYgIW1hdGNoKE9QRU5CUkFDRSk7CiAgICAgaWYg
KG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlv
bkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwotICAgICAgICBpZiAoU291cmNlUGFyc2VN
b2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpLmNvbnRhaW5zKHBhcnNl
TW9kZSkgfHwgaXNBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKQorICAgICAg
ICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkp
CiAgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNv
bnRleHQsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG1fcGFyYW1ldGVycyA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBh
cnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKQEAgLTU2OCwxMSArNTY4LDE4IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUFzeW5jRnVuCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgYXN5bmNGdW5jdGlv
bkJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CiAgICAgICAgIGFzeW5jRnVuY3Rpb25Cb2R5
U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShpbm5lclBhcnNlTW9kZSk7Ci0gICAgICAgIFN5bnRh
eENoZWNrZXIgYXN5bmNGdW5jdGlvbkNvbnRleHQoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xl
eGVyLmdldCgpKTsKLSAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQot
ICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lv
bkJvZHlTb3VyY2VFbGVtZW50cyhhc3luY0Z1bmN0aW9uQ29udGV4dCksICJDYW5ub3QgcGFyc2Ug
dGhlIGJvZHkgb2YgYXN5bmMgYXJyb3cgZnVuY3Rpb24iKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhhc3luY0Z1bmN0aW9uQ29udGV4
dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgZnVuY3Rpb24iKTsKKyAg
ICAgICAgU3ludGF4Q2hlY2tlciBzeW50YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwg
bV9sZXhlci5nZXQoKSk7CisgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikgeworICAgICAgICAgICAgaWYgKG1fZGVidWdnZXJQYXJzZURhdGEpCisgICAgICAgICAgICAg
ICAgZmFpbElmRmFsc2UocGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3Vy
Y2VFbGVtZW50cyhjb250ZXh0KSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBhcnJv
dyBmdW5jdGlvbiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZhaWxJZkZh
bHNlKHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVudHMo
c3ludGF4Q2hlY2tlciksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgYXJyb3cgZnVu
Y3Rpb24iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtX2RlYnVnZ2VyUGFy
c2VEYXRhKQorICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMo
Y29udGV4dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgZnVuY3Rpb24i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNv
dXJjZUVsZW1lbnRzKHN5bnRheENoZWNrZXIsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5
IG9mIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgICAgIH0KICAgICAgICAgcG9wU2NvcGUoYXN5bmNG
dW5jdGlvbkJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CiAg
ICAgfQogICAgIGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFy
dExvY2F0aW9uLCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBm
dW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwg
c3RyaWN0TW9kZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZv
LnBhcmFtZXRlckNvdW50LCBpbmZvLmZ1bmN0aW9uTGVuZ3RoLCBpbm5lclBhcnNlTW9kZSwgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwpAQCAtMjM0MSw3ICsyMzQ4LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0
aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Cb2R5KGNvbnRl
eHQsIHN5bnRheENoZWNrZXIsIHN0YXJ0TG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgY29uc3RydWN0
b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywgZnVuY3Rpb25Cb2R5VHlwZSwgZnVuY3Rpb25J
bmZvLnBhcmFtZXRlckNvdW50LCBmdW5jdGlvbkluZm8uZnVuY3Rpb25MZW5ndGgsIG1vZGUpOwog
ICAgIH07CiAKLSAgICBpZiAobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBw
ZXJGdW5jdGlvbk1vZGUgfHwgaXNBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShtb2RlKSkg
eworICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUobW9k
ZSkpIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBw
dXNoU2NvcGUoKSk7CiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBpbm5lclBhcnNlTW9kZSA9IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU7CiAgICAgICAgIGlmIChpc0FzeW5jRnVu
Y3Rpb25XcmFwcGVyUGFyc2VNb2RlKG1vZGUpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAppbmRleCA4YzQ0NzRiMDk5MzM3MmU3NDI0NjAxZGI5YWEwNjQ0NWRmOTM3ZWQ4Li4z
YTE2Zjc2YWFkMDUyNDdjZDYxNjFiYmRhOGFmMzFkZWY4NjQyNzRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTI0NSw3ICsyNDUsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlv
bkJvZHlNb2RlOgotICAgICAgICAgICAgc2V0SXNBc3luY0Fycm93RnVuY3Rpb25Cb2R5KCk7Cisg
ICAgICAgICAgICBzZXRJc0FzeW5jRnVuY3Rpb25Cb2R5KCk7CiAgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggYTBkNzQwNDk0MTVl
NGI4NDczNTYyZTM2ZTYyMjBkMzBjZTUxYmE2YS4uNmRhODgzN2EzNzk0MTcyYjRjNTU2YjM3ZDIz
Zjk5NzZlZTZmMGIzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9k
ZXMuaApAQCAtMTQ4LDYgKzE0OCwzMiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNZXRob2RQYXJz
ZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKICAgICAgICAgU291cmNlUGFyc2VNb2Rl
OjpBc3luY01ldGhvZE1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7CiB9CiAKK0FMV0FZU19JTkxJ
TkUgYm9vbCBpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUoU291cmNlUGFy
c2VNb2RlIHBhcnNlTW9kZSkKK3sKKyAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KAorICAg
ICAgICBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlLAorICAgICAgICBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKK30KKwor
QUxXQVlTX0lOTElORSBib29sIGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNl
TW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHJldHVybiBTb3VyY2VQYXJz
ZU1vZGVTZXQoCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0
aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSwKKyAg
ICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKK30K
KworQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCisgICAg
ICAgIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsCisgICAgICAgIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKK30KKwor
CiBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNb2R1bGVQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSkgCiB7IAogICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTBkMTUyZWMyN2Y4OWRhYzliNDUzZTg4MDliNjUyNDg1Y2E1
YzE1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fz
eW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3IuaCIKKworI2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJG
dW5jdGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKK2NvbnN0IENsYXNzSW5mbyBBc3luY0Z1bmN0aW9uQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKKwor
QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVj
dHVyZSkKK3sKK30KKwordm9pZCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlKQoreworICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiQXN5bmNGdW5jdGlvbiIpOworICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlw
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAgLy8gTnVtYmVyIG9m
IGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBE
b250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25z
dHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5n
bG9iYWxPYmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYykpOwor
fQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFyZ0xpc3QgYXJncyhl
eGVjKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMs
IGFzSW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdz
LCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7Cit9CisKK0NhbGxUeXBlIEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxE
YXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxBc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworfQorCitDb25zdHJ1Y3RU
eXBlIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBD
b25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uID0gY29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVy
biBDb25zdHJ1Y3RUeXBlOjpIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDM1YTJjMWU0ZjkxNWNhYzBiNGIxNzczZTZkMDU4OWUyNzQ3NDdk
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU7CisKK2NsYXNzIEFzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIERFQ0xBUkVfSU5GTzsKKwor
ICAgIHN0YXRpYyBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJv
dG90eXBlKQorICAgIHsKKyAgICAgICAgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
cj4odm0uaGVhcCkpIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAg
ICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBhc3luY0Z1bmN0aW9uUHJvdG90
eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJiwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSopOworICAgIHN0YXRpYyBDb25zdHJ1
Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0
YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMWYwZTEwNmVlNjcx
MzZlOTI3MDFkNjhjMzlkOTViMmZjNDg2NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMCwwICsx
LDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBp
Z2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5o
IgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVk
ZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIu
aCIKKyNpbmNsdWRlICJMZXhlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUpIH07CisKK0FzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OkFzeW5jRnVuY3Rpb25Qcm90
b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTQzo6SlNOb25GaW5h
bE9iamVjdCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEFzeW5jRnVuY3Rpb25Qcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygm
dm0sICJBc3luY0Z1bmN0aW9uIiksIERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHZtLnByb3Rv
dHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIyMDFlNmI4ZmQ1ODk4YTIyMWUwNjJhNzhmM2VhNjBkZWE3OWE4
MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBzdGF0aWMgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBBc3luY0Z1bmN0aW9u
UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0Z1
bmN0aW9uUHJvdG90eXBlPih2bS5oZWFwKSkgQXN5bmNGdW5jdGlvblByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAg
IHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90bykKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
KworcHJpdmF0ZToKKyAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZDJmMzM1MmQ2MDY4YjEx
OWZlMDQ5MzEwYzkzODg2N2YyNzk4YjUxMi4uNTE0NTJlYjc1NDkxYjNkYmFiYzRmMDhkMDYzNjA2
YmIyMjYzMDU4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1
ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAg
LTkzLDE4ICs5NCwzMyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxF
bmFibGVkQ2hlY2soCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKKyAgICBjb25zdCBjaGFyKiBwcmVmaXggPSBudWxs
cHRyOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKGZ1
bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkgeworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlOjpGdW5jdGlvbjoKKyAgICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blN0cnVjdHVyZSgpOworICAgICAgICBwcmVmaXggPSAie2Z1bmN0aW9uICI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3I6CisgICAg
ICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUo
KTsKKyAgICAgICAgcHJlZml4ID0gIntmdW5jdGlvbiAqIjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jOgorICAgICAgICBzdHJ1Y3R1cmUg
PSBnbG9iYWxPYmplY3QtPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgcHJlZml4
ID0gInthc3luYyBmdW5jdGlvbiAiOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICAvLyBI
b3cgd2Ugc3RyaW5naWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIg
Y29tcGF0aWJpbGl0eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0MzUwLgogICAgIFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1w
dHkoKSkKLSAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlv
bkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3Ig
PyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOworICAgICAg
ICBwcm9ncmFtID0gbWFrZVN0cmluZyhwcmVmaXgsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigp
IHtcblxufX0iKTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQotICAgICAgICBwcm9n
cmFtID0gbWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9
PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBmdW5jdGlv
bk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSwgIlxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcocHJlZml4LCBm
dW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSwgIlxufX0iKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRl
ciBidWlsZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIntmdW5jdGlvbiAiKTsK
LSAgICAgICAgaWYgKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGU6OkdlbmVyYXRvcikKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcqJyk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHByZWZpeCk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1
bmN0aW9uTmFtZS5zdHJpbmcoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYyku
Z2V0KCkpOwpAQCAtMTI2LDEyICsxNDIsMjAgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9u
U2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CiAgICAgfQogCi0gICAgU3RydWN0dXJlKiBzdWJjbGFz
c1N0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4
ZWMsIG5ld1RhcmdldCwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3Ry
dWN0aW9uTW9kZTo6R2VuZXJhdG9yID8gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGdW5jdGlvblN0
cnVjdHVyZSgpIDogZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1
Y3R1cmUqIHN1YmNsYXNzU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xh
c3NTdHJ1Y3R1cmUoZXhlYywgbmV3VGFyZ2V0LCBzdHJ1Y3R1cmUpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAgaWYgKGZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikKKyAgICBzd2l0Y2gg
KGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkgeworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlOjpGdW5jdGlvbjoKKyAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
ZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUp
OworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3I6CiAgICAgICAg
IHJldHVybiBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBnbG9iYWxP
YmplY3QtPmdsb2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKLSAgICByZXR1cm4gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgp
LCBzdWJjbGFzc1N0cnVjdHVyZSk7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6
OkFzeW5jOgorICAgICAgICByZXR1cm4gSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0
aW9uLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAg
ICB9CisKKyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5k
ZXggMzFjMzNkNmFmNGZmMTJiYzI0YzFlMmI1YmY0ZTU1NThkNzY1NjkwNi4uZGVlZTlhNTVkNmYy
YzYxZTlmNzE0NDgzYjMxYWJkNTdmYjFjYWU1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTgsNiArNTgsNyBAQCBw
cml2YXRlOgogZW51bSBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgewogICAgIEZ1bmN0
aW9uLAogICAgIEdlbmVyYXRvciwKKyAgICBBc3luYywKIH07CiAKIEpTT2JqZWN0KiBjb25zdHJ1
Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBj
b25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBj
b25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZTo6RnVuY3Rpb24sIEpTVmFsdWUgbmV3VGFyZ2V0ID0gSlNWYWx1
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNG
dW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFiYTc0MzcyM2JkYzdmYWVlZmY2MjUxZTJmZjJhMmRkYzY0Mjhl
NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fz
eW5jRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNs
dWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXN5bmNG
dW5jdGlvbjo6c19pbmZvID0geyAiQXN5bmNGdW5jdGlvbiIsICAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQXN5bmNGdW5jdGlvbikgfTsKKworSlNBc3luY0Z1
bmN0aW9uOjpKU0FzeW5jRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uo
dm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0pTQXN5bmNGdW5jdGlv
biogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7Cisg
ICAgSlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNBc3luY0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNBc3luY0Z1bmN0aW9uKHZtLCBleGVj
dXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBBU1NFUlQoYXN5bmNGdW5jdGlvbi0+c3Ry
dWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICBhc3luY0Z1bmN0aW9uLT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcmV0dXJuIGFzeW5jRnVuY3Rpb247Cit9CisKK0pTQXN5bmNGdW5jdGlv
biogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5bmNG
dW5jdGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFs
T2JqZWN0KCktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgZXhlY3V0YWJsZS0+c2lu
Z2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGFzeW5jRnVuY3Rpb24sICJBbGxvY2F0
aW5nIGFuIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIGFzeW5jRnVuY3Rpb247Cit9CisK
K0pTQXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBKU0FzeW5jRnVuY3Rpb24qIGFzeW5jRnVuY3Rpb24gPSBjcmVhdGVJbXBs
KHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBleGVjdXRhYmxlLT5zaW5n
bGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgYXN5bmNGdW5jdGlvbiwgIkFsbG9jYXRp
bmcgYW4gYXN5bmMgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gYXN5bmNGdW5jdGlvbjsKK30KKwor
SlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJl
YWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIHJldHVybiBjcmVhdGVJbXBsKHZtLCBleGVjdXRh
YmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5hc3luY0Z1bmN0aW9uU3RydWN0dXJl
KCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FzeW5jRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNG
dW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZGE4N2RiNmQzODVhNzlkNTU3NmMxYjcyYTEzNGNhM2Uy
MWJmMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FzeW5jRnVuY3Rpb24uaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU0FzeW5jRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNs
YXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1
bmN0aW9uIEJhc2U7CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAg
ICBzdGF0aWMgSlNBc3luY0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCBKU1Njb3BlKik7CisgICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBKU0Fz
eW5jRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMgc2l6ZV90
IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIHJl
dHVybiBzaXplb2YoSlNBc3luY0Z1bmN0aW9uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Qp
OworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0FzeW5jRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4
ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CisKKyAgICBzdGF0aWMgSlNBc3luY0Z1
bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0
cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZjQ4Y2JjZjA5MTMyY2Fh
NjdlYzcxZjU3NTE0OTAwYzhlY2UwMjgwYi4uYzRjM2NlMGM5OWQ3YTQxY2Y3MzdmZGU1ZDdmYWQ1
YmRhYzZmNzExYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQXJy
YXlQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNp
bmNsdWRlICJBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQm9vbGVhbkNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkJ1aWx0
aW5OYW1lcy5oIgpAQCAtNjMsNiArNjUsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIK
ICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtNTg1LDYgKzU4OCw4IEBAIG1fICMjIHByb3Bl
ck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoCiAgICAgbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLnNldCh2bSwgdGhpcywg
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0
b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5zZXQo
dm0sIHRoaXMsIChGdW5jdGlvbkNvbnN0cnVjdG9yKilmdW5jdGlvbkNvbnN0cnVjdG9yKTsKKwog
ICAgIEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCks
IG1fc3BlY2llc0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yLnNl
dCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgCkBAIC02MzAsNyArNjM1LDE3IEBA
IG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jCiAKICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS0+cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpLCBEb250RW51bSB8IFJlYWRPbmx5
KTsKICAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtX2dlbmVyYXRvclByb3Rv
dHlwZS5nZXQoKSwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgCisKKyAgICBtX2FzeW5jRnVu
Y3Rpb25TdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBbXShMYXp5Q2xhc3NTdHJ1Y3R1cmU6
OkluaXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBl
KiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRl
KGluaXQudm0sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZt
LCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsK
KyAgICAgICAgICAgIGluaXQuc2V0UHJvdG90eXBlKGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOwor
ICAgICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQucHJvdG90eXBlKSk7CisgICAgICAgICAg
ICBpbml0LnNldENvbnN0cnVjdG9yKFByb3BlcnR5TmFtZShudWxscHRyKSwgQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0
aW9uQ29uc3RydWN0b3IuZ2V0KCkpLCBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKSk7CisKKyAgICAg
ICAgICAgIGluaXQuZ2xvYmFsLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihpbml0LnZtLCBp
bml0LnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFzeW5jRnVuY3Rpb25SZXN1bWVQ
cml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oaW5pdC52bSwg
YXN5bmNGdW5jdGlvblByb3RvdHlwZUFzeW5jRnVuY3Rpb25SZXN1bWVDb2RlR2VuZXJhdG9yKGlu
aXQudm0pLCBpbml0Lmdsb2JhbCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICAgICAgfSk7CisKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1
Y3RvciwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25D
b25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fYXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgYXJyYXlD
b25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMTEwMiw2ICsxMTE3LDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIudmlzaXQodmlz
aXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JB
cmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOwogCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fb2JqZWN0UHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9mdW5jdGlvblByb3RvdHlwZSk7CkBAIC0xMTEwLDYgKzExMjYsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JQcm90b3R5cGUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9nZW5lcmF0b3JQcm90
b3R5cGUpOworICAgIHRoaXNPYmplY3QtPm1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZS52aXNpdCh2
aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXJQ
cm90b3R5cGUpOwogCiAgICAgdGhpc09iamVjdC0+bV9kZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggNDA4NDZjZTI5N2I0N2MyODVlYzQwOTFjZDczNDAyOTVjMDZkYTVmMC4u
MmRkNDQxNjlkMWYxY2MwOGJhYzYxN2ViNzViMjQwZjAzNjU2MzJjOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC01Niw2ICs1Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBcnJheUNvbnN0cnVjdG9yOwogY2xhc3MgQXJyYXlQ
cm90b3R5cGU7CitjbGFzcyBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgQm9vbGVhblBy
b3RvdHlwZTsKIGNsYXNzIENvbnNvbGVDbGllbnQ7CiBjbGFzcyBEZWJ1Z2dlcjsKQEAgLTYzLDYg
KzY0LDcgQEAgY2xhc3MgRXJyb3JDb25zdHJ1Y3RvcjsKIGNsYXNzIEVycm9yUHJvdG90eXBlOwog
Y2xhc3MgRXZhbENvZGVCbG9jazsKIGNsYXNzIEV2YWxFeGVjdXRhYmxlOworY2xhc3MgRnVuY3Rp
b25Db25zdHJ1Y3RvcjsKIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogY2xhc3MgR2VuZXJhdG9y
UHJvdG90eXBlOwogY2xhc3MgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CkBAIC0yMzMsNiAr
MjM1LDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvcj4gbV9zeW50YXhFcnJvckNvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFy
cmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5cGVFcnJvckNvbnN0cnVjdG9yOwogICAg
IExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9V
UklFcnJvckNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFycmllcjxGdW5jdGlvbkNvbnN0cnVjdG9y
PiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE9iamVjdENvbnN0cnVj
dG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxBcnJheUNvbnN0cnVj
dG9yPiBtX2FycmF5Q29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0
cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKQEAgLTMwNiw2ICszMDksNyBAQCBwdWJsaWM6
CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5hbWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9h
c3luY0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2Vu
ZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9k
b2xsYXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9y
UmVzdWx0T2JqZWN0U3RydWN0dXJlOwpAQCAtNTI3LDYgKzUzMSwxOSBAQCBwdWJsaWM6CiAgICAg
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQogICAg
IEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4g
bV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAorICAgIExhenlDbGFzc1N0cnVjdHVyZSYg
bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYXN5
bmNGdW5jdGlvblN0cnVjdHVyZTsKKyAgICB9CisgICAgY29uc3QgTGF6eUNsYXNzU3RydWN0dXJl
JiBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOworICAgIH0KKyAgICBBc3luY0Z1bmN0aW9uUHJv
dG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxBc3luY0Z1bmN0aW9uUHJvdG90eXBlKj4obGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1
cmUoKS5wcm90b3R5cGUodGhpcykpOyB9CisgICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5
bmNGdW5jdGlvblByb3RvdHlwZUNvbmN1cnJlbnRseSgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8QXN5bmNGdW5jdGlvblByb3RvdHlwZSo+KGxhenlBc3luY0Z1bmN0aW9uU3RydWN0
dXJlKCkucHJvdG90eXBlQ29uY3VycmVudGx5KCkpOyB9CisgICAgU3RydWN0dXJlKiBhc3luY0Z1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1
cmUoKS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVD
b25jdXJyZW50bHkoKSBjb25zdCB7IHJldHVybiBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgp
LmdldENvbmN1cnJlbnRseSgpOyB9CisKICAgICBTdHJ1Y3R1cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X3dpdGhTY29wZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2
YWxBY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZh
dGlvblN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCA4Nzg5NDQ1NzUzM2Q0YWVjMGMxOTFiN2ZkMTA3YWY1NWVi
NmNmMmQzLi4wZDE1MWUwYTVkM2FjZWI4NDU0Mjg0M2Q4YTRjZmI0ZDlmNGJhNzJlIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyMCBAQAorMjAxNi0xMC0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtKU0NdIGltcGxlbWVudCBydW50aW1lIGZvciBhc3luYyBmdW5jdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mzc2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2Fz
eW5jLWF3YWl0LWJhc2ljLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxk
VGhyb3dBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJvd1N5bnRheEVycm9yKToKKyAgICAgICAg
KGxldC5Bc3luY0Z1bmN0aW9uLmFzeW5jKToKKyAgICAgICAgKGFzeW5jLmFzeW5jRnVuY3Rpb25G
b3JQcm90byk6CisgICAgICAgIChPYmplY3QuZ2V0UHJvdG90eXBlT2YuYXN5bmMpOgorICAgICAg
ICAoT2JqZWN0LmdldFByb3RvdHlwZU9mLmFzeW5jLm1ldGhvZCk6CisgICAgICAgIChhc3luYyk6
CisgICAgICAgIChhc3luYy5tZXRob2QpOgorICAgICAgICAoYXN5bmMuYXN5bmNOb25Db25zdHJ1
Y3RvckRlY2wpOgorICAgICAgICAoc2hvdWxkVGhyb3cubmV3LmFzeW5jKToKKyAgICAgICAgKHNo
b3VsZFRocm93Lm5ldy5hc3luYy5ub25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChhc3luYy5hc3lu
Y0RlY2wpOgorICAgICAgICAoYXN5bmMuZik6CisgICAgICAgIChNeUVycm9yKToKKyAgICAgICAg
KGFzeW5jLmFzeW5jRGVjbFRocm93ZXIpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYy5hc3lu
Yyk6CisgICAgICAgIChyZXNvbHZlTGF0ZXIpOgorICAgICAgICAocmVqZWN0TGF0ZXIpOgorICAg
ICAgICAoYXN5bmMucmVzdW1lQWZ0ZXJOb3JtYWwpOgorICAgICAgICAoTy5hc3luYy5yZXN1bWVB
ZnRlck5vcm1hbCk6CisgICAgICAgIChyZXN1bWVBZnRlck5vcm1hbEFycm93LmFzeW5jKToKKyAg
ICAgICAgKGFzeW5jLnJlc3VtZUFmdGVyVGhyb3cpOgorICAgICAgICAoTy5hc3luYy5yZXN1bWVB
ZnRlclRocm93KToKKyAgICAgICAgKHJlc3VtZUFmdGVyVGhyb3dBcnJvdy5hc3luYyk6CisgICAg
ICAgIChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZl
ZC13b3JkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKFN5bnRh
eEVycm9yLkNhbnN0cmluZ19hcHBlYXJlZF9oZXJlYXdhaXQuY2hlY2tNb2R1bGVTeW50YXhFcnJv
ci5TdHJpbmcucmF3LmF3YWl0KToKKyAgICAgICAgKGNoZWNrTW9kdWxlU3ludGF4RXJyb3IuU3Ry
aW5nLnJhdy5hd2FpdCk6CisgICAgICAgIChjaGVja01vZHVsZVN5bnRheEVycm9yLlN0cmluZy5y
YXcuYXN5bmMuYXdhaXQpOgorICAgICAgICAoU3ludGF4RXJyb3IuQ2Fubm90LmRlY2xhcmUubmFt
ZWQpOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1hd2FpdC1tb3ppbGxhLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoc2hv
dWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChhc3NlcnQp
OgorICAgICAgICAoc2hvdWxkVGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgIChtb3pTZW1hbnRp
Y3MuYXN5bmMuZW1wdHkpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZVJldHVy
bik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuc2ltcGxlQXdhaXQpOgorICAgICAgICAo
bW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZUF3YWl0QXN5bmMpOgorICAgICAgICAobW96U2VtYW50
aWNzLmFzeW5jLnJldHVybk90aGVyQXN5bmMpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5j
LnNpbXBsZVRocm93ZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmRlbGVnYXRlZFRo
cm93ZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnRyeUNhdGNoKToKKyAgICAgICAg
KG1velNlbWFudGljcy5hc3luYy50cnlDYXRjaFRocm93KToKKyAgICAgICAgKG1velNlbWFudGlj
cy5hc3luYy53ZWxsRmluYWxseSk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZmluYWxs
eU1heUZhaWwpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmVtYmVkZGVkLmFzeW5jLmlu
bmVyKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5lbWJlZGRlZCk6CisgICAgICAgICht
b3pTZW1hbnRpY3MuYXN5bmMuZmliKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5pc09k
ZC5hc3luYy5pc0V2ZW4pOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmlzT2RkKToKKyAg
ICAgICAgKG1velNlbWFudGljcy5oYXJkY29yZUZpYi5hc3luYy5maWIyKToKKyAgICAgICAgKG1v
elNlbWFudGljcy5uYW1lZEFzeW5jRXhwci5hc3luYy5zaW1wbGUpOgorICAgICAgICAobW96U2Vt
YW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFzeW5jLmZpcnN0KToKKyAgICAgICAgKG1velNl
bWFudGljcy5hc3luYy5leGVjdXRpb25PcmRlci5hc3luYy5zZWNvbmQpOgorICAgICAgICAobW96
U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFzeW5jLnRoaXJkKToKKyAgICAgICAgKG1v
elNlbWFudGljcy5hc3luYy5leGVjdXRpb25PcmRlcik6CisgICAgICAgIChtb3pTZW1hbnRpY3Mu
YXN5bmMubWlzY2VsbGFuZW91cyk6CisgICAgICAgIChtb3pTZW1hbnRpY3MudGhyb3dlcik6Cisg
ICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZGVmYXVsdEFyZ3MpOgorICAgICAgICAobW96U2Vt
YW50aWNzLnNob3VsZFRocm93KToKKyAgICAgICAgKG1velNlbWFudGljcyk6CisgICAgICAgICht
b3pNZXRob2RzLlgpOgorICAgICAgICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5hc3luYy5nZXRW
YWx1ZSk6CisgICAgICAgIChtb3pNZXRob2RzLlgucHJvdG90eXBlLnNldFZhbHVlKToKKyAgICAg
ICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuYXN5bmMuaW5jcmVtZW50KToKKyAgICAgICAgKG1v
ek1ldGhvZHMuWC5wcm90b3R5cGUuYXN5bmMuZ2V0QmFzZUNsYXNzTmFtZSk6CisgICAgICAgICht
b3pNZXRob2RzLlguYXN5bmMuZ2V0U3RhdGljVmFsdWUpOgorICAgICAgICAobW96TWV0aG9kcy5Z
LnByb3RvdHlwZS5hc3luYy5nZXRCYXNlQ2xhc3NOYW1lKToKKyAgICAgICAgKG1vek1ldGhvZHMu
WSk6CisgICAgICAgIChtb3pGdW5jdGlvbk5hbWVJbmZlcnJlbmNlLmFzeW5jLnRlc3QpOgorICAg
ICAgICAobW96U3ludGF4RXJyb3JzKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtYXdhaXQtcmVz
ZXJ2ZWQtd29yZC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoc2hvdWxk
VGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgIChBc3luY0Z1bmN0aW9uLmFzeW5jKToKKyAgICAg
ICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfYXJndW1lbnRzX2JpbmRp
bmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3lu
Yyk6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKToKKyAgICAgICAgKG5vQXJndW1lbnRzQXJy
b3cyLmFzeW5jKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGlj
YWxfbmV3LnRhcmdldF9iaW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYyk6CisgICAg
ICAgIChDMSk6CisgICAgICAgIChDMik6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jLmFzeW5j
KToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfc3VwZXJf
YmluZGluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRC
ZUFzeW5jKToKKyAgICAgICAgKEJhc2VDbGFzcy5wcm90b3R5cGUuYmFzZUNsYXNzVmFsdWUpOgor
ICAgICAgICAoQmFzZUNsYXNzLnByb3RvdHlwZS5nZXQgcHJvcGVydHkpOgorICAgICAgICAoQmFz
ZUNsYXNzKToKKyAgICAgICAgKENoaWxkQ2xhc3MucHJvdG90eXBlLmFzeW5jU3VwZXJQcm9wKToK
KyAgICAgICAgKENoaWxkQ2xhc3MucHJvdG90eXBlLmFzeW5jU3VwZXJQcm9wMik6CisgICAgICAg
IChDaGlsZENsYXNzKToKKyAgICAgICAgKENoaWxkQ2xhc3MyKToKKyAgICAgICAgKiBzdHJlc3Mv
YXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfdGhpc19iaW5kaW5nLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoZC55
KToKKwogMjAxNi0xMC0yMSAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtKU0NdIGRvbid0IGNyYXNoIHdoZW4gYXJndW1lbnRzIHRvIGBuZXcgRnVuY3Rpb24o
KWAgcHJvZHVjZSB1bmV4cGVjdGVkIEFTVApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5
bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtYXJndW1lbnRzLWJpbmRpbmcuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1hcmd1bWVudHMtYmluZGluZy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mNTFhZmRjOTMxZjE2MDFhZjQ3OWY5MDZlYjhmYTM2YWRlZmFhYjQ3Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxl
eGljYWwtYXJndW1lbnRzLWJpbmRpbmcuanMKQEAgLTAsMCArMSw1MCBAQAorLy8gVGhpcyB0ZXN0
IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxl
ZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQs
IGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQorICAgICAgICBtc2cgPSAi
IjsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1z
ZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5j
dGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7
CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1
ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7
IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNr
cygpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBz
aG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJv
d0FzeW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2
YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFj
dHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJy
b3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisK
KyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIg
KyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3Qg
dGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBl
cnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYg
KG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsg
bWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisK
K3ZhciBub0FyZ3VtZW50c0Fycm93ID0gYXN5bmMgKCkgPT4gYXdhaXQgWy4uLmFyZ3VtZW50c107
CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IG5vQXJndW1lbnRzQXJyb3coMSwgMiwgMyksIFJlZmVy
ZW5jZUVycm9yKTsKK3ZhciBub0FyZ3VtZW50c0Fycm93MiA9IGFzeW5jICgpID0+IHsgcmV0dXJu
IGF3YWl0IFsuLi5hcmd1bWVudHNdOyB9CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IG5vQXJndW1l
bnRzQXJyb3cyKDEsIDIsIDMpLCBSZWZlcmVuY2VFcnJvcik7CisKK3Nob3VsZEJlQXN5bmMoIlsx
LDIsM10iLCAoKSA9PiAoZnVuY3Rpb24oKSB7IHJldHVybiAoYXN5bmMgKCkgPT4gSlNPTi5zdHJp
bmdpZnkoWy4uLmFyZ3VtZW50c10pKSgpOyB9KSgxLCAyLCAzKSk7CitzaG91bGRCZUFzeW5jKCJb
NCw1LDZdIiwgKCkgPT4gKGZ1bmN0aW9uKCkgeyByZXR1cm4gKGFzeW5jICgpID0+IHsgcmV0dXJu
IEpTT04uc3RyaW5naWZ5KFsuLi5hd2FpdCBhcmd1bWVudHNdKSB9KSgpOyB9KSg0LCA1LCA2KSk7
CisKK3ZhciBhcmdzQmluZGluZzsKK3Nob3VsZEJlQXN5bmMoYXJnc0JpbmRpbmcsICgpID0+IChm
dW5jdGlvbigpIHsgYXJnc0JpbmRpbmcgPSBhcmd1bWVudHM7IHJldHVybiAoYXN5bmMgKCkgPT4g
YXJndW1lbnRzKSgpIH0pKDEsIDIsIDMpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Fz
eW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQtYmluZGluZy5qcyBiL0pTVGVz
dHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQtYmluZGlu
Zy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40MjZhMzk4M2Y3YTkyNzQwZWU0NzhjM2ZmN2JiODMwYzc4NWFlNDA5
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25z
LWxleGljYWwtbmV3LnRhcmdldC1iaW5kaW5nLmpzCkBAIC0wLDAgKzEsNTUgQEAKKy8vIFRoaXMg
dGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVu
YWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVj
dGVkLCBhY3R1YWwsIG1zZykgeworICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNn
ID0gIiI7CisgICAgZWxzZQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIg
KyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKwor
ZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0
dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24o
dmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJv
cikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3Jv
dGFza3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisg
ICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3dBc3luYyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7Cisg
ICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkg
eyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhh
ZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygp
OworCisgICAgaWYgKCFoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQg
bm90IHRocm93LiIpOworICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAi
ICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAg
IGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAn
IiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOwor
fQorCitmdW5jdGlvbiBDMSgpIHsKKyAgICByZXR1cm4gYXN5bmMgKCkgPT4gYXdhaXQgbmV3LnRh
cmdldDsKK30KKworZnVuY3Rpb24gQzIoKSB7CisgICAgcmV0dXJuIGFzeW5jICgpID0+IHsgcmV0
dXJuIGF3YWl0IG5ldy50YXJnZXQgfTsKK30KKworc2hvdWxkQmVBc3luYyhDMSwgbmV3IEMxKCkp
Oworc2hvdWxkQmVBc3luYyh1bmRlZmluZWQsIEMxKCkpOworc2hvdWxkQmVBc3luYyhDMiwgbmV3
IEMyKCkpOworc2hvdWxkQmVBc3luYyh1bmRlZmluZWQsIEMyKCkpOworCitzaG91bGRUaHJvd0Fz
eW5jKGFzeW5jICgpID0+IGF3YWl0IG5ldy50YXJnZXQsIFJlZmVyZW5jZUVycm9yKTsKK3Nob3Vs
ZFRocm93QXN5bmMoYXN5bmMgKCkgPT4geyByZXR1cm4gYXdhaXQgbmV3LnRhcmdldDsgfSwgUmVm
ZXJlbmNlRXJyb3IpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVu
Y3Rpb25zLWxleGljYWwtc3VwZXItYmluZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFy
cm93LWZ1bmN0aW9ucy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhiZjBm
OWFjZTNjNzVmN2Q4ZjdlYmNiMjAzZjczOGRiMzljOWZkYgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcu
anMKQEAgLTAsMCArMSw1NSBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdf
QVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNr
aXAKKworCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBp
ZiAobXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAg
bXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIu
IEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhw
ZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBm
YWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9
LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1
YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJy
b3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1
YWwsIG1zZyk7Cit9CisKK2NsYXNzIEJhc2VDbGFzcyB7CisgICAgYmFzZUNsYXNzVmFsdWUoKSB7
CisgICAgICAgIHJldHVybiAiQmFzZUNsYXNzVmFsdWUiOworICAgIH0KKyAgICBnZXQgcHJvcGVy
dHkoKSB7CisgICAgICAgIHJldHVybiAidGVzdCEiOworICAgIH0KK30KKworY2xhc3MgQ2hpbGRD
bGFzcyBleHRlbmRzIEJhc2VDbGFzcyB7CisgICAgYXN5bmNTdXBlclByb3AoKSB7CisgICAgICAg
IHJldHVybiBhc3luYyB4ID0+IHN1cGVyLmJhc2VDbGFzc1ZhbHVlKCk7CisgICAgfQorICAgIGFz
eW5jU3VwZXJQcm9wMigpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jIHggPT4geyByZXR1cm4gc3Vw
ZXIuYmFzZUNsYXNzVmFsdWUoKTsgfQorICAgIH0KK30KKworLy8gRklYTUU6IHN1cGVyIGJpbmRp
bmdzIGluIGFzeW5jIGFycm93IGZ1bmN0aW9ucyBhcmUgYnJva2VuCitzaG91bGRCZUFzeW5jKCJC
YXNlQ2xhc3NWYWx1ZSIsIG5ldyBDaGlsZENsYXNzKCkuYXN5bmNTdXBlclByb3AoKSk7CitzaG91
bGRCZUFzeW5jKCJCYXNlQ2xhc3NWYWx1ZSIsIG5ldyBDaGlsZENsYXNzKCkuYXN5bmNTdXBlclBy
b3AyKCkpOworCitjbGFzcyBDaGlsZENsYXNzMiBleHRlbmRzIEJhc2VDbGFzcyB7CisgICAgY29u
c3RydWN0b3IoKSB7CisgICAgICAgIHJldHVybiBhc3luYyAoc2VsZiA9IHN1cGVyKCkpID0+IHNl
bGYuYmFzZUNsYXNzVmFsdWUoKSArICcgJyArIHN1cGVyLnByb3BlcnR5OworICAgIH0KK30KKwor
c2hvdWxkQmVBc3luYygiQmFzZUNsYXNzVmFsdWUgdGVzdCEiLCBuZXcgQ2hpbGRDbGFzczIoKSk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNh
bC10aGlzLWJpbmRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMt
bGV4aWNhbC10aGlzLWJpbmRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJhZmExMTNmYTkxMjZjM2UxNjdm
YWU0MTFjM2EwNGU4N2ExMWI1YQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2Fz
eW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXRoaXMtYmluZGluZy5qcwpAQCAtMCwwICsxLDMw
IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZ
TlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBz
aG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAobXNnID09PSB2b2lkIDAp
CisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1z
ZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBl
Y3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7
CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50
aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAg
ZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7Cisg
ICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93
IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK3Zh
ciBkID0gKHsgeCA6ICJiYXIiLCB5IDogZnVuY3Rpb24oKSB7IHJldHVybiBhc3luYyB6ID0+IHRo
aXMueCArIHo7IH19KS55KCk7Cit2YXIgZSA9IHsgeCA6ICJiYXoiLCB5IDogZCB9OworCitzaG91
bGRCZUFzeW5jKCJiYXJsZXkiLCAoKSA9PiBkKCJsZXkiKSk7CitzaG91bGRCZUFzeW5jKCJiYXJs
ZXkiLCAoKSA9PiBlLnkoImxleSIpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5j
LWF3YWl0LWJhc2ljLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZThmMjA2NTM2NTNlY2FjZDdmM2VkYjYzYmIzMmQxMWI3NGE5MmQzZgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzCkBAIC0wLDAg
KzEsMjk5IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNU
SU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5j
dGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cgPSAiIikgeworICAgIGlmIChtc2cp
CisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBh
Y3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRC
ZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhh
ZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwg
PSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0g
dHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAg
aWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBl
Y3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhydW4sIGVycm9y
VHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFs
c2U7CisKKyAgICB0cnkgeworICAgICAgICBhY3R1YWwgPSBydW4oKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgICAgYWN0dWFsID0gZTsKKyAgICB9
CisKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
ICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBu
b3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY2VkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiAr
IGVycm9yVHlwZS5uYW1lICsgIiAsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAg
aWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICci
ICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsK
KyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRo
ZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBm
dW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAg
ICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmICghaGFkRXJyb3IpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBl
Lm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5zdGFu
Y2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBy
dW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IHRocmV3ICciICsg
YWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5tZXNz
YWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBy
dW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFjdHVh
bC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dTeW50YXhFcnJvcihz
dHIsIG1lc3NhZ2UpIHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHN0cik7CisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgYCIgKyBzdHIgKyAiYCB0byB0aHJvdyBhIFN5bnRheEVy
cm9yLCBidXQgZGlkIG5vdCB0aHJvdy4iKQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYg
KGUuY29uc3RydWN0b3IgIT09IFN5bnRheEVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCBgIiArIHN0ciArICJgIHRvIHRocm93IGEgU3ludGF4RXJyb3IsIGJ1dCB0
aHJldyAnIiArIGUgKyAiJyIpOworICAgICAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGUu
bWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgYCIgKyBzdHIgKyAiYCB0byB0aHJvdyBTeW50YXhFcnJvcjogJyIgKyBtZXNzYWdlICsgIics
IGJ1dCB0aHJldyAnIiArIGUgKyAiJyIpOworICAgIH0KK30KKworLy8gRG8gbm90IGluc3RhbGwg
YEFzeW5jRnVuY3Rpb25gIGNvbnN0cnVjdG9yIG9uIGdsb2JhbCBvYmplY3QKK3Nob3VsZEJlKHVu
ZGVmaW5lZCwgdGhpcy5Bc3luY0Z1bmN0aW9uKTsKK2xldCBBc3luY0Z1bmN0aW9uID0gKGFzeW5j
IGZ1bmN0aW9uKCkge30pLmNvbnN0cnVjdG9yOworCisvLyBMZXQgZnVuY3Rpb25Qcm90b3R5cGUg
YmUgdGhlIGludHJpbnNpYyBvYmplY3QgJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlLgorYXN5bmMg
ZnVuY3Rpb24gYXN5bmNGdW5jdGlvbkZvclByb3RvKCkge30KK3Nob3VsZEJlKEFzeW5jRnVuY3Rp
b24ucHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmNGdW5jdGlvbkZvclByb3Rv
KSk7CitzaG91bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlw
ZU9mKGFzeW5jIGZ1bmN0aW9uKCkge30pKTsKK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90
eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmMgKCkgPT4ge30pKTsKK3Nob3VsZEJlKEFz
eW5jRnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoeyBhc3luYyBtZXRo
b2QoKSB7fSB9Lm1ldGhvZCkpOworCisvLyBGSVhNRTogQXN5bmNGdW5jdGlvbiBjb25zdHJ1Y3Rv
ciBzaG91bGQgYnVpbGQgZnVuY3Rpb25zIHdpdGggY29ycmVjdCBwcm90b3R5cGUuCisvLyBzaG91
bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKEFzeW5j
RnVuY3Rpb24oKSkpOworCisvLyBBc3luY0Z1bmN0aW9uQ3JlYXRlIGRvZXMgbm90IHByb2R1Y2Ug
YW4gb2JqZWN0IHdpdGggYSBQcm90b3R5cGUKK3Nob3VsZEJlKHVuZGVmaW5lZCwgYXN5bmNGdW5j
dGlvbkZvclByb3RvLnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgYXN5bmNGdW5jdGlvbkZv
clByb3RvLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQs
IChhc3luYyBmdW5jdGlvbigpIHt9KS5wcm90b3R5cGUpOworc2hvdWxkQmUoZmFsc2UsIChhc3lu
YyBmdW5jdGlvbigpIHt9KS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOworc2hvdWxkQmUo
dW5kZWZpbmVkLCAoYXN5bmMoKSA9PiB7fSkucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCAo
YXN5bmMoKSA9PiB7fSkuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKK3Nob3VsZEJlKHVu
ZGVmaW5lZCwgKHsgYXN5bmMgbWV0aG9kKCkge30gfSkubWV0aG9kLnByb3RvdHlwZSk7CitzaG91
bGRCZShmYWxzZSwgKHsgYXN5bmMgbWV0aG9kKCkge30gfSkubWV0aG9kLmhhc093blByb3BlcnR5
KCJwcm90b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQsIEFzeW5jRnVuY3Rpb24oKS5wcm90
b3R5cGUpOworc2hvdWxkQmUoZmFsc2UsIEFzeW5jRnVuY3Rpb24oKS5oYXNPd25Qcm9wZXJ0eSgi
cHJvdG90eXBlIikpOworCisvLyBBc3luY0Z1bmN0aW9uLnByb3RvdHlwZVsgQEB0b1N0cmluZ1Rh
ZyBdCit2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQXN5
bmNGdW5jdGlvbi5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZyk7CitzaG91bGRCZSgiQXN5
bmNGdW5jdGlvbiIsIGRlc2NyaXB0b3IudmFsdWUpOworc2hvdWxkQmUoZmFsc2UsIGRlc2NyaXB0
b3IuZW51bWVyYWJsZSk7CitzaG91bGRCZShmYWxzZSwgZGVzY3JpcHRvci53cml0YWJsZSk7Citz
aG91bGRCZSh0cnVlLCBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSk7CisKK3Nob3VsZEJlKDEsIEFz
eW5jRnVuY3Rpb24ubGVuZ3RoKTsKKworLy8gTGV0IEYgYmUgISBGdW5jdGlvbkFsbG9jYXRlKGZ1
bmN0aW9uUHJvdG90eXBlLCBTdHJpY3QsICJub24tY29uc3RydWN0b3IiKQorYXN5bmMgZnVuY3Rp
b24gYXN5bmNOb25Db25zdHJ1Y3RvckRlY2woKSB7fQorc2hvdWxkVGhyb3coKCkgPT4gbmV3IGFz
eW5jTm9uQ29uc3RydWN0b3JEZWNsKCksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBu
ZXcgKGFzeW5jIGZ1bmN0aW9uKCkge30pLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
bmV3ICh7IGFzeW5jIG5vbkNvbnN0cnVjdG9yKCkge30gfSkubm9uQ29uc3RydWN0b3IoKSwgVHlw
ZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyAoKCkgPT4gIm5vdCBhIGNvbnN0cnVjdG9y
ISIpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IChBc3luY0Z1bmN0aW9uKCkp
LCBUeXBlRXJyb3IpOworCisvLyBOb3JtYWwgY29tcGxldGlvbgorYXN5bmMgZnVuY3Rpb24gYXN5
bmNEZWNsKCkgeyByZXR1cm4gInRlc3QiOyB9CitzaG91bGRCZUFzeW5jKCJ0ZXN0IiwgYXN5bmNE
ZWNsKTsKK3Nob3VsZEJlQXN5bmMoInRlc3QyIiwgYXN5bmMgZnVuY3Rpb24oKSB7IHJldHVybiAi
dGVzdDIiOyB9KTsKK3Nob3VsZEJlQXN5bmMoInRlc3QzIiwgYXN5bmMgKCkgPT4gInRlc3QzIik7
CitzaG91bGRCZUFzeW5jKCJ0ZXN0NCIsICgpID0+ICh7IGFzeW5jIGYoKSB7IHJldHVybiAidGVz
dDQiOyB9IH0pLmYoKSk7CisKK2NsYXNzIE15RXJyb3IgZXh0ZW5kcyBFcnJvciB7fTsKKworLy8g
VGhyb3cgY29tcGxldGlvbgorYXN5bmMgZnVuY3Rpb24gYXN5bmNEZWNsVGhyb3dlcihlKSB7IHRo
cm93IG5ldyBNeUVycm9yKGUpOyB9CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IGFzeW5jRGVjbFRo
cm93ZXIoImJvb20hIiksIE15RXJyb3IsICJib29tISIpOworc2hvdWxkVGhyb3dBc3luYygoKSA9
PiAoYXN5bmMgZnVuY3Rpb24oZSkgeyB0aHJvdyBuZXcgTXlFcnJvcihlKTsgfSkoImJvb20hISEi
KSwgTXlFcnJvciwgImJvb20hISEiKTsKK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gKGFzeW5jIGUg
PT4geyB0aHJvdyBuZXcgTXlFcnJvcihlKSB9KSgiYm9vbSEhIiksIE15RXJyb3IsICJib29tISEi
KTsKK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gKHsgYXN5bmMgdGhyb3dlcihlKSB7IHRocm93IG5l
dyBNeUVycm9yKGUpOyB9IH0pLnRocm93ZXIoImJvb20hISEhIiksIE15RXJyb3IsICJib29tISEh
ISIpOworCitmdW5jdGlvbiByZXNvbHZlTGF0ZXIodmFsdWUpIHsgcmV0dXJuIFByb21pc2UucmVz
b2x2ZSh2YWx1ZSk7IH0KK2Z1bmN0aW9uIHJlamVjdExhdGVyKGVycm9yKSB7IHJldHVybiBQcm9t
aXNlLnJlamVjdChlcnJvcik7IH0KKworLy8gUmVzdW1lIGFmdGVyIE5vcm1hbCBjb21wbGV0aW9u
Cit2YXIgbG9nID0gW107Cithc3luYyBmdW5jdGlvbiByZXN1bWVBZnRlck5vcm1hbCh2YWx1ZSkg
eworICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVz
b2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOwor
ICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2go
InJlc3VtZToiICsgdmFsdWUpOworICAgIHJldHVybiB2YWx1ZSArIDE7Cit9CisKK3Nob3VsZEJl
QXN5bmMoNCwgKCkgPT4gcmVzdW1lQWZ0ZXJOb3JtYWwoMSkpOworc2hvdWxkQmUoInN0YXJ0OjEg
cmVzdW1lOjIgcmVzdW1lOjMiLCBsb2cuam9pbigiICIpKTsKKwordmFyIE8gPSB7CisgICAgYXN5
bmMgcmVzdW1lQWZ0ZXJOb3JtYWwodmFsdWUpIHsKKyAgICAgICAgbG9nLnB1c2goInN0YXJ0OiIg
KyB2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7
CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBh
d2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToi
ICsgdmFsdWUpOworICAgICAgICByZXR1cm4gdmFsdWUgKyAxOworICAgIH0KK307Citsb2cgPSBb
XTsKK3Nob3VsZEJlQXN5bmMoNSwgKCkgPT4gTy5yZXN1bWVBZnRlck5vcm1hbCgyKSk7CitzaG91
bGRCZSgic3RhcnQ6MiByZXN1bWU6MyByZXN1bWU6NCIsIGxvZy5qb2luKCIgIikpOworCit2YXIg
cmVzdW1lQWZ0ZXJOb3JtYWxBcnJvdyA9IGFzeW5jICh2YWx1ZSkgPT4geworICAgIGxvZy5wdXNo
KCJzdGFydDoiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVl
ICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdh
aXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFs
dWUpOworICAgIHJldHVybiB2YWx1ZSArIDE7Cit9OworbG9nID0gW107CitzaG91bGRCZUFzeW5j
KDYsICgpID0+IHJlc3VtZUFmdGVyTm9ybWFsQXJyb3coMykpOworc2hvdWxkQmUoInN0YXJ0OjMg
cmVzdW1lOjQgcmVzdW1lOjUiLCBsb2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyTm9y
bWFsRXZhbCA9IEFzeW5jRnVuY3Rpb24oInZhbHVlIiwgYAorICAgIGxvZy5wdXNoKCJzdGFydDoi
ICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7Cisg
ICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2
ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAg
IHJldHVybiB2YWx1ZSArIDE7CitgKTsKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg3LCAoKSA9
PiByZXN1bWVBZnRlck5vcm1hbEV2YWwoNCkpOworc2hvdWxkQmUoInN0YXJ0OjQgcmVzdW1lOjUg
cmVzdW1lOjYiLCBsb2cuam9pbigiICIpKTsKKworLy8gUmVzdW1lIGFmdGVyIFRocm93IGNvbXBs
ZXRpb24KK2FzeW5jIGZ1bmN0aW9uIHJlc3VtZUFmdGVyVGhyb3codmFsdWUpIHsKKyAgICBsb2cu
cHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0
IHJlamVjdExhdGVyKCJ0aHJvdzEiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5w
dXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3
YWl0IHJlamVjdExhdGVyKCJ0aHJvdzIiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxv
Zy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICByZXR1cm4gdmFsdWUgKyAxOworfQor
Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoMiwgKCkgPT4gcmVzdW1lQWZ0ZXJUaHJvdygxKSk7
CitzaG91bGRCZSgic3RhcnQ6MSByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJvdzIiLCBsb2cuam9p
bigiICIpKTsKKwordmFyIE8gPSB7CisgICAgYXN5bmMgcmVzdW1lQWZ0ZXJUaHJvdyh2YWx1ZSkg
eworICAgICAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgICAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICAg
ICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRl
cigidGhyb3cyIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGxvZy5wdXNo
KCJyZXN1bWU6IiArIGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZSArIDE7Cisg
ICAgfQorfQorbG9nID0gW107CitzaG91bGRCZUFzeW5jKDMsICgpID0+IE8ucmVzdW1lQWZ0ZXJU
aHJvdygyKSk7CitzaG91bGRCZSgic3RhcnQ6MiByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJvdzIi
LCBsb2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyVGhyb3dBcnJvdyA9IGFzeW5jICh2
YWx1ZSkgPT4geworICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHRyeSB7Cisg
ICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHRyeSB7
CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHJl
dHVybiB2YWx1ZSArIDE7Cit9OworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDQsICgpID0+IHJl
c3VtZUFmdGVyVGhyb3dBcnJvdygzKSk7CitzaG91bGRCZSgic3RhcnQ6MyByZXN1bWU6dGhyb3cx
IHJlc3VtZTp0aHJvdzIiLCBsb2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyVGhyb3dF
dmFsID0gQXN5bmNGdW5jdGlvbigidmFsdWUiLCBgCisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2
YWx1ZSk7CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhy
b3cxIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBl
KTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigi
dGhyb3cyIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIg
KyBlKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK2ApOworbG9nID0gW107CitzaG91
bGRCZUFzeW5jKDUsICgpID0+IHJlc3VtZUFmdGVyVGhyb3dFdmFsKDQpKTsKK3Nob3VsZEJlKCJz
dGFydDo0IHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOworCisv
LyBNZXRob29kRGVmaW5pdGlvbiBTeW50YXhFcnJvcnMKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBvYmogPSB7IGFzeW5jIGZvbyA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicu
IEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBmb28gPSB0cnVlIH07IiwgIlVuZXhwZWN0
ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgZm9vICwgYmFyIH07
IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1
bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMg
Zm9vIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9y
IGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7
IGFzeW5jIDAgOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhIHBh
cmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIG9iaiA9IHsgYXN5bmMgMCA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4
cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAwICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9r
ZW4gJywnLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgMCB9IiwgIlVuZXhwZWN0ZWQg
dG9rZW4gJ30nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOwor
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAnZm9vJyA6IHRydWUg
fTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFy
Z3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3lu
YyAnZm9vJyA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFy
ZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgb2JqID0geyBhc3luYyAnZm9vJyAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4g
RXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nIH0iLCAiVW5leHBlY3RlZCB0b2tl
biAnfScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CisKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIFsnZm9vJ10gOiB0cnVlIH07
IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1
bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMg
Wydmb28nXSA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFy
ZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgb2JqID0geyBhc3luYyBbJ2ZvbyddICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywn
LiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSB9IiwgIlVuZXhwZWN0ZWQg
dG9rZW4gJ30nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOwor
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgZm9vIDogdHJ1ZSB9OyIs
ICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEg
YXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJjbGFzcyBDIHsgYXN5bmMgZm9vID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4g
RXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVy
IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgZm9vICwg
YmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBi
ZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBmb28gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4g
RXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVy
IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAwIDog
dHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcg
YmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgMCA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tl
biAnPScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBh
cmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5j
IDAgLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5pbmcg
JygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIDAgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9
Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1l
dGVyIGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAn
Zm9vJyA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGFuIG9wZW5p
bmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nID0gdHJ1ZSB9OyIsICJVbmV4
cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMg
bWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFz
cyBDIHsgYXN5bmMgJ2ZvbycgLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVj
dGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nIH0iLCAi
VW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFz
eW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJjbGFzcyBDIHsgYXN5bmMgWydmb28nXSA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAn
OicuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFt
ZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsn
Zm9vJ10gPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVu
aW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBbJ2ZvbyddICwgYmFyIH07IiwgIlVu
ZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3lu
YyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNs
YXNzIEMgeyBhc3luYyBbJ2ZvbyddIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVk
IGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVk
LXdvcmQuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29y
ZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wOGIyNGZlNzYwYjBhM2FiMmQ5ZmY1YjE1YzM0N2ZjZjcxYzJmODE5
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJl
c2VydmVkLXdvcmQuanMKQEAgLTAsMCArMSw3MiBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVO
QUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0
aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdl
KSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsK
KyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
cnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFl
cnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAg
aWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gY2hlY2tN
b2R1bGVTeW50YXhFcnJvcihzb3VyY2UsIGVycm9yTWVzc2FnZSkgeworICAgIHNob3VsZFRocm93
KCgpID0+IGNoZWNrTW9kdWxlU3ludGF4KHNvdXJjZSksIGVycm9yTWVzc2FnZSk7Cit9CisKK2No
ZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK3ZhciBhd2FpdDsKK2AsIGBTeW50YXhF
cnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoy
YCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKGAKK2V4cG9ydCB2YXIgYXdhaXQ7CitgLCBgU3lu
dGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVs
ZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorbGV0IGF3YWl0Owor
YCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3
YAorZXhwb3J0IGxldCBhd2FpdDsKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxl
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2NvbnN0IGF3YWl0ID0gMQorYCwgYFN5bnRheEVycm9y
OiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVs
ZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZXhwb3J0IGNvbnN0
IGF3YWl0ID0gMQorYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworCitjaGVja01vZHVsZVN5bnRheEVy
cm9yKFN0cmluZy5yYXdgCitmdW5jdGlvbiBhd2FpdCgpIHt9CitgLCBgU3ludGF4RXJyb3I6IENh
bm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYSBtb2R1bGUuOjJgKTsKK2No
ZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2Z1bmN0aW9uKiBhd2FpdCgpIHt9Citg
LCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4g
YSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2FzeW5j
IGZ1bmN0aW9uIGF3YWl0KCkge30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgZnVu
Y3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhIG1vZHVsZS46MmApOworCitjaGVja01vZHVsZVN5bnRh
eEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQge2F3YWl0fSBmcm9tICdmb28nOworYCwgYFN5bnRh
eEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoy
YCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQge2ZvbyBhcyBh
d2FpdH0gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFz
IGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihT
dHJpbmcucmF3YAoraW1wb3J0ICogYXMgYXdhaXQgZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJv
cjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOwor
Y2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IGF3YWl0LCB7eCwgeSwg
en0gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFu
IGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJp
bmcucmF3YAoraW1wb3J0IGF3YWl0LCB7eCwgeSwgeix9IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4
RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJg
KTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCBhd2FpdCBmcm9t
ICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0
ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdg
CitpbXBvcnQgYXdhaXQsICogYXMgZm9vIGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENh
bm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanMgYi9KU1Rlc3RzL3N0
cmVzcy9hc3luYy1hd2FpdC1tb3ppbGxhLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNWQ2YjkyZDNlNjFlNDk4
MzllMDZjZDFkNGUxYjU4MDNlNzhhMGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1hd2FpdC1tb3ppbGxhLmpzCkBAIC0wLDAgKzEsMzA1IEBACisvKiBUaGlzIFNvdXJj
ZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGlj
CisgKiBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJp
YnV0ZWQgd2l0aCB0aGlzCisgKiBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21v
ei5vcmcvTVBMLzIuMC8uICovCisKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3
X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBz
a2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9ICIiKSB7Cisg
ICAgaWYgKG1zZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNn
ICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsK
KyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVl
KSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsg
aGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tz
KCk7CisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisgICAgc2hvdWxk
QmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3cocnVu
LCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJv
ciA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGFjdHVhbCA9IHJ1bigpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICBhY3R1YWwgPSBlOwor
ICAgIH0KKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRp
ZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY2VkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cg
IiArIGVycm9yVHlwZS5uYW1lICsgIiAsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7Cisg
ICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93
ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2Up
IHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigp
LnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAg
ICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsK
KyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlw
ZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3Rh
bmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsg
cnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiAr
IGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVz
c2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsg
cnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1
YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydChjb25kLCBtc2cgPSAiIikg
eworICAgIGlmICghY29uZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7Cit9CisKK2Z1
bmN0aW9uIHNob3VsZFRocm93U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7CisgICAgdmFyIGhh
ZEVycm9yID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzdHIpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikgeworICAgICAg
ICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlID09
PSAic3RyaW5nIikKKyAgICAgICAgICAgICAgICBhc3NlcnQoZS5tZXNzYWdlID09PSBtZXNzYWdl
LCAiRXhwZWN0ZWQgJyIgKyBtZXNzYWdlICsgIicgYnV0IHRocmV3ICciICsgZS5tZXNzYWdlICsg
IiciKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoaGFkRXJyb3IsICJEaWQgbm90IHRo
cm93IHN5bnRheCBlcnJvciIpOworfQorCisvLyBzZW1hbnRpY3MuanMKKyhmdW5jdGlvbiBtb3pT
ZW1hbnRpY3MoKSB7CisKK2FzeW5jIGZ1bmN0aW9uIGVtcHR5KCkgeworfQorCithc3luYyBmdW5j
dGlvbiBzaW1wbGVSZXR1cm4oKSB7CisgICAgcmV0dXJuIDE7Cit9CisKK2FzeW5jIGZ1bmN0aW9u
IHNpbXBsZUF3YWl0KCkgeworICAgIHZhciByZXN1bHQgPSBhd2FpdCAyOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNpbXBsZUF3YWl0QXN5bmMoKSB7CisgICAgdmFy
IHJlc3VsdCA9IGF3YWl0IHNpbXBsZVJldHVybigpOworICAgIHJldHVybiAyICsgcmVzdWx0Owor
fQorCithc3luYyBmdW5jdGlvbiByZXR1cm5PdGhlckFzeW5jKCkgeworICAgIHJldHVybiAxICsg
YXdhaXQgc2ltcGxlQXdhaXRBc3luYygpOworfQorCithc3luYyBmdW5jdGlvbiBzaW1wbGVUaHJv
d2VyKCkgeworICAgIHRocm93IG5ldyBFcnJvcigpOworfQorCithc3luYyBmdW5jdGlvbiBkZWxl
Z2F0ZWRUaHJvd2VyKCkgeworICAgIHZhciB2YWwgPSBhd2FpdCBzaW1wbGVUaHJvd2VyKCk7Cisg
ICAgcmV0dXJuIHZhbDsKK30KKworYXN5bmMgZnVuY3Rpb24gdHJ5Q2F0Y2goKSB7CisgICAgdHJ5
IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVkVGhyb3dlcigpOworICAgICAgICByZXR1cm4gJ0ZB
SUxFRCc7CisgICAgfSBjYXRjaCAoXykgeworICAgICAgICByZXR1cm4gNTsKKyAgICB9Cit9CisK
K2FzeW5jIGZ1bmN0aW9uIHRyeUNhdGNoVGhyb3coKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdh
aXQgZGVsZWdhdGVkVGhyb3dlcigpOworICAgICAgICByZXR1cm4gJ0ZBSUxFRCc7CisgICAgfSBj
YXRjaCAoXykgeworICAgICAgICByZXR1cm4gZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0KK30K
KworYXN5bmMgZnVuY3Rpb24gd2VsbEZpbmFsbHkoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdh
aXQgZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0dXJu
ICdGQUlMRUQnOworICAgIH0gZmluYWxseSB7CisgICAgICAgIHJldHVybiA2OworICAgIH0KK30K
KworYXN5bmMgZnVuY3Rpb24gZmluYWxseU1heUZhaWwoKSB7CisgICAgdHJ5IHsKKyAgICAgICAg
YXdhaXQgZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0
dXJuIDU7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgcmV0dXJuIGRlbGVnYXRlZFRocm93ZXIo
KTsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGVtYmVkZGVkKCkgeworICAgIGFzeW5jIGZ1
bmN0aW9uIGlubmVyKCkgeworICAgICAgICByZXR1cm4gNzsKKyAgICB9CisgICAgcmV0dXJuIGF3
YWl0IGlubmVyKCk7Cit9CisKKy8vIHJlY3Vyc2lvbiwgaXQgd29ya3MhCithc3luYyBmdW5jdGlv
biBmaWIobikgeworICAgIHJldHVybiAobiA9PSAwIHx8IG4gPT0gMSkgPyBuIDogYXdhaXQgZmli
KG4gLSAxKSArIGF3YWl0IGZpYihuIC0gMik7Cit9CisKKy8vIG11dHVhbCByZWN1cnNpb24KK2Fz
eW5jIGZ1bmN0aW9uIGlzT2RkKG4pIHsKKyAgICBhc3luYyBmdW5jdGlvbiBpc0V2ZW4obikgewor
ICAgICAgICByZXR1cm4gbiA9PT0gMCB8fCBhd2FpdCBpc09kZChuIC0gMSk7CisgICAgfQorICAg
IHJldHVybiBuICE9PSAwICYmIGF3YWl0IGlzRXZlbihuIC0gMSk7Cit9CisKKy8vIHJlY3Vyc2lv
biwgdGFrZSB0aHJlZSEKK3ZhciBoYXJkY29yZUZpYiA9IGFzeW5jIGZ1bmN0aW9uIGZpYjIobikg
eworICAgIHJldHVybiAobiA9PSAwIHx8IG4gPT0gMSkgPyBuIDogYXdhaXQgZmliMihuIC0gMSkg
KyBhd2FpdCBmaWIyKG4gLSAyKTsKK30KKwordmFyIGFzeW5jRXhwciA9IGFzeW5jIGZ1bmN0aW9u
KCkgeworICAgIHJldHVybiAxMDsKK30KKwordmFyIG5hbWVkQXN5bmNFeHByID0gYXN5bmMgZnVu
Y3Rpb24gc2ltcGxlKCkgeworICAgIHJldHVybiAxMTsKK30KKworYXN5bmMgZnVuY3Rpb24gZXhl
Y3V0aW9uT3JkZXIoKSB7CisgICAgdmFyIHZhbHVlID0gMDsKKyAgICBhc3luYyBmdW5jdGlvbiBm
aXJzdCgpIHsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAwID8gMSA6IHZhbHVl
KTsKKyAgICB9CisgICAgYXN5bmMgZnVuY3Rpb24gc2Vjb25kKCkgeworICAgICAgICByZXR1cm4g
KHZhbHVlID0gdmFsdWUgPT09IDAgPyAyIDogdmFsdWUpOworICAgIH0KKyAgICBhc3luYyBmdW5j
dGlvbiB0aGlyZCgpIHsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAwID8gMyA6
IHZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIGF3YWl0IGZpcnN0KCkgKyBhd2FpdCBzZWNvbmQo
KSArIGF3YWl0IHRoaXJkKCkgKyA2OworfQorCithc3luYyBmdW5jdGlvbiBtaXNjZWxsYW5lb3Vz
KCkgeworICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzICYmCisgICAgICAgIGFyZ3VtZW50
cy5jYWxsZWUubmFtZSA9PT0gIm1pc2NlbGxhbmVvdXMiKQorICAgICAgICByZXR1cm4gMTQ7Cit9
CisKK2Z1bmN0aW9uIHRocm93ZXIoKSB7CisgICAgdGhyb3cgMTU7Cit9CisKK2FzeW5jIGZ1bmN0
aW9uIGRlZmF1bHRBcmdzKGFyZyA9IHRocm93ZXIoKSkgeworfQorCisvLyBBc3luYyBmdW5jdGlv
bnMgYXJlIG5vdCBjb25zdHJ1Y3RpYmxlCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgYXN5bmMg
ZnVuY3Rpb24gUGVyc29uKCkgeworICAgIH0KKyAgICBuZXcgUGVyc29uKCk7Cit9LCBUeXBlRXJy
b3IpOworCitzaG91bGRCZUFzeW5jKHVuZGVmaW5lZCwgZW1wdHkpOworc2hvdWxkQmVBc3luYygx
LCBzaW1wbGVSZXR1cm4pOworc2hvdWxkQmVBc3luYygyLCBzaW1wbGVBd2FpdCk7CitzaG91bGRC
ZUFzeW5jKDMsIHNpbXBsZUF3YWl0QXN5bmMpOworc2hvdWxkQmVBc3luYyg0LCByZXR1cm5PdGhl
ckFzeW5jKTsKK3Nob3VsZFRocm93QXN5bmMoc2ltcGxlVGhyb3dlciwgRXJyb3IpOworc2hvdWxk
QmVBc3luYyg1LCB0cnlDYXRjaCk7CitzaG91bGRCZUFzeW5jKDYsIHdlbGxGaW5hbGx5KTsKK3No
b3VsZFRocm93QXN5bmMoZmluYWxseU1heUZhaWwsIEVycm9yKTsKK3Nob3VsZEJlQXN5bmMoNywg
ZW1iZWRkZWQpOworc2hvdWxkQmVBc3luYyg4LCAoKSA9PiBmaWIoNikpOworc2hvdWxkQmVBc3lu
Yyg5LCBleGVjdXRpb25PcmRlcik7CitzaG91bGRCZUFzeW5jKDEwLCBhc3luY0V4cHIpOworc2hv
dWxkQmVBc3luYygxMSwgbmFtZWRBc3luY0V4cHIpOworc2hvdWxkQmVBc3luYygxMiwgKCkgPT4g
aXNPZGQoMTIpLnRoZW4odiA9PiB2ID8gIm9vcHMiIDogMTIpKTsKK3Nob3VsZEJlQXN5bmMoMTMs
ICgpID0+IGhhcmRjb3JlRmliKDcpKTsKK3Nob3VsZEJlQXN5bmMoMTQsICgpID0+IG1pc2NlbGxh
bmVvdXMoMSwgMiwgMykpOworc2hvdWxkQmVBc3luYygxNSwgKCkgPT4gZGVmYXVsdEFyZ3MoKS5j
YXRjaChlID0+IGUpKTsKKworfSkoKTsKKworLy8gbWV0aG9kcy5qcworKGZ1bmN0aW9uIG1vek1l
dGhvZHMoKSB7CisKK2NsYXNzIFggeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlz
LnZhbHVlID0gNDI7CisgICAgfQorICAgIGFzeW5jIGdldFZhbHVlKCkgeworICAgICAgICByZXR1
cm4gdGhpcy52YWx1ZTsKKyAgICB9CisgICAgc2V0VmFsdWUodmFsdWUpIHsKKyAgICAgICAgdGhp
cy52YWx1ZSA9IHZhbHVlOworICAgIH0KKyAgICBhc3luYyBpbmNyZW1lbnQoKSB7CisgICAgICAg
IHZhciB2YWx1ZSA9IGF3YWl0IHRoaXMuZ2V0VmFsdWUoKTsKKyAgICAgICAgdGhpcy5zZXRWYWx1
ZSh2YWx1ZSArIDEpOworICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOworICAgIH0KKyAg
ICBhc3luYyBnZXRCYXNlQ2xhc3NOYW1lKCkgeworICAgICAgICByZXR1cm4gJ1gnOworICAgIH0K
KyAgICBzdGF0aWMgYXN5bmMgZ2V0U3RhdGljVmFsdWUoKSB7CisgICAgICAgIHJldHVybiA0NDsK
KyAgICB9Cit9CisKK2NsYXNzIFkgZXh0ZW5kcyBYIHsKKyAgICBhc3luYyBnZXRCYXNlQ2xhc3NO
YW1lKCkgeworICAgICAgICByZXR1cm4gc3VwZXIuZ2V0QmFzZUNsYXNzTmFtZSgpOworICAgIH0K
K30KKwordmFyIG9iakxpdGVyYWwgPSB7CisgICAgYXN5bmMgZ2V0KCkgeworICAgICAgICByZXR1
cm4gNDU7CisgICAgfSwKKyAgICBzb21lU3R1ZmY6IDUKK307CisKK3ZhciB4ID0gbmV3IFgoKTsK
K3ZhciB5ID0gbmV3IFkoKTsKKworc2hvdWxkQmVBc3luYyg0MiwgKCkgPT4geC5nZXRWYWx1ZSgp
KTsKK3Nob3VsZEJlQXN5bmMoNDMsICgpID0+IHguaW5jcmVtZW50KCkpOworc2hvdWxkQmVBc3lu
Yyg0NCwgKCkgPT4gWC5nZXRTdGF0aWNWYWx1ZSgpKTsKK3Nob3VsZEJlQXN5bmMoNDUsICgpID0+
IG9iakxpdGVyYWwuZ2V0KCkpOworc2hvdWxkQmVBc3luYygnWCcsICgpID0+IHkuZ2V0QmFzZUNs
YXNzTmFtZSgpKTsKKworfSkoKTsKKworKGZ1bmN0aW9uIG1vekZ1bmN0aW9uTmFtZUluZmVycmVu
Y2UoKSB7CisKK2FzeW5jIGZ1bmN0aW9uIHRlc3QoKSB7IH0KKwordmFyIGFub24gPSBhc3luYyBm
dW5jdGlvbigpIHsgfQorCitzaG91bGRCZSgidGVzdCIsIHRlc3QubmFtZSk7CitzaG91bGRCZSgi
YW5vbiIsIGFub24ubmFtZSk7CisKK30pKCk7CisKKyhmdW5jdGlvbiBtb3pTeW50YXhFcnJvcnMo
KSB7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIid1c2Ugc3RyaWN0JzsgYXN5bmMgZnVuY3Rp
b24gZXZhbCgpIHt9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIndXNlIHN0cmljdCc7IGFz
eW5jIGZ1bmN0aW9uIGFyZ3VtZW50cygpIHt9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJh
c3luYyBmdW5jdGlvbiBhKGsgPSBzdXBlci5wcm9wKSB7IH0iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGEoKSB7IHN1cGVyLnByb3AoKTsgfSIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gYSgpIHsgc3VwZXIoKTsgfSIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gYShrID0gYXdhaXQgMykge30iKTsKKwor
fSkoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9hc3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMt
YXdhaXQtcmVzZXJ2ZWQtd29yZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGUxZDMzMjFjN2Y4MDA4N2JlZGYw
ZjE1NzIxYjI5NWI4MWVlZmIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5
bmMtYXdhaXQtcmVzZXJ2ZWQtd29yZC5qcwpAQCAtMCwwICsxLDE2NiBAQAorLy8gVGhpcyB0ZXN0
IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxl
ZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmQsIG1zZyA9
ICIiKSB7CisgICAgaWYgKCFjb25kKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKK30K
K25vSW5saW5lKGFzc2VydCk7CisKK2Z1bmN0aW9uIHNob3VsZFRocm93U3ludGF4RXJyb3Ioc3Ry
LCBtZXNzYWdlKSB7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAg
ICAgZXZhbChzdHIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2Vv
ZiBTeW50YXhFcnJvcikgeworICAgICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAg
ICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIikKKyAgICAgICAgICAgICAgICBhc3Nl
cnQoZS5tZXNzYWdlID09PSBtZXNzYWdlLCAiRXhwZWN0ZWQgJyIgKyBtZXNzYWdlICsgIicgYnV0
IHRocmV3ICciICsgZS5tZXNzYWdlICsgIiciKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3Nl
cnQoaGFkRXJyb3IsICJEaWQgbm90IHRocm93IHN5bnRheCBlcnJvciIpOworfQorbm9JbmxpbmUo
c2hvdWxkVGhyb3dTeW50YXhFcnJvcik7CisKK3ZhciBBc3luY0Z1bmN0aW9uID0gKGFzeW5jIGZ1
bmN0aW9uKCkge30pLmNvbnN0cnVjdG9yOworCisvLyBBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbgor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIgYXdhaXQ7IH0p
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFy
IFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5j
IGZ1bmN0aW9uKCkgeyB2YXIgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciB7YXdhaXR9ID0ge307IH0pIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIHtp
c0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
KGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCBhd2FpdDsg
fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rp
b24oKSB7IGxldCBbYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQgWy4uLmF3YWl0XSA9IFtdOyB9KSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigp
IHsgbGV0IHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0p
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9u
KCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3QgYXdhaXQ7IH0pIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkg
eyBjb25zdCBbYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCBbLi4uYXdhaXRdID0gW107IH0pIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkg
eyBjb25zdCB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307
IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0
aW9uKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBmdW5jdGlvbiBhd2Fp
dCgpIHt9IH0pIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rp
b24oKSB7IGFzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30gfSkiLCAiQ2Fubm90IGRlY2xhcmUgZnVu
Y3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbihhd2FpdCkge30pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24gZihbYXdhaXRdKSB7fSkiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKFsuLi5hd2FpdF0pIHt9
KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoLi4u
YXdhaXQpIHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0
aW9uIGYoe2F3YWl0fSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5
bmMgZnVuY3Rpb24gZih7aXNBc3luYzogYXdhaXR9KSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNG
dW5jdGlvbkRlY2xhcmF0aW9uCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlv
biBmKCkgeyB2YXIgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZigpIHsgdmFyIFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIFsuLi5hd2FpdF0gPSBbXTsg
fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsg
dmFyIHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIHtpc0FzeW5j
OiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMg
ZnVuY3Rpb24gZigpIHsgbGV0IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7
IGxldCBbLi4uYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0
IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlv
biBmKCkgeyBjb25zdCBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNv
bnN0IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNv
bnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0g
PSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1
bmN0aW9uIGYoKSB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5j
dGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7
fSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKGF3
YWl0KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24g
ZihbYXdhaXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVu
Y3Rpb24gZihbLi4uYXdhaXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRl
ciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
YXN5bmMgZnVuY3Rpb24gZiguLi5hd2FpdCkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBw
YXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoe2F3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoe2lzQXN5bmM6IGF3YWl0fSkge30iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKKworLy8gQXN5bmNBcnJvd0Z1bmN0aW9uCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
ZiA9IGFzeW5jICgpID0+IHsgdmFyIGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIgW2F3YWl0XSA9IFtdOyB9KSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIFsuLi5h
d2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBh
c3luYyAoKSA9PiB7IHZhciB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9
OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+
IHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCBhd2FpdDsgfSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQgW2F3
YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IGYgPSBhc3luYyAoKSA9PiB7IGxldCBbLi4uYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IHthd2Fp
dH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBm
ID0gYXN5bmMgKCkgPT4geyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCB7
aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3QgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3Qg
W2F3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25z
dCB7YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9
PiB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBmdW5jdGlvbiBhd2FpdCgp
IHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkg
PT4geyBhc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rp
b24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBmID0gYXN5bmMgKGF3YWl0KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoW2F3YWl0XSkgPT4ge30iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKFsuLi5hd2FpdF0pID0+IHt9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICguLi5hd2FpdCkg
PT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKHth
d2FpdH0pID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFz
eW5jICh7aXNBc3luYzogYXdhaXR9KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBh
cmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIGYgPSBhc3luYyBhd2FpdCA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworCisvLyBBc3luY01ldGhv
ZAorc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciBhd2Fp
dDsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBm
KCkgeyB2YXIgW2F3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciBbLi4uYXdhaXRdID0gW107IH0gfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIHthd2Fp
dH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBh
c3luYyBmKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciB7aXNBc3luYzogYXdh
aXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsg
YXN5bmMgZigpIHsgbGV0IGF3YWl0OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYo
KSB7IGxldCBbLi4uYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9IH0i
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMg
ZigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCB7aXNBc3luYzog
YXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCBhd2FpdDsgfSB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IFthd2Fp
dF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0
IHthd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5j
IGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGZ1bmN0aW9uIGF3
YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFz
eW5jIGYoKSB7IGFzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30gfSB9IiwgIkNhbm5vdCBkZWNsYXJl
IGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZihhd2FpdCkge30gfSAiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKFthd2FpdF0pIHt9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZihbLi4uYXdh
aXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5j
IGYoLi4uYXdhaXQpIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9
IHsgYXN5bmMgZih7YXdhaXR9KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRl
ciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIE8gPSB7IGFzeW5jIGYoe2lzQXN5bmM6IGF3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5
bmNGdW5jdGlvbiBjb25zdHJ1Y3Rvcgorc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5j
dGlvbigndmFyIGF3YWl0OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5j
RnVuY3Rpb24oJ3ZhciBbYXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiQXN5bmNGdW5jdGlvbigndmFyIFsuLi5hd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIge2F3YWl0fSA9IHt9OycpIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciB7aXNBc3lu
YzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNG
dW5jdGlvbigndmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQgYXdhaXQ7JykiLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQgW2F3YWl0XSA9IFtd
OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlv
bignbGV0IFsuLi5hd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCB7YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQge2lzQXN5bmM6
IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
QXN5bmNGdW5jdGlvbignbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IGF3YWl0Oycp
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbign
Y29uc3QgW2F3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiQXN5bmNGdW5jdGlvbignY29uc3QgWy4uLmF3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qge2F3YWl0
fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNG
dW5jdGlvbignY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qge2lzQXN5bmM6IGF3
YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5
bmNGdW5jdGlvbignZnVuY3Rpb24gYXdhaXQoKSB7fScpIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0
aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdhc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9JykiLCAi
Q2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2F3YWl0JywgJycp
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdbYXdhaXRd
JywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdb
Li4uYXdhaXRdJywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1
bmN0aW9uKCcuLi5hd2FpdCcsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRl
ciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
QXN5bmNGdW5jdGlvbigne2F3YWl0fScsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBh
cmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiQXN5bmNGdW5jdGlvbigne2lzQXN5bmM6IGF3YWl0fScsICcnKSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292466</attachid>
            <date>2016-10-21 22:42:00 -0700</date>
            <delta_ts>2016-10-21 22:49:47 -0700</delta_ts>
            <desc>Re-add op_to_this</desc>
            <filename>bug-163760-20161022013820.patch</filename>
            <type>text/plain</type>
            <size>150160</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OWEwN2Y1MTVjNGZhNjU0MGQ4YjlkYTk3MzhiZWI4YmQyOTI4OTNmLi41NjM4MTg2ZjZmODExMDU5
ZjM0ODg4ZTMzODgwYzEwYTQzNmQ5MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTcgQEAKKzIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBm
dW5jdGlvbnMgZ2VuZXJhdGUgYnl0ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3
aGljaCBpcworICAgICAgICBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb246CisgICAgICAgIAorICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5z
bGF0aW9uOgorICAgICAgICBhc3luYyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAv
LyBBZnRlciB0cmFuc2xhdGlvbjoKKyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAg
ICAgICAgIGxldCBnZW5lcmF0b3IgPSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQm9keSBvZiBhc3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgQGdlbmVyYXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5l
cmF0b3JUaGlzOiB0aGlzLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8
ZnJhbWUgc3RhdGU+LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgQXdhaXQgRXhw
cmVzc2lvbnMgYXJlIGVxdWl2YWxlbnQgdG8gbm9uLWRlbGVnYXRpbmcgWWllbGQgZXhwcmVzc2lv
bnMsIGFuZCBlbWl0IGlkZW50aWNhbCBieXRlY29kZS4KKworICAgICAgICBJbiB0aGlzIGJ1Zywg
YXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBvbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCwgYXMg
c3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGRvIG5vdCB5ZXQgd29y
ayBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5q
czogQWRkZWQuCisgICAgICAgIChhc3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19hc3luY19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3
RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZSk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6QXN5bmNG
dW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6
SlNBc3luY0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJl
bnRseSk6CisKIDIwMTYtMTAtMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVuYW1lIFdBU00gdG8gV2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDAxY2IyOTQ3MzdiMjQ0ZjIxZGI3YTk1Mzk3OWU0OTJiNzMwMDQyZDgu
LmFlMTE5YmFmZWQ2YjcwMDUyN2M1YTI0NTM0MmEzZDUxMWY5ZDkxZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTYzNSw2ICs2MzUsOCBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIHJ1bnRpbWUvQXJyYXlDb252ZW50aW9ucy5jcHAKICAgICBydW50aW1l
L0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKKyAgICBydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1l
L0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9CYXNpY0Jsb2NrTG9jYXRp
b24uY3BwCiAgICAgcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9C
b29sZWFuT2JqZWN0LmNwcApAQCAtNzExLDYgKzcxMyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCisgICAgcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0NKU1ZhbHVlLmNwcAogICAgIHJ1bnRp
bWUvSlNDYWxsZWUuY3BwCkBAIC0xMjk1LDYgKzEyOTgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
QlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJh
eUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
QXJyYXlQcm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9EYXRlUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1
bmN0aW9uUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA2NjMwNTM3MjAyNGUxZGQ5M2E0YWM3MmQwMjkwNmEzMjAzMDU0NjYyLi4yODU0
ZDVlNzk4NmRiMDkxYjJiOTg0Y2EwZTNmMGYyNDc5MGMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODksNiArODksNyBAQCBKYXZhU2NyaXB0Q29y
ZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5UHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Bc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9EYXRl
UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9GdW5jdGlvblBy
b3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvR2VuZXJhdG9yUHJv
dG90eXBlLmpzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhYTA4NGU4MTFk
YTMxNGRhNmNmYjQ3MDFhMzMzOGZiMzBjMzM3MS4uMThmZTU3MTdlYjYzNzViZDRiMDhiNGIwZWE0
ZTRkNzEzMzI1YWJjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNDMsNiAr
MTI0MywxMiBAQAogCQk1M0ZBMkFFMzFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovOyB9OwogCQk1
M0ZEMDREMzFEN0FCMjc3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQxMUQ3QUIx
ODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovOyB9OwogCQk1M0ZEMDRE
NDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZEMDREMjFEN0FCMTg3MDAzMjg3
RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi87IH07CisJCTVCNzBDRkRFMURCNjlFNjYw
MEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVu
Y3Rpb24uaCAqLzsgfTsKKwkJNUI3MENGREYxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5j
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLzsgfTsKKwkJ
NUI3MENGRTAxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRBMURCNjlF
NUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi87IH07CisJCTVCNzBDRkUx
MURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRCMURCNjlFNUMwMEVD
MjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNUI3MENGRTIxREI2
OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREMxREI2OUU1QzAwRUMyM0Y5
IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyB9OworCQk1QjcwQ0ZFMzFEQjY5RTY2
MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAv
KiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk1RDVEOEFEMTBFMEQwRUJF
MDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5
bGliICovOyB9OwogCQk1REJCMTUxQjEzMUQwQjMxMDA1NkFEMzYgLyogdGVzdGFwaS5qcyBpbiBD
b3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovOyB9OwogCQk1REJCMTUyNTEz
MUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTIxMTBEMEE0ODc4ODcwMDQ4MDI1NSAv
KiBtaW5pZG9tLmpzICovOyB9OwpAQCAtMzU0OCw2ICszNTU0LDEzIEBACiAJCTUzRkEyQUUyMUNG
MzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTNGRDA0RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29u
dmVudGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ2Fs
bGluZ0NvbnZlbnRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZEMDRE
MjFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DYWxsaW5nQ29udmVudGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXN5bmNGdW5jdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIz
RjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQXN5bmNGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVCNzBDRkRBMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGREIxREI2OUU1QzAwRUMyM0Y5IC8q
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkREMURCNjlF
NUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZHlsaWIiOyBuYW1lID0gbGliZWRpdC5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmVkaXQu
ZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTVEQUZENkNCMTQ2QjY4NjMw
MEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gSlNDLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RERERjQ0NjE0RkVFNzIyMDBCNEZCNEQgLyogTExJ
bnREZXNpcmVkT2Zmc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTElu
dERlc2lyZWRPZmZzZXRzLmg7IHBhdGggPSBMTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNTkxNSw2ICs1OTI4
LDEwIEBACiAJCQkJRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNw
cCAqLywKIAkJCQlGNjkyQTg0RTAyNTU1OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuaCAq
LywKIAkJCQkwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggKi8sCisJ
CQkJNUI3MENGREQxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgKi8sCisJCQkJNUI3MENGREMxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oICovLAorCQkJCTVCNzBDRkRCMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0
aW9uUHJvdG90eXBlLmNwcCAqLywKKwkJCQk1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJCTBGMzhEMkEwMUQ0NDE5NjYwMDY4MDQ5OSAv
KiBBdXhpbGlhcnlCYXJyaWVyLmggKi8sCiAJCQkJMEYzOEQyQTExRDQ0MTk2NjAwNjgwNDk5IC8q
IEF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmggKi8sCiAJCQkJNTI2NzhGOEMxQTAzMTAwOTAwNkEz
MDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5jcHAgKi8sCkBAIC02MTAwLDYgKzYxMTcsOCBAQAog
CQkJCTBGMkI2NkJCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5oICovLAog
CQkJCTBGMkI2NkJDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlld0lubGluZXMu
aCAqLywKIAkJCQk1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAq
LywKKwkJCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8s
CiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8s
CiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAog
CQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCkBAIC03Mjg4
LDYgKzczMDcsNyBAQAogCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheVByb3Rv
dHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1ODFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlDb25zdHJ1
Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1OTFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5qcyAqLywKKwkJCQk1QjgyNDMwNDFEQjdBQTQ5MDBFQTYzODQgLyogQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5qcyAqLywKIAkJCQlERTI2RTkwNjFDQjVERDk2MDBEMkJFODIgLyog
QnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCAqLywKIAkJCQlERTI2RTkwMjFDQjVERDA1MDBE
MkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi8sCiAJCQkJQTdEODAxQTExODgw
RDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCkBAIC03NzIwLDYgKzc3
NDAsNyBAQAogCQkJCURDM0QyQjBBMUQzNDMxNjIwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZDM0NDRkMxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGRDE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tN
YXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZFMjFEQjY5RTY2MDBFQzIzRjkg
LyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NG
RTE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QkYxNThEMTlCN0E1MzEwMDY5NUREMCAvKiBERkdCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzNDRDAwMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja1dvcmtsaXN0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTgyODgsNiArODMwOSw3IEBACiAJCQkJN0MxODRFMUIxN0JFREJE
MzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxODRFMjMxN0JF
RTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OTZCNzMxRTFCREEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNlQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZERTFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1
bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyog
SlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTFGMTdCRUUyMkUw
MDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3
MzFGMUJEQTA4RUYwMDMzMUI4NCAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTg0MjgsNiArODQ1MCw3IEBACiAJCQkJQkMxOEM0M0YwRTE2RjVDRDAwQjM0NDYw
IC8qIE5vZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUU0NUEyODE4QTFCMjU5MDAyNkQ4OEYg
LyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MTBF
MTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTVCNzBDRkUwMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MjBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MzBFMTZGNUNEMDBCMzQ0NjAg
LyogTnVtYmVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0NDBFMTZGNUNEMDBC
MzQ0NjAgLyogTnVtYmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTkyOTMsNiArOTMx
Niw3IEBACiAJCQkJQTU1NzE0QkYxQ0Q4MDRBNDAwMDREMkM2IC8qIENvbnNvbGVPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hw
b2ludFNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjcxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCNzBDRkUz
MURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQzg1MjkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGhhc2VTY29wZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUyQjFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1
cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MjJBNjIxQzE1OEU2QTAwRTJFQjk4IC8qIEIz
Q29uc3RGbG9hdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTcwNiw2ICs5NzMwLDcgQEAK
IAkJCQkwRjU1MTNBODFENUE2OENEMDBDMzJCRDggLyogRnJlZUxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkU5OUIyNEExQzI0QzNENzAwQzgyMTU5IC8qIEpJVE5lZ0dlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVy
dHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENGRTExREI2OUU2NjAwRUMyM0Y5
IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4
RTQxMTJFNzJFRjAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZCNDE1ODQxRDc4RkI0QzAwREY4RDA5IC8qIEFycmF5Q29udmVudGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTg4Myw2ICs5OTA4LDcgQEAKIAkJCQkx
NDhGMjFCNzEwN0VDNTQ3MDA0MkVDMkMgLyogTm9kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
REM2OUFBNjYxQ0Y3QTFGMjAwQzYyNzJGIC8qIE1hdGNoUmVzdWx0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENGREYxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUg
LyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDZGNTIxMUEzMkIzMTMw
MDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMy
MkU1QTIxREE2NDQzOTAwNkU3NzA5IC8qIERGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNWFiOTc5YmFkNDU1NGM2
YmM3ZjUzMjE5MWYzZWFjZjIyZDFjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2Fs
aWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVu
Y3Rpb24gYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9k
ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgbGV0IHN0YXRlID0gZ2VuZXJhdG9yLkBnZW5l
cmF0b3JTdGF0ZTsKKyAgICBsZXQgdmFsdWUgPSBAdW5kZWZpbmVkOworCisgICAgaWYgKHN0YXRl
ID09PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQgfHwgKHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0
b3JSZXN1bWVNb2RlTm9ybWFsICYmIHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVNb2Rl
VGhyb3cpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiIik7CisKKyAgICB0cnkgewor
ICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0
aW5nOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5l
cmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1l
TW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CisgICAgICAgIGlmIChnZW5lcmF0b3Iu
QGdlbmVyYXRvclN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7
CisgICAgICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUodmFsdWUpOworICAgICAgICB9
CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0
ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkBy
ZWplY3QoZXJyb3IpOworICAgIH0KKworICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZSh2YWx1
ZSkuQHRoZW4oCisgICAgICAgIGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiBAYXN5bmNGdW5jdGlv
blJlc3VtZShnZW5lcmF0b3IsIHZhbHVlLCBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCk7IH0s
CisgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IHJldHVybiBAYXN5bmNGdW5jdGlvblJlc3VtZShn
ZW5lcmF0b3IsIGVycm9yLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KTsgfSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXgg
NTc2ZGU0MDA2MDRkMTAxNDc1MWNjNjNiZWFjZWM3N2E1NWZkNGZmNy4uODRhZTNiZGEyZjAwYjkw
ZDhmMWQyMzBmNjFiYWQwOTI4YzgxMTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTA1LDYgKzEwNSw4IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuYyIsICJsZW5ndGgiIDogNCB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIsICJs
ZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FzeW5jX2Z1bmMi
LCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hc3luY19m
dW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2V0
X2Z1bmN0aW9uX25hbWUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Rh
aWxfY2FsbCIsICJsZW5ndGgiIDogOSB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCBkOTczYmNmYjEzN2MzMmMwYzZkZWVkZjNkZTBl
MWRkOTQxNjU0YzZmLi4xNjJkYjI4MmNkNTUzOTA1MDE4NTU3MTBjMjFlYmI0MTdmYTUwNWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApA
QCAtMTY0LDYgKzE2NCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9n
ZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CiAgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNf
ZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQ6CiAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOgpAQCAtMTk2LDYg
KzE5Nyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJs
b2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF91bnNpZ25lZDoK
ICAgICBjYXNlIG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgor
ICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3Bl
OgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVh
dGVfcmVzdDoKQEAgLTM4OCw2ICszOTAsOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAg
IGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgog
ICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19hc3lu
Y19mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY2Fs
bF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90
YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGIxNTIxMTJiM2E2YWViMGI1ODY4ZjZhYTIwOTllZWM1
NTY3YjJhZjguLjFhMjk5NzUyYzJmMTNjMjRlM2ViOWZiMTE1NmY0ODE3NjJjODJjMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNDYzLDYg
KzE0NjMsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAg
ICAgICBjYXNlIG9wX25ld19hc3luY19mdW5jOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfYXN5bmNfZnVuYyIp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwpAQCAtMTQ3OSw2ICsxNDg3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVy
TmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6
IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgIm5ld19hc3luY19mdW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIx
KS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3Bfc2V0X2Z1bmN0aW9uX25hbWU6IHsKICAgICAgICAgICAgIGludCBmdW5jUmVnID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbmFtZVJlZyA9ICgrK2l0KS0+dS5vcGVy
YW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAppbmRleCAyNWEzNTdiZjU2MTE2NDUwYzFiMGUyNTVjOTc3MGEyM2FkM2UxOWVjLi5l
OTE4YTkzYzI0ZTY3OGRlMTIyZDc1NTAxMTgxOTJkYjU3N2YzMTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIyLDcg
KzEyMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZU1vZGU7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0K
KyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlv
blBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRU
eXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENv
bnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbENvbnRleHRUeXBlPiht
X2V2YWxDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKaW5kZXggYmFjNDA1NDEzYTZiMmZkZDk5NzI3MmMyOGYwYzc0YTcyMzA2YTMzOC4uNmY1
NThjZjdhOTc0Yzg1MzMzYmE4NTIzMDAyMThmZTIzMTIyZTE2NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NsYXNzQ29uc3Ry
dWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJp
YWJsZXM7IH0KICAgICAKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KKyAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBh
cnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KIAogICAgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHtyZXR1cm4gc3RhdGljX2Nhc3Q8SlNDOjpEZXJpdmVk
Q29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRUeXBlKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IGY3ZTEwMzE3YTIxNGM2NDgzOTBiOTRiMThiY2ZkNzM3M2Q1Y2UxN2YuLjUzZDg3N2MyOGJi
YTc1Yzk0NGE4YTU5ZWI1MWM0MDA4NTY3ZDRkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNTgs
NyArMTU4LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAg
ICB9CiAgICAgCiAKLSAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1
bmN0aW9uQm9keVBhcnNlTW9kZShtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkpKQogICAgICAgICBw
ZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKG1fY29kZUJsb2NrLmdldCgpLCBtX2luc3RydWN0aW9u
cywgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGVJbmRleCk7CiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6
bWFrZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4obV9pbnN0cnVjdGlvbnMpKTsK
QEAgLTI2OCwxNSArMjY4LDE1IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBz
aG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNv
ZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gKGZ1bmN0aW9u
Tm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rp
b25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlv
bigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKTsKIAotICAgIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAg
ICAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMi
IHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlv
biBzY29wZS4KKyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2Rl
KHBhcnNlTW9kZSkpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIGFuZCBBc3luY0Z1bmN0aW9uIG5l
dmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSBy
ZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCiAgICAgICAgIG5l
ZWRzQXJndW1lbnRzID0gZmFsc2U7CiAKLSAgICAgICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhlIHZh
ciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwg
c2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KKyAgICAgICAgLy8gR2VuZXJhdG9yIGFuZCBB
c3luY0Z1bmN0aW9uIHVzZXMgdGhlIHZhciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZh
cmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KICAg
ICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7CiAgICAgfQogCi0gICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlv
bk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVu
Y3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSkgJiYgbmVlZHNBcmd1bWVudHMpIHsKICAg
ICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQs
IHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMiLgogICAgICAg
ICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBl
dmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgogICAgICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0
LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMgYXMgYXJndW1lbnRzIG9mIGEgd3JhcHBpbmcg
Z2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJlbmNlIGl0IGZyb20gYSBnZW5lcmF0b3IuCkBA
IC0zMjAsMTMgKzMyMCwxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogCiAgICAgZW1pdEVu
dGVyKCk7CiAKLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpCisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9k
ZShwYXJzZU1vZGUpKQogICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVy
c1sxXTsKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKICAgICBpZiAoZnVuY3Rpb25O
YW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlv
bk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlKTsKKyAgICAgICAgQVNTRVJUKCFpc0FzeW5jRnVuY3Rpb25Cb2R5
UGFyc2VNb2RlKHBhcnNlTW9kZSkpOwogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVu
Y3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0g
Y2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFy
a0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwpA
QCAtNTA1LDcgKzUwNiw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICBib29sIHNob3VsZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUg
PSAhaGF2ZVBhcmFtZXRlck5hbWVkQXJndW1lbnRzICYmICFtX2NvZGVCbG9jay0+aXNBcnJvd0Z1
bmN0aW9uKCk7CisgICAgICAgIGJvb2wgc2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJpYWJsZSA9ICFo
YXZlUGFyYW1ldGVyTmFtZWRBcmd1bWVudHMKKyAgICAgICAgICAgICYmICFTb3VyY2VQYXJzZU1v
ZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250YWlucyhtX2NvZGVCbG9jay0+cGFyc2VNb2Rl
KCkpOwogICAgICAgICBzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2Nv
cGUgPSBzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxlICYmICFpc1NpbXBsZVBhcmFtZXRlckxp
c3Q7CiAgICAgICAgIC8vIERvIG5vdCBjcmVhdGUgYXJndW1lbnRzIHZhcmlhYmxlIGluIGNhc2Ug
b2YgQXJyb3cgZnVuY3Rpb24uIFZhbHVlIHdpbGwgYmUgbG9hZGVkIGZyb20gcGFyZW50IHNjb3Bl
CiAgICAgICAgIGlmIChzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxlICYmICFzaG91bGRDcmVh
dGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2NvcGUpIHsKQEAgLTU0OSw2ICs1NTEsMjcg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25O
b2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgQVNTRVJUKCFpc0NvbnN0cnVjdG9yKCkp
OworICAgICAgICBBU1NFUlQoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lKTsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworCisgICAgICAg
IGlmIChzaG91bGRFbWl0VG9UaGlzKGZ1bmN0aW9uTm9kZSkgJiYgcGFyc2VNb2RlICE9IFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkgeworICAgICAgICAgICAgbV9jb2Rl
QmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKKyAgICAgICAgfQorCisgICAgICAgIGVtaXROZXdPYmplY3QobV9nZW5lcmF0b3JSZWdp
c3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
QXJyb3dGdW5jdGlvbkJvZHlNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZTogewogICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVj
dGx5IGJlZm9yZSBoZXJlLgogICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBq
c1VuZGVmaW5lZCgpKTsKQEAgLTU3NSwyNSArNTk4LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlu
a2UKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0
b3JLaW5kOjpOb25lKQogICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90
IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciB3aXRob3V0IHxuZXd8Iik7CiAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICBib29sIHNob3VsZEVtaXRUb1RoaXMgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+
dXNlc0V2YWwoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlVGhp
cygpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VFdmFsKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHNob3VsZEVtaXRUb1RoaXMgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKChmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkgfHwgbV9zY29w
ZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyUHJvcGVydHkoKSkgJiYgIWNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgbXVz
dCBlbWl0IHRvX3RoaXMgd2hlbiB3ZSdyZSBub3QgaW4gc3RyaWN0IG1vZGUgYmVjYXVzZSB3ZQot
ICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnZlcnQgfHRoaXN8IHRvIGFuIG9iamVjdCwg
YW5kIHRoYXQgb2JqZWN0IG1heSBiZSBwYXNzZWQKLSAgICAgICAgICAgICAgICAgICAgLy8gdG8g
YSBzdHJpY3QgZnVuY3Rpb24gYXMgfHRoaXN8LiBUaGlzIGlzIG9ic2VydmFibGUgYmVjYXVzZSB0
aGF0Ci0gICAgICAgICAgICAgICAgICAgIC8vIHN0cmljdCBmdW5jdGlvbidzIHRvX3RoaXMgd2ls
bCBqdXN0IHJldHVybiB0aGUgb2JqZWN0LgotICAgICAgICAgICAgICAgICAgICAvLwotICAgICAg
ICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGVtaXQgdGhpcyBmb3Igc3RyaWN0LW1v
ZGUgY29kZSBiZWNhdXNlCi0gICAgICAgICAgICAgICAgICAgIC8vIHN0cmljdC1tb2RlIGNvZGUg
bWF5IGNhbGwgYW5vdGhlciBzdHJpY3QgZnVuY3Rpb24sIHdoaWNoIHdpbGwKLSAgICAgICAgICAg
ICAgICAgICAgLy8gdG9fdGhpcyBpZiBpdCBkaXJlY3RseSB1c2VzIHRoaXM7IHRoaXMgaXMgT0ss
IGJlY2F1c2Ugd2UgZGVmZXIKLSAgICAgICAgICAgICAgICAgICAgLy8gdG9fdGhpcyB1bnRpbCB8
dGhpc3wgaXMgdXNlZCBkaXJlY3RseS4gU3RyaWN0LW1vZGUgY29kZSBtaWdodAotICAgICAgICAg
ICAgICAgICAgICAvLyBhbHNvIGNhbGwgYSBzbG9wcHkgbW9kZSBmdW5jdGlvbiwgYW5kIHRoYXQg
d2lsbCB0b190aGlzLCB3aGljaAotICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGRlZmVyIHRo
ZSBjb252ZXJzaW9uLCBhZ2FpbiwgdW50aWwgbmVjZXNzYXJ5LgotICAgICAgICAgICAgICAgICAg
ICBzaG91bGRFbWl0VG9UaGlzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoc2hvdWxkRW1pdFRvVGhpcykgeworICAgICAgICAgICAgICAgIGlmIChzaG91
bGRFbWl0VG9UaGlzKGZ1bmN0aW9uTm9kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9jb2Rl
QmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKICAgICAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF90b190aGlzKTsKICAgICAgICAg
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7
CkBAIC02MDgsNyArNjEzLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIC8vIFdl
IG5lZWQgbG9hZCB8c3VwZXJ8ICYgfHRoaXN8IGZvciBhcnJvdyBmdW5jdGlvbiBiZWZvcmUgaW5p
dGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjawog
ICAgIC8vIGlmIHdlIGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbi4gQmVjYXVzZSB8
c3VwZXJ8ICYgfHRoaXN8IHZhbHVlcyBjYW4gYmUgdXNlZCB0aGVyZQotICAgIGlmIChTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlID09IHBhcnNlTW9kZSAmJiAhaXNTaW1wbGVQYXJh
bWV0ZXJMaXN0KSB7CisgICAgaWYgKChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25N
b2RlKS5jb250YWlucyhwYXJzZU1vZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHx8IHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKSB7
CiAgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgZnVuY3Rpb25Ob2RlLT51
c2VzU3VwZXJQcm9wZXJ0eSgpKQogICAgICAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVu
Y3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKIApAQCAtNjI3LDEyICs2MzIsNDYgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5j
dGlvbk5vZGUsIFVubGlua2UKICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVu
IGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9u
U2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKICAgICAvLyBiZWNhdXNlIGEgZnVuY3Rpb24ncyBkZWZh
dWx0IHBhcmFtZXRlciBFeHByZXNzaW9uTm9kZXMgd2lsbCB1c2UgdGVtcG9yYXJ5IHJlZ2lzdGVy
cy4KICAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hl
Y2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7
CisKKyAgICBUcnlEYXRhKiB0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSA9IG51bGxwdHI7CisgICAg
aWYgKGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKSAmJiAhaXNTaW1w
bGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHJ5Rm9ybWFsUGFyYW1l
dGVyc1N0YXJ0ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAgICAgICB0cnlGb3Jt
YWxQYXJhbWV0ZXJzRGF0YSA9IHB1c2hUcnkodHJ5Rm9ybWFsUGFyYW1ldGVyc1N0YXJ0LmdldCgp
KTsKKyAgICB9CisKICAgICBpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVw
RnVuY3Rpb25TY29wZVN0YWNrKHBhcmFtZXRlcnMsIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCwgZnVu
Y3Rpb25Ob2RlLCBmdW5jdGlvblN5bWJvbFRhYmxlLCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgs
IGNhcHR1cmVzLCBzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2NvcGUp
OwotICAgIAorCisgICAgaWYgKGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUocGFyc2VN
b2RlKSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4g
ZGlkTm90VGhyb3cgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVtcChkaWROb3RUaHJvdy5n
ZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRpb24gPSBuZXdUZW1wb3Jh
cnkoKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93blZhbHVlID0gbmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gY2F0Y2hIZXJlID0gZW1pdExhYmVsKG5ld0xh
YmVsKCkuZ2V0KCkpOworICAgICAgICBwb3BUcnlBbmRFbWl0Q2F0Y2godHJ5Rm9ybWFsUGFyYW1l
dGVyc0RhdGEsIGV4Y2VwdGlvbi5nZXQoKSwgdGhyb3duVmFsdWUuZ2V0KCksIGNhdGNoSGVyZS5n
ZXQoKSwgSGFuZGxlclR5cGU6OkNhdGNoKTsKKworICAgICAgICAvLyByZXR1cm4gQFByb21pc2Uu
QHJlamVjdCh0aHJvd25WYWx1ZSk7CisgICAgICAgIFZhcmlhYmxlIHByb21pc2VWYXIgPSB2YXJp
YWJsZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5Qcm9taXNlUHJpdmF0ZU5h
bWUoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGVtaXRSZXNvbHZlU2Nv
cGUobmV3VGVtcG9yYXJ5KCksIHByb21pc2VWYXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcHJvbWlzZUNvbnN0cnVjdG9yID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwg
c2NvcGUuZ2V0KCksIHByb21pc2VWYXIsIFJlc29sdmVNb2RlOjpUaHJvd0lmTm90Rm91bmQpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvbWlzZVJlamVjdCA9IGVtaXRHZXRCeUlkKG5l
d1RlbXBvcmFyeSgpLCBwcm9taXNlQ29uc3RydWN0b3IuZ2V0KCksIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOworCisgICAgICAgIENhbGxB
cmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMSk7CisKKyAgICAgICAgZW1pdE1vdmUoYXJn
cy50aGlzUmVnaXN0ZXIoKSwgcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpKTsKKyAgICAgICAgZW1p
dE1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKDApLCB0aHJvd25WYWx1ZS5nZXQoKSk7CisKKyAg
ICAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZnVuY3Rpb25Ob2RlLT5maXJzdExpbmUoKSwgZnVu
Y3Rpb25Ob2RlLT5zdGFydE9mZnNldCgpLCBmdW5jdGlvbk5vZGUtPmxpbmVTdGFydE9mZnNldCgp
KTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZW1pdENhbGwobmV3VGVt
cG9yYXJ5KCksIHByb21pc2VSZWplY3QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywg
ZGl2b3QsIGRpdm90LCBkaXZvdCwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKyAgICAgICAgZW1pdFJl
dHVybihyZXN1bHQuZ2V0KCkpOworCisgICAgICAgIGVtaXRMYWJlbChkaWROb3RUaHJvdy5nZXQo
KSk7CisgICAgfQorCiAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSAgZGVmYXVsdCBwYXJhbWV0ZXIg
ZXhwcmVzc2lvbiwgdGhlbiBsb2FkaW5nIHx0aGlzfCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rpb24g
bXVzdCBiZSBkb25lCiAgICAgLy8gYWZ0ZXIgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1
ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBzZXRz
IHVwIHRoZQogICAgIC8vIFN5bWJvbFRhYmxlIHN0YWNrIGFuZCBlbWl0TG9hZFRoaXNGcm9tQXJy
b3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpIGNvbnN1bHRzIHRoZSBTeW1ib2xUYWJsZSBz
dGFjawotICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlID09IHBhcnNl
TW9kZSAmJiBpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAgICBpZiAoU291cmNlUGFyc2VNb2Rl
U2V0KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKSAmJiBpc1NpbXBsZVBh
cmFtZXRlckxpc3QpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBm
dW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkpCiAgICAgICAgICAgICBlbWl0TG9hZFRo
aXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogICAgIApAQCAtNjQyLDcg
KzY4MSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgCiAgICAgLy8gU2V0IHVwIHRo
ZSBsZXhpY2FsIGVudmlyb25tZW50IHNjb3BlIGFzIHRoZSBnZW5lcmF0b3IgZnJhbWUuIFdlIHN0
b3JlIHRoZSBzYXZlZCBhbmQgcmVzdW1lZCBnZW5lcmF0b3IgcmVnaXN0ZXJzIGludG8gdGhpcyBz
Y29wZSB3aXRoIHRoZSBzeW1ib2wga2V5cy4KICAgICAvLyBTaW5jZSB0aGV5IGFyZSBzeW1ib2wg
a2V5ZWQsIHRoZXNlIHZhcmlhYmxlcyBjYW5ub3QgYmUgcmVhY2hlZCBmcm9tIHRoZSB1c3VhbCBj
b2RlLgotICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlID09IHBhcnNl
TW9kZSkgeworICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUo
cGFyc2VNb2RlKSkgewogICAgICAgICBBU1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rl
cik7CiAgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5zZXQoKm1fdm0sIGZ1bmN0
aW9uU3ltYm9sVGFibGUpOwogICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRl
eCA9IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsKQEAgLTI2NDQsNiArMjY4MywyMSBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U2V0dGVyQnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogcHJvcGVydAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzZXR0ZXItPmlu
ZGV4KCkpOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0R2VuZXJhdG9yRmll
bGRzKFJlZ2lzdGVySUQqIG5leHRGdW5jdGlvbikKK3sKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5
LCB3ZSBqdXN0IGNyZWF0ZSBhbiBvYmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciByZWxhdGVkIGZp
ZWxkcyBhcyBpdHMgcHJvcGVydGllcyBmb3IgZWFzZS4KKyAgICAvLyBCdXQgdG8gbWFrZSBpdCBl
ZmZpY2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpTR2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2Rl
IG5ld19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysrIGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHBy
aXZhdGUgcHJvcGVydGllcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxNTQ1CisKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lz
dGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZhdGVO
YW1lKCksIG5leHRGdW5jdGlvbiwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICBl
bWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lKCksICZtX3RoaXNSZWdpc3Rlciwg
UHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dl
bmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
U3RhdGVQcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSksIFByb3Bl
cnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0
b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6
Oktub3duRGlyZWN0KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
ZWxldGVCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHkpCiB7CiAgICAgZW1pdE9wY29kZShvcF9kZWxfYnlfaWQpOwpAQCAtMjk4
Niw2ICszMDQwLDExIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvCiAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CiAgICAgICAgIG9wY29kZUlE
ID0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJy
b3dGdW5jdGlvbk1vZGU6CisgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2FzeW5jX2Z1bmNfZXhw
OworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0zMDA0LDcgKzMwNjMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeAogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lz
dGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Ci0gICAgQVNTRVJUKGZ1bmMt
Pm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGUgfHwgZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKTsKKyAgICBBU1NFUlQoU291cmNlUGFyc2VNb2RlU2V0
KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2Rl
KCkpKTsKICAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKGRzdCwgZnVuYy0+bWV0
YWRhdGEoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KQEAgLTMwMzgsNiArMzA5Nyw4IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0
LCBGdW5jdGlvbk1ldGFkYXRhCiAgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRk
RnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOwogICAgIGlmIChmdW5jdGlvbi0+
cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25N
b2RlKQogICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxz
ZSBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5j
dGlvbk1vZGUpCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2FzeW5jX2Z1bmMpOwogICAgIGVs
c2UKICAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC00NzY1LDYgKzQ4MjYsMjggQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiAgICAg
ZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOwogfQog
Citib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpzaG91bGRFbWl0VG9UaGlzKEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlKQoreworICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgbV9j
b2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0
aW9uc1VzZVRoaXMoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNl
RXZhbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICgoZnVuY3Rpb25Ob2RlLT51
c2VzU3VwZXJQcm9wZXJ0eSgpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlv
bnNVc2VTdXBlclByb3BlcnR5KCkpICYmICFtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsK
KyAgICAgICAgLy8gV2UgbXVzdCBlbWl0IHRvX3RoaXMgd2hlbiB3ZSdyZSBub3QgaW4gc3RyaWN0
IG1vZGUgYmVjYXVzZSB3ZQorICAgICAgICAvLyB3aWxsIGNvbnZlcnQgfHRoaXN8IHRvIGFuIG9i
amVjdCwgYW5kIHRoYXQgb2JqZWN0IG1heSBiZSBwYXNzZWQKKyAgICAgICAgLy8gdG8gYSBzdHJp
Y3QgZnVuY3Rpb24gYXMgfHRoaXN8LiBUaGlzIGlzIG9ic2VydmFibGUgYmVjYXVzZSB0aGF0Cisg
ICAgICAgIC8vIHN0cmljdCBmdW5jdGlvbidzIHRvX3RoaXMgd2lsbCBqdXN0IHJldHVybiB0aGUg
b2JqZWN0LgorICAgICAgICAvLworICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGVtaXQgdGhp
cyBmb3Igc3RyaWN0LW1vZGUgY29kZSBiZWNhdXNlCisgICAgICAgIC8vIHN0cmljdC1tb2RlIGNv
ZGUgbWF5IGNhbGwgYW5vdGhlciBzdHJpY3QgZnVuY3Rpb24sIHdoaWNoIHdpbGwKKyAgICAgICAg
Ly8gdG9fdGhpcyBpZiBpdCBkaXJlY3RseSB1c2VzIHRoaXM7IHRoaXMgaXMgT0ssIGJlY2F1c2Ug
d2UgZGVmZXIKKyAgICAgICAgLy8gdG9fdGhpcyB1bnRpbCB8dGhpc3wgaXMgdXNlZCBkaXJlY3Rs
eS4gU3RyaWN0LW1vZGUgY29kZSBtaWdodAorICAgICAgICAvLyBhbHNvIGNhbGwgYSBzbG9wcHkg
bW9kZSBmdW5jdGlvbiwgYW5kIHRoYXQgd2lsbCB0b190aGlzLCB3aGljaAorICAgICAgICAvLyB3
aWxsIGRlZmVyIHRoZSBjb252ZXJzaW9uLCBhZ2FpbiwgdW50aWwgbmVjZXNzYXJ5LgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZDRjMWM4ZThlZWE4
OGIxYzIwZjRhOTVlNDUzNjkyY2NkZTQ5YmZiZi4uNGY2YTliYTUwNTdhMDQ2YjA4NmIzYTA2ZjJh
NWEyZDJmZTQ4MGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTc2LDcgKzU3NiwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UHV0R2V0dGVyU2V0dGVyKFJlZ2lzdGVySUQqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBSZWdp
c3RlcklEKiBnZXR0ZXIsIFJlZ2lzdGVySUQqIHNldHRlcik7CiAgICAgICAgIHZvaWQgZW1pdFB1
dEdldHRlckJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCB1bnNp
Z25lZCBwcm9wZXJ0eURlc2NyaXB0b3JPcHRpb25zLCBSZWdpc3RlcklEKiBnZXR0ZXIpOwogICAg
ICAgICB2b2lkIGVtaXRQdXRTZXR0ZXJCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgdW5zaWduZWQgcHJvcGVydHlEZXNjcmlwdG9yT3B0aW9ucywgUmVnaXN0ZXJJ
RCogc2V0dGVyKTsKLSAgICAgICAgCisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBvYmplY3Qgd2l0
aCBnZW5lcmF0b3IgZmllbGRzIChAZ2VuZXJhdG9yVGhpcywgQGdlbmVyYXRvck5leHQsIEBnZW5l
cmF0b3JTdGF0ZSwgQGdlbmVyYXRvckZyYW1lKQorICAgICAgICB2b2lkIGVtaXRQdXRHZW5lcmF0
b3JGaWVsZHMoUmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9uKTsKKwogICAgICAgICBFeHBlY3RlZEZ1
bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb25Gb3JJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRDYWxsSW5UYWlsUG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBm
dW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CkBAIC01ODUsNiArNTg4LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJnc0luVGFp
bFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCog
dGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJl
ZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdENhbGxGb3J3YXJkQXJndW1lbnRzSW5UYWlsUG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGZp
cnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsKTsKIAorICAgICAgICBib29s
IHNob3VsZEVtaXRUb1RoaXMoRnVuY3Rpb25Ob2RlKik7CisKICAgICAgICAgZW51bSBQcm9wZXJ0
eURlc2NyaXB0b3JPcHRpb24gewogICAgICAgICAgICAgUHJvcGVydHlDb25maWd1cmFibGUgPSAx
LAogICAgICAgICAgICAgUHJvcGVydHlXcml0YWJsZSAgICAgPSAxIDw8IDEsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXgg
ZDM4N2NkZjgxNTAzODU0NDFhMzRlOTYzZDZiOGEyODBhZjAzMjQwMi4uZWYyYzVlNjAyNGU0MTU0
NDQxNjJiZGZkNWZlZWVhODUwNTg0Y2ZiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQwMiwyNSArMzQwMiw2NCBA
QCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJh
dG9yLCBuZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAg
IC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIGp1c3QgY3JlYXRlIGFuIG9iamVjdCBhbmQgc3RvcmUg
Z2VuZXJhdG9yIHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBwcm9wZXJ0aWVzIGZvciBlYXNlLgotICAg
ICAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpTR2Vu
ZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysrIGZp
ZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGllcy4KLSAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQorICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhuZXh0LmdldCgpKTsKIAotICAgICAgICBnZW5l
cmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZh
dGVOYW1lKCksIG5leHQuZ2V0KCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgICAg
ICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3Rh
cnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJl
dHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KIAotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVy
YXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lKCksIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgUHJv
cGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
RnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAg
ICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVt
ZW50KCk7CisgICAgICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgp
KTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0aWNfY2Fz
dDxFeHByU3RhdGVtZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7CisgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBleHByID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOworICAgICAgICBBU1NFUlQoZXhw
ci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBz
dGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKTsKIAotICAgICAgICBSZWdpc3RlcklEKiBp
bml0aWFsU3RhdGUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJl
Z2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yU3RhdGVQcml2YXRlTmFtZSgpLCBpbml0aWFsU3RhdGUsIFByb3BlcnR5Tm9kZTo6S25vd25E
aXJlY3QpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNF
eHByKTsKIAotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdl
bmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0
ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICAgICAgaWYgKGdl
bmVyYXRvci5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCB8fCBnZW5lcmF0
b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2Rl
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogRG9uJ3QgYWx3YXlzIGxvYWQgaG9tZSBvYmplY3Qg
Zm9yIGFzeW5jIGFycm93cworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmpl
Y3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOworICAgICAgICAgICAgZW1p
dFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0R2VuZXJhdG9yRmllbGRzKG5l
eHQuZ2V0KCkpOwogCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9m
ZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZy
YW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsK
KworICAgICAgICAvLyBsb2FkIEBhc3luY0Z1bmN0aW9uUmVzdW1lLCBhbmQgY2FsbC4KKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN0YXJ0QXN5bmNGdW5jdGlvbiA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJh
dG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0Z1bmN0aW9uUmVzdW1lUHJp
dmF0ZU5hbWUoKSk7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25J
Zk5lZWRlZChzY29wZS5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0
KCksIHZhcikpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShzdGFydEFzeW5j
RnVuY3Rpb24uZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisKKyAg
ICAgICAgLy8gcmV0dXJuIEBhc3luY0Z1bmN0aW9uUmVzdW1lLkBjYWxsKHRoaXMsIEBnZW5lcmF0
b3IsIEB1bmRlZmluZWQsIEdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpCisgICAgICAg
IENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDMpOworICAgICAgICB1bnNp
Z25lZCBhcmd1bWVudENvdW50ID0gMDsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3Mu
dGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE1v
dmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGdlbmVyYXRvci5nZW5l
cmF0b3JSZWdpc3RlcigpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1l
bnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0
b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOworICAgICAgICAvLyBKU1RleHRQb3NpdGlvbihp
bnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQgX2xpbmVTdGFydE9mZnNldCkKKyAgICAgICAgSlNU
ZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9m
ZnNldCgpKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlv
bihyZXN1bHQuZ2V0KCksIHN0YXJ0QXN5bmNGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBhcmdzLCBkaXZvdCwgZGl2b3QsIGRpdm90LCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyZXN1bHQuZ2V0KCkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9k
eU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAg
UmVmUHRyPExhYmVsPiBnZW5lcmF0b3JCb2R5TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
ICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDU0MmE0NzEzZjUyZDVh
OWZhOWM2M2U1NmUwMTZlMjIzMDVhOGFkZjYuLjQ5YjFhODZlZDE1YWY0MWFmYWE5ZTdkMTNiODhh
NWM0NDc3ODliZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5OSw2ICsyOTks
OCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9uZXdfZnVuY19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQorICAgICAg
ICBERUZJTkVfT1Aob3BfbmV3X2FzeW5jX2Z1bmMpCisgICAgICAgIERFRklORV9PUChvcF9uZXdf
YXN5bmNfZnVuY19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfb2JqZWN0KQogICAgICAg
ICBERUZJTkVfT1Aob3BfbmV3X3JlZ2V4cCkKICAgICAgICAgREVGSU5FX09QKG9wX25vdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDA1ZGUyOGNlMWVkNjcwYjUxZmViOGY1M2MzOWE0ZmY1
NDQ5MjhlNGEuLjZkMjAyNDkzODdiMjkxYWJlYmRmYTlmYmI3NDdkYTgyNzA1ZjZmZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTQ0LDYgKzU0NCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jKEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25vdChJbnN0
cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXgg
YjkwMWJiNDYzMTA2MDAxMjBlMTFmODRlMWVjYTljYjYyNjc0OWI4ZC4uOWY5OWFiYTljZjk5ZWNk
MjlhMDI5ZDgxNDQyYmE4ZTJmZWVmNDA5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCkBAIC05NzEsOSArOTcxLDExIEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0Nv
bW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+
dS5vcGNvZGUpOwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuYykKICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOwot
ICAgIGVsc2UgewotICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9m
dW5jKTsKKyAgICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCiAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwg
cmVnVDAsIGZ1bmNFeGVjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09
IG9wX25ld19hc3luY19mdW5jKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdB
c3luY0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CiAgICAgfQogfQogCkBAIC05ODcs
NiArOTg5LDExIEBAIHZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJ
bnN0cnVjdGlvbik7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNDb21tb24oY3Vy
cmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEp1bXAgbm90VW5kZWZpbmVk
U2NvcGU7CkBAIC0xMDA4LDkgKzEwMTUsMTEgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNv
bW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgaWYgKG9wY29kZUlE
ID09IG9wX25ld19mdW5jX2V4cCkKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdG
dW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOwotICAgIGVsc2UgewotICAgICAgICBBU1NF
UlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CisgICAgZWxzZSBpZiAo
b3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24p
OworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9u
LCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CiAgICAgfQogCiAgICAgZG9uZS5saW5rKHRoaXMpOwpA
QCAtMTAyNiw2ICsxMDM1LDExIEBAIHZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVu
Y19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TmV3RnVuY0V4
cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2FzeW5jX2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklU
OjplbWl0X29wX25ld19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOGY4ZDRhZDM0NTNmZDQ2
YjAzMDQzMmIzMTljMDYzYjAzMjljMzk1NC4uZWJkNzdjZDAzODY4YmRjMWZiOGFhYmFlMGZiZjkz
ZDBlNzYxZGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhj
ZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oIgpAQCAtMTE3MCw2ICsxMTcxLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jCiAgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9y
RnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOwogfQogCitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUp
Cit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlv
bj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4
ZWN1dGFibGUsIHRydWUpOworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0RnVu
Y3Rpb25OYW1lKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBmdW5jQ2VsbCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE5hbWUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGFkZmVmNzhjNmYwMGM1MDNkMDZm
YmY4Njc2NTY4N2U3ZGMxNDNjMjQuLmRiNWJhODk2NWE3YTUwMWJhMzUyN2FhNjU0ODg1ZTZjZjNk
ZDk1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0z
NzUsNiArMzc1LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdG
dW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0
aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aElu
dmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlND
ZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdBc3luY0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVu
Y3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpT
U2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2V0RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJO
QUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApp
bmRleCA4NzU4MjUxZmE0YTFkNDlmOTEwMGJlYmVjMDg4NjViZDQxMmQ3ZGY1Li5mNThmNGY5NjZl
YTc3NDNiZmM0ZWM4MDdjMTFlZjNhYjRkZDQyOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSklUV29ya2xp
c3QuaCIKKyNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rp
b24uaCIKQEAgLTExNDksNiArMTE1MCwxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbmV3X2dlbmVyYXRvcl9mdW5jKQogICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCks
IHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNf
ZnVuYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRS
KHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRfU0xPV19QQVRI
X1RSQUNJTkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgYXN5bmMgZnVuY3Rpb24hXG4iKTsKKyNl
bmRpZgorICAgIExMSU5UX1JFVFVSTihKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJs
b2NrLT5mdW5jdGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKK30KKwogTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJ
TigpOwpAQCAtMTE3MSw2ICsxMTgzLDE3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQogICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuY19leHApCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQp
LlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CisgICAgCisgICAgTExJ
TlRfUkVUVVJOKEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkp
OworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2V0X2Z1bmN0aW9uX25hbWUp
CiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmgKaW5kZXggOTg0ZTljYzQwMzAzMjc5YWE3MDJkZjhmZWI3ODhjM2I4Yjk2
MDUwZS4uZDc2MTM4YzEyNDRmZjdhYWY0ODNkMDgwM2FkNWJiODExN2VhNzlhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTEwMyw2ICsxMDMs
OCBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4
cCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hc3luY19mdW5j
KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmNf
ZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2V0X2Z1bmN0aW9u
X25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRl
eCA1NjBkZjNlY2FiODJkYTgyYjI3ZjQ0MzYyNGQwZmRlOGU1MDFjZTllLi42NDQ1YTQ3Y2VkYTlh
NWNmNzU5YTE2ZTE3MmMzYmQ4NDZhYjlkYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMzIxLDYgKzEzMjEsMTIg
QEAgX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK19s
bGludF9vcF9uZXdfYXN5bmNfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpCisgICAgZGlzcGF0Y2goNCkK
KworCiBfbGxpbnRfb3BfbmV3X2FycmF5OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxs
T3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyYXkpCkBAIC0xNTk5LDYgKzE2
MDUsMTIgQEAgX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FsbE9wY29k
ZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICBk
aXNwYXRjaCg0KQogCitfbGxpbnRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXN5bmNfZnVu
Y19leHApCisgICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3Bfc2V0X2Z1bmN0aW9uX25hbWU6
CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCmluZGV4IDQ5MDg4NDE1MTFlMmY0MDE3NzNiMjBmY2U2OGY1ODM5NzZmNmQwYTEuLjJi
NTJlMzJkODEzM2U2NzBmZWQyNTg3MTg0NDU3N2EwMWFlNGM4MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCBTdHJpbmcgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291
cmNlUGFyc2VNbwogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSAmJiAh
bWF0Y2goT1BFTkJSQUNFKTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigp
KSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87
Ci0gICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKSB8fCBpc0FzeW5jRnVuY3Rpb25Cb2R5UGFy
c2VNb2RlKHBhcnNlTW9kZSkpCisgICAgICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlv
bkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNv
dW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFyc2VGdW5j
dGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwpAQCAtNTY4
LDExICs1NjgsMTggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxl
bWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW4KICAgICB7CiAgICAgICAgIEF1
dG9Qb3BTY29wZVJlZiBhc3luY0Z1bmN0aW9uQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsK
ICAgICAgICAgYXN5bmNGdW5jdGlvbkJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKGlubmVy
UGFyc2VNb2RlKTsKLSAgICAgICAgU3ludGF4Q2hlY2tlciBhc3luY0Z1bmN0aW9uQ29udGV4dChj
b25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOwotICAgICAgICBpZiAoaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCi0gICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUFy
cm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGFzeW5jRnVuY3Rp
b25Db250ZXh0KSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBhcnJvdyBmdW5jdGlv
biIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVs
ZW1lbnRzKGFzeW5jRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9k
eSBvZiBhc3luYyBmdW5jdGlvbiIpOworICAgICAgICBTeW50YXhDaGVja2VyIHN5bnRheENoZWNr
ZXIoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKKyAgICAgICAgaWYgKGlz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dl
clBhcnNlRGF0YSkKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUFycm93RnVuY3Rp
b25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpLCAiQ2Fubm90IHBh
cnNlIHRoZSBib2R5IG9mIGFzeW5jIGFycm93IGZ1bmN0aW9uIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhw
cmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyKSwgIkNhbm5vdCBwYXJzZSB0
aGUgYm9keSBvZiBhc3luYyBhcnJvdyBmdW5jdGlvbiIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKG1fZGVidWdnZXJQYXJzZURhdGEpCisgICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0
aGUgYm9keSBvZiBhc3luYyBmdW5jdGlvbiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgbW9k
ZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgZnVuY3Rpb24iKTsKKyAgICAgICAg
fQogICAgICAgICBwb3BTY29wZShhc3luY0Z1bmN0aW9uQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6
TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKICAgICB9CiAgICAgaW5mby5ib2R5ID0gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3Rh
cnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgbV9zdXBlckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIGluZm8uZnVuY3Rpb25M
ZW5ndGgsIGlubmVyUGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CkBA
IC0yMzQxLDcgKzIzNDgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgICAgICByZXR1
cm4gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3ludGF4Q2hlY2tlciwgc3RhcnRMb2NhdGlv
biwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwg
cGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBm
dW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIGZ1bmN0aW9uSW5m
by5mdW5jdGlvbkxlbmd0aCwgbW9kZSk7CiAgICAgfTsKIAotICAgIGlmIChtb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSB8fCBpc0FzeW5jRnVuY3Rp
b25XcmFwcGVyUGFyc2VNb2RlKG1vZGUpKSB7CisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1
bmN0aW9uV3JhcHBlclBhcnNlTW9kZShtb2RlKSkgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYg
Z2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAgICAgICAgU291cmNlUGFy
c2VNb2RlIGlubmVyUGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9k
ZTsKICAgICAgICAgaWYgKGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUobW9kZSkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDhjNDQ3NGIwOTkzMzcyZTc0
MjQ2MDFkYjlhYTA2NDQ1ZGY5MzdlZDguLjNhMTZmNzZhYWQwNTI0N2NkNjE2MWJiZGE4YWYzMWRl
Zjg2NDI3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjQ1LDcg
KzI0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6Ci0gICAgICAgICAgICBzZXRJc0Fz
eW5jQXJyb3dGdW5jdGlvbkJvZHkoKTsKKyAgICAgICAgICAgIHNldElzQXN5bmNGdW5jdGlvbkJv
ZHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
TW9kZXMuaAppbmRleCBhMGQ3NDA0OTQxNWU0Yjg0NzM1NjJlMzZlNjIyMGQzMGNlNTFiYTZhLi42
ZGE4ODM3YTM3OTQxNzJiNGM1NTZiMzdkMjNmOTk3NmVlNmYwYjMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0xNDgsNiArMTQ4LDMyIEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc01ldGhvZFBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KQogICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZSkuY29udGFpbnMocGFy
c2VNb2RlKTsKIH0KIAorQUxXQVlTX0lOTElORSBib29sIGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0
aW9uQm9keVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHJldHVy
biBTb3VyY2VQYXJzZU1vZGVTZXQoCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2Rl
LAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5j
b250YWlucyhwYXJzZU1vZGUpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNHZW5lcmF0b3JP
ckFzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUp
Cit7CisgICAgcmV0dXJuIFNvdXJjZVBhcnNlTW9kZVNldCgKKyAgICAgICAgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jRnVuY3Rpb25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJy
b3dGdW5jdGlvbk1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2Rl
KS5jb250YWlucyhwYXJzZU1vZGUpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCit7CisgICAgcmV0dXJu
IFNvdXJjZVBhcnNlTW9kZVNldCgKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2Rl
LAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5j
b250YWlucyhwYXJzZU1vZGUpOworfQorCisKIEFMV0FZU19JTkxJTkUgYm9vbCBpc01vZHVsZVBh
cnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKSAKIHsgCiAgICAgcmV0dXJuIFNvdXJj
ZVBhcnNlTW9kZVNldCggCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMGQxNTJlYzI3
Zjg5ZGFjOWI0NTNlODgwOWI2NTI0ODVjYTVjMTUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAt
MCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxj
YWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlv
blByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RS
SVZJQUxMWV9ERVNUUlVDVElCTEUoQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKworY29uc3Qg
Q2xhc3NJbmZvIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXN5bmNGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yKSB9OworCitBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OkFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
SW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlKiBwcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJBc3luY0Z1
bmN0aW9uIik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSk7CisKKyAgICAvLyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgorICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxG
dW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5
bmMpKTsKK30KKworQ2FsbFR5cGUgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1
bmN0aW9uID0gY2FsbEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5
cGU6Okhvc3Q7Cit9CisKK0NvbnN0cnVjdFR5cGUgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7
CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzVhMmMxZTRmOTE1
Y2FjMGI0YjE3NzNlNmQwNTg5ZTI3NDc0N2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAsMCAr
MSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBA
aWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJu
YWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXN5bmNGdW5jdGlvblBy
b3RvdHlwZTsKKworY2xhc3MgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRp
b24odm0sIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVj
dHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmIxZjBlMTA2ZWU2NzEzNmU5MjcwMWQ2OGMzOWQ5NWIyZmM0ODY1NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rp
b25Qcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5j
bHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6c19p
bmZvID0geyAiQXN5bmNGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoQXN5bmNGdW5jdGlvblByb3RvdHlwZSkgfTsKKworQXN5bmNGdW5jdGlvblBy
b3RvdHlwZTo6QXN5bmNGdW5jdGlvblByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K3ZvaWQgQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygp
KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9T
dHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwgIkFzeW5jRnVuY3Rpb24iKSwgRG9udEVudW0g
fCBSZWFkT25seSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIwMWU2YjhmZDU4
OThhMjIxZTA2MmE3OGYzZWE2MGRlYTc5YTgyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMCwwICsx
LDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBp
Z2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXN5bmNGdW5jdGlvblByb3RvdHlwZSA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcAppbmRleCBkMmYzMzUyZDYwNjhiMTE5ZmUwNDkzMTBjOTM4ODY3ZjI3OThiNTEyLi41MTQ1
MmViNzU0OTFiM2RiYWJjNGYwOGQwNjM2MDZiYjIyNjMwNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMjMs
NiArMjMsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtOTMsMTggKzk0LDMzIEBAIEpTT2JqZWN0KiBjb25z
dHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAg
IGNvbnN0IGNoYXIqIHByZWZpeCA9IG51bGxwdHI7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBudWxscHRyOworICAgIHN3aXRjaCAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKSB7CisgICAg
Y2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uOgorICAgICAgICBzdHJ1Y3R1
cmUgPSBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIHByZWZpeCA9
ICJ7ZnVuY3Rpb24gIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGU6OkdlbmVyYXRvcjoKKyAgICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5n
ZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpOworICAgICAgICBwcmVmaXggPSAie2Z1bmN0aW9u
ICoiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6
QXN5bmM6CisgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXN5bmNGdW5jdGlvblN0
cnVjdHVyZSgpOworICAgICAgICBwcmVmaXggPSAie2FzeW5jIGZ1bmN0aW9uICI7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNv
bWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHBy
b2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0
cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5n
KCksICIoKSB7XG5cbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKHByZWZpeCwg
ZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOwogICAgIGVsc2UgaWYgKGFyZ3Mu
c2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwg
ZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2Vu
ZXJhdG9yID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3Mu
YXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOworICAgICAgICBwcm9n
cmFtID0gbWFrZVN0cmluZyhwcmVmaXgsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIs
IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVs
c2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgie2Z1bmN0aW9uICIpOwotICAgICAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKQotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyonKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4KTsK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lLnN0cmluZygpKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJygnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdCgwKS50
b1N0cmluZyhleGVjKS0+dmlldyhleGVjKS5nZXQoKSk7CkBAIC0xMjYsMTIgKzE0MiwyMCBAQCBK
U09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICB9
CiAKLSAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6
Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbmV3VGFyZ2V0LCBmdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyBnbG9iYWxP
YmplY3QtPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgOiBnbG9iYWxPYmplY3QtPmZ1bmN0
aW9uU3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogc3ViY2xhc3NTdHJ1Y3R1cmUgPSBJbnRl
cm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBuZXdUYXJnZXQsIHN0
cnVjdHVyZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAg
ICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZTo6R2VuZXJhdG9yKQorICAgIHN3aXRjaCAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKSB7Cisg
ICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uOgorICAgICAgICByZXR1
cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxT
Y29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGU6OkdlbmVyYXRvcjoKICAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NT
dHJ1Y3R1cmUpOwotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBn
bG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAgICBjYXNl
IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmM6CisgICAgICAgIHJldHVybiBKU0FzeW5j
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUo
KSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOworICAgIH0KKworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVu
Y3Rpb24gQ29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCAzMWMzM2Q2YWY0ZmYxMmJjMjRjMWUyYjViZjRl
NTU1OGQ3NjU2OTA2Li5kZWVlOWE1NWQ2ZjJjNjFlOWY3MTQ0ODNiMzFhYmQ1N2ZiMWNhZTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oCkBAIC01OCw2ICs1OCw3IEBAIHByaXZhdGU6CiBlbnVtIGNsYXNzIEZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZSB7CiAgICAgRnVuY3Rpb24sCiAgICAgR2VuZXJhdG9yLAorICAgIEFzeW5j
LAogfTsKIAogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgRnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlID0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbiwg
SlNWYWx1ZSBuZXdUYXJnZXQgPSBKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJhNzQzNzIzYmRj
N2ZhZWVmZjYyNTFlMmZmMmEyZGRjNjQyOGU3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlh
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0FzeW5j
RnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1
ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gSlNBc3luY0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJBc3luY0Z1bmN0
aW9uIiwgICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNBc3lu
Y0Z1bmN0aW9uKSB9OworCitKU0FzeW5jRnVuY3Rpb246OkpTQXN5bmNGdW5jdGlvbihWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVy
ZSkKK3sKK30KKworSlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZUltcGwo
Vk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBKU0FzeW5jRnVuY3Rpb24qIGFzeW5jRnVuY3Rp
b24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FzeW5jRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU0FzeW5jRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOworICAg
IEFTU0VSVChhc3luY0Z1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAg
IGFzeW5jRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gYXN5bmNGdW5j
dGlvbjsKK30KKworSlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZShWTSYg
dm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7Cisg
ICAgSlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+YXN5bmNGdW5jdGlvblN0cnVjdHVy
ZSgpKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2
bSwgYXN5bmNGdW5jdGlvbiwgIkFsbG9jYXRpbmcgYW4gYXN5bmMgZnVuY3Rpb24iKTsKKyAgICBy
ZXR1cm4gYXN5bmNGdW5jdGlvbjsKK30KKworSlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rp
b246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTQXN5bmNGdW5jdGlvbiog
YXN5bmNGdW5jdGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1
cmUpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZt
LCBhc3luY0Z1bmN0aW9uLCAiQWxsb2NhdGluZyBhbiBhc3luYyBmdW5jdGlvbiIpOworICAgIHJl
dHVybiBhc3luY0Z1bmN0aW9uOworfQorCitKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlv
bjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgcmV0
dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0
KCktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdkYTg3ZGI2
ZDM4NWE3OWQ1NTc2YzFiNzJhMTM0Y2EzZTIxYmYxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxp
YS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTQXN5bmNGdW5jdGlvbiA6IHB1YmxpYyBK
U0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworICAgIGZyaWVuZCBjbGFzcyBWTTsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKKworICAgIGNvbnN0IHN0YXRp
YyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBKU0FzeW5jRnVuY3Rpb24qIGNyZWF0
ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBzdGF0aWMgSlNBc3lu
Y0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3Ry
dWN0dXJlKik7CisgICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2Nv
cGUqKTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNh
cGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlu
bGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0FzeW5jRnVuY3Rpb24pOwor
ICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTQXN5
bmNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUq
KTsKKworICAgIHN0YXRpYyBKU0FzeW5jRnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mLCBGdW5jdGlv
bkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBmNDhjYmNmMDkxMzJjYWE2N2VjNzFmNTc1MTQ5MDBjOGVjZTAyODBiLi5jNGMz
Y2UwYzk5ZDdhNDFjZjczN2ZkZTVkN2ZhZDViZGFjNmY3MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zMyw2ICszMyw4IEBA
CiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkFycmF5SXRlcmF0b3JQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
aCIKICNpbmNsdWRlICJCb29sZWFuQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCb29sZWFuUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCkBAIC02Myw2ICs2NSw3IEBACiAj
aW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJK
U0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCkBAIC01
ODUsNiArNTg4LDggQEAgbV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBpbnN0YW5jZVR5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGgKICAgICBtX3Rocm93VHlwZUVy
cm9yRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKIAogICAg
IEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAg
bV9mdW5jdGlvbkNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgKEZ1bmN0aW9uQ29uc3RydWN0b3Iq
KWZ1bmN0aW9uQ29uc3RydWN0b3IpOworCiAgICAgQXJyYXlDb25zdHJ1Y3RvciogYXJyYXlDb25z
dHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsK
ICAgICBtX2FycmF5Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yKTsK
ICAgICAKQEAgLTYzMCw3ICs2MzUsMTcgQEAgbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS0+
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmMKIAogICAg
IG1fZ2VuZXJhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCksIERvbnRFbnVtIHwgUmVhZE9ubHkpOwogICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpLCBEb250RW51bSB8IFJlYWRPbmx5
KTsKLSAgICAKKworICAgIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAg
ICAgIFtdKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKKyAgICAgICAg
ICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgPSBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgQXN5bmNGdW5jdGlvblByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOworICAgICAgICAgICAgaW5pdC5zZXRQcm90b3R5cGUo
YXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAgICAgICBpbml0LnNldFN0cnVjdHVyZShK
U0FzeW5jRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5p
dC5wcm90b3R5cGUpKTsKKyAgICAgICAgICAgIGluaXQuc2V0Q29uc3RydWN0b3IoUHJvcGVydHlO
YW1lKG51bGxwdHIpLCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBB
c3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmds
b2JhbCwgaW5pdC5nbG9iYWwtPm1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5nZXQoKSksIGFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUpKTsKKworICAgICAgICAgICAgaW5pdC5nbG9iYWwtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGluaXQudm0sIGluaXQudm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuYXN5bmNGdW5jdGlvblJlc3VtZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0
ZUJ1aWx0aW5GdW5jdGlvbihpbml0LnZtLCBhc3luY0Z1bmN0aW9uUHJvdG90eXBlQXN5bmNGdW5j
dGlvblJlc3VtZUNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQuZ2xvYmFsKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgICAgICB9KTsKKwogICAgIG1fb2JqZWN0UHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9h
cnJheVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0xMTAy
LDYgKzExMTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV90aHJvd1R5cGVF
cnJvckdldHRlclNldHRlci52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNl
dHRlcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvdHlwZSk7CiAK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKQEAgLTEx
MTAsNiArMTEyNiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9pdGVyYXRvclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2dlbmVyYXRvclByb3RvdHlwZSk7CisgICAgdGhpc09iamVjdC0+bV9hc3lu
Y0Z1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlclByb3RvdHlwZSk7CiAKICAgICB0aGlzT2JqZWN0LT5t
X2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA0MDg0NmNlMjk3YjQ3YzI4
NWVjNDA5MWNkNzM0MDI5NWMwNmRhNWYwLi4yZGQ0NDE2OWQxZjFjYzA4YmFjNjE3ZWI3NWIyNDBm
MDM2NTYzMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFycmF5
Q29uc3RydWN0b3I7CiBjbGFzcyBBcnJheVByb3RvdHlwZTsKK2NsYXNzIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGU7CiBjbGFzcyBCb29sZWFuUHJvdG90eXBlOwogY2xhc3MgQ29uc29sZUNsaWVudDsK
IGNsYXNzIERlYnVnZ2VyOwpAQCAtNjMsNiArNjQsNyBAQCBjbGFzcyBFcnJvckNvbnN0cnVjdG9y
OwogY2xhc3MgRXJyb3JQcm90b3R5cGU7CiBjbGFzcyBFdmFsQ29kZUJsb2NrOwogY2xhc3MgRXZh
bEV4ZWN1dGFibGU7CitjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdG9yOwogY2xhc3MgRnVuY3Rpb25Q
cm90b3R5cGU7CiBjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGU7CiBjbGFzcyBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZTsKQEAgLTIzMyw2ICsyMzUsNyBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3N5bnRheEVycm9y
Q29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1f
dHlwZUVycm9yQ29uc3RydWN0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VSSUVycm9yQ29uc3RydWN0b3I7CisgICAgV3JpdGVC
YXJyaWVyPEZ1bmN0aW9uQ29uc3RydWN0b3I+IG1fZnVuY3Rpb25Db25zdHJ1Y3RvcjsKICAgICBX
cml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CiAgICAg
V3JpdGVCYXJyaWVyPEFycmF5Q29uc3RydWN0b3I+IG1fYXJyYXlDb25zdHJ1Y3RvcjsKICAgICBX
cml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9yOwpA
QCAtMzA2LDYgKzMwOSw3IEBAIHB1YmxpYzoKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9u
TmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOwor
ICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RvbGxhclZNU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmU7CkBAIC01Mjcs
NiArNTMxLDE5IEBAIHB1YmxpYzoKICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmdldCgpOyB9CiAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQ
cm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQog
CisgICAgTGF6eUNsYXNzU3RydWN0dXJlJiBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOworICAgIH0KKyAg
ICBjb25zdCBMYXp5Q2xhc3NTdHJ1Y3R1cmUmIGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7Cisg
ICAgfQorICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUq
PihsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLnByb3RvdHlwZSh0aGlzKSk7IH0KKyAgICBB
c3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5
KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBc3luY0Z1bmN0aW9uUHJvdG90eXBl
Kj4obGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5wcm90b3R5cGVDb25jdXJyZW50bHkoKSk7
IH0KKyAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVy
ZSogYXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJlbnRseSgpIGNvbnN0IHsgcmV0dXJuIGxh
enlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkuZ2V0Q29uY3VycmVudGx5KCk7IH0KKwogICAgIFN0
cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdn
ZXJTY29wZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCh0aGlzKTsg
fQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg3ODk0NDU3
NTMzZDRhZWMwYzE5MWI3ZmQxMDdhZjU1ZWI2Y2YyZDMuLjBkMTUxZTBhNWQzYWNlYjg0NTQyODQz
ZDhhNGNmYjRkOWY0YmE3MmUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIwIEBACisyMDE2LTEwLTIwICBDYWl0bGluIFBv
dHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gaW1wbGVtZW50IHJ1bnRp
bWUgZm9yIGFzeW5jIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChzaG91
bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKToKKyAgICAgICAgKHNob3VsZFRo
cm93U3ludGF4RXJyb3IpOgorICAgICAgICAobGV0LkFzeW5jRnVuY3Rpb24uYXN5bmMpOgorICAg
ICAgICAoYXN5bmMuYXN5bmNGdW5jdGlvbkZvclByb3RvKToKKyAgICAgICAgKE9iamVjdC5nZXRQ
cm90b3R5cGVPZi5hc3luYyk6CisgICAgICAgIChPYmplY3QuZ2V0UHJvdG90eXBlT2YuYXN5bmMu
bWV0aG9kKToKKyAgICAgICAgKGFzeW5jKToKKyAgICAgICAgKGFzeW5jLm1ldGhvZCk6CisgICAg
ICAgIChhc3luYy5hc3luY05vbkNvbnN0cnVjdG9yRGVjbCk6CisgICAgICAgIChzaG91bGRUaHJv
dy5uZXcuYXN5bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3cubmV3LmFzeW5jLm5vbkNvbnN0cnVj
dG9yKToKKyAgICAgICAgKGFzeW5jLmFzeW5jRGVjbCk6CisgICAgICAgIChhc3luYy5mKToKKyAg
ICAgICAgKE15RXJyb3IpOgorICAgICAgICAoYXN5bmMuYXN5bmNEZWNsVGhyb3dlcik6CisgICAg
ICAgIChzaG91bGRUaHJvd0FzeW5jLmFzeW5jKToKKyAgICAgICAgKHJlc29sdmVMYXRlcik6Cisg
ICAgICAgIChyZWplY3RMYXRlcik6CisgICAgICAgIChhc3luYy5yZXN1bWVBZnRlck5vcm1hbCk6
CisgICAgICAgIChPLmFzeW5jLnJlc3VtZUFmdGVyTm9ybWFsKToKKyAgICAgICAgKHJlc3VtZUFm
dGVyTm9ybWFsQXJyb3cuYXN5bmMpOgorICAgICAgICAoYXN5bmMucmVzdW1lQWZ0ZXJUaHJvdyk6
CisgICAgICAgIChPLmFzeW5jLnJlc3VtZUFmdGVyVGhyb3cpOgorICAgICAgICAocmVzdW1lQWZ0
ZXJUaHJvd0Fycm93LmFzeW5jKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3Mv
YXN5bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVkLXdvcmQuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkVGhyb3cpOgorICAgICAgICAoU3ludGF4RXJyb3IuQ2Fuc3RyaW5nX2FwcGVhcmVkX2hlcmVh
d2FpdC5jaGVja01vZHVsZVN5bnRheEVycm9yLlN0cmluZy5yYXcuYXdhaXQpOgorICAgICAgICAo
Y2hlY2tNb2R1bGVTeW50YXhFcnJvci5TdHJpbmcucmF3LmF3YWl0KToKKyAgICAgICAgKGNoZWNr
TW9kdWxlU3ludGF4RXJyb3IuU3RyaW5nLnJhdy5hc3luYy5hd2FpdCk6CisgICAgICAgIChTeW50
YXhFcnJvci5DYW5ub3QuZGVjbGFyZS5uYW1lZCk6CisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3
YWl0LW1vemlsbGEuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hv
dWxkQmVBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJv
d0FzeW5jKToKKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChzaG91bGRUaHJvd1N5bnRheEVy
cm9yKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5lbXB0eSk6CisgICAgICAgIChtb3pT
ZW1hbnRpY3MuYXN5bmMuc2ltcGxlUmV0dXJuKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3lu
Yy5zaW1wbGVBd2FpdCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuc2ltcGxlQXdhaXRB
c3luYyk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMucmV0dXJuT3RoZXJBc3luYyk6Cisg
ICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuc2ltcGxlVGhyb3dlcik6CisgICAgICAgIChtb3pT
ZW1hbnRpY3MuYXN5bmMuZGVsZWdhdGVkVGhyb3dlcik6CisgICAgICAgIChtb3pTZW1hbnRpY3Mu
YXN5bmMudHJ5Q2F0Y2gpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnRyeUNhdGNoVGhy
b3cpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLndlbGxGaW5hbGx5KToKKyAgICAgICAg
KG1velNlbWFudGljcy5hc3luYy5maW5hbGx5TWF5RmFpbCk6CisgICAgICAgIChtb3pTZW1hbnRp
Y3MuYXN5bmMuZW1iZWRkZWQuYXN5bmMuaW5uZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFz
eW5jLmVtYmVkZGVkKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5maWIpOgorICAgICAg
ICAobW96U2VtYW50aWNzLmFzeW5jLmlzT2RkLmFzeW5jLmlzRXZlbik6CisgICAgICAgIChtb3pT
ZW1hbnRpY3MuYXN5bmMuaXNPZGQpOgorICAgICAgICAobW96U2VtYW50aWNzLmhhcmRjb3JlRmli
LmFzeW5jLmZpYjIpOgorICAgICAgICAobW96U2VtYW50aWNzLm5hbWVkQXN5bmNFeHByLmFzeW5j
LnNpbXBsZSk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIuYXN5
bmMuZmlyc3QpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFz
eW5jLnNlY29uZCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIu
YXN5bmMudGhpcmQpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVy
KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5taXNjZWxsYW5lb3VzKToKKyAgICAgICAg
KG1velNlbWFudGljcy50aHJvd2VyKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5kZWZh
dWx0QXJncyk6CisgICAgICAgIChtb3pTZW1hbnRpY3Muc2hvdWxkVGhyb3cpOgorICAgICAgICAo
bW96U2VtYW50aWNzKToKKyAgICAgICAgKG1vek1ldGhvZHMuWCk6CisgICAgICAgIChtb3pNZXRo
b2RzLlgucHJvdG90eXBlLmFzeW5jLmdldFZhbHVlKToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5w
cm90b3R5cGUuc2V0VmFsdWUpOgorICAgICAgICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5hc3lu
Yy5pbmNyZW1lbnQpOgorICAgICAgICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5hc3luYy5nZXRC
YXNlQ2xhc3NOYW1lKToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5hc3luYy5nZXRTdGF0aWNWYWx1
ZSk6CisgICAgICAgIChtb3pNZXRob2RzLlkucHJvdG90eXBlLmFzeW5jLmdldEJhc2VDbGFzc05h
bWUpOgorICAgICAgICAobW96TWV0aG9kcy5ZKToKKyAgICAgICAgKG1vekZ1bmN0aW9uTmFtZUlu
ZmVycmVuY2UuYXN5bmMudGVzdCk6CisgICAgICAgIChtb3pTeW50YXhFcnJvcnMpOgorICAgICAg
ICAqIHN0cmVzcy9hc3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzOiBBZGRlZC4KKyAgICAgICAg
KGFzc2VydCk6CisgICAgICAgIChzaG91bGRUaHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKEFz
eW5jRnVuY3Rpb24uYXN5bmMpOgorICAgICAgICAqIHN0cmVzcy9hc3luY19hcnJvd19mdW5jdGlv
bnNfbGV4aWNhbF9hcmd1bWVudHNfYmluZGluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMp
OgorICAgICAgICAobm9Bcmd1bWVudHNBcnJvdzIuYXN5bmMpOgorICAgICAgICAqIHN0cmVzcy9h
c3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9uZXcudGFyZ2V0X2JpbmRpbmcuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAg
IChzaG91bGRUaHJvd0FzeW5jKToKKyAgICAgICAgKEMxKToKKyAgICAgICAgKEMyKToKKyAgICAg
ICAgKHNob3VsZFRocm93QXN5bmMuYXN5bmMpOgorICAgICAgICAqIHN0cmVzcy9hc3luY19hcnJv
d19mdW5jdGlvbnNfbGV4aWNhbF9zdXBlcl9iaW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoQmFzZUNsYXNzLnBy
b3RvdHlwZS5iYXNlQ2xhc3NWYWx1ZSk6CisgICAgICAgIChCYXNlQ2xhc3MucHJvdG90eXBlLmdl
dCBwcm9wZXJ0eSk6CisgICAgICAgIChCYXNlQ2xhc3MpOgorICAgICAgICAoQ2hpbGRDbGFzcy5w
cm90b3R5cGUuYXN5bmNTdXBlclByb3ApOgorICAgICAgICAoQ2hpbGRDbGFzcy5wcm90b3R5cGUu
YXN5bmNTdXBlclByb3AyKToKKyAgICAgICAgKENoaWxkQ2xhc3MpOgorICAgICAgICAoQ2hpbGRD
bGFzczIpOgorICAgICAgICAqIHN0cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF90
aGlzX2JpbmRpbmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hv
dWxkQmVBc3luYyk6CisgICAgICAgIChkLnkpOgorCiAyMDE2LTEwLTIxICBDYWl0bGluIFBvdHRl
ciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gZG9uJ3QgY3Jhc2ggd2hlbiBh
cmd1bWVudHMgdG8gYG5ldyBGdW5jdGlvbigpYCBwcm9kdWNlIHVuZXhwZWN0ZWQgQVNUCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1hcmd1
bWVudHMtYmluZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1s
ZXhpY2FsLWFyZ3VtZW50cy1iaW5kaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1MWFmZGM5MzFmMTYwMWFm
NDc5ZjkwNmViOGZhMzZhZGVmYWFiNDcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1hcmd1bWVudHMtYmluZGluZy5qcwpAQCAt
MCwwICsxLDUwIEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZV
TkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitm
dW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAobXNnID09
PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAgbXNnID0gIiBm
b3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1
biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAg
ICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAg
ICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJv
cjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAg
ICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2Up
IHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigp
LnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAg
ICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsK
KyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmICghaGFkRXJyb3IpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JU
eXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5z
dGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIg
KyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IHRocmV3ICci
ICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5t
ZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIg
KyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFj
dHVhbC5tZXNzYWdlICsgIiciKTsKK30KKwordmFyIG5vQXJndW1lbnRzQXJyb3cgPSBhc3luYyAo
KSA9PiBhd2FpdCBbLi4uYXJndW1lbnRzXTsKK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gbm9Bcmd1
bWVudHNBcnJvdygxLCAyLCAzKSwgUmVmZXJlbmNlRXJyb3IpOwordmFyIG5vQXJndW1lbnRzQXJy
b3cyID0gYXN5bmMgKCkgPT4geyByZXR1cm4gYXdhaXQgWy4uLmFyZ3VtZW50c107IH0KK3Nob3Vs
ZFRocm93QXN5bmMoKCkgPT4gbm9Bcmd1bWVudHNBcnJvdzIoMSwgMiwgMyksIFJlZmVyZW5jZUVy
cm9yKTsKKworc2hvdWxkQmVBc3luYygiWzEsMiwzXSIsICgpID0+IChmdW5jdGlvbigpIHsgcmV0
dXJuIChhc3luYyAoKSA9PiBKU09OLnN0cmluZ2lmeShbLi4uYXJndW1lbnRzXSkpKCk7IH0pKDEs
IDIsIDMpKTsKK3Nob3VsZEJlQXN5bmMoIls0LDUsNl0iLCAoKSA9PiAoZnVuY3Rpb24oKSB7IHJl
dHVybiAoYXN5bmMgKCkgPT4geyByZXR1cm4gSlNPTi5zdHJpbmdpZnkoWy4uLmF3YWl0IGFyZ3Vt
ZW50c10pIH0pKCk7IH0pKDQsIDUsIDYpKTsKKwordmFyIGFyZ3NCaW5kaW5nOworc2hvdWxkQmVB
c3luYyhhcmdzQmluZGluZywgKCkgPT4gKGZ1bmN0aW9uKCkgeyBhcmdzQmluZGluZyA9IGFyZ3Vt
ZW50czsgcmV0dXJuIChhc3luYyAoKSA9PiBhcmd1bWVudHMpKCkgfSkoMSwgMiwgMykpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtbmV3
LnRhcmdldC1iaW5kaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25z
LWxleGljYWwtbmV3LnRhcmdldC1iaW5kaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNmEzOTgzZjdhOTI3
NDBlZTQ3OGMzZmY3YmI4MzBjNzg1YWU0MDkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1uZXcudGFyZ2V0LWJpbmRpbmcuanMK
QEAgLTAsMCArMSw1NSBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZ
TkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAK
KworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1z
ZyA9PT0gdm9pZCAwKQorICAgICAgICBtc2cgPSAiIjsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9
ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBl
Y3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVk
LCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7
CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAg
ICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0g
ZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQor
ICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBt
c2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0FzeW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNz
YWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBy
dW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAg
ICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsg
fSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVy
cm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFs
IGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJl
dyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1
YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIg
KyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9uIEMxKCkgeworICAgIHJldHVy
biBhc3luYyAoKSA9PiBhd2FpdCBuZXcudGFyZ2V0OworfQorCitmdW5jdGlvbiBDMigpIHsKKyAg
ICByZXR1cm4gYXN5bmMgKCkgPT4geyByZXR1cm4gYXdhaXQgbmV3LnRhcmdldCB9OworfQorCitz
aG91bGRCZUFzeW5jKEMxLCBuZXcgQzEoKSk7CitzaG91bGRCZUFzeW5jKHVuZGVmaW5lZCwgQzEo
KSk7CitzaG91bGRCZUFzeW5jKEMyLCBuZXcgQzIoKSk7CitzaG91bGRCZUFzeW5jKHVuZGVmaW5l
ZCwgQzIoKSk7CisKK3Nob3VsZFRocm93QXN5bmMoYXN5bmMgKCkgPT4gYXdhaXQgbmV3LnRhcmdl
dCwgUmVmZXJlbmNlRXJyb3IpOworc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiB7IHJldHVy
biBhd2FpdCBuZXcudGFyZ2V0OyB9LCBSZWZlcmVuY2VFcnJvcik7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1zdXBlci1iaW5kaW5nLmpz
IGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtc3VwZXItYmlu
ZGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wOGJmMGY5YWNlM2M3NWY3ZDhmN2ViY2IyMDNmNzM4ZGIzOWM5
ZmRiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rp
b25zLWxleGljYWwtc3VwZXItYmluZGluZy5qcwpAQCAtMCwwICsxLDU1IEBACisvLyBUaGlzIHRl
c3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFi
bGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVj
dGVkLCBhY3R1YWwsIG1zZykgeworICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNn
ID0gIiI7CisgICAgZWxzZQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIg
KyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKwor
ZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0
dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24o
dmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJv
cikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3Jv
dGFza3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisg
ICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworY2xhc3MgQmFzZUNsYXNz
IHsKKyAgICBiYXNlQ2xhc3NWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJuICJCYXNlQ2xhc3NWYWx1
ZSI7CisgICAgfQorICAgIGdldCBwcm9wZXJ0eSgpIHsKKyAgICAgICAgcmV0dXJuICJ0ZXN0ISI7
CisgICAgfQorfQorCitjbGFzcyBDaGlsZENsYXNzIGV4dGVuZHMgQmFzZUNsYXNzIHsKKyAgICBh
c3luY1N1cGVyUHJvcCgpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jIHggPT4gc3VwZXIuYmFzZUNs
YXNzVmFsdWUoKTsKKyAgICB9CisgICAgYXN5bmNTdXBlclByb3AyKCkgeworICAgICAgICByZXR1
cm4gYXN5bmMgeCA9PiB7IHJldHVybiBzdXBlci5iYXNlQ2xhc3NWYWx1ZSgpOyB9CisgICAgfQor
fQorCisvLyBGSVhNRTogc3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFy
ZSBicm9rZW4KK3Nob3VsZEJlQXN5bmMoIkJhc2VDbGFzc1ZhbHVlIiwgbmV3IENoaWxkQ2xhc3Mo
KS5hc3luY1N1cGVyUHJvcCgpKTsKK3Nob3VsZEJlQXN5bmMoIkJhc2VDbGFzc1ZhbHVlIiwgbmV3
IENoaWxkQ2xhc3MoKS5hc3luY1N1cGVyUHJvcDIoKSk7CisKK2NsYXNzIENoaWxkQ2xhc3MyIGV4
dGVuZHMgQmFzZUNsYXNzIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIGFz
eW5jIChzZWxmID0gc3VwZXIoKSkgPT4gc2VsZi5iYXNlQ2xhc3NWYWx1ZSgpICsgJyAnICsgc3Vw
ZXIucHJvcGVydHk7CisgICAgfQorfQorCitzaG91bGRCZUFzeW5jKCJCYXNlQ2xhc3NWYWx1ZSB0
ZXN0ISIsIG5ldyBDaGlsZENsYXNzMigpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2Fz
eW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXRoaXMtYmluZGluZy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXRoaXMtYmluZGluZy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43MmFmYTExM2ZhOTEyNmMzZTE2N2ZhZTQxMWMzYTA0ZTg3YTExYjVhCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtdGhp
cy1iaW5kaW5nLmpzCkBAIC0wLDAgKzEsMzAgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFC
TEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGlt
ZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZykg
eworICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNnID0gIiI7CisgICAgZWxzZQor
ICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0
dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVB
c3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRF
cnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0g
dmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRy
dWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlm
IChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhwZWN0
ZWQsIGFjdHVhbCwgbXNnKTsKK30KKwordmFyIGQgPSAoeyB4IDogImJhciIsIHkgOiBmdW5jdGlv
bigpIHsgcmV0dXJuIGFzeW5jIHogPT4gdGhpcy54ICsgejsgfX0pLnkoKTsKK3ZhciBlID0geyB4
IDogImJheiIsIHkgOiBkIH07CisKK3Nob3VsZEJlQXN5bmMoImJhcmxleSIsICgpID0+IGQoImxl
eSIpKTsKK3Nob3VsZEJlQXN5bmMoImJhcmxleSIsICgpID0+IGUueSgibGV5IikpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMuanMgYi9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1hd2FpdC1iYXNpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGYyMDY1MzY1M2VjYWNkN2YzZWRi
NjNiYjMyZDExYjc0YTkyZDNmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5
bmMtYXdhaXQtYmFzaWMuanMKQEAgLTAsMCArMSwyOTkgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJl
cyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVp
bGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWws
IG1zZyA9ICIiKSB7CisgICAgaWYgKG1zZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJi
YWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7Cisg
ICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVu
KGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVu
Y3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAg
ZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFj
dHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZFRocm93KHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVh
bDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKworICAgIHRyeSB7CisgICAgICAgIGFjdHVh
bCA9IHJ1bigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaGFkRXJyb3IgPSB0cnVlOwor
ICAgICAgICBhY3R1YWwgPSBlOworICAgIH0KKworICAgIGlmICghaGFkRXJyb3IpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJy
b3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwg
aW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjZWQg
IiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiICwgYnV0IHRocmV3
ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVh
bC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
ICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiAr
IGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3luYyhy
dW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVy
cm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2
YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1
ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYg
KCFoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsg
IigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIp
OworICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBl
Lm5hbWUgKyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdl
ICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2Ug
KyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5jdGlv
biBzaG91bGRUaHJvd1N5bnRheEVycm9yKHN0ciwgbWVzc2FnZSkgeworICAgIHRyeSB7CisgICAg
ICAgIGV2YWwoc3RyKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBgIiArIHN0
ciArICJgIHRvIHRocm93IGEgU3ludGF4RXJyb3IsIGJ1dCBkaWQgbm90IHRocm93LiIpCisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZS5jb25zdHJ1Y3RvciAhPT0gU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGAiICsgc3RyICsgImAgdG8g
dGhyb3cgYSBTeW50YXhFcnJvciwgYnV0IHRocmV3ICciICsgZSArICInIik7CisgICAgICAgIGlm
IChtZXNzYWdlICE9PSB2b2lkIDAgJiYgZS5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBgIiArIHN0ciArICJgIHRvIHRocm93IFN5bnRh
eEVycm9yOiAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgZSArICInIik7CisgICAg
fQorfQorCisvLyBEbyBub3QgaW5zdGFsbCBgQXN5bmNGdW5jdGlvbmAgY29uc3RydWN0b3Igb24g
Z2xvYmFsIG9iamVjdAorc2hvdWxkQmUodW5kZWZpbmVkLCB0aGlzLkFzeW5jRnVuY3Rpb24pOwor
bGV0IEFzeW5jRnVuY3Rpb24gPSAoYXN5bmMgZnVuY3Rpb24oKSB7fSkuY29uc3RydWN0b3I7CisK
Ky8vIExldCBmdW5jdGlvblByb3RvdHlwZSBiZSB0aGUgaW50cmluc2ljIG9iamVjdCAlQXN5bmNG
dW5jdGlvblByb3RvdHlwZSUuCithc3luYyBmdW5jdGlvbiBhc3luY0Z1bmN0aW9uRm9yUHJvdG8o
KSB7fQorc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5
cGVPZihhc3luY0Z1bmN0aW9uRm9yUHJvdG8pKTsKK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJv
dG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmMgZnVuY3Rpb24oKSB7fSkpOworc2hv
dWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZihhc3lu
YyAoKSA9PiB7fSkpOworc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9iamVjdC5n
ZXRQcm90b3R5cGVPZih7IGFzeW5jIG1ldGhvZCgpIHt9IH0ubWV0aG9kKSk7CisKKy8vIEZJWE1F
OiBBc3luY0Z1bmN0aW9uIGNvbnN0cnVjdG9yIHNob3VsZCBidWlsZCBmdW5jdGlvbnMgd2l0aCBj
b3JyZWN0IHByb3RvdHlwZS4KKy8vIHNob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBP
YmplY3QuZ2V0UHJvdG90eXBlT2YoQXN5bmNGdW5jdGlvbigpKSk7CisKKy8vIEFzeW5jRnVuY3Rp
b25DcmVhdGUgZG9lcyBub3QgcHJvZHVjZSBhbiBvYmplY3Qgd2l0aCBhIFByb3RvdHlwZQorc2hv
dWxkQmUodW5kZWZpbmVkLCBhc3luY0Z1bmN0aW9uRm9yUHJvdG8ucHJvdG90eXBlKTsKK3Nob3Vs
ZEJlKGZhbHNlLCBhc3luY0Z1bmN0aW9uRm9yUHJvdG8uaGFzT3duUHJvcGVydHkoInByb3RvdHlw
ZSIpKTsKK3Nob3VsZEJlKHVuZGVmaW5lZCwgKGFzeW5jIGZ1bmN0aW9uKCkge30pLnByb3RvdHlw
ZSk7CitzaG91bGRCZShmYWxzZSwgKGFzeW5jIGZ1bmN0aW9uKCkge30pLmhhc093blByb3BlcnR5
KCJwcm90b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQsIChhc3luYygpID0+IHt9KS5wcm90
b3R5cGUpOworc2hvdWxkQmUoZmFsc2UsIChhc3luYygpID0+IHt9KS5oYXNPd25Qcm9wZXJ0eSgi
cHJvdG90eXBlIikpOworc2hvdWxkQmUodW5kZWZpbmVkLCAoeyBhc3luYyBtZXRob2QoKSB7fSB9
KS5tZXRob2QucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCAoeyBhc3luYyBtZXRob2QoKSB7
fSB9KS5tZXRob2QuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKK3Nob3VsZEJlKHVuZGVm
aW5lZCwgQXN5bmNGdW5jdGlvbigpLnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgQXN5bmNG
dW5jdGlvbigpLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKSk7CisKKy8vIEFzeW5jRnVuY3Rp
b24ucHJvdG90eXBlWyBAQHRvU3RyaW5nVGFnIF0KK3ZhciBkZXNjcmlwdG9yID0gT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgU3ltYm9sLnRv
U3RyaW5nVGFnKTsKK3Nob3VsZEJlKCJBc3luY0Z1bmN0aW9uIiwgZGVzY3JpcHRvci52YWx1ZSk7
CitzaG91bGRCZShmYWxzZSwgZGVzY3JpcHRvci5lbnVtZXJhYmxlKTsKK3Nob3VsZEJlKGZhbHNl
LCBkZXNjcmlwdG9yLndyaXRhYmxlKTsKK3Nob3VsZEJlKHRydWUsIGRlc2NyaXB0b3IuY29uZmln
dXJhYmxlKTsKKworc2hvdWxkQmUoMSwgQXN5bmNGdW5jdGlvbi5sZW5ndGgpOworCisvLyBMZXQg
RiBiZSAhIEZ1bmN0aW9uQWxsb2NhdGUoZnVuY3Rpb25Qcm90b3R5cGUsIFN0cmljdCwgIm5vbi1j
b25zdHJ1Y3RvciIpCithc3luYyBmdW5jdGlvbiBhc3luY05vbkNvbnN0cnVjdG9yRGVjbCgpIHt9
CitzaG91bGRUaHJvdygoKSA9PiBuZXcgYXN5bmNOb25Db25zdHJ1Y3RvckRlY2woKSwgVHlwZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyAoYXN5bmMgZnVuY3Rpb24oKSB7fSksIFR5cGVF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgKHsgYXN5bmMgbm9uQ29uc3RydWN0b3IoKSB7
fSB9KS5ub25Db25zdHJ1Y3RvcigpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3
ICgoKSA9PiAibm90IGEgY29uc3RydWN0b3IhIiksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygo
KSA9PiBuZXcgKEFzeW5jRnVuY3Rpb24oKSksIFR5cGVFcnJvcik7CisKKy8vIE5vcm1hbCBjb21w
bGV0aW9uCithc3luYyBmdW5jdGlvbiBhc3luY0RlY2woKSB7IHJldHVybiAidGVzdCI7IH0KK3No
b3VsZEJlQXN5bmMoInRlc3QiLCBhc3luY0RlY2wpOworc2hvdWxkQmVBc3luYygidGVzdDIiLCBh
c3luYyBmdW5jdGlvbigpIHsgcmV0dXJuICJ0ZXN0MiI7IH0pOworc2hvdWxkQmVBc3luYygidGVz
dDMiLCBhc3luYyAoKSA9PiAidGVzdDMiKTsKK3Nob3VsZEJlQXN5bmMoInRlc3Q0IiwgKCkgPT4g
KHsgYXN5bmMgZigpIHsgcmV0dXJuICJ0ZXN0NCI7IH0gfSkuZigpKTsKKworY2xhc3MgTXlFcnJv
ciBleHRlbmRzIEVycm9yIHt9OworCisvLyBUaHJvdyBjb21wbGV0aW9uCithc3luYyBmdW5jdGlv
biBhc3luY0RlY2xUaHJvd2VyKGUpIHsgdGhyb3cgbmV3IE15RXJyb3IoZSk7IH0KK3Nob3VsZFRo
cm93QXN5bmMoKCkgPT4gYXN5bmNEZWNsVGhyb3dlcigiYm9vbSEiKSwgTXlFcnJvciwgImJvb20h
Iik7CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IChhc3luYyBmdW5jdGlvbihlKSB7IHRocm93IG5l
dyBNeUVycm9yKGUpOyB9KSgiYm9vbSEhISIpLCBNeUVycm9yLCAiYm9vbSEhISIpOworc2hvdWxk
VGhyb3dBc3luYygoKSA9PiAoYXN5bmMgZSA9PiB7IHRocm93IG5ldyBNeUVycm9yKGUpIH0pKCJi
b29tISEiKSwgTXlFcnJvciwgImJvb20hISIpOworc2hvdWxkVGhyb3dBc3luYygoKSA9PiAoeyBh
c3luYyB0aHJvd2VyKGUpIHsgdGhyb3cgbmV3IE15RXJyb3IoZSk7IH0gfSkudGhyb3dlcigiYm9v
bSEhISEiKSwgTXlFcnJvciwgImJvb20hISEhIik7CisKK2Z1bmN0aW9uIHJlc29sdmVMYXRlcih2
YWx1ZSkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTsgfQorZnVuY3Rpb24gcmVqZWN0
TGF0ZXIoZXJyb3IpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsgfQorCisvLyBSZXN1
bWUgYWZ0ZXIgTm9ybWFsIGNvbXBsZXRpb24KK3ZhciBsb2cgPSBbXTsKK2FzeW5jIGZ1bmN0aW9u
IHJlc3VtZUFmdGVyTm9ybWFsKHZhbHVlKSB7CisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1
ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cu
cHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIo
dmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgcmV0dXJu
IHZhbHVlICsgMTsKK30KKworc2hvdWxkQmVBc3luYyg0LCAoKSA9PiByZXN1bWVBZnRlck5vcm1h
bCgxKSk7CitzaG91bGRCZSgic3RhcnQ6MSByZXN1bWU6MiByZXN1bWU6MyIsIGxvZy5qb2luKCIg
IikpOworCit2YXIgTyA9IHsKKyAgICBhc3luYyByZXN1bWVBZnRlck5vcm1hbCh2YWx1ZSkgewor
ICAgICAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhd2Fp
dCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsg
dmFsdWUpOworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOwor
ICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1
ZSArIDE7CisgICAgfQorfTsKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg1LCAoKSA9PiBPLnJl
c3VtZUFmdGVyTm9ybWFsKDIpKTsKK3Nob3VsZEJlKCJzdGFydDoyIHJlc3VtZTozIHJlc3VtZTo0
IiwgbG9nLmpvaW4oIiAiKSk7CisKK3ZhciByZXN1bWVBZnRlck5vcm1hbEFycm93ID0gYXN5bmMg
KHZhbHVlKSA9PiB7CisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdmFsdWUg
PSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIg
KyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAg
ICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK307
Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoNiwgKCkgPT4gcmVzdW1lQWZ0ZXJOb3JtYWxBcnJv
dygzKSk7CitzaG91bGRCZSgic3RhcnQ6MyByZXN1bWU6NCByZXN1bWU6NSIsIGxvZy5qb2luKCIg
IikpOworCit2YXIgcmVzdW1lQWZ0ZXJOb3JtYWxFdmFsID0gQXN5bmNGdW5jdGlvbigidmFsdWUi
LCBgCisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCBy
ZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7
CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVz
aCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK2ApOworbG9nID0g
W107CitzaG91bGRCZUFzeW5jKDcsICgpID0+IHJlc3VtZUFmdGVyTm9ybWFsRXZhbCg0KSk7Citz
aG91bGRCZSgic3RhcnQ6NCByZXN1bWU6NSByZXN1bWU6NiIsIGxvZy5qb2luKCIgIikpOworCisv
LyBSZXN1bWUgYWZ0ZXIgVGhyb3cgY29tcGxldGlvbgorYXN5bmMgZnVuY3Rpb24gcmVzdW1lQWZ0
ZXJUaHJvdyh2YWx1ZSkgeworICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHRy
eSB7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAg
IHRyeSB7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQor
ICAgIHJldHVybiB2YWx1ZSArIDE7Cit9CisKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYygyLCAo
KSA9PiByZXN1bWVBZnRlclRocm93KDEpKTsKK3Nob3VsZEJlKCJzdGFydDoxIHJlc3VtZTp0aHJv
dzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOworCit2YXIgTyA9IHsKKyAgICBhc3lu
YyByZXN1bWVBZnRlclRocm93KHZhbHVlKSB7CisgICAgICAgIGxvZy5wdXNoKCJzdGFydDoiICsg
dmFsdWUpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RM
YXRlcigidGhyb3cxIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGxvZy5w
dXNoKCJyZXN1bWU6IiArIGUpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzIiKTsKKyAgICAgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHZhbHVlICsgMTsKKyAgICB9Cit9Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5
bmMoMywgKCkgPT4gTy5yZXN1bWVBZnRlclRocm93KDIpKTsKK3Nob3VsZEJlKCJzdGFydDoyIHJl
c3VtZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOworCit2YXIgcmVzdW1l
QWZ0ZXJUaHJvd0Fycm93ID0gYXN5bmMgKHZhbHVlKSA9PiB7CisgICAgbG9nLnB1c2goInN0YXJ0
OiIgKyB2YWx1ZSk7CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRl
cigidGhyb3cxIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1l
OiIgKyBlKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RM
YXRlcigidGhyb3cyIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVz
dW1lOiIgKyBlKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK307Citsb2cgPSBbXTsK
K3Nob3VsZEJlQXN5bmMoNCwgKCkgPT4gcmVzdW1lQWZ0ZXJUaHJvd0Fycm93KDMpKTsKK3Nob3Vs
ZEJlKCJzdGFydDozIHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikp
OworCit2YXIgcmVzdW1lQWZ0ZXJUaHJvd0V2YWwgPSBBc3luY0Z1bmN0aW9uKCJ2YWx1ZSIsIGAK
KyAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB0cnkgeworICAgICAgICB2YWx1
ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzEiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICB0cnkgeworICAgICAgICB2
YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzIiKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICByZXR1cm4gdmFsdWUg
KyAxOworYCk7Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoNSwgKCkgPT4gcmVzdW1lQWZ0ZXJU
aHJvd0V2YWwoNCkpOworc2hvdWxkQmUoInN0YXJ0OjQgcmVzdW1lOnRocm93MSByZXN1bWU6dGhy
b3cyIiwgbG9nLmpvaW4oIiAiKSk7CisKKy8vIE1ldGhvb2REZWZpbml0aW9uIFN5bnRheEVycm9y
cworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgZm9vIDogdHJ1ZSB9
OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJn
dW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5j
IGZvbyA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFyZW50
aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
b2JqID0geyBhc3luYyBmb28gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVj
dGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBmb28gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4g
RXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKKworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgMCA6IHRydWUgfTsiLCAiVW5leHBlY3Rl
ZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAwID0gdHJ1ZSB9OyIs
ICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1l
bnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIDAg
LCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMg
Zm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0g
eyBhc3luYyAwIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGEgcGFyZW50aGVz
aXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBv
YmogPSB7IGFzeW5jICdmb28nIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhw
ZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVk
IHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nICwgYmFyIH07
IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1
bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMg
J2ZvbycgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBm
b3IgYXJndW1lbnQgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9
IHsgYXN5bmMgWydmb28nXSA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVj
dGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBbJ2ZvbyddID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVk
IHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIFsnZm9vJ10gLCBiYXIg
fTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFy
Z3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3lu
YyBbJ2ZvbyddIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGEgcGFyZW50aGVz
aXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNz
IEMgeyBhc3luYyBmb28gOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3Rl
ZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBmb28gPSB0cnVlIH07
IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUg
YSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoImNsYXNzIEMgeyBhc3luYyBmb28gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcu
IEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRl
ciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIGZvbyB9
IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUg
YSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiY2xhc3MgQyB7IGFzeW5jIDAgOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzon
LiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0
ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAwID0g
dHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcg
YmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgMCAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2Vu
ICcsJy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFy
YW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMg
MCB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZv
cmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRv
a2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3Mg
cGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5
bmMgJ2ZvbycgPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBv
cGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAnZm9vJyAsIGJhciB9OyIsICJV
bmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5
bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJj
bGFzcyBDIHsgYXN5bmMgJ2ZvbycgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQg
YW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7
CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBbJ2ZvbyddIDogdHJ1
ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVm
b3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgWydmb28nXSA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0
b2tlbiAnPScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdz
IHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFz
eW5jIFsnZm9vJ10gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFu
IG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsnZm9vJ10gfSIsICJVbmV4
cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMg
bWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9h
c3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5j
LWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4YjI0ZmU3NjBiMGEz
YWIyZDlmZjViMTVjMzQ3ZmNmNzFjMmY4MTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcwpAQCAtMCwwICsxLDcyIEBA
CisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRB
WCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91
bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxz
ZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJy
b3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNz
YWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3Ip
fWApOworfQorCitmdW5jdGlvbiBjaGVja01vZHVsZVN5bnRheEVycm9yKHNvdXJjZSwgZXJyb3JN
ZXNzYWdlKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gY2hlY2tNb2R1bGVTeW50YXgoc291cmNl
KSwgZXJyb3JNZXNzYWdlKTsKK30KKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3
YAordmFyIGF3YWl0OworYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZh
cmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoYAor
ZXhwb3J0IHZhciBhd2FpdDsKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9y
KFN0cmluZy5yYXdgCitsZXQgYXdhaXQ7CitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01v
ZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQgbGV0IGF3YWl0OworYCwgYFN5bnRh
eEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
IG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorY29uc3Qg
YXdhaXQgPSAxCitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9y
KFN0cmluZy5yYXdgCitleHBvcnQgY29uc3QgYXdhaXQgPSAxCitgLCBgU3ludGF4RXJyb3I6IENh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoy
YCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2Z1bmN0aW9uIGF3YWl0
KCkge30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3
YWl0JyBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3
YAorZnVuY3Rpb24qIGF3YWl0KCkge30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUg
ZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50
YXhFcnJvcihTdHJpbmcucmF3YAorYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fQorYCwgYFN5bnRh
eEVycm9yOiBDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGEgbW9kdWxl
LjoyYCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCB7YXdh
aXR9IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBh
biBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3Ry
aW5nLnJhd2AKK2ltcG9ydCB7Zm9vIGFzIGF3YWl0fSBmcm9tICdmb28nOworYCwgYFN5bnRheEVy
cm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7
CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgKiBhcyBhd2FpdCBm
cm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1w
b3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5y
YXdgCitpbXBvcnQgYXdhaXQsIHt4LCB5LCB6fSBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9y
OiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7Citj
aGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgYXdhaXQsIHt4LCB5LCB6
LH0gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFu
IGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJp
bmcucmF3YAoraW1wb3J0IGF3YWl0IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9k
dWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCBhd2FpdCwgKiBhcyBmb28gZnJvbSAn
Zm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVk
IGJpbmRpbmcgbmFtZS46MmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdh
aXQtbW96aWxsYS5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGM1ZDZiOTJkM2U2MWU0OTgzOWUwNmNkMWQ0ZTFiNTgwM2U3OGEwYgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanMKQEAgLTAs
MCArMSwzMDUgQEAKKy8qIFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0
ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWMKKyAqIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5
IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAqIGZpbGUsIFlvdSBj
YW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96Lm9yZy9NUEwvMi4wLy4gKi8KKworLy8gVGhpcyB0
ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5h
YmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0
ZWQsIGFjdHVhbCwgbXNnID0gIiIpIHsKKyAgICBpZiAobXNnKQorICAgICAgICBtc2cgPSAiIGZv
ciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVu
LCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAg
IHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAg
ICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9y
OyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAg
IHRocm93IGFjdHVhbDsKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQor
CitmdW5jdGlvbiBzaG91bGRUaHJvdyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxl
dCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAg
YWN0dWFsID0gcnVuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBoYWRFcnJvciA9IHRy
dWU7CisgICAgICAgIGFjdHVhbCA9IGU7CisgICAgfQorICAgIGlmICghaGFkRXJyb3IpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsg
ZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1
YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiICwgYnV0IHRo
cmV3ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFj
dHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAn
IiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3lu
YyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhh
ZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwg
PSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0g
dHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworICAgIGlm
ICghaGFkRXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biAr
ICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4i
KTsKKyAgICBpZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlw
ZS5uYW1lICsgIiwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2Fn
ZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdl
ICsgIicsIGJ1dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rp
b24gYXNzZXJ0KGNvbmQsIG1zZyA9ICIiKSB7CisgICAgaWYgKCFjb25kKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IobXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dTeW50YXhFcnJvcihz
dHIsIG1lc3NhZ2UpIHsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICB0cnkgeworICAg
ICAgICBldmFsKHN0cik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0YW5j
ZW9mIFN5bnRheEVycm9yKSB7CisgICAgICAgICAgICBoYWRFcnJvciA9IHRydWU7CisgICAgICAg
ICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgICAgIGFz
c2VydChlLm1lc3NhZ2UgPT09IG1lc3NhZ2UsICJFeHBlY3RlZCAnIiArIG1lc3NhZ2UgKyAiJyBi
dXQgdGhyZXcgJyIgKyBlLm1lc3NhZ2UgKyAiJyIpOworICAgICAgICB9CisgICAgfQorICAgIGFz
c2VydChoYWRFcnJvciwgIkRpZCBub3QgdGhyb3cgc3ludGF4IGVycm9yIik7Cit9CisKKy8vIHNl
bWFudGljcy5qcworKGZ1bmN0aW9uIG1velNlbWFudGljcygpIHsKKworYXN5bmMgZnVuY3Rpb24g
ZW1wdHkoKSB7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNpbXBsZVJldHVybigpIHsKKyAgICByZXR1
cm4gMTsKK30KKworYXN5bmMgZnVuY3Rpb24gc2ltcGxlQXdhaXQoKSB7CisgICAgdmFyIHJlc3Vs
dCA9IGF3YWl0IDI7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYXN5bmMgZnVuY3Rpb24gc2lt
cGxlQXdhaXRBc3luYygpIHsKKyAgICB2YXIgcmVzdWx0ID0gYXdhaXQgc2ltcGxlUmV0dXJuKCk7
CisgICAgcmV0dXJuIDIgKyByZXN1bHQ7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJldHVybk90aGVy
QXN5bmMoKSB7CisgICAgcmV0dXJuIDEgKyBhd2FpdCBzaW1wbGVBd2FpdEFzeW5jKCk7Cit9CisK
K2FzeW5jIGZ1bmN0aW9uIHNpbXBsZVRocm93ZXIoKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCk7
Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGRlbGVnYXRlZFRocm93ZXIoKSB7CisgICAgdmFyIHZhbCA9
IGF3YWl0IHNpbXBsZVRocm93ZXIoKTsKKyAgICByZXR1cm4gdmFsOworfQorCithc3luYyBmdW5j
dGlvbiB0cnlDYXRjaCgpIHsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBkZWxlZ2F0ZWRUaHJv
d2VyKCk7CisgICAgICAgIHJldHVybiAnRkFJTEVEJzsKKyAgICB9IGNhdGNoIChfKSB7CisgICAg
ICAgIHJldHVybiA1OworICAgIH0KK30KKworYXN5bmMgZnVuY3Rpb24gdHJ5Q2F0Y2hUaHJvdygp
IHsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgICAg
IHJldHVybiAnRkFJTEVEJzsKKyAgICB9IGNhdGNoIChfKSB7CisgICAgICAgIHJldHVybiBkZWxl
Z2F0ZWRUaHJvd2VyKCk7CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiB3ZWxsRmluYWxseSgp
IHsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgfSBj
YXRjaCAoXykgeworICAgICAgICByZXR1cm4gJ0ZBSUxFRCc7CisgICAgfSBmaW5hbGx5IHsKKyAg
ICAgICAgcmV0dXJuIDY7CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiBmaW5hbGx5TWF5RmFp
bCgpIHsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAg
fSBjYXRjaCAoXykgeworICAgICAgICByZXR1cm4gNTsKKyAgICB9IGZpbmFsbHkgeworICAgICAg
ICByZXR1cm4gZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0KK30KKworYXN5bmMgZnVuY3Rpb24g
ZW1iZWRkZWQoKSB7CisgICAgYXN5bmMgZnVuY3Rpb24gaW5uZXIoKSB7CisgICAgICAgIHJldHVy
biA3OworICAgIH0KKyAgICByZXR1cm4gYXdhaXQgaW5uZXIoKTsKK30KKworLy8gcmVjdXJzaW9u
LCBpdCB3b3JrcyEKK2FzeW5jIGZ1bmN0aW9uIGZpYihuKSB7CisgICAgcmV0dXJuIChuID09IDAg
fHwgbiA9PSAxKSA/IG4gOiBhd2FpdCBmaWIobiAtIDEpICsgYXdhaXQgZmliKG4gLSAyKTsKK30K
KworLy8gbXV0dWFsIHJlY3Vyc2lvbgorYXN5bmMgZnVuY3Rpb24gaXNPZGQobikgeworICAgIGFz
eW5jIGZ1bmN0aW9uIGlzRXZlbihuKSB7CisgICAgICAgIHJldHVybiBuID09PSAwIHx8IGF3YWl0
IGlzT2RkKG4gLSAxKTsKKyAgICB9CisgICAgcmV0dXJuIG4gIT09IDAgJiYgYXdhaXQgaXNFdmVu
KG4gLSAxKTsKK30KKworLy8gcmVjdXJzaW9uLCB0YWtlIHRocmVlIQordmFyIGhhcmRjb3JlRmli
ID0gYXN5bmMgZnVuY3Rpb24gZmliMihuKSB7CisgICAgcmV0dXJuIChuID09IDAgfHwgbiA9PSAx
KSA/IG4gOiBhd2FpdCBmaWIyKG4gLSAxKSArIGF3YWl0IGZpYjIobiAtIDIpOworfQorCit2YXIg
YXN5bmNFeHByID0gYXN5bmMgZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIDEwOworfQorCit2YXIg
bmFtZWRBc3luY0V4cHIgPSBhc3luYyBmdW5jdGlvbiBzaW1wbGUoKSB7CisgICAgcmV0dXJuIDEx
OworfQorCithc3luYyBmdW5jdGlvbiBleGVjdXRpb25PcmRlcigpIHsKKyAgICB2YXIgdmFsdWUg
PSAwOworICAgIGFzeW5jIGZ1bmN0aW9uIGZpcnN0KCkgeworICAgICAgICByZXR1cm4gKHZhbHVl
ID0gdmFsdWUgPT09IDAgPyAxIDogdmFsdWUpOworICAgIH0KKyAgICBhc3luYyBmdW5jdGlvbiBz
ZWNvbmQoKSB7CisgICAgICAgIHJldHVybiAodmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDIgOiB2YWx1
ZSk7CisgICAgfQorICAgIGFzeW5jIGZ1bmN0aW9uIHRoaXJkKCkgeworICAgICAgICByZXR1cm4g
KHZhbHVlID0gdmFsdWUgPT09IDAgPyAzIDogdmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gYXdh
aXQgZmlyc3QoKSArIGF3YWl0IHNlY29uZCgpICsgYXdhaXQgdGhpcmQoKSArIDY7Cit9CisKK2Fz
eW5jIGZ1bmN0aW9uIG1pc2NlbGxhbmVvdXMoKSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgg
PT09IDMgJiYKKyAgICAgICAgYXJndW1lbnRzLmNhbGxlZS5uYW1lID09PSAibWlzY2VsbGFuZW91
cyIpCisgICAgICAgIHJldHVybiAxNDsKK30KKworZnVuY3Rpb24gdGhyb3dlcigpIHsKKyAgICB0
aHJvdyAxNTsKK30KKworYXN5bmMgZnVuY3Rpb24gZGVmYXVsdEFyZ3MoYXJnID0gdGhyb3dlcigp
KSB7Cit9CisKKy8vIEFzeW5jIGZ1bmN0aW9ucyBhcmUgbm90IGNvbnN0cnVjdGlibGUKK3Nob3Vs
ZFRocm93KCgpID0+IHsKKyAgICBhc3luYyBmdW5jdGlvbiBQZXJzb24oKSB7CisgICAgfQorICAg
IG5ldyBQZXJzb24oKTsKK30sIFR5cGVFcnJvcik7CisKK3Nob3VsZEJlQXN5bmModW5kZWZpbmVk
LCBlbXB0eSk7CitzaG91bGRCZUFzeW5jKDEsIHNpbXBsZVJldHVybik7CitzaG91bGRCZUFzeW5j
KDIsIHNpbXBsZUF3YWl0KTsKK3Nob3VsZEJlQXN5bmMoMywgc2ltcGxlQXdhaXRBc3luYyk7Citz
aG91bGRCZUFzeW5jKDQsIHJldHVybk90aGVyQXN5bmMpOworc2hvdWxkVGhyb3dBc3luYyhzaW1w
bGVUaHJvd2VyLCBFcnJvcik7CitzaG91bGRCZUFzeW5jKDUsIHRyeUNhdGNoKTsKK3Nob3VsZEJl
QXN5bmMoNiwgd2VsbEZpbmFsbHkpOworc2hvdWxkVGhyb3dBc3luYyhmaW5hbGx5TWF5RmFpbCwg
RXJyb3IpOworc2hvdWxkQmVBc3luYyg3LCBlbWJlZGRlZCk7CitzaG91bGRCZUFzeW5jKDgsICgp
ID0+IGZpYig2KSk7CitzaG91bGRCZUFzeW5jKDksIGV4ZWN1dGlvbk9yZGVyKTsKK3Nob3VsZEJl
QXN5bmMoMTAsIGFzeW5jRXhwcik7CitzaG91bGRCZUFzeW5jKDExLCBuYW1lZEFzeW5jRXhwcik7
CitzaG91bGRCZUFzeW5jKDEyLCAoKSA9PiBpc09kZCgxMikudGhlbih2ID0+IHYgPyAib29wcyIg
OiAxMikpOworc2hvdWxkQmVBc3luYygxMywgKCkgPT4gaGFyZGNvcmVGaWIoNykpOworc2hvdWxk
QmVBc3luYygxNCwgKCkgPT4gbWlzY2VsbGFuZW91cygxLCAyLCAzKSk7CitzaG91bGRCZUFzeW5j
KDE1LCAoKSA9PiBkZWZhdWx0QXJncygpLmNhdGNoKGUgPT4gZSkpOworCit9KSgpOworCisvLyBt
ZXRob2RzLmpzCisoZnVuY3Rpb24gbW96TWV0aG9kcygpIHsKKworY2xhc3MgWCB7CisgICAgY29u
c3RydWN0b3IoKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSA0MjsKKyAgICB9CisgICAgYXN5bmMg
Z2V0VmFsdWUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOworICAgIH0KKyAgICBzZXRW
YWx1ZSh2YWx1ZSkgeworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgfQorICAgIGFz
eW5jIGluY3JlbWVudCgpIHsKKyAgICAgICAgdmFyIHZhbHVlID0gYXdhaXQgdGhpcy5nZXRWYWx1
ZSgpOworICAgICAgICB0aGlzLnNldFZhbHVlKHZhbHVlICsgMSk7CisgICAgICAgIHJldHVybiB0
aGlzLmdldFZhbHVlKCk7CisgICAgfQorICAgIGFzeW5jIGdldEJhc2VDbGFzc05hbWUoKSB7Cisg
ICAgICAgIHJldHVybiAnWCc7CisgICAgfQorICAgIHN0YXRpYyBhc3luYyBnZXRTdGF0aWNWYWx1
ZSgpIHsKKyAgICAgICAgcmV0dXJuIDQ0OworICAgIH0KK30KKworY2xhc3MgWSBleHRlbmRzIFgg
eworICAgIGFzeW5jIGdldEJhc2VDbGFzc05hbWUoKSB7CisgICAgICAgIHJldHVybiBzdXBlci5n
ZXRCYXNlQ2xhc3NOYW1lKCk7CisgICAgfQorfQorCit2YXIgb2JqTGl0ZXJhbCA9IHsKKyAgICBh
c3luYyBnZXQoKSB7CisgICAgICAgIHJldHVybiA0NTsKKyAgICB9LAorICAgIHNvbWVTdHVmZjog
NQorfTsKKwordmFyIHggPSBuZXcgWCgpOwordmFyIHkgPSBuZXcgWSgpOworCitzaG91bGRCZUFz
eW5jKDQyLCAoKSA9PiB4LmdldFZhbHVlKCkpOworc2hvdWxkQmVBc3luYyg0MywgKCkgPT4geC5p
bmNyZW1lbnQoKSk7CitzaG91bGRCZUFzeW5jKDQ0LCAoKSA9PiBYLmdldFN0YXRpY1ZhbHVlKCkp
Oworc2hvdWxkQmVBc3luYyg0NSwgKCkgPT4gb2JqTGl0ZXJhbC5nZXQoKSk7CitzaG91bGRCZUFz
eW5jKCdYJywgKCkgPT4geS5nZXRCYXNlQ2xhc3NOYW1lKCkpOworCit9KSgpOworCisoZnVuY3Rp
b24gbW96RnVuY3Rpb25OYW1lSW5mZXJyZW5jZSgpIHsKKworYXN5bmMgZnVuY3Rpb24gdGVzdCgp
IHsgfQorCit2YXIgYW5vbiA9IGFzeW5jIGZ1bmN0aW9uKCkgeyB9CisKK3Nob3VsZEJlKCJ0ZXN0
IiwgdGVzdC5uYW1lKTsKK3Nob3VsZEJlKCJhbm9uIiwgYW5vbi5uYW1lKTsKKworfSkoKTsKKwor
KGZ1bmN0aW9uIG1velN5bnRheEVycm9ycygpIHsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
J3VzZSBzdHJpY3QnOyBhc3luYyBmdW5jdGlvbiBldmFsKCkge30iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIid1c2Ugc3RyaWN0JzsgYXN5bmMgZnVuY3Rpb24gYXJndW1lbnRzKCkge30iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGEoayA9IHN1cGVyLnByb3Ap
IHsgfSIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gYSgpIHsgc3Vw
ZXIucHJvcCgpOyB9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBh
KCkgeyBzdXBlcigpOyB9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlv
biBhKGsgPSBhd2FpdCAzKSB7fSIpOworCit9KSgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdvcmQu
anMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM4ZTFkMzMyMWM3ZjgwMDg3YmVkZjBmMTU3MjFiMjk1YjgxZWVmYjMKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzCkBAIC0w
LDAgKzEsMTY2IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZV
TkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitm
dW5jdGlvbiBhc3NlcnQoY29uZCwgbXNnID0gIiIpIHsKKyAgICBpZiAoIWNvbmQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihtc2cpOworfQorbm9JbmxpbmUoYXNzZXJ0KTsKKworZnVuY3Rpb24g
c2hvdWxkVGhyb3dTeW50YXhFcnJvcihzdHIsIG1lc3NhZ2UpIHsKKyAgICB2YXIgaGFkRXJyb3Ig
PSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBldmFsKHN0cik7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7CisgICAgICAgICAgICBo
YWRFcnJvciA9IHRydWU7CisgICAgICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJp
bmciKQorICAgICAgICAgICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09IG1lc3NhZ2UsICJFeHBl
Y3RlZCAnIiArIG1lc3NhZ2UgKyAiJyBidXQgdGhyZXcgJyIgKyBlLm1lc3NhZ2UgKyAiJyIpOwor
ICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChoYWRFcnJvciwgIkRpZCBub3QgdGhyb3cgc3lu
dGF4IGVycm9yIik7Cit9Citub0lubGluZShzaG91bGRUaHJvd1N5bnRheEVycm9yKTsKKwordmFy
IEFzeW5jRnVuY3Rpb24gPSAoYXN5bmMgZnVuY3Rpb24oKSB7fSkuY29uc3RydWN0b3I7CisKKy8v
IEFzeW5jRnVuY3Rpb25FeHByZXNzaW9uCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMg
ZnVuY3Rpb24oKSB7IHZhciBhd2FpdDsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIgW2F3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciBbLi4uYXdhaXRdID0g
W107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigp
IHsgdmFyIHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
KGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciB7aXNBc3lu
YzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3lu
YyBmdW5jdGlvbigpIHsgbGV0IGF3YWl0OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSkiLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7
IGxldCBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9KSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0
IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307
IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0
aW9uKCkgeyBjb25zdCBhd2FpdDsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSkiLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNv
bnN0IFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IHthd2FpdH0gPSB7fTsgfSkiLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNv
bnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0g
PSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMg
ZnVuY3Rpb24oKSB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSkiLCAiQ2Fubm90IGRlY2xhcmUgZnVu
Y3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7
fSB9KSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKGF3
YWl0KSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlv
biBmKFthd2FpdF0pIHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5j
IGZ1bmN0aW9uIGYoWy4uLmF3YWl0XSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFy
YW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCIoYXN5bmMgZnVuY3Rpb24gZiguLi5hd2FpdCkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24gZih7YXdhaXR9KSB7fSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKHtpc0FzeW5jOiBhd2FpdH0p
IHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworCisvLyBBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24KK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciBhd2FpdDsgfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIgW2F3YWl0XSA9
IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBm
KCkgeyB2YXIgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIge2F3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIge2lzQXN5bmM6
IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBm
dW5jdGlvbiBmKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQgYXdhaXQ7IH0iLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkg
eyBsZXQgW2F3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxl
dCB7YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsg
bGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IGF3YWl0OyB9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29u
c3QgW2F3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3QgWy4uLmF3YWl0XSA9IFtdOyB9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29u
c3Qge2F3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigp
IHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgZnVuY3Rpb24gYXdhaXQoKSB7
fSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkg
eyBhc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24g
bmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoYXdhaXQpIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKFthd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKFsuLi5hd2FpdF0pIHt9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKC4uLmF3YWl0KSB7fSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZih7YXdhaXR9
KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZih7
aXNBc3luYzogYXdhaXR9KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworCisvLyBBc3luY0Fycm93RnVuY3Rpb24KK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIgYXdhaXQ7IH0i
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZh
ciBbYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBm
ID0gYXN5bmMgKCkgPT4geyB2YXIgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIHthd2FpdH0gPSB7fTsg
fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7
IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9
KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsg
bGV0IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IGYgPSBhc3luYyAoKSA9PiB7IGxldCBbYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IFsuLi5hd2Fp
dF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBm
ID0gYXN5bmMgKCkgPT4geyBsZXQge2F3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCB7aXNBc3luYzog
YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBj
b25zdCBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCBbYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3QgWy4u
LmF3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCB7
aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9
OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3lu
YyAoKSA9PiB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlv
biBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGFzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30g
fSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoYXdhaXQp
ID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jIChb
YXdhaXRdKSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBh
c3luYyAoWy4uLmF3YWl0XSkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0
ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBmID0gYXN5bmMgKC4uLmF3YWl0KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIGYgPSBhc3luYyAoe2F3YWl0fSkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKHtpc0FzeW5jOiBhd2FpdH0pID0+IHt9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jIGF3YWl0ID0+IHt9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CisKKy8vIEFzeW5jTWV0aG9kCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
TyA9IHsgYXN5bmMgZigpIHsgdmFyIGF3YWl0OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciBbYXdhaXRdID0gW107IH0gfSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIFsu
Li5hd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBP
ID0geyBhc3luYyBmKCkgeyB2YXIge2F3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciB7aXNBc3luYzogYXdhaXR9
ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5
bmMgZigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQgYXdhaXQ7IH0gfSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkg
eyBsZXQgW2F3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IFsuLi5hd2FpdF0gPSBbXTsgfSB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYo
KSB7IGxldCB7YXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9
OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsg
YXN5bmMgZigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IGF3
YWl0OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9
IHsgYXN5bmMgZigpIHsgY29uc3QgW2F3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3QgWy4uLmF3
YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3Qge2F3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3Qg
e2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9
IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9
IHsgYXN5bmMgZigpIHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1
bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQo
KSB7fSB9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3lu
YyBmKGF3YWl0KSB7fSB9ICIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8g
PSB7IGFzeW5jIGYoW2F3YWl0XSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0
ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBPID0geyBhc3luYyBmKFsuLi5hd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZiguLi5hd2FpdCkge30iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKHthd2FpdH0pIHt9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZih7aXNBc3luYzogYXdh
aXR9KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworCisvLyBBc3luY0Z1bmN0aW9uIGNvbnN0cnVjdG9yCitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIgYXdhaXQ7JykiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIFthd2FpdF0gPSBbXTsnKSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIgWy4uLmF3
YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rp
b24oJ3ZhciB7YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
QXN5bmNGdW5jdGlvbigndmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIge2lzQXN5bmM6IGF3YWl0fSA9
IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xl
dCBhd2FpdDsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5j
RnVuY3Rpb24oJ2xldCBbYXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQgWy4uLmF3YWl0XSA9IFtdOycpIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignbGV0IHth
d2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFz
eW5jRnVuY3Rpb24oJ2xldCB7aXNBc3luYzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQge2lzQXN5bmM6IGF3
YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5
bmNGdW5jdGlvbignY29uc3QgYXdhaXQ7JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCBbYXdhaXRdID0gW107JykiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCBbLi4u
YXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJB
c3luY0Z1bmN0aW9uKCdjb25zdCB7YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCB7aXNBc3luYzogYXdhaXR9
ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1
bmN0aW9uKCdjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdmdW5jdGlvbiBhd2FpdCgpIHt9
JykiLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2FzeW5j
IGZ1bmN0aW9uIGF3YWl0KCkge30nKSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAn
YXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
QXN5bmNGdW5jdGlvbignYXdhaXQnLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJh
bWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoIkFzeW5jRnVuY3Rpb24oJ1thd2FpdF0nLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ1suLi5hd2FpdF0nLCAnJykiLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJy4uLmF3YWl0JywgJycpIiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd7YXdhaXR9JywgJycpIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd7aXNBc3luYzog
YXdhaXR9JywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292470</attachid>
            <date>2016-10-21 22:49:54 -0700</date>
            <delta_ts>2016-10-25 08:06:56 -0700</delta_ts>
            <desc>fix async-arrow-functions-lexical-arguments-binding.js</desc>
            <filename>bug-163760-20161022014612.patch</filename>
            <type>text/plain</type>
            <size>150238</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OWEwN2Y1MTVjNGZhNjU0MGQ4YjlkYTk3MzhiZWI4YmQyOTI4OTNmLi41NjM4MTg2ZjZmODExMDU5
ZjM0ODg4ZTMzODgwYzEwYTQzNmQ5MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTcgQEAKKzIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBm
dW5jdGlvbnMgZ2VuZXJhdGUgYnl0ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3
aGljaCBpcworICAgICAgICBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb246CisgICAgICAgIAorICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5z
bGF0aW9uOgorICAgICAgICBhc3luYyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAv
LyBBZnRlciB0cmFuc2xhdGlvbjoKKyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAg
ICAgICAgIGxldCBnZW5lcmF0b3IgPSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQm9keSBvZiBhc3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgQGdlbmVyYXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5l
cmF0b3JUaGlzOiB0aGlzLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8
ZnJhbWUgc3RhdGU+LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgQXdhaXQgRXhw
cmVzc2lvbnMgYXJlIGVxdWl2YWxlbnQgdG8gbm9uLWRlbGVnYXRpbmcgWWllbGQgZXhwcmVzc2lv
bnMsIGFuZCBlbWl0IGlkZW50aWNhbCBieXRlY29kZS4KKworICAgICAgICBJbiB0aGlzIGJ1Zywg
YXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBvbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCwgYXMg
c3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGRvIG5vdCB5ZXQgd29y
ayBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5q
czogQWRkZWQuCisgICAgICAgIChhc3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19hc3luY19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3
RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZSk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6QXN5bmNG
dW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6
SlNBc3luY0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJl
bnRseSk6CisKIDIwMTYtMTAtMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVuYW1lIFdBU00gdG8gV2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDAxY2IyOTQ3MzdiMjQ0ZjIxZGI3YTk1Mzk3OWU0OTJiNzMwMDQyZDgu
LmFlMTE5YmFmZWQ2YjcwMDUyN2M1YTI0NTM0MmEzZDUxMWY5ZDkxZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTYzNSw2ICs2MzUsOCBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIHJ1bnRpbWUvQXJyYXlDb252ZW50aW9ucy5jcHAKICAgICBydW50aW1l
L0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKKyAgICBydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1l
L0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9CYXNpY0Jsb2NrTG9jYXRp
b24uY3BwCiAgICAgcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9C
b29sZWFuT2JqZWN0LmNwcApAQCAtNzExLDYgKzcxMyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCisgICAgcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0NKU1ZhbHVlLmNwcAogICAgIHJ1bnRp
bWUvSlNDYWxsZWUuY3BwCkBAIC0xMjk1LDYgKzEyOTgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
QlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJh
eUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
QXJyYXlQcm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9EYXRlUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1
bmN0aW9uUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA2NjMwNTM3MjAyNGUxZGQ5M2E0YWM3MmQwMjkwNmEzMjAzMDU0NjYyLi4yODU0
ZDVlNzk4NmRiMDkxYjJiOTg0Y2EwZTNmMGYyNDc5MGMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODksNiArODksNyBAQCBKYXZhU2NyaXB0Q29y
ZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5UHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Bc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9EYXRl
UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9GdW5jdGlvblBy
b3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvR2VuZXJhdG9yUHJv
dG90eXBlLmpzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhYTA4NGU4MTFk
YTMxNGRhNmNmYjQ3MDFhMzMzOGZiMzBjMzM3MS4uMThmZTU3MTdlYjYzNzViZDRiMDhiNGIwZWE0
ZTRkNzEzMzI1YWJjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNDMsNiAr
MTI0MywxMiBAQAogCQk1M0ZBMkFFMzFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovOyB9OwogCQk1
M0ZEMDREMzFEN0FCMjc3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQxMUQ3QUIx
ODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovOyB9OwogCQk1M0ZEMDRE
NDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZEMDREMjFEN0FCMTg3MDAzMjg3
RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi87IH07CisJCTVCNzBDRkRFMURCNjlFNjYw
MEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVu
Y3Rpb24uaCAqLzsgfTsKKwkJNUI3MENGREYxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5j
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLzsgfTsKKwkJ
NUI3MENGRTAxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRBMURCNjlF
NUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi87IH07CisJCTVCNzBDRkUx
MURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRCMURCNjlFNUMwMEVD
MjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNUI3MENGRTIxREI2
OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREMxREI2OUU1QzAwRUMyM0Y5
IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyB9OworCQk1QjcwQ0ZFMzFEQjY5RTY2
MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAv
KiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk1RDVEOEFEMTBFMEQwRUJF
MDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5
bGliICovOyB9OwogCQk1REJCMTUxQjEzMUQwQjMxMDA1NkFEMzYgLyogdGVzdGFwaS5qcyBpbiBD
b3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovOyB9OwogCQk1REJCMTUyNTEz
MUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTIxMTBEMEE0ODc4ODcwMDQ4MDI1NSAv
KiBtaW5pZG9tLmpzICovOyB9OwpAQCAtMzU0OCw2ICszNTU0LDEzIEBACiAJCTUzRkEyQUUyMUNG
MzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTNGRDA0RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29u
dmVudGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ2Fs
bGluZ0NvbnZlbnRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZEMDRE
MjFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DYWxsaW5nQ29udmVudGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXN5bmNGdW5jdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIz
RjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQXN5bmNGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVCNzBDRkRBMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGREIxREI2OUU1QzAwRUMyM0Y5IC8q
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkREMURCNjlF
NUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZHlsaWIiOyBuYW1lID0gbGliZWRpdC5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmVkaXQu
ZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTVEQUZENkNCMTQ2QjY4NjMw
MEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gSlNDLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RERERjQ0NjE0RkVFNzIyMDBCNEZCNEQgLyogTExJ
bnREZXNpcmVkT2Zmc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTElu
dERlc2lyZWRPZmZzZXRzLmg7IHBhdGggPSBMTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNTkxNSw2ICs1OTI4
LDEwIEBACiAJCQkJRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNw
cCAqLywKIAkJCQlGNjkyQTg0RTAyNTU1OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuaCAq
LywKIAkJCQkwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggKi8sCisJ
CQkJNUI3MENGREQxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgKi8sCisJCQkJNUI3MENGREMxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oICovLAorCQkJCTVCNzBDRkRCMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0
aW9uUHJvdG90eXBlLmNwcCAqLywKKwkJCQk1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJCTBGMzhEMkEwMUQ0NDE5NjYwMDY4MDQ5OSAv
KiBBdXhpbGlhcnlCYXJyaWVyLmggKi8sCiAJCQkJMEYzOEQyQTExRDQ0MTk2NjAwNjgwNDk5IC8q
IEF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmggKi8sCiAJCQkJNTI2NzhGOEMxQTAzMTAwOTAwNkEz
MDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5jcHAgKi8sCkBAIC02MTAwLDYgKzYxMTcsOCBAQAog
CQkJCTBGMkI2NkJCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5oICovLAog
CQkJCTBGMkI2NkJDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlld0lubGluZXMu
aCAqLywKIAkJCQk1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAq
LywKKwkJCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8s
CiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8s
CiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAog
CQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCkBAIC03Mjg4
LDYgKzczMDcsNyBAQAogCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheVByb3Rv
dHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1ODFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlDb25zdHJ1
Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1OTFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5qcyAqLywKKwkJCQk1QjgyNDMwNDFEQjdBQTQ5MDBFQTYzODQgLyogQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5qcyAqLywKIAkJCQlERTI2RTkwNjFDQjVERDk2MDBEMkJFODIgLyog
QnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCAqLywKIAkJCQlERTI2RTkwMjFDQjVERDA1MDBE
MkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi8sCiAJCQkJQTdEODAxQTExODgw
RDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCkBAIC03NzIwLDYgKzc3
NDAsNyBAQAogCQkJCURDM0QyQjBBMUQzNDMxNjIwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZDM0NDRkMxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGRDE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tN
YXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZFMjFEQjY5RTY2MDBFQzIzRjkg
LyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NG
RTE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QkYxNThEMTlCN0E1MzEwMDY5NUREMCAvKiBERkdCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzNDRDAwMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja1dvcmtsaXN0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTgyODgsNiArODMwOSw3IEBACiAJCQkJN0MxODRFMUIxN0JFREJE
MzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxODRFMjMxN0JF
RTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OTZCNzMxRTFCREEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNlQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZERTFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1
bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyog
SlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTFGMTdCRUUyMkUw
MDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3
MzFGMUJEQTA4RUYwMDMzMUI4NCAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTg0MjgsNiArODQ1MCw3IEBACiAJCQkJQkMxOEM0M0YwRTE2RjVDRDAwQjM0NDYw
IC8qIE5vZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUU0NUEyODE4QTFCMjU5MDAyNkQ4OEYg
LyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MTBF
MTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTVCNzBDRkUwMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MjBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MzBFMTZGNUNEMDBCMzQ0NjAg
LyogTnVtYmVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0NDBFMTZGNUNEMDBC
MzQ0NjAgLyogTnVtYmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTkyOTMsNiArOTMx
Niw3IEBACiAJCQkJQTU1NzE0QkYxQ0Q4MDRBNDAwMDREMkM2IC8qIENvbnNvbGVPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hw
b2ludFNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjcxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCNzBDRkUz
MURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQzg1MjkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGhhc2VTY29wZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUyQjFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1
cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MjJBNjIxQzE1OEU2QTAwRTJFQjk4IC8qIEIz
Q29uc3RGbG9hdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTcwNiw2ICs5NzMwLDcgQEAK
IAkJCQkwRjU1MTNBODFENUE2OENEMDBDMzJCRDggLyogRnJlZUxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkU5OUIyNEExQzI0QzNENzAwQzgyMTU5IC8qIEpJVE5lZ0dlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVy
dHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENGRTExREI2OUU2NjAwRUMyM0Y5
IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4
RTQxMTJFNzJFRjAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZCNDE1ODQxRDc4RkI0QzAwREY4RDA5IC8qIEFycmF5Q29udmVudGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTg4Myw2ICs5OTA4LDcgQEAKIAkJCQkx
NDhGMjFCNzEwN0VDNTQ3MDA0MkVDMkMgLyogTm9kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
REM2OUFBNjYxQ0Y3QTFGMjAwQzYyNzJGIC8qIE1hdGNoUmVzdWx0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENGREYxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUg
LyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDZGNTIxMUEzMkIzMTMw
MDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMy
MkU1QTIxREE2NDQzOTAwNkU3NzA5IC8qIERGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlNWFiOTc5YmFkNDU1NGM2
YmM3ZjUzMjE5MWYzZWFjZjIyZDFjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2Fs
aWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVu
Y3Rpb24gYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9k
ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgbGV0IHN0YXRlID0gZ2VuZXJhdG9yLkBnZW5l
cmF0b3JTdGF0ZTsKKyAgICBsZXQgdmFsdWUgPSBAdW5kZWZpbmVkOworCisgICAgaWYgKHN0YXRl
ID09PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQgfHwgKHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0
b3JSZXN1bWVNb2RlTm9ybWFsICYmIHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVNb2Rl
VGhyb3cpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiIik7CisKKyAgICB0cnkgewor
ICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0
aW5nOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5l
cmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1l
TW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CisgICAgICAgIGlmIChnZW5lcmF0b3Iu
QGdlbmVyYXRvclN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7
CisgICAgICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUodmFsdWUpOworICAgICAgICB9
CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0
ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkBy
ZWplY3QoZXJyb3IpOworICAgIH0KKworICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZSh2YWx1
ZSkuQHRoZW4oCisgICAgICAgIGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiBAYXN5bmNGdW5jdGlv
blJlc3VtZShnZW5lcmF0b3IsIHZhbHVlLCBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCk7IH0s
CisgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IHJldHVybiBAYXN5bmNGdW5jdGlvblJlc3VtZShn
ZW5lcmF0b3IsIGVycm9yLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KTsgfSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXgg
NTc2ZGU0MDA2MDRkMTAxNDc1MWNjNjNiZWFjZWM3N2E1NWZkNGZmNy4uODRhZTNiZGEyZjAwYjkw
ZDhmMWQyMzBmNjFiYWQwOTI4YzgxMTMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTA1LDYgKzEwNSw4IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuYyIsICJsZW5ndGgiIDogNCB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIsICJs
ZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FzeW5jX2Z1bmMi
LCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hc3luY19m
dW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2V0
X2Z1bmN0aW9uX25hbWUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Rh
aWxfY2FsbCIsICJsZW5ndGgiIDogOSB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCBkOTczYmNmYjEzN2MzMmMwYzZkZWVkZjNkZTBl
MWRkOTQxNjU0YzZmLi4xNjJkYjI4MmNkNTUzOTA1MDE4NTU3MTBjMjFlYmI0MTdmYTUwNWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApA
QCAtMTY0LDYgKzE2NCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9n
ZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6CiAgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNf
ZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQ6CiAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOgpAQCAtMTk2LDYg
KzE5Nyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJs
b2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF91bnNpZ25lZDoK
ICAgICBjYXNlIG9wX25ld19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgor
ICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3Bl
OgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVh
dGVfcmVzdDoKQEAgLTM4OCw2ICszOTAsOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAg
IGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgog
ICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19hc3lu
Y19mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY2Fs
bF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90
YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGIxNTIxMTJiM2E2YWViMGI1ODY4ZjZhYTIwOTllZWM1
NTY3YjJhZjguLjFhMjk5NzUyYzJmMTNjMjRlM2ViOWZiMTE1NmY0ODE3NjJjODJjMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNDYzLDYg
KzE0NjMsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAg
ICAgICBjYXNlIG9wX25ld19hc3luY19mdW5jOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfYXN5bmNfZnVuYyIp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjAp
LmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOiB7CiAgICAgICAgICAg
ICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0
KS0+dS5vcGVyYW5kOwpAQCAtMTQ3OSw2ICsxNDg3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVy
TmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6
IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgIm5ld19hc3luY19mdW5jX2V4cCIpOworICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIx
KS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3Bfc2V0X2Z1bmN0aW9uX25hbWU6IHsKICAgICAgICAgICAgIGludCBmdW5jUmVnID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbmFtZVJlZyA9ICgrK2l0KS0+dS5vcGVy
YW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAppbmRleCAyNWEzNTdiZjU2MTE2NDUwYzFiMGUyNTVjOTc3MGEyM2FkM2UxOWVjLi5l
OTE4YTkzYzI0ZTY3OGRlMTIyZDc1NTAxMTgxOTJkYjU3N2YzMTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTIyLDcg
KzEyMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJzZU1vZGU7IH0KLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0K
KyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlv
blBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZl
ZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRU
eXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENv
bnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbENvbnRleHRUeXBlPiht
X2V2YWxDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKaW5kZXggYmFjNDA1NDEzYTZiMmZkZDk5NzI3MmMyOGYwYzc0YTcyMzA2YTMzOC4uNmY1
NThjZjdhOTc0Yzg1MzMzYmE4NTIzMDAyMThmZTIzMTIyZTE2NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NsYXNzQ29uc3Ry
dWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0
cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJp
YWJsZXM7IH0KICAgICAKLSAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KKyAg
ICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBh
cnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KIAogICAgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlIGRl
cml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHtyZXR1cm4gc3RhdGljX2Nhc3Q8SlNDOjpEZXJpdmVk
Q29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRUeXBlKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IGY3ZTEwMzE3YTIxNGM2NDgzOTBiOTRiMThiY2ZkNzM3M2Q1Y2UxN2YuLjUzZDg3N2MyOGJi
YTc1Yzk0NGE4YTU5ZWI1MWM0MDA4NTY3ZDRkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNTgs
NyArMTU4LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAg
ICB9CiAgICAgCiAKLSAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1
bmN0aW9uQm9keVBhcnNlTW9kZShtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkpKQogICAgICAgICBw
ZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKG1fY29kZUJsb2NrLmdldCgpLCBtX2luc3RydWN0aW9u
cywgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGVJbmRleCk7CiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6
bWFrZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4obV9pbnN0cnVjdGlvbnMpKTsK
QEAgLTI2OCwxNSArMjY4LDE1IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBz
aG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNv
ZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gKGZ1bmN0aW9u
Tm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rp
b25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlv
bigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKTsKIAotICAgIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAg
ICAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMi
IHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlv
biBzY29wZS4KKyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2Rl
KHBhcnNlTW9kZSkpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIGFuZCBBc3luY0Z1bmN0aW9uIG5l
dmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSBy
ZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCiAgICAgICAgIG5l
ZWRzQXJndW1lbnRzID0gZmFsc2U7CiAKLSAgICAgICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhlIHZh
ciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwg
c2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KKyAgICAgICAgLy8gR2VuZXJhdG9yIGFuZCBB
c3luY0Z1bmN0aW9uIHVzZXMgdGhlIHZhciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZh
cmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KICAg
ICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7CiAgICAgfQogCi0gICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlv
bk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVu
Y3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9kZSkgJiYgbmVlZHNBcmd1bWVudHMpIHsKICAg
ICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQs
IHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMiLgogICAgICAg
ICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBl
dmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgogICAgICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0
LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMgYXMgYXJndW1lbnRzIG9mIGEgd3JhcHBpbmcg
Z2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJlbmNlIGl0IGZyb20gYSBnZW5lcmF0b3IuCkBA
IC0zMjAsMTMgKzMyMCwxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogCiAgICAgZW1pdEVu
dGVyKCk7CiAKLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpCisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9k
ZShwYXJzZU1vZGUpKQogICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVy
c1sxXTsKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKICAgICBpZiAoZnVuY3Rpb25O
YW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlv
bk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlKTsKKyAgICAgICAgQVNTRVJUKCFpc0FzeW5jRnVuY3Rpb25Cb2R5
UGFyc2VNb2RlKHBhcnNlTW9kZSkpOwogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVu
Y3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0g
Y2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFy
a0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwpA
QCAtNTA1LDcgKzUwNiw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAotICAgICAgICBib29sIHNob3VsZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUg
PSAhaGF2ZVBhcmFtZXRlck5hbWVkQXJndW1lbnRzICYmICFtX2NvZGVCbG9jay0+aXNBcnJvd0Z1
bmN0aW9uKCk7CisgICAgICAgIGJvb2wgc2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJpYWJsZSA9ICFo
YXZlUGFyYW1ldGVyTmFtZWRBcmd1bWVudHMKKyAgICAgICAgICAgICYmICFTb3VyY2VQYXJzZU1v
ZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250YWlucyhtX2NvZGVCbG9jay0+cGFyc2VNb2Rl
KCkpOwogICAgICAgICBzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2Nv
cGUgPSBzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxlICYmICFpc1NpbXBsZVBhcmFtZXRlckxp
c3Q7CiAgICAgICAgIC8vIERvIG5vdCBjcmVhdGUgYXJndW1lbnRzIHZhcmlhYmxlIGluIGNhc2Ug
b2YgQXJyb3cgZnVuY3Rpb24uIFZhbHVlIHdpbGwgYmUgbG9hZGVkIGZyb20gcGFyZW50IHNjb3Bl
CiAgICAgICAgIGlmIChzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxlICYmICFzaG91bGRDcmVh
dGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2NvcGUpIHsKQEAgLTU0OSw2ICs1NTEsMjcg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25O
b2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgQVNTRVJUKCFpc0NvbnN0cnVjdG9yKCkp
OworICAgICAgICBBU1NFUlQoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lKTsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9IGFkZFZhcigpOworCisgICAgICAg
IGlmIChzaG91bGRFbWl0VG9UaGlzKGZ1bmN0aW9uTm9kZSkgJiYgcGFyc2VNb2RlICE9IFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkgeworICAgICAgICAgICAgbV9jb2Rl
QmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7CisgICAgICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKKyAgICAgICAgfQorCisgICAgICAgIGVtaXROZXdPYmplY3QobV9nZW5lcmF0b3JSZWdp
c3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
QXJyb3dGdW5jdGlvbkJvZHlNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZTogewogICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVj
dGx5IGJlZm9yZSBoZXJlLgogICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBq
c1VuZGVmaW5lZCgpKTsKQEAgLTU3NSwyNSArNTk4LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlu
a2UKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0
b3JLaW5kOjpOb25lKQogICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90
IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciB3aXRob3V0IHxuZXd8Iik7CiAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICBib29sIHNob3VsZEVtaXRUb1RoaXMgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+
dXNlc0V2YWwoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlVGhp
cygpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VFdmFsKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHNob3VsZEVtaXRUb1RoaXMgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKChmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkgfHwgbV9zY29w
ZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyUHJvcGVydHkoKSkgJiYgIWNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgbXVz
dCBlbWl0IHRvX3RoaXMgd2hlbiB3ZSdyZSBub3QgaW4gc3RyaWN0IG1vZGUgYmVjYXVzZSB3ZQot
ICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGNvbnZlcnQgfHRoaXN8IHRvIGFuIG9iamVjdCwg
YW5kIHRoYXQgb2JqZWN0IG1heSBiZSBwYXNzZWQKLSAgICAgICAgICAgICAgICAgICAgLy8gdG8g
YSBzdHJpY3QgZnVuY3Rpb24gYXMgfHRoaXN8LiBUaGlzIGlzIG9ic2VydmFibGUgYmVjYXVzZSB0
aGF0Ci0gICAgICAgICAgICAgICAgICAgIC8vIHN0cmljdCBmdW5jdGlvbidzIHRvX3RoaXMgd2ls
bCBqdXN0IHJldHVybiB0aGUgb2JqZWN0LgotICAgICAgICAgICAgICAgICAgICAvLwotICAgICAg
ICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGVtaXQgdGhpcyBmb3Igc3RyaWN0LW1v
ZGUgY29kZSBiZWNhdXNlCi0gICAgICAgICAgICAgICAgICAgIC8vIHN0cmljdC1tb2RlIGNvZGUg
bWF5IGNhbGwgYW5vdGhlciBzdHJpY3QgZnVuY3Rpb24sIHdoaWNoIHdpbGwKLSAgICAgICAgICAg
ICAgICAgICAgLy8gdG9fdGhpcyBpZiBpdCBkaXJlY3RseSB1c2VzIHRoaXM7IHRoaXMgaXMgT0ss
IGJlY2F1c2Ugd2UgZGVmZXIKLSAgICAgICAgICAgICAgICAgICAgLy8gdG9fdGhpcyB1bnRpbCB8
dGhpc3wgaXMgdXNlZCBkaXJlY3RseS4gU3RyaWN0LW1vZGUgY29kZSBtaWdodAotICAgICAgICAg
ICAgICAgICAgICAvLyBhbHNvIGNhbGwgYSBzbG9wcHkgbW9kZSBmdW5jdGlvbiwgYW5kIHRoYXQg
d2lsbCB0b190aGlzLCB3aGljaAotICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGRlZmVyIHRo
ZSBjb252ZXJzaW9uLCBhZ2FpbiwgdW50aWwgbmVjZXNzYXJ5LgotICAgICAgICAgICAgICAgICAg
ICBzaG91bGRFbWl0VG9UaGlzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICBpZiAoc2hvdWxkRW1pdFRvVGhpcykgeworICAgICAgICAgICAgICAgIGlmIChzaG91
bGRFbWl0VG9UaGlzKGZ1bmN0aW9uTm9kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9jb2Rl
QmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKICAgICAgICAgICAgICAgICAgICAgZW1pdE9wY29kZShvcF90b190aGlzKTsKICAgICAgICAg
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7
CkBAIC02MDgsNyArNjEzLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIC8vIFdl
IG5lZWQgbG9hZCB8c3VwZXJ8ICYgfHRoaXN8IGZvciBhcnJvdyBmdW5jdGlvbiBiZWZvcmUgaW5p
dGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjawog
ICAgIC8vIGlmIHdlIGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbi4gQmVjYXVzZSB8
c3VwZXJ8ICYgfHRoaXN8IHZhbHVlcyBjYW4gYmUgdXNlZCB0aGVyZQotICAgIGlmIChTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlID09IHBhcnNlTW9kZSAmJiAhaXNTaW1wbGVQYXJh
bWV0ZXJMaXN0KSB7CisgICAgaWYgKChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25N
b2RlKS5jb250YWlucyhwYXJzZU1vZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHx8IHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKSB7
CiAgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgZnVuY3Rpb25Ob2RlLT51
c2VzU3VwZXJQcm9wZXJ0eSgpKQogICAgICAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVu
Y3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKIApAQCAtNjI3LDEyICs2MzIsNDYgQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5j
dGlvbk5vZGUsIFVubGlua2UKICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVu
IGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9u
U2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKICAgICAvLyBiZWNhdXNlIGEgZnVuY3Rpb24ncyBkZWZh
dWx0IHBhcmFtZXRlciBFeHByZXNzaW9uTm9kZXMgd2lsbCB1c2UgdGVtcG9yYXJ5IHJlZ2lzdGVy
cy4KICAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hl
Y2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7
CisKKyAgICBUcnlEYXRhKiB0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSA9IG51bGxwdHI7CisgICAg
aWYgKGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKSAmJiAhaXNTaW1w
bGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHJ5Rm9ybWFsUGFyYW1l
dGVyc1N0YXJ0ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAgICAgICB0cnlGb3Jt
YWxQYXJhbWV0ZXJzRGF0YSA9IHB1c2hUcnkodHJ5Rm9ybWFsUGFyYW1ldGVyc1N0YXJ0LmdldCgp
KTsKKyAgICB9CisKICAgICBpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVw
RnVuY3Rpb25TY29wZVN0YWNrKHBhcmFtZXRlcnMsIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCwgZnVu
Y3Rpb25Ob2RlLCBmdW5jdGlvblN5bWJvbFRhYmxlLCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgs
IGNhcHR1cmVzLCBzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2NvcGUp
OwotICAgIAorCisgICAgaWYgKGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUocGFyc2VN
b2RlKSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4g
ZGlkTm90VGhyb3cgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVtcChkaWROb3RUaHJvdy5n
ZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRpb24gPSBuZXdUZW1wb3Jh
cnkoKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93blZhbHVlID0gbmV3VGVtcG9y
YXJ5KCk7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gY2F0Y2hIZXJlID0gZW1pdExhYmVsKG5ld0xh
YmVsKCkuZ2V0KCkpOworICAgICAgICBwb3BUcnlBbmRFbWl0Q2F0Y2godHJ5Rm9ybWFsUGFyYW1l
dGVyc0RhdGEsIGV4Y2VwdGlvbi5nZXQoKSwgdGhyb3duVmFsdWUuZ2V0KCksIGNhdGNoSGVyZS5n
ZXQoKSwgSGFuZGxlclR5cGU6OkNhdGNoKTsKKworICAgICAgICAvLyByZXR1cm4gQFByb21pc2Uu
QHJlamVjdCh0aHJvd25WYWx1ZSk7CisgICAgICAgIFZhcmlhYmxlIHByb21pc2VWYXIgPSB2YXJp
YWJsZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5Qcm9taXNlUHJpdmF0ZU5h
bWUoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGVtaXRSZXNvbHZlU2Nv
cGUobmV3VGVtcG9yYXJ5KCksIHByb21pc2VWYXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcHJvbWlzZUNvbnN0cnVjdG9yID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwg
c2NvcGUuZ2V0KCksIHByb21pc2VWYXIsIFJlc29sdmVNb2RlOjpUaHJvd0lmTm90Rm91bmQpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvbWlzZVJlamVjdCA9IGVtaXRHZXRCeUlkKG5l
d1RlbXBvcmFyeSgpLCBwcm9taXNlQ29uc3RydWN0b3IuZ2V0KCksIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOworCisgICAgICAgIENhbGxB
cmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMSk7CisKKyAgICAgICAgZW1pdE1vdmUoYXJn
cy50aGlzUmVnaXN0ZXIoKSwgcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpKTsKKyAgICAgICAgZW1p
dE1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKDApLCB0aHJvd25WYWx1ZS5nZXQoKSk7CisKKyAg
ICAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZnVuY3Rpb25Ob2RlLT5maXJzdExpbmUoKSwgZnVu
Y3Rpb25Ob2RlLT5zdGFydE9mZnNldCgpLCBmdW5jdGlvbk5vZGUtPmxpbmVTdGFydE9mZnNldCgp
KTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZW1pdENhbGwobmV3VGVt
cG9yYXJ5KCksIHByb21pc2VSZWplY3QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywg
ZGl2b3QsIGRpdm90LCBkaXZvdCwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKyAgICAgICAgZW1pdFJl
dHVybihyZXN1bHQuZ2V0KCkpOworCisgICAgICAgIGVtaXRMYWJlbChkaWROb3RUaHJvdy5nZXQo
KSk7CisgICAgfQorCiAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSAgZGVmYXVsdCBwYXJhbWV0ZXIg
ZXhwcmVzc2lvbiwgdGhlbiBsb2FkaW5nIHx0aGlzfCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rpb24g
bXVzdCBiZSBkb25lCiAgICAgLy8gYWZ0ZXIgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1
ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBzZXRz
IHVwIHRoZQogICAgIC8vIFN5bWJvbFRhYmxlIHN0YWNrIGFuZCBlbWl0TG9hZFRoaXNGcm9tQXJy
b3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpIGNvbnN1bHRzIHRoZSBTeW1ib2xUYWJsZSBz
dGFjawotICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlID09IHBhcnNl
TW9kZSAmJiBpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAgICBpZiAoU291cmNlUGFyc2VNb2Rl
U2V0KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKSAmJiBpc1NpbXBsZVBh
cmFtZXRlckxpc3QpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBm
dW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkpCiAgICAgICAgICAgICBlbWl0TG9hZFRo
aXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogICAgIApAQCAtNjQyLDcg
KzY4MSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgCiAgICAgLy8gU2V0IHVwIHRo
ZSBsZXhpY2FsIGVudmlyb25tZW50IHNjb3BlIGFzIHRoZSBnZW5lcmF0b3IgZnJhbWUuIFdlIHN0
b3JlIHRoZSBzYXZlZCBhbmQgcmVzdW1lZCBnZW5lcmF0b3IgcmVnaXN0ZXJzIGludG8gdGhpcyBz
Y29wZSB3aXRoIHRoZSBzeW1ib2wga2V5cy4KICAgICAvLyBTaW5jZSB0aGV5IGFyZSBzeW1ib2wg
a2V5ZWQsIHRoZXNlIHZhcmlhYmxlcyBjYW5ub3QgYmUgcmVhY2hlZCBmcm9tIHRoZSB1c3VhbCBj
b2RlLgotICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlID09IHBhcnNl
TW9kZSkgeworICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUo
cGFyc2VNb2RlKSkgewogICAgICAgICBBU1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rl
cik7CiAgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5zZXQoKm1fdm0sIGZ1bmN0
aW9uU3ltYm9sVGFibGUpOwogICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRl
eCA9IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsKQEAgLTI2NDQsNiArMjY4MywyMSBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U2V0dGVyQnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogcHJvcGVydAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzZXR0ZXItPmlu
ZGV4KCkpOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0R2VuZXJhdG9yRmll
bGRzKFJlZ2lzdGVySUQqIG5leHRGdW5jdGlvbikKK3sKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5
LCB3ZSBqdXN0IGNyZWF0ZSBhbiBvYmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciByZWxhdGVkIGZp
ZWxkcyBhcyBpdHMgcHJvcGVydGllcyBmb3IgZWFzZS4KKyAgICAvLyBCdXQgdG8gbWFrZSBpdCBl
ZmZpY2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpTR2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2Rl
IG5ld19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysrIGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHBy
aXZhdGUgcHJvcGVydGllcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxNTQ1CisKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lz
dGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZhdGVO
YW1lKCksIG5leHRGdW5jdGlvbiwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICBl
bWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lKCksICZtX3RoaXNSZWdpc3Rlciwg
UHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dl
bmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
U3RhdGVQcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSksIFByb3Bl
cnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0
b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6
Oktub3duRGlyZWN0KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
ZWxldGVCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHkpCiB7CiAgICAgZW1pdE9wY29kZShvcF9kZWxfYnlfaWQpOwpAQCAtMjk4
Niw2ICszMDQwLDExIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvCiAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CiAgICAgICAgIG9wY29kZUlE
ID0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJy
b3dGdW5jdGlvbk1vZGU6CisgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2FzeW5jX2Z1bmNfZXhw
OworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0zMDA0LDcgKzMwNjMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeAogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lz
dGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Ci0gICAgQVNTRVJUKGZ1bmMt
Pm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGUgfHwgZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKTsKKyAgICBBU1NFUlQoU291cmNlUGFyc2VNb2RlU2V0
KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2Rl
KCkpKTsKICAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKGRzdCwgZnVuYy0+bWV0
YWRhdGEoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KQEAgLTMwMzgsNiArMzA5Nyw4IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0
LCBGdW5jdGlvbk1ldGFkYXRhCiAgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRk
RnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOwogICAgIGlmIChmdW5jdGlvbi0+
cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25N
b2RlKQogICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxz
ZSBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5j
dGlvbk1vZGUpCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2FzeW5jX2Z1bmMpOwogICAgIGVs
c2UKICAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC00NzY1LDYgKzQ4MjYsMjggQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiAgICAg
ZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOwogfQog
Citib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpzaG91bGRFbWl0VG9UaGlzKEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlKQoreworICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgbV9j
b2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgbV9zY29wZU5vZGUtPmRvQW55SW5uZXJBcnJvd0Z1bmN0
aW9uc1VzZVRoaXMoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNl
RXZhbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICgoZnVuY3Rpb25Ob2RlLT51
c2VzU3VwZXJQcm9wZXJ0eSgpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlv
bnNVc2VTdXBlclByb3BlcnR5KCkpICYmICFtX2NvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpIHsK
KyAgICAgICAgLy8gV2UgbXVzdCBlbWl0IHRvX3RoaXMgd2hlbiB3ZSdyZSBub3QgaW4gc3RyaWN0
IG1vZGUgYmVjYXVzZSB3ZQorICAgICAgICAvLyB3aWxsIGNvbnZlcnQgfHRoaXN8IHRvIGFuIG9i
amVjdCwgYW5kIHRoYXQgb2JqZWN0IG1heSBiZSBwYXNzZWQKKyAgICAgICAgLy8gdG8gYSBzdHJp
Y3QgZnVuY3Rpb24gYXMgfHRoaXN8LiBUaGlzIGlzIG9ic2VydmFibGUgYmVjYXVzZSB0aGF0Cisg
ICAgICAgIC8vIHN0cmljdCBmdW5jdGlvbidzIHRvX3RoaXMgd2lsbCBqdXN0IHJldHVybiB0aGUg
b2JqZWN0LgorICAgICAgICAvLworICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGVtaXQgdGhp
cyBmb3Igc3RyaWN0LW1vZGUgY29kZSBiZWNhdXNlCisgICAgICAgIC8vIHN0cmljdC1tb2RlIGNv
ZGUgbWF5IGNhbGwgYW5vdGhlciBzdHJpY3QgZnVuY3Rpb24sIHdoaWNoIHdpbGwKKyAgICAgICAg
Ly8gdG9fdGhpcyBpZiBpdCBkaXJlY3RseSB1c2VzIHRoaXM7IHRoaXMgaXMgT0ssIGJlY2F1c2Ug
d2UgZGVmZXIKKyAgICAgICAgLy8gdG9fdGhpcyB1bnRpbCB8dGhpc3wgaXMgdXNlZCBkaXJlY3Rs
eS4gU3RyaWN0LW1vZGUgY29kZSBtaWdodAorICAgICAgICAvLyBhbHNvIGNhbGwgYSBzbG9wcHkg
bW9kZSBmdW5jdGlvbiwgYW5kIHRoYXQgd2lsbCB0b190aGlzLCB3aGljaAorICAgICAgICAvLyB3
aWxsIGRlZmVyIHRoZSBjb252ZXJzaW9uLCBhZ2FpbiwgdW50aWwgbmVjZXNzYXJ5LgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZDRjMWM4ZThlZWE4
OGIxYzIwZjRhOTVlNDUzNjkyY2NkZTQ5YmZiZi4uNGY2YTliYTUwNTdhMDQ2YjA4NmIzYTA2ZjJh
NWEyZDJmZTQ4MGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTc2LDcgKzU3NiwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UHV0R2V0dGVyU2V0dGVyKFJlZ2lzdGVySUQqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBSZWdp
c3RlcklEKiBnZXR0ZXIsIFJlZ2lzdGVySUQqIHNldHRlcik7CiAgICAgICAgIHZvaWQgZW1pdFB1
dEdldHRlckJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCB1bnNp
Z25lZCBwcm9wZXJ0eURlc2NyaXB0b3JPcHRpb25zLCBSZWdpc3RlcklEKiBnZXR0ZXIpOwogICAg
ICAgICB2b2lkIGVtaXRQdXRTZXR0ZXJCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSwgdW5zaWduZWQgcHJvcGVydHlEZXNjcmlwdG9yT3B0aW9ucywgUmVnaXN0ZXJJ
RCogc2V0dGVyKTsKLSAgICAgICAgCisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBvYmplY3Qgd2l0
aCBnZW5lcmF0b3IgZmllbGRzIChAZ2VuZXJhdG9yVGhpcywgQGdlbmVyYXRvck5leHQsIEBnZW5l
cmF0b3JTdGF0ZSwgQGdlbmVyYXRvckZyYW1lKQorICAgICAgICB2b2lkIGVtaXRQdXRHZW5lcmF0
b3JGaWVsZHMoUmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9uKTsKKwogICAgICAgICBFeHBlY3RlZEZ1
bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb25Gb3JJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRDYWxsSW5UYWlsUG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBm
dW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CkBAIC01ODUsNiArNTg4LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsVmFyYXJnc0luVGFp
bFBvc2l0aW9uKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgUmVnaXN0ZXJJRCog
dGhpc1JlZ2lzdGVyLCBSZWdpc3RlcklEKiBhcmd1bWVudHMsIFJlZ2lzdGVySUQqIGZpcnN0RnJl
ZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdENhbGxGb3J3YXJkQXJndW1lbnRzSW5UYWlsUG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBmdW5jLCBSZWdpc3RlcklEKiB0aGlzUmVnaXN0ZXIsIFJlZ2lzdGVySUQqIGZp
cnN0RnJlZVJlZ2lzdGVyLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxsKTsKIAorICAgICAgICBib29s
IHNob3VsZEVtaXRUb1RoaXMoRnVuY3Rpb25Ob2RlKik7CisKICAgICAgICAgZW51bSBQcm9wZXJ0
eURlc2NyaXB0b3JPcHRpb24gewogICAgICAgICAgICAgUHJvcGVydHlDb25maWd1cmFibGUgPSAx
LAogICAgICAgICAgICAgUHJvcGVydHlXcml0YWJsZSAgICAgPSAxIDw8IDEsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXgg
ZDM4N2NkZjgxNTAzODU0NDFhMzRlOTYzZDZiOGEyODBhZjAzMjQwMi4uZWYyYzVlNjAyNGU0MTU0
NDQxNjJiZGZkNWZlZWVhODUwNTg0Y2ZiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQwMiwyNSArMzQwMiw2NCBA
QCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJh
dG9yLCBuZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAg
IC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIGp1c3QgY3JlYXRlIGFuIG9iamVjdCBhbmQgc3RvcmUg
Z2VuZXJhdG9yIHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBwcm9wZXJ0aWVzIGZvciBlYXNlLgotICAg
ICAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpTR2Vu
ZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysrIGZp
ZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGllcy4KLSAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQorICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhuZXh0LmdldCgpKTsKIAotICAgICAgICBnZW5l
cmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdl
bmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZh
dGVOYW1lKCksIG5leHQuZ2V0KCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgICAg
ICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3Rh
cnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJl
dHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KIAotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVy
YXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lKCksIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgUHJv
cGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
RnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAg
ICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVt
ZW50KCk7CisgICAgICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgp
KTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0aWNfY2Fz
dDxFeHByU3RhdGVtZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7CisgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBleHByID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOworICAgICAgICBBU1NFUlQoZXhw
ci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBz
dGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKTsKIAotICAgICAgICBSZWdpc3RlcklEKiBp
bml0aWFsU3RhdGUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJl
Z2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yU3RhdGVQcml2YXRlTmFtZSgpLCBpbml0aWFsU3RhdGUsIFByb3BlcnR5Tm9kZTo6S25vd25E
aXJlY3QpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNF
eHByKTsKIAotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdl
bmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0
ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICAgICAgaWYgKGdl
bmVyYXRvci5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCB8fCBnZW5lcmF0
b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2Rl
KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogRG9uJ3QgYWx3YXlzIGxvYWQgaG9tZSBvYmplY3Qg
Zm9yIGFzeW5jIGFycm93cworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmpl
Y3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOworICAgICAgICAgICAgZW1p
dFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0R2VuZXJhdG9yRmllbGRzKG5l
eHQuZ2V0KCkpOwogCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9m
ZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZy
YW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsK
KworICAgICAgICAvLyBsb2FkIEBhc3luY0Z1bmN0aW9uUmVzdW1lLCBhbmQgY2FsbC4KKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN0YXJ0QXN5bmNGdW5jdGlvbiA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKKyAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJh
dG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0Z1bmN0aW9uUmVzdW1lUHJp
dmF0ZU5hbWUoKSk7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25J
Zk5lZWRlZChzY29wZS5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0
KCksIHZhcikpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShzdGFydEFzeW5j
RnVuY3Rpb24uZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisKKyAg
ICAgICAgLy8gcmV0dXJuIEBhc3luY0Z1bmN0aW9uUmVzdW1lLkBjYWxsKHRoaXMsIEBnZW5lcmF0
b3IsIEB1bmRlZmluZWQsIEdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpCisgICAgICAg
IENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDMpOworICAgICAgICB1bnNp
Z25lZCBhcmd1bWVudENvdW50ID0gMDsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3Mu
dGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE1v
dmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGdlbmVyYXRvci5nZW5l
cmF0b3JSZWdpc3RlcigpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1l
bnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBq
c051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0
b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOworICAgICAgICAvLyBKU1RleHRQb3NpdGlvbihp
bnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQgX2xpbmVTdGFydE9mZnNldCkKKyAgICAgICAgSlNU
ZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9m
ZnNldCgpKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlv
bihyZXN1bHQuZ2V0KCksIHN0YXJ0QXN5bmNGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBhcmdzLCBkaXZvdCwgZGl2b3QsIGRpdm90LCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyZXN1bHQuZ2V0KCkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9k
eU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAg
UmVmUHRyPExhYmVsPiBnZW5lcmF0b3JCb2R5TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsK
ICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDU0MmE0NzEzZjUyZDVh
OWZhOWM2M2U1NmUwMTZlMjIzMDVhOGFkZjYuLjQ5YjFhODZlZDE1YWY0MWFmYWE5ZTdkMTNiODhh
NWM0NDc3ODliZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5OSw2ICsyOTks
OCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9uZXdfZnVuY19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQorICAgICAg
ICBERUZJTkVfT1Aob3BfbmV3X2FzeW5jX2Z1bmMpCisgICAgICAgIERFRklORV9PUChvcF9uZXdf
YXN5bmNfZnVuY19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfb2JqZWN0KQogICAgICAg
ICBERUZJTkVfT1Aob3BfbmV3X3JlZ2V4cCkKICAgICAgICAgREVGSU5FX09QKG9wX25vdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDA1ZGUyOGNlMWVkNjcwYjUxZmViOGY1M2MzOWE0ZmY1
NDQ5MjhlNGEuLjZkMjAyNDkzODdiMjkxYWJlYmRmYTlmYmI3NDdkYTgyNzA1ZjZmZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTQ0LDYgKzU0NCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jKEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25vdChJbnN0
cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXgg
YjkwMWJiNDYzMTA2MDAxMjBlMTFmODRlMWVjYTljYjYyNjc0OWI4ZC4uOWY5OWFiYTljZjk5ZWNk
MjlhMDI5ZDgxNDQyYmE4ZTJmZWVmNDA5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCkBAIC05NzEsOSArOTcxLDExIEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0Nv
bW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+
dS5vcGNvZGUpOwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuYykKICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOwot
ICAgIGVsc2UgewotICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9m
dW5jKTsKKyAgICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCiAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwg
cmVnVDAsIGZ1bmNFeGVjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09
IG9wX25ld19hc3luY19mdW5jKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdB
c3luY0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CiAgICAgfQogfQogCkBAIC05ODcs
NiArOTg5LDExIEBAIHZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJ
bnN0cnVjdGlvbik7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNDb21tb24oY3Vy
cmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEp1bXAgbm90VW5kZWZpbmVk
U2NvcGU7CkBAIC0xMDA4LDkgKzEwMTUsMTEgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNv
bW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgaWYgKG9wY29kZUlE
ID09IG9wX25ld19mdW5jX2V4cCkKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdG
dW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOwotICAgIGVsc2UgewotICAgICAgICBBU1NF
UlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CisgICAgZWxzZSBpZiAo
b3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24p
OworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9u
LCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CiAgICAgfQogCiAgICAgZG9uZS5saW5rKHRoaXMpOwpA
QCAtMTAyNiw2ICsxMDM1LDExIEBAIHZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVu
Y19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TmV3RnVuY0V4
cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2FzeW5jX2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklU
OjplbWl0X29wX25ld19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewog
ICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOGY4ZDRhZDM0NTNmZDQ2
YjAzMDQzMmIzMTljMDYzYjAzMjljMzk1NC4uZWJkNzdjZDAzODY4YmRjMWZiOGFhYmFlMGZiZjkz
ZDBlNzYxZGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhj
ZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdEZ1bmN0aW9ucy5oIgpAQCAtMTE3MCw2ICsxMTcxLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jCiAgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9y
RnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOwogfQogCitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUp
Cit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlv
bj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2Nv
cGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25O
ZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4
ZWN1dGFibGUsIHRydWUpOworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0RnVu
Y3Rpb25OYW1lKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBmdW5jQ2VsbCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE5hbWUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGFkZmVmNzhjNmYwMGM1MDNkMDZm
YmY4Njc2NTY4N2U3ZGMxNDNjMjQuLmRiNWJhODk2NWE3YTUwMWJhMzUyN2FhNjU0ODg1ZTZjZjNk
ZDk1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0z
NzUsNiArMzc1LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdG
dW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRp
b25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0
aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aElu
dmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlND
ZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdBc3luY0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5U
RVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVu
Y3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpT
U2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2V0RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJO
QUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApp
bmRleCA4NzU4MjUxZmE0YTFkNDlmOTEwMGJlYmVjMDg4NjViZDQxMmQ3ZGY1Li5mNThmNGY5NjZl
YTc3NDNiZmM0ZWM4MDdjMTFlZjNhYjRkZDQyOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSklUV29ya2xp
c3QuaCIKKyNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rp
b24uaCIKQEAgLTExNDksNiArMTE1MCwxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbmV3X2dlbmVyYXRvcl9mdW5jKQogICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCks
IHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNf
ZnVuYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRS
KHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRfU0xPV19QQVRI
X1RSQUNJTkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgYXN5bmMgZnVuY3Rpb24hXG4iKTsKKyNl
bmRpZgorICAgIExMSU5UX1JFVFVSTihKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJs
b2NrLT5mdW5jdGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKK30KKwogTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJ
TigpOwpAQCAtMTE3MSw2ICsxMTgzLDE3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQogICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuY19leHApCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQp
LlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CisgICAgCisgICAgTExJ
TlRfUkVUVVJOKEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkp
OworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2V0X2Z1bmN0aW9uX25hbWUp
CiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmgKaW5kZXggOTg0ZTljYzQwMzAzMjc5YWE3MDJkZjhmZWI3ODhjM2I4Yjk2
MDUwZS4uZDc2MTM4YzEyNDRmZjdhYWY0ODNkMDgwM2FkNWJiODExN2VhNzlhOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTEwMyw2ICsxMDMs
OCBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKTsKIExMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4
cCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hc3luY19mdW5j
KTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmNf
ZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2V0X2Z1bmN0aW9u
X25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRl
eCA1NjBkZjNlY2FiODJkYTgyYjI3ZjQ0MzYyNGQwZmRlOGU1MDFjZTllLi42NDQ1YTQ3Y2VkYTlh
NWNmNzU5YTE2ZTE3MmMzYmQ4NDZhYjlkYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMzIxLDYgKzEzMjEsMTIg
QEAgX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK19s
bGludF9vcF9uZXdfYXN5bmNfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpCisgICAgZGlzcGF0Y2goNCkK
KworCiBfbGxpbnRfb3BfbmV3X2FycmF5OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxs
T3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyYXkpCkBAIC0xNTk5LDYgKzE2
MDUsMTIgQEAgX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FsbE9wY29k
ZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICBk
aXNwYXRjaCg0KQogCitfbGxpbnRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXN5bmNfZnVu
Y19leHApCisgICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3Bfc2V0X2Z1bmN0aW9uX25hbWU6
CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCmluZGV4IDQ5MDg4NDE1MTFlMmY0MDE3NzNiMjBmY2U2OGY1ODM5NzZmNmQwYTEuLjJi
NTJlMzJkODEzM2U2NzBmZWQyNTg3MTg0NDU3N2EwMWFlNGM4MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCBTdHJpbmcgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291
cmNlUGFyc2VNbwogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSAmJiAh
bWF0Y2goT1BFTkJSQUNFKTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigp
KSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87
Ci0gICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKSB8fCBpc0FzeW5jRnVuY3Rpb25Cb2R5UGFy
c2VNb2RlKHBhcnNlTW9kZSkpCisgICAgICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlv
bkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNv
dW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFyc2VGdW5j
dGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwpAQCAtNTY4
LDExICs1NjgsMTggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxl
bWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW4KICAgICB7CiAgICAgICAgIEF1
dG9Qb3BTY29wZVJlZiBhc3luY0Z1bmN0aW9uQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsK
ICAgICAgICAgYXN5bmNGdW5jdGlvbkJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKGlubmVy
UGFyc2VNb2RlKTsKLSAgICAgICAgU3ludGF4Q2hlY2tlciBhc3luY0Z1bmN0aW9uQ29udGV4dChj
b25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOwotICAgICAgICBpZiAoaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCi0gICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUFy
cm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGFzeW5jRnVuY3Rp
b25Db250ZXh0KSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBhcnJvdyBmdW5jdGlv
biIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVs
ZW1lbnRzKGFzeW5jRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9k
eSBvZiBhc3luYyBmdW5jdGlvbiIpOworICAgICAgICBTeW50YXhDaGVja2VyIHN5bnRheENoZWNr
ZXIoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKKyAgICAgICAgaWYgKGlz
QXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dl
clBhcnNlRGF0YSkKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUFycm93RnVuY3Rp
b25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpLCAiQ2Fubm90IHBh
cnNlIHRoZSBib2R5IG9mIGFzeW5jIGFycm93IGZ1bmN0aW9uIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhw
cmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyKSwgIkNhbm5vdCBwYXJzZSB0
aGUgYm9keSBvZiBhc3luYyBhcnJvdyBmdW5jdGlvbiIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKG1fZGVidWdnZXJQYXJzZURhdGEpCisgICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0
aGUgYm9keSBvZiBhc3luYyBmdW5jdGlvbiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgbW9k
ZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgZnVuY3Rpb24iKTsKKyAgICAgICAg
fQogICAgICAgICBwb3BTY29wZShhc3luY0Z1bmN0aW9uQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6
TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKICAgICB9CiAgICAgaW5mby5ib2R5ID0gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3Rh
cnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5h
bWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwgbV9zdXBlckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIGluZm8uZnVuY3Rpb25M
ZW5ndGgsIGlubmVyUGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CkBA
IC0yMzQxLDcgKzIzNDgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgICAgICByZXR1
cm4gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3ludGF4Q2hlY2tlciwgc3RhcnRMb2NhdGlv
biwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwg
cGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBm
dW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIGZ1bmN0aW9uSW5m
by5mdW5jdGlvbkxlbmd0aCwgbW9kZSk7CiAgICAgfTsKIAotICAgIGlmIChtb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSB8fCBpc0FzeW5jRnVuY3Rp
b25XcmFwcGVyUGFyc2VNb2RlKG1vZGUpKSB7CisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1
bmN0aW9uV3JhcHBlclBhcnNlTW9kZShtb2RlKSkgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYg
Z2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAgICAgICAgU291cmNlUGFy
c2VNb2RlIGlubmVyUGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9k
ZTsKICAgICAgICAgaWYgKGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUobW9kZSkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDhjNDQ3NGIwOTkzMzcyZTc0
MjQ2MDFkYjlhYTA2NDQ1ZGY5MzdlZDguLjNhMTZmNzZhYWQwNTI0N2NkNjE2MWJiZGE4YWYzMWRl
Zjg2NDI3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjQ1LDcg
KzI0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6Ci0gICAgICAgICAgICBzZXRJc0Fz
eW5jQXJyb3dGdW5jdGlvbkJvZHkoKTsKKyAgICAgICAgICAgIHNldElzQXN5bmNGdW5jdGlvbkJv
ZHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
TW9kZXMuaAppbmRleCBhMGQ3NDA0OTQxNWU0Yjg0NzM1NjJlMzZlNjIyMGQzMGNlNTFiYTZhLi42
ZGE4ODM3YTM3OTQxNzJiNGM1NTZiMzdkMjNmOTk3NmVlNmYwYjMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0xNDgsNiArMTQ4LDMyIEBAIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc01ldGhvZFBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KQogICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZSkuY29udGFpbnMocGFy
c2VNb2RlKTsKIH0KIAorQUxXQVlTX0lOTElORSBib29sIGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0
aW9uQm9keVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHJldHVy
biBTb3VyY2VQYXJzZU1vZGVTZXQoCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2Rl
LAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5j
b250YWlucyhwYXJzZU1vZGUpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNHZW5lcmF0b3JP
ckFzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUp
Cit7CisgICAgcmV0dXJuIFNvdXJjZVBhcnNlTW9kZVNldCgKKyAgICAgICAgU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jRnVuY3Rpb25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJy
b3dGdW5jdGlvbk1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2Rl
KS5jb250YWlucyhwYXJzZU1vZGUpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCit7CisgICAgcmV0dXJu
IFNvdXJjZVBhcnNlTW9kZVNldCgKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2Rl
LAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5j
b250YWlucyhwYXJzZU1vZGUpOworfQorCisKIEFMV0FZU19JTkxJTkUgYm9vbCBpc01vZHVsZVBh
cnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKSAKIHsgCiAgICAgcmV0dXJuIFNvdXJj
ZVBhcnNlTW9kZVNldCggCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMGQxNTJlYzI3
Zjg5ZGFjOWI0NTNlODgwOWI2NTI0ODVjYTVjMTUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAt
MCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxj
YWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlv
blByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RS
SVZJQUxMWV9ERVNUUlVDVElCTEUoQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKworY29uc3Qg
Q2xhc3NJbmZvIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXN5bmNGdW5j
dGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yKSB9OworCitBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OkFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDog
SW50ZXJuYWxGdW5jdGlvbih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlKiBwcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJBc3luY0Z1
bmN0aW9uIik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSk7CisKKyAgICAvLyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgorICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxG
dW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5
bmMpKTsKK30KKworQ2FsbFR5cGUgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1
bmN0aW9uID0gY2FsbEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5
cGU6Okhvc3Q7Cit9CisKK0NvbnN0cnVjdFR5cGUgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7
CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzVhMmMxZTRmOTE1
Y2FjMGI0YjE3NzNlNmQwNTg5ZTI3NDc0N2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAsMCAr
MSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBA
aWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJu
YWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXN5bmNGdW5jdGlvblBy
b3RvdHlwZTsKKworY2xhc3MgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRp
b24odm0sIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVj
dHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmIxZjBlMTA2ZWU2NzEzNmU5MjcwMWQ2OGMzOWQ5NWIyZmM0ODY1NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rp
b25Qcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5j
bHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6c19p
bmZvID0geyAiQXN5bmNGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoQXN5bmNGdW5jdGlvblByb3RvdHlwZSkgfTsKKworQXN5bmNGdW5jdGlvblBy
b3RvdHlwZTo6QXN5bmNGdW5jdGlvblByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K3ZvaWQgQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygp
KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9T
dHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwgIkFzeW5jRnVuY3Rpb24iKSwgRG9udEVudW0g
fCBSZWFkT25seSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIwMWU2YjhmZDU4
OThhMjIxZTA2MmE3OGYzZWE2MGRlYTc5YTgyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMCwwICsx
LDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBp
Z2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXN5bmNGdW5jdGlvblByb3RvdHlwZSA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcAppbmRleCBkMmYzMzUyZDYwNjhiMTE5ZmUwNDkzMTBjOTM4ODY3ZjI3OThiNTEyLi41MTQ1
MmViNzU0OTFiM2RiYWJjNGYwOGQwNjM2MDZiYjIyNjMwNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMjMs
NiArMjMsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtOTMsMTggKzk0LDMzIEBAIEpTT2JqZWN0KiBjb25z
dHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAg
IGNvbnN0IGNoYXIqIHByZWZpeCA9IG51bGxwdHI7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBudWxscHRyOworICAgIHN3aXRjaCAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKSB7CisgICAg
Y2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uOgorICAgICAgICBzdHJ1Y3R1
cmUgPSBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIHByZWZpeCA9
ICJ7ZnVuY3Rpb24gIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGU6OkdlbmVyYXRvcjoKKyAgICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5n
ZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpOworICAgICAgICBwcmVmaXggPSAie2Z1bmN0aW9u
ICoiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6
QXN5bmM6CisgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXN5bmNGdW5jdGlvblN0
cnVjdHVyZSgpOworICAgICAgICBwcmVmaXggPSAie2FzeW5jIGZ1bmN0aW9uICI7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNv
bWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHBy
b2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0
cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5n
KCksICIoKSB7XG5cbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKHByZWZpeCwg
ZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOwogICAgIGVsc2UgaWYgKGFyZ3Mu
c2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwg
ZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2Vu
ZXJhdG9yID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3Mu
YXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOworICAgICAgICBwcm9n
cmFtID0gbWFrZVN0cmluZyhwcmVmaXgsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIs
IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVs
c2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgie2Z1bmN0aW9uICIpOwotICAgICAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKQotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyonKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4KTsK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lLnN0cmluZygpKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJygnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdCgwKS50
b1N0cmluZyhleGVjKS0+dmlldyhleGVjKS5nZXQoKSk7CkBAIC0xMjYsMTIgKzE0MiwyMCBAQCBK
U09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICB9
CiAKLSAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6
Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbmV3VGFyZ2V0LCBmdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyBnbG9iYWxP
YmplY3QtPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgOiBnbG9iYWxPYmplY3QtPmZ1bmN0
aW9uU3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogc3ViY2xhc3NTdHJ1Y3R1cmUgPSBJbnRl
cm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBuZXdUYXJnZXQsIHN0
cnVjdHVyZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAg
ICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZTo6R2VuZXJhdG9yKQorICAgIHN3aXRjaCAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKSB7Cisg
ICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uOgorICAgICAgICByZXR1
cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxT
Y29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGU6OkdlbmVyYXRvcjoKICAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NT
dHJ1Y3R1cmUpOwotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBn
bG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAgICBjYXNl
IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmM6CisgICAgICAgIHJldHVybiBKU0FzeW5j
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUo
KSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOworICAgIH0KKworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVu
Y3Rpb24gQ29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCAzMWMzM2Q2YWY0ZmYxMmJjMjRjMWUyYjViZjRl
NTU1OGQ3NjU2OTA2Li5kZWVlOWE1NWQ2ZjJjNjFlOWY3MTQ0ODNiMzFhYmQ1N2ZiMWNhZTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oCkBAIC01OCw2ICs1OCw3IEBAIHByaXZhdGU6CiBlbnVtIGNsYXNzIEZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZSB7CiAgICAgRnVuY3Rpb24sCiAgICAgR2VuZXJhdG9yLAorICAgIEFzeW5j
LAogfTsKIAogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgRnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlID0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbiwg
SlNWYWx1ZSBuZXdUYXJnZXQgPSBKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJhNzQzNzIzYmRj
N2ZhZWVmZjYyNTFlMmZmMmEyZGRjNjQyOGU3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw3NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlh
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0FzeW5j
RnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1
ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gSlNBc3luY0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJBc3luY0Z1bmN0
aW9uIiwgICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNBc3lu
Y0Z1bmN0aW9uKSB9OworCitKU0FzeW5jRnVuY3Rpb246OkpTQXN5bmNGdW5jdGlvbihWTSYgdm0s
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVy
ZSkKK3sKK30KKworSlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZUltcGwo
Vk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBKU0FzeW5jRnVuY3Rpb24qIGFzeW5jRnVuY3Rp
b24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FzeW5jRnVuY3Rpb24+KHZtLmhlYXAp
KSBKU0FzeW5jRnVuY3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOworICAg
IEFTU0VSVChhc3luY0Z1bmN0aW9uLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAg
IGFzeW5jRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gYXN5bmNGdW5j
dGlvbjsKK30KKworSlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZShWTSYg
dm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7Cisg
ICAgSlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0
YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+YXN5bmNGdW5jdGlvblN0cnVjdHVy
ZSgpKTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2
bSwgYXN5bmNGdW5jdGlvbiwgIkFsbG9jYXRpbmcgYW4gYXN5bmMgZnVuY3Rpb24iKTsKKyAgICBy
ZXR1cm4gYXN5bmNGdW5jdGlvbjsKK30KKworSlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rp
b246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29w
ZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIEpTQXN5bmNGdW5jdGlvbiog
YXN5bmNGdW5jdGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1
cmUpOworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZt
LCBhc3luY0Z1bmN0aW9uLCAiQWxsb2NhdGluZyBhbiBhc3luYyBmdW5jdGlvbiIpOworICAgIHJl
dHVybiBhc3luY0Z1bmN0aW9uOworfQorCitKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlv
bjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgcmV0
dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0
KCktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdkYTg3ZGI2
ZDM4NWE3OWQ1NTc2YzFiNzJhMTM0Y2EzZTIxYmYxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxp
YS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTQXN5bmNGdW5jdGlvbiA6IHB1YmxpYyBK
U0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xhc3MgSklUOworICAgIGZyaWVuZCBjbGFzcyBWTTsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVuY3Rpb24gQmFzZTsKKworICAgIGNvbnN0IHN0YXRp
YyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRpYyBKU0FzeW5jRnVuY3Rpb24qIGNyZWF0
ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBzdGF0aWMgSlNBc3lu
Y0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3Ry
dWN0dXJlKik7CisgICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2Nv
cGUqKTsKKworICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNh
cGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlu
bGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihKU0FzeW5jRnVuY3Rpb24pOwor
ICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEpTQXN5
bmNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUq
KTsKKworICAgIHN0YXRpYyBKU0FzeW5jRnVuY3Rpb24qIGNyZWF0ZUltcGwoVk0mLCBGdW5jdGlv
bkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCBmNDhjYmNmMDkxMzJjYWE2N2VjNzFmNTc1MTQ5MDBjOGVjZTAyODBiLi5jNGMz
Y2UwYzk5ZDdhNDFjZjczN2ZkZTVkN2ZhZDViZGFjNmY3MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zMyw2ICszMyw4IEBA
CiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkFycmF5SXRlcmF0b3JQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
aCIKICNpbmNsdWRlICJCb29sZWFuQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJCb29sZWFuUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCkBAIC02Myw2ICs2NSw3IEBACiAj
aW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJK
U0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCkBAIC01
ODUsNiArNTg4LDggQEAgbV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBpbnN0YW5jZVR5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGgKICAgICBtX3Rocm93VHlwZUVy
cm9yRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCB0aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKIAogICAg
IEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3RvciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0
ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1
bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAg
bV9mdW5jdGlvbkNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgKEZ1bmN0aW9uQ29uc3RydWN0b3Iq
KWZ1bmN0aW9uQ29uc3RydWN0b3IpOworCiAgICAgQXJyYXlDb25zdHJ1Y3RvciogYXJyYXlDb25z
dHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsK
ICAgICBtX2FycmF5Q29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yKTsK
ICAgICAKQEAgLTYzMCw3ICs2MzUsMTcgQEAgbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS0+
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmMKIAogICAg
IG1fZ2VuZXJhdG9yUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCksIERvbnRFbnVtIHwgUmVhZE9ubHkpOwogICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIG1fZ2VuZXJhdG9yUHJvdG90eXBlLmdldCgpLCBEb250RW51bSB8IFJlYWRPbmx5
KTsKLSAgICAKKworICAgIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAg
ICAgIFtdKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXImIGluaXQpIHsKKyAgICAgICAg
ICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgPSBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgQXN5bmNGdW5jdGlvblByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOworICAgICAgICAgICAgaW5pdC5zZXRQcm90b3R5cGUo
YXN5bmNGdW5jdGlvblByb3RvdHlwZSk7CisgICAgICAgICAgICBpbml0LnNldFN0cnVjdHVyZShK
U0FzeW5jRnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5p
dC5wcm90b3R5cGUpKTsKKyAgICAgICAgICAgIGluaXQuc2V0Q29uc3RydWN0b3IoUHJvcGVydHlO
YW1lKG51bGxwdHIpLCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBB
c3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmds
b2JhbCwgaW5pdC5nbG9iYWwtPm1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5nZXQoKSksIGFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUpKTsKKworICAgICAgICAgICAgaW5pdC5nbG9iYWwtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKGluaXQudm0sIGluaXQudm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuYXN5bmNGdW5jdGlvblJlc3VtZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0
ZUJ1aWx0aW5GdW5jdGlvbihpbml0LnZtLCBhc3luY0Z1bmN0aW9uUHJvdG90eXBlQXN5bmNGdW5j
dGlvblJlc3VtZUNvZGVHZW5lcmF0b3IoaW5pdC52bSksIGluaXQuZ2xvYmFsKSwgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgICAgICB9KTsKKwogICAgIG1fb2JqZWN0UHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlv
blByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9h
cnJheVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNvbnN0cnVjdG9yLCBhcnJheUNvbnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0xMTAy
LDYgKzExMTcsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV90aHJvd1R5cGVF
cnJvckdldHRlclNldHRlci52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV90aHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNl
dHRlcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyKTsK
KyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvdHlwZSk7CiAK
ICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKQEAgLTEx
MTAsNiArMTEyNiw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9pdGVyYXRvclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2dlbmVyYXRvclByb3RvdHlwZSk7CisgICAgdGhpc09iamVjdC0+bV9hc3lu
Y0Z1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlclByb3RvdHlwZSk7CiAKICAgICB0aGlzT2JqZWN0LT5t
X2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA0MDg0NmNlMjk3YjQ3YzI4
NWVjNDA5MWNkNzM0MDI5NWMwNmRhNWYwLi4yZGQ0NDE2OWQxZjFjYzA4YmFjNjE3ZWI3NWIyNDBm
MDM2NTYzMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFycmF5
Q29uc3RydWN0b3I7CiBjbGFzcyBBcnJheVByb3RvdHlwZTsKK2NsYXNzIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGU7CiBjbGFzcyBCb29sZWFuUHJvdG90eXBlOwogY2xhc3MgQ29uc29sZUNsaWVudDsK
IGNsYXNzIERlYnVnZ2VyOwpAQCAtNjMsNiArNjQsNyBAQCBjbGFzcyBFcnJvckNvbnN0cnVjdG9y
OwogY2xhc3MgRXJyb3JQcm90b3R5cGU7CiBjbGFzcyBFdmFsQ29kZUJsb2NrOwogY2xhc3MgRXZh
bEV4ZWN1dGFibGU7CitjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdG9yOwogY2xhc3MgRnVuY3Rpb25Q
cm90b3R5cGU7CiBjbGFzcyBHZW5lcmF0b3JQcm90b3R5cGU7CiBjbGFzcyBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZTsKQEAgLTIzMyw2ICsyMzUsNyBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3N5bnRheEVycm9y
Q29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1f
dHlwZUVycm9yQ29uc3RydWN0b3I7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VSSUVycm9yQ29uc3RydWN0b3I7CisgICAgV3JpdGVC
YXJyaWVyPEZ1bmN0aW9uQ29uc3RydWN0b3I+IG1fZnVuY3Rpb25Db25zdHJ1Y3RvcjsKICAgICBX
cml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CiAgICAg
V3JpdGVCYXJyaWVyPEFycmF5Q29uc3RydWN0b3I+IG1fYXJyYXlDb25zdHJ1Y3RvcjsKICAgICBX
cml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9yOwpA
QCAtMzA2LDYgKzMwOSw3IEBAIHB1YmxpYzoKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9u
TmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOwor
ICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RvbGxhclZNU3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmU7CkBAIC01Mjcs
NiArNTMxLDE5IEBAIHB1YmxpYzoKICAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmdldCgpOyB9CiAgICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQ
cm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQog
CisgICAgTGF6eUNsYXNzU3RydWN0dXJlJiBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOworICAgIH0KKyAg
ICBjb25zdCBMYXp5Q2xhc3NTdHJ1Y3R1cmUmIGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7Cisg
ICAgfQorICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUq
PihsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLnByb3RvdHlwZSh0aGlzKSk7IH0KKyAgICBB
c3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5
KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBc3luY0Z1bmN0aW9uUHJvdG90eXBl
Kj4obGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5wcm90b3R5cGVDb25jdXJyZW50bHkoKSk7
IH0KKyAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVy
ZSogYXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJlbnRseSgpIGNvbnN0IHsgcmV0dXJuIGxh
enlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkuZ2V0Q29uY3VycmVudGx5KCk7IH0KKwogICAgIFN0
cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdn
ZXJTY29wZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCh0aGlzKTsg
fQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg3ODk0NDU3
NTMzZDRhZWMwYzE5MWI3ZmQxMDdhZjU1ZWI2Y2YyZDMuLjBkMTUxZTBhNWQzYWNlYjg0NTQyODQz
ZDhhNGNmYjRkOWY0YmE3MmUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIwIEBACisyMDE2LTEwLTIwICBDYWl0bGluIFBv
dHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0pTQ10gaW1wbGVtZW50IHJ1bnRp
bWUgZm9yIGFzeW5jIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYzNzYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChzaG91
bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKToKKyAgICAgICAgKHNob3VsZFRo
cm93U3ludGF4RXJyb3IpOgorICAgICAgICAobGV0LkFzeW5jRnVuY3Rpb24uYXN5bmMpOgorICAg
ICAgICAoYXN5bmMuYXN5bmNGdW5jdGlvbkZvclByb3RvKToKKyAgICAgICAgKE9iamVjdC5nZXRQ
cm90b3R5cGVPZi5hc3luYyk6CisgICAgICAgIChPYmplY3QuZ2V0UHJvdG90eXBlT2YuYXN5bmMu
bWV0aG9kKToKKyAgICAgICAgKGFzeW5jKToKKyAgICAgICAgKGFzeW5jLm1ldGhvZCk6CisgICAg
ICAgIChhc3luYy5hc3luY05vbkNvbnN0cnVjdG9yRGVjbCk6CisgICAgICAgIChzaG91bGRUaHJv
dy5uZXcuYXN5bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3cubmV3LmFzeW5jLm5vbkNvbnN0cnVj
dG9yKToKKyAgICAgICAgKGFzeW5jLmFzeW5jRGVjbCk6CisgICAgICAgIChhc3luYy5mKToKKyAg
ICAgICAgKE15RXJyb3IpOgorICAgICAgICAoYXN5bmMuYXN5bmNEZWNsVGhyb3dlcik6CisgICAg
ICAgIChzaG91bGRUaHJvd0FzeW5jLmFzeW5jKToKKyAgICAgICAgKHJlc29sdmVMYXRlcik6Cisg
ICAgICAgIChyZWplY3RMYXRlcik6CisgICAgICAgIChhc3luYy5yZXN1bWVBZnRlck5vcm1hbCk6
CisgICAgICAgIChPLmFzeW5jLnJlc3VtZUFmdGVyTm9ybWFsKToKKyAgICAgICAgKHJlc3VtZUFm
dGVyTm9ybWFsQXJyb3cuYXN5bmMpOgorICAgICAgICAoYXN5bmMucmVzdW1lQWZ0ZXJUaHJvdyk6
CisgICAgICAgIChPLmFzeW5jLnJlc3VtZUFmdGVyVGhyb3cpOgorICAgICAgICAocmVzdW1lQWZ0
ZXJUaHJvd0Fycm93LmFzeW5jKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3Mv
YXN5bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVkLXdvcmQuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkVGhyb3cpOgorICAgICAgICAoU3ludGF4RXJyb3IuQ2Fuc3RyaW5nX2FwcGVhcmVkX2hlcmVh
d2FpdC5jaGVja01vZHVsZVN5bnRheEVycm9yLlN0cmluZy5yYXcuYXdhaXQpOgorICAgICAgICAo
Y2hlY2tNb2R1bGVTeW50YXhFcnJvci5TdHJpbmcucmF3LmF3YWl0KToKKyAgICAgICAgKGNoZWNr
TW9kdWxlU3ludGF4RXJyb3IuU3RyaW5nLnJhdy5hc3luYy5hd2FpdCk6CisgICAgICAgIChTeW50
YXhFcnJvci5DYW5ub3QuZGVjbGFyZS5uYW1lZCk6CisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3
YWl0LW1vemlsbGEuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hv
dWxkQmVBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJv
d0FzeW5jKToKKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChzaG91bGRUaHJvd1N5bnRheEVy
cm9yKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5lbXB0eSk6CisgICAgICAgIChtb3pT
ZW1hbnRpY3MuYXN5bmMuc2ltcGxlUmV0dXJuKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3lu
Yy5zaW1wbGVBd2FpdCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuc2ltcGxlQXdhaXRB
c3luYyk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMucmV0dXJuT3RoZXJBc3luYyk6Cisg
ICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuc2ltcGxlVGhyb3dlcik6CisgICAgICAgIChtb3pT
ZW1hbnRpY3MuYXN5bmMuZGVsZWdhdGVkVGhyb3dlcik6CisgICAgICAgIChtb3pTZW1hbnRpY3Mu
YXN5bmMudHJ5Q2F0Y2gpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnRyeUNhdGNoVGhy
b3cpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLndlbGxGaW5hbGx5KToKKyAgICAgICAg
KG1velNlbWFudGljcy5hc3luYy5maW5hbGx5TWF5RmFpbCk6CisgICAgICAgIChtb3pTZW1hbnRp
Y3MuYXN5bmMuZW1iZWRkZWQuYXN5bmMuaW5uZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFz
eW5jLmVtYmVkZGVkKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5maWIpOgorICAgICAg
ICAobW96U2VtYW50aWNzLmFzeW5jLmlzT2RkLmFzeW5jLmlzRXZlbik6CisgICAgICAgIChtb3pT
ZW1hbnRpY3MuYXN5bmMuaXNPZGQpOgorICAgICAgICAobW96U2VtYW50aWNzLmhhcmRjb3JlRmli
LmFzeW5jLmZpYjIpOgorICAgICAgICAobW96U2VtYW50aWNzLm5hbWVkQXN5bmNFeHByLmFzeW5j
LnNpbXBsZSk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIuYXN5
bmMuZmlyc3QpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFz
eW5jLnNlY29uZCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIu
YXN5bmMudGhpcmQpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVy
KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5taXNjZWxsYW5lb3VzKToKKyAgICAgICAg
KG1velNlbWFudGljcy50aHJvd2VyKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5kZWZh
dWx0QXJncyk6CisgICAgICAgIChtb3pTZW1hbnRpY3Muc2hvdWxkVGhyb3cpOgorICAgICAgICAo
bW96U2VtYW50aWNzKToKKyAgICAgICAgKG1vek1ldGhvZHMuWCk6CisgICAgICAgIChtb3pNZXRo
b2RzLlgucHJvdG90eXBlLmFzeW5jLmdldFZhbHVlKToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5w
cm90b3R5cGUuc2V0VmFsdWUpOgorICAgICAgICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5hc3lu
Yy5pbmNyZW1lbnQpOgorICAgICAgICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5hc3luYy5nZXRC
YXNlQ2xhc3NOYW1lKToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5hc3luYy5nZXRTdGF0aWNWYWx1
ZSk6CisgICAgICAgIChtb3pNZXRob2RzLlkucHJvdG90eXBlLmFzeW5jLmdldEJhc2VDbGFzc05h
bWUpOgorICAgICAgICAobW96TWV0aG9kcy5ZKToKKyAgICAgICAgKG1vekZ1bmN0aW9uTmFtZUlu
ZmVycmVuY2UuYXN5bmMudGVzdCk6CisgICAgICAgIChtb3pTeW50YXhFcnJvcnMpOgorICAgICAg
ICAqIHN0cmVzcy9hc3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzOiBBZGRlZC4KKyAgICAgICAg
KGFzc2VydCk6CisgICAgICAgIChzaG91bGRUaHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKEFz
eW5jRnVuY3Rpb24uYXN5bmMpOgorICAgICAgICAqIHN0cmVzcy9hc3luY19hcnJvd19mdW5jdGlv
bnNfbGV4aWNhbF9hcmd1bWVudHNfYmluZGluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMp
OgorICAgICAgICAobm9Bcmd1bWVudHNBcnJvdzIuYXN5bmMpOgorICAgICAgICAqIHN0cmVzcy9h
c3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9uZXcudGFyZ2V0X2JpbmRpbmcuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAg
IChzaG91bGRUaHJvd0FzeW5jKToKKyAgICAgICAgKEMxKToKKyAgICAgICAgKEMyKToKKyAgICAg
ICAgKHNob3VsZFRocm93QXN5bmMuYXN5bmMpOgorICAgICAgICAqIHN0cmVzcy9hc3luY19hcnJv
d19mdW5jdGlvbnNfbGV4aWNhbF9zdXBlcl9iaW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoQmFzZUNsYXNzLnBy
b3RvdHlwZS5iYXNlQ2xhc3NWYWx1ZSk6CisgICAgICAgIChCYXNlQ2xhc3MucHJvdG90eXBlLmdl
dCBwcm9wZXJ0eSk6CisgICAgICAgIChCYXNlQ2xhc3MpOgorICAgICAgICAoQ2hpbGRDbGFzcy5w
cm90b3R5cGUuYXN5bmNTdXBlclByb3ApOgorICAgICAgICAoQ2hpbGRDbGFzcy5wcm90b3R5cGUu
YXN5bmNTdXBlclByb3AyKToKKyAgICAgICAgKENoaWxkQ2xhc3MpOgorICAgICAgICAoQ2hpbGRD
bGFzczIpOgorICAgICAgICAqIHN0cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF90
aGlzX2JpbmRpbmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hv
dWxkQmVBc3luYyk6CisgICAgICAgIChkLnkpOgorCiAyMDE2LTEwLTIxICBDYWl0bGluIFBvdHRl
ciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gZG9uJ3QgY3Jhc2ggd2hlbiBh
cmd1bWVudHMgdG8gYG5ldyBGdW5jdGlvbigpYCBwcm9kdWNlIHVuZXhwZWN0ZWQgQVNUCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1hcmd1
bWVudHMtYmluZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1s
ZXhpY2FsLWFyZ3VtZW50cy1iaW5kaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1ZTAyYTM4NjlhNzFhNjI0
MDNlM2Y3YTE4YzQ0MjU5ZDgwZmNmM2EKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1hcmd1bWVudHMtYmluZGluZy5qcwpAQCAt
MCwwICsxLDUzIEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZV
TkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitm
dW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAobXNnID09
PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAgbXNnID0gIiBm
b3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1
biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAg
ICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAg
ICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJv
cjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAg
ICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2Up
IHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigp
LnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAg
ICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsK
KyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmICghaGFkRXJyb3IpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JU
eXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5z
dGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIg
KyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IHRocmV3ICci
ICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5t
ZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIg
KyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFj
dHVhbC5tZXNzYWdlICsgIiciKTsKK30KKwordmFyIG5vQXJndW1lbnRzQXJyb3cgPSBhc3luYyAo
KSA9PiBhd2FpdCBbLi4uYXJndW1lbnRzXTsKK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gbm9Bcmd1
bWVudHNBcnJvdygxLCAyLCAzKSwgUmVmZXJlbmNlRXJyb3IpOwordmFyIG5vQXJndW1lbnRzQXJy
b3cyID0gYXN5bmMgKCkgPT4geyByZXR1cm4gYXdhaXQgWy4uLmFyZ3VtZW50c107IH0KK3Nob3Vs
ZFRocm93QXN5bmMoKCkgPT4gbm9Bcmd1bWVudHNBcnJvdzIoMSwgMiwgMyksIFJlZmVyZW5jZUVy
cm9yKTsKKworc2hvdWxkQmVBc3luYygiWzEsMiwzXSIsICgpID0+IChmdW5jdGlvbigpIHsgcmV0
dXJuIChhc3luYyAoKSA9PiBKU09OLnN0cmluZ2lmeShbLi4uYXJndW1lbnRzXSkpKCk7IH0pKDEs
IDIsIDMpKTsKK3Nob3VsZEJlQXN5bmMoIls0LDUsNl0iLCAoKSA9PiAoZnVuY3Rpb24oKSB7IHJl
dHVybiAoYXN5bmMgKCkgPT4geyByZXR1cm4gSlNPTi5zdHJpbmdpZnkoWy4uLmF3YWl0IGFyZ3Vt
ZW50c10pIH0pKCk7IH0pKDQsIDUsIDYpKTsKKworKGZ1bmN0aW9uIHRlc3RBcmd1bWVudHNCaW5k
aW5nKCkgeworICAgIHZhciBhcmdzQmluZGluZzsKKyAgICB2YXIgcHJvbWlzZSA9IChmdW5jdGlv
bigpIHsgYXJnc0JpbmRpbmcgPSBhcmd1bWVudHM7IHJldHVybiAoYXN5bmMoKSA9PiBhcmd1bWVu
dHMpKCkgfSkoMSwgMiwgMyk7CisgICAgc2hvdWxkQmVBc3luYyhhcmdzQmluZGluZywgKCkgPT4g
cHJvbWlzZSk7Cit9KSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ct
ZnVuY3Rpb25zLWxleGljYWwtbmV3LnRhcmdldC1iaW5kaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
YXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtbmV3LnRhcmdldC1iaW5kaW5nLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQyNmEzOTgzZjdhOTI3NDBlZTQ3OGMzZmY3YmI4MzBjNzg1YWU0MDkKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1u
ZXcudGFyZ2V0LWJpbmRpbmcuanMKQEAgLTAsMCArMSw1NSBAQAorLy8gVGhpcyB0ZXN0IHJlcXVp
cmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBi
dWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVh
bCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQorICAgICAgICBtc2cgPSAiIjsKKyAg
ICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0g
ZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6
ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBz
aG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAg
dmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBh
Y3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVy
cm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOwor
CisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRC
ZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0FzeW5j
KHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFk
RXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9
IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0
cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBp
ZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4g
KyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cu
Iik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5
cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3Nh
Z2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2Fn
ZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0
aW9uIEMxKCkgeworICAgIHJldHVybiBhc3luYyAoKSA9PiBhd2FpdCBuZXcudGFyZ2V0OworfQor
CitmdW5jdGlvbiBDMigpIHsKKyAgICByZXR1cm4gYXN5bmMgKCkgPT4geyByZXR1cm4gYXdhaXQg
bmV3LnRhcmdldCB9OworfQorCitzaG91bGRCZUFzeW5jKEMxLCBuZXcgQzEoKSk7CitzaG91bGRC
ZUFzeW5jKHVuZGVmaW5lZCwgQzEoKSk7CitzaG91bGRCZUFzeW5jKEMyLCBuZXcgQzIoKSk7Citz
aG91bGRCZUFzeW5jKHVuZGVmaW5lZCwgQzIoKSk7CisKK3Nob3VsZFRocm93QXN5bmMoYXN5bmMg
KCkgPT4gYXdhaXQgbmV3LnRhcmdldCwgUmVmZXJlbmNlRXJyb3IpOworc2hvdWxkVGhyb3dBc3lu
Yyhhc3luYyAoKSA9PiB7IHJldHVybiBhd2FpdCBuZXcudGFyZ2V0OyB9LCBSZWZlcmVuY2VFcnJv
cik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4
aWNhbC1zdXBlci1iaW5kaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rp
b25zLWxleGljYWwtc3VwZXItYmluZGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOGJmMGY5YWNlM2M3NWY3
ZDhmN2ViY2IyMDNmNzM4ZGIzOWM5ZmRiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtc3VwZXItYmluZGluZy5qcwpAQCAtMCww
ICsxLDU1IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNU
SU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCisKK2Z1
bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZykgeworICAgIGlmIChtc2cgPT09
IHZvaWQgMCkKKyAgICAgICAgbXNnID0gIiI7CisgICAgZWxzZQorICAgICAgICBtc2cgPSAiIGZv
ciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVu
LCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAg
IHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAg
ICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9y
OyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAg
ICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsK
K30KKworY2xhc3MgQmFzZUNsYXNzIHsKKyAgICBiYXNlQ2xhc3NWYWx1ZSgpIHsKKyAgICAgICAg
cmV0dXJuICJCYXNlQ2xhc3NWYWx1ZSI7CisgICAgfQorICAgIGdldCBwcm9wZXJ0eSgpIHsKKyAg
ICAgICAgcmV0dXJuICJ0ZXN0ISI7CisgICAgfQorfQorCitjbGFzcyBDaGlsZENsYXNzIGV4dGVu
ZHMgQmFzZUNsYXNzIHsKKyAgICBhc3luY1N1cGVyUHJvcCgpIHsKKyAgICAgICAgcmV0dXJuIGFz
eW5jIHggPT4gc3VwZXIuYmFzZUNsYXNzVmFsdWUoKTsKKyAgICB9CisgICAgYXN5bmNTdXBlclBy
b3AyKCkgeworICAgICAgICByZXR1cm4gYXN5bmMgeCA9PiB7IHJldHVybiBzdXBlci5iYXNlQ2xh
c3NWYWx1ZSgpOyB9CisgICAgfQorfQorCisvLyBGSVhNRTogc3VwZXIgYmluZGluZ3MgaW4gYXN5
bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBicm9rZW4KK3Nob3VsZEJlQXN5bmMoIkJhc2VDbGFzc1Zh
bHVlIiwgbmV3IENoaWxkQ2xhc3MoKS5hc3luY1N1cGVyUHJvcCgpKTsKK3Nob3VsZEJlQXN5bmMo
IkJhc2VDbGFzc1ZhbHVlIiwgbmV3IENoaWxkQ2xhc3MoKS5hc3luY1N1cGVyUHJvcDIoKSk7CisK
K2NsYXNzIENoaWxkQ2xhc3MyIGV4dGVuZHMgQmFzZUNsYXNzIHsKKyAgICBjb25zdHJ1Y3Rvcigp
IHsKKyAgICAgICAgcmV0dXJuIGFzeW5jIChzZWxmID0gc3VwZXIoKSkgPT4gc2VsZi5iYXNlQ2xh
c3NWYWx1ZSgpICsgJyAnICsgc3VwZXIucHJvcGVydHk7CisgICAgfQorfQorCitzaG91bGRCZUFz
eW5jKCJCYXNlQ2xhc3NWYWx1ZSB0ZXN0ISIsIG5ldyBDaGlsZENsYXNzMigpKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXRoaXMtYmlu
ZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXRo
aXMtYmluZGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmFmYTExM2ZhOTEyNmMzZTE2N2ZhZTQxMWMzYTA0
ZTg3YTExYjVhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ct
ZnVuY3Rpb25zLWxleGljYWwtdGhpcy1iaW5kaW5nLmpzCkBAIC0wLDAgKzEsMzAgQEAKKy8vIFRo
aXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJl
IGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4
cGVjdGVkLCBhY3R1YWwsIG1zZykgeworICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAg
bXNnID0gIiI7CisgICAgZWxzZQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1
ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQg
YWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rp
b24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihl
cnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1p
Y3JvdGFza3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOwor
CisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKwordmFyIGQgPSAoeyB4
IDogImJhciIsIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuIGFzeW5jIHogPT4gdGhpcy54ICsgejsg
fX0pLnkoKTsKK3ZhciBlID0geyB4IDogImJheiIsIHkgOiBkIH07CisKK3Nob3VsZEJlQXN5bmMo
ImJhcmxleSIsICgpID0+IGQoImxleSIpKTsKK3Nob3VsZEJlQXN5bmMoImJhcmxleSIsICgpID0+
IGUueSgibGV5IikpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtYmFz
aWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1iYXNpYy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
OGYyMDY1MzY1M2VjYWNkN2YzZWRiNjNiYjMyZDExYjc0YTkyZDNmCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMuanMKQEAgLTAsMCArMSwyOTkgQEAK
Ky8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFY
IHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9ICIiKSB7CisgICAgaWYgKG1zZykKKyAgICAgICAg
bXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIu
IEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhw
ZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBm
YWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9
LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1
YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJy
b3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1
YWwsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KHJ1biwgZXJyb3JUeXBlLCBtZXNz
YWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKworICAg
IHRyeSB7CisgICAgICAgIGFjdHVhbCA9IHJ1bigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICBhY3R1YWwgPSBlOworICAgIH0KKworICAgIGlm
ICghaGFkRXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biAr
ICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4i
KTsKKyAgICBpZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBl
Lm5hbWUgKyAiICwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2Fn
ZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdl
ICsgIicsIGJ1dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rp
b24gc2hvdWxkVGhyb3dBc3luYyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBh
Y3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlv
bih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVy
cm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWlj
cm90YXNrcygpOworCisgICAgaWYgKCFoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIs
IGJ1dCBkaWQgbm90IHRocm93LiIpOworICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9y
VHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0
byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAi
JyIpOworICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1l
c3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0
byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2Ug
KyAiJyIpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd1N5bnRheEVycm9yKHN0ciwgbWVzc2Fn
ZSkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc3RyKTsKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCBgIiArIHN0ciArICJgIHRvIHRocm93IGEgU3ludGF4RXJyb3IsIGJ1dCBk
aWQgbm90IHRocm93LiIpCisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZS5jb25zdHJ1
Y3RvciAhPT0gU3ludGF4RXJyb3IpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIGAiICsgc3RyICsgImAgdG8gdGhyb3cgYSBTeW50YXhFcnJvciwgYnV0IHRocmV3ICciICsg
ZSArICInIik7CisgICAgICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgZS5tZXNzYWdlICE9
PSBtZXNzYWdlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBgIiArIHN0
ciArICJgIHRvIHRocm93IFN5bnRheEVycm9yOiAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3
ICciICsgZSArICInIik7CisgICAgfQorfQorCisvLyBEbyBub3QgaW5zdGFsbCBgQXN5bmNGdW5j
dGlvbmAgY29uc3RydWN0b3Igb24gZ2xvYmFsIG9iamVjdAorc2hvdWxkQmUodW5kZWZpbmVkLCB0
aGlzLkFzeW5jRnVuY3Rpb24pOworbGV0IEFzeW5jRnVuY3Rpb24gPSAoYXN5bmMgZnVuY3Rpb24o
KSB7fSkuY29uc3RydWN0b3I7CisKKy8vIExldCBmdW5jdGlvblByb3RvdHlwZSBiZSB0aGUgaW50
cmluc2ljIG9iamVjdCAlQXN5bmNGdW5jdGlvblByb3RvdHlwZSUuCithc3luYyBmdW5jdGlvbiBh
c3luY0Z1bmN0aW9uRm9yUHJvdG8oKSB7fQorc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5
cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZihhc3luY0Z1bmN0aW9uRm9yUHJvdG8pKTsKK3Nob3Vs
ZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmMg
ZnVuY3Rpb24oKSB7fSkpOworc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9iamVj
dC5nZXRQcm90b3R5cGVPZihhc3luYyAoKSA9PiB7fSkpOworc2hvdWxkQmUoQXN5bmNGdW5jdGlv
bi5wcm90b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZih7IGFzeW5jIG1ldGhvZCgpIHt9IH0u
bWV0aG9kKSk7CisKKy8vIEZJWE1FOiBBc3luY0Z1bmN0aW9uIGNvbnN0cnVjdG9yIHNob3VsZCBi
dWlsZCBmdW5jdGlvbnMgd2l0aCBjb3JyZWN0IHByb3RvdHlwZS4KKy8vIHNob3VsZEJlKEFzeW5j
RnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoQXN5bmNGdW5jdGlvbigp
KSk7CisKKy8vIEFzeW5jRnVuY3Rpb25DcmVhdGUgZG9lcyBub3QgcHJvZHVjZSBhbiBvYmplY3Qg
d2l0aCBhIFByb3RvdHlwZQorc2hvdWxkQmUodW5kZWZpbmVkLCBhc3luY0Z1bmN0aW9uRm9yUHJv
dG8ucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCBhc3luY0Z1bmN0aW9uRm9yUHJvdG8uaGFz
T3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKK3Nob3VsZEJlKHVuZGVmaW5lZCwgKGFzeW5jIGZ1
bmN0aW9uKCkge30pLnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgKGFzeW5jIGZ1bmN0aW9u
KCkge30pLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQs
IChhc3luYygpID0+IHt9KS5wcm90b3R5cGUpOworc2hvdWxkQmUoZmFsc2UsIChhc3luYygpID0+
IHt9KS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOworc2hvdWxkQmUodW5kZWZpbmVkLCAo
eyBhc3luYyBtZXRob2QoKSB7fSB9KS5tZXRob2QucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNl
LCAoeyBhc3luYyBtZXRob2QoKSB7fSB9KS5tZXRob2QuaGFzT3duUHJvcGVydHkoInByb3RvdHlw
ZSIpKTsKK3Nob3VsZEJlKHVuZGVmaW5lZCwgQXN5bmNGdW5jdGlvbigpLnByb3RvdHlwZSk7Citz
aG91bGRCZShmYWxzZSwgQXN5bmNGdW5jdGlvbigpLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUi
KSk7CisKKy8vIEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlWyBAQHRvU3RyaW5nVGFnIF0KK3ZhciBk
ZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihBc3luY0Z1bmN0aW9u
LnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5nVGFnKTsKK3Nob3VsZEJlKCJBc3luY0Z1bmN0aW9u
IiwgZGVzY3JpcHRvci52YWx1ZSk7CitzaG91bGRCZShmYWxzZSwgZGVzY3JpcHRvci5lbnVtZXJh
YmxlKTsKK3Nob3VsZEJlKGZhbHNlLCBkZXNjcmlwdG9yLndyaXRhYmxlKTsKK3Nob3VsZEJlKHRy
dWUsIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKTsKKworc2hvdWxkQmUoMSwgQXN5bmNGdW5jdGlv
bi5sZW5ndGgpOworCisvLyBMZXQgRiBiZSAhIEZ1bmN0aW9uQWxsb2NhdGUoZnVuY3Rpb25Qcm90
b3R5cGUsIFN0cmljdCwgIm5vbi1jb25zdHJ1Y3RvciIpCithc3luYyBmdW5jdGlvbiBhc3luY05v
bkNvbnN0cnVjdG9yRGVjbCgpIHt9CitzaG91bGRUaHJvdygoKSA9PiBuZXcgYXN5bmNOb25Db25z
dHJ1Y3RvckRlY2woKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyAoYXN5bmMg
ZnVuY3Rpb24oKSB7fSksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgKHsgYXN5
bmMgbm9uQ29uc3RydWN0b3IoKSB7fSB9KS5ub25Db25zdHJ1Y3RvcigpLCBUeXBlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4gbmV3ICgoKSA9PiAibm90IGEgY29uc3RydWN0b3IhIiksIFR5cGVF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgKEFzeW5jRnVuY3Rpb24oKSksIFR5cGVFcnJv
cik7CisKKy8vIE5vcm1hbCBjb21wbGV0aW9uCithc3luYyBmdW5jdGlvbiBhc3luY0RlY2woKSB7
IHJldHVybiAidGVzdCI7IH0KK3Nob3VsZEJlQXN5bmMoInRlc3QiLCBhc3luY0RlY2wpOworc2hv
dWxkQmVBc3luYygidGVzdDIiLCBhc3luYyBmdW5jdGlvbigpIHsgcmV0dXJuICJ0ZXN0MiI7IH0p
Oworc2hvdWxkQmVBc3luYygidGVzdDMiLCBhc3luYyAoKSA9PiAidGVzdDMiKTsKK3Nob3VsZEJl
QXN5bmMoInRlc3Q0IiwgKCkgPT4gKHsgYXN5bmMgZigpIHsgcmV0dXJuICJ0ZXN0NCI7IH0gfSku
ZigpKTsKKworY2xhc3MgTXlFcnJvciBleHRlbmRzIEVycm9yIHt9OworCisvLyBUaHJvdyBjb21w
bGV0aW9uCithc3luYyBmdW5jdGlvbiBhc3luY0RlY2xUaHJvd2VyKGUpIHsgdGhyb3cgbmV3IE15
RXJyb3IoZSk7IH0KK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gYXN5bmNEZWNsVGhyb3dlcigiYm9v
bSEiKSwgTXlFcnJvciwgImJvb20hIik7CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IChhc3luYyBm
dW5jdGlvbihlKSB7IHRocm93IG5ldyBNeUVycm9yKGUpOyB9KSgiYm9vbSEhISIpLCBNeUVycm9y
LCAiYm9vbSEhISIpOworc2hvdWxkVGhyb3dBc3luYygoKSA9PiAoYXN5bmMgZSA9PiB7IHRocm93
IG5ldyBNeUVycm9yKGUpIH0pKCJib29tISEiKSwgTXlFcnJvciwgImJvb20hISIpOworc2hvdWxk
VGhyb3dBc3luYygoKSA9PiAoeyBhc3luYyB0aHJvd2VyKGUpIHsgdGhyb3cgbmV3IE15RXJyb3Io
ZSk7IH0gfSkudGhyb3dlcigiYm9vbSEhISEiKSwgTXlFcnJvciwgImJvb20hISEhIik7CisKK2Z1
bmN0aW9uIHJlc29sdmVMYXRlcih2YWx1ZSkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVl
KTsgfQorZnVuY3Rpb24gcmVqZWN0TGF0ZXIoZXJyb3IpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0
KGVycm9yKTsgfQorCisvLyBSZXN1bWUgYWZ0ZXIgTm9ybWFsIGNvbXBsZXRpb24KK3ZhciBsb2cg
PSBbXTsKK2FzeW5jIGZ1bmN0aW9uIHJlc3VtZUFmdGVyTm9ybWFsKHZhbHVlKSB7CisgICAgbG9n
LnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIo
dmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgdmFsdWUg
PSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIg
KyB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK30KKworc2hvdWxkQmVBc3luYyg0LCAo
KSA9PiByZXN1bWVBZnRlck5vcm1hbCgxKSk7CitzaG91bGRCZSgic3RhcnQ6MSByZXN1bWU6MiBy
ZXN1bWU6MyIsIGxvZy5qb2luKCIgIikpOworCit2YXIgTyA9IHsKKyAgICBhc3luYyByZXN1bWVB
ZnRlck5vcm1hbCh2YWx1ZSkgeworICAgICAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsK
KyAgICAgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICAgICAg
bG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlc29s
dmVMYXRlcih2YWx1ZSArIDEpOworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7
CisgICAgICAgIHJldHVybiB2YWx1ZSArIDE7CisgICAgfQorfTsKK2xvZyA9IFtdOworc2hvdWxk
QmVBc3luYyg1LCAoKSA9PiBPLnJlc3VtZUFmdGVyTm9ybWFsKDIpKTsKK3Nob3VsZEJlKCJzdGFy
dDoyIHJlc3VtZTozIHJlc3VtZTo0IiwgbG9nLmpvaW4oIiAiKSk7CisKK3ZhciByZXN1bWVBZnRl
ck5vcm1hbEFycm93ID0gYXN5bmMgKHZhbHVlKSA9PiB7CisgICAgbG9nLnB1c2goInN0YXJ0OiIg
KyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAg
ICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZl
TGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAg
cmV0dXJuIHZhbHVlICsgMTsKK307Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoNiwgKCkgPT4g
cmVzdW1lQWZ0ZXJOb3JtYWxBcnJvdygzKSk7CitzaG91bGRCZSgic3RhcnQ6MyByZXN1bWU6NCBy
ZXN1bWU6NSIsIGxvZy5qb2luKCIgIikpOworCit2YXIgcmVzdW1lQWZ0ZXJOb3JtYWxFdmFsID0g
QXN5bmNGdW5jdGlvbigidmFsdWUiLCBgCisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7
CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVz
aCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFs
dWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgcmV0dXJuIHZh
bHVlICsgMTsKK2ApOworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDcsICgpID0+IHJlc3VtZUFm
dGVyTm9ybWFsRXZhbCg0KSk7CitzaG91bGRCZSgic3RhcnQ6NCByZXN1bWU6NSByZXN1bWU6NiIs
IGxvZy5qb2luKCIgIikpOworCisvLyBSZXN1bWUgYWZ0ZXIgVGhyb3cgY29tcGxldGlvbgorYXN5
bmMgZnVuY3Rpb24gcmVzdW1lQWZ0ZXJUaHJvdyh2YWx1ZSkgeworICAgIGxvZy5wdXNoKCJzdGFy
dDoiICsgdmFsdWUpOworICAgIHRyeSB7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0
ZXIoInRocm93MSIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3Vt
ZToiICsgZSk7CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0
TGF0ZXIoInRocm93MiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJl
c3VtZToiICsgZSk7CisgICAgfQorICAgIHJldHVybiB2YWx1ZSArIDE7Cit9CisKK2xvZyA9IFtd
Oworc2hvdWxkQmVBc3luYygyLCAoKSA9PiByZXN1bWVBZnRlclRocm93KDEpKTsKK3Nob3VsZEJl
KCJzdGFydDoxIHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOwor
Cit2YXIgTyA9IHsKKyAgICBhc3luYyByZXN1bWVBZnRlclRocm93KHZhbHVlKSB7CisgICAgICAg
IGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgICAgICB0cnkgeworICAgICAgICAgICAg
dmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cxIik7CisgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgICAgICB9CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzIi
KTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgbG9nLnB1c2goInJlc3VtZToi
ICsgZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlICsgMTsKKyAgICB9Cit9Cits
b2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoMywgKCkgPT4gTy5yZXN1bWVBZnRlclRocm93KDIpKTsK
K3Nob3VsZEJlKCJzdGFydDoyIHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2lu
KCIgIikpOworCit2YXIgcmVzdW1lQWZ0ZXJUaHJvd0Fycm93ID0gYXN5bmMgKHZhbHVlKSA9PiB7
CisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdHJ5IHsKKyAgICAgICAgdmFs
dWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cxIik7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAg
dmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cyIik7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVl
ICsgMTsKK307Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoNCwgKCkgPT4gcmVzdW1lQWZ0ZXJU
aHJvd0Fycm93KDMpKTsKK3Nob3VsZEJlKCJzdGFydDozIHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRo
cm93MiIsIGxvZy5qb2luKCIgIikpOworCit2YXIgcmVzdW1lQWZ0ZXJUaHJvd0V2YWwgPSBBc3lu
Y0Z1bmN0aW9uKCJ2YWx1ZSIsIGAKKyAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAg
ICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzEiKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0K
KyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzIiKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAg
IH0KKyAgICByZXR1cm4gdmFsdWUgKyAxOworYCk7Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMo
NSwgKCkgPT4gcmVzdW1lQWZ0ZXJUaHJvd0V2YWwoNCkpOworc2hvdWxkQmUoInN0YXJ0OjQgcmVz
dW1lOnRocm93MSByZXN1bWU6dGhyb3cyIiwgbG9nLmpvaW4oIiAiKSk7CisKKy8vIE1ldGhvb2RE
ZWZpbml0aW9uIFN5bnRheEVycm9ycworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9
IHsgYXN5bmMgZm9vIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQg
YSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBvYmogPSB7IGFzeW5jIGZvbyA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAn
PScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBmb28gLCBiYXIgfTsiLCAiVW5leHBl
Y3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3Qu
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBmb28gfSIsICJV
bmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQg
bGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgMCA6
IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMg
Zm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0g
eyBhc3luYyAwID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBw
YXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBvYmogPSB7IGFzeW5jIDAgLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4
cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAwIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScu
IEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nIDogdHJ1ZSB9OyIsICJVbmV4
cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlz
dC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nID0g
dHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBm
b3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7
IGFzeW5jICdmb28nICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBh
IHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIG9iaiA9IHsgYXN5bmMgJ2ZvbycgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhw
ZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSA6IHRydWUgfTsiLCAiVW5leHBl
Y3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3Qu
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBbJ2ZvbyddID0g
dHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBm
b3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7
IGFzeW5jIFsnZm9vJ10gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVk
IGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgb2JqID0geyBhc3luYyBbJ2ZvbyddIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScu
IEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBmb28gOiB0cnVlIH07IiwgIlVuZXhwZWN0
ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRo
b2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMg
eyBhc3luYyBmb28gPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBh
biBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBmb28gLCBiYXIgfTsiLCAi
VW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFz
eW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
Y2xhc3MgQyB7IGFzeW5jIGZvbyB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBh
biBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsK
Kworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIDAgOiB0cnVlIH07Iiwg
IlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBh
c3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
ImNsYXNzIEMgeyBhc3luYyAwID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhw
ZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxp
c3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgMCAsIGJhciB9
OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3Jl
IGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJjbGFzcyBDIHsgYXN5bmMgMCB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3Rl
ZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4i
KTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nIDogdHJ1
ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVm
b3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgJ2ZvbycgPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9r
ZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBw
YXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3lu
YyAnZm9vJyAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYW4gb3Bl
bmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgJ2ZvbycgfSIsICJVbmV4cGVjdGVk
IHRva2VuICd9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9k
J3MgcGFyYW1ldGVyIGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMg
eyBhc3luYyBbJ2ZvbyddIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0
ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3Qu
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgWydmb28nXSA9IHRy
dWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJl
Zm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsnZm9vJ10gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0
b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdz
IHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFz
eW5jIFsnZm9vJ10gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYW4gb3Blbmlu
ZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcyBi
L0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA4YjI0ZmU3NjBiMGEzYWIyZDlmZjViMTVjMzQ3ZmNmNzFjMmY4MTkKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29y
ZC5qcwpAQCAtMCwwICsxLDcyIEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAx
N19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Ag
c2tpcAorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2
YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3du
ID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3du
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5n
KGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBl
cnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiBjaGVja01vZHVsZVN5bnRh
eEVycm9yKHNvdXJjZSwgZXJyb3JNZXNzYWdlKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gY2hl
Y2tNb2R1bGVTeW50YXgoc291cmNlKSwgZXJyb3JNZXNzYWdlKTsKK30KKworY2hlY2tNb2R1bGVT
eW50YXhFcnJvcihTdHJpbmcucmF3YAordmFyIGF3YWl0OworYCwgYFN5bnRheEVycm9yOiBDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNr
TW9kdWxlU3ludGF4RXJyb3IoYAorZXhwb3J0IHZhciBhd2FpdDsKK2AsIGBTeW50YXhFcnJvcjog
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7Citj
aGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitsZXQgYXdhaXQ7CitgLCBgU3ludGF4
RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGEg
bW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQg
bGV0IGF3YWl0OworYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJv
cihTdHJpbmcucmF3YAorY29uc3QgYXdhaXQgPSAxCitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7Citj
aGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQgY29uc3QgYXdhaXQgPSAx
CitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5n
LnJhd2AKK2Z1bmN0aW9uIGF3YWl0KCkge30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xh
cmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVT
eW50YXhFcnJvcihTdHJpbmcucmF3YAorZnVuY3Rpb24qIGF3YWl0KCkge30KK2AsIGBTeW50YXhF
cnJvcjogQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhIG1vZHVsZS46
MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorYXN5bmMgZnVuY3Rpb24g
YXdhaXQoKSB7fQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1l
ZCAnYXdhaXQnIGluIGEgbW9kdWxlLjoyYCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3Ry
aW5nLnJhd2AKK2ltcG9ydCB7YXdhaXR9IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENh
bm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNr
TW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCB7Zm9vIGFzIGF3YWl0fSBmcm9t
ICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0
ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdg
CitpbXBvcnQgKiBhcyBhd2FpdCBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3Qg
dXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVs
ZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgYXdhaXQsIHt4LCB5LCB6fSBmcm9tICdm
b28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQg
YmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitp
bXBvcnQgYXdhaXQsIHt4LCB5LCB6LH0gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fu
bm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tN
b2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IGF3YWl0IGZyb20gJ2Zvbyc7Citg
LCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5n
IG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCBh
d2FpdCwgKiBhcyBmb28gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAn
YXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW96aWxsYS5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5j
LWF3YWl0LW1vemlsbGEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM1ZDZiOTJkM2U2MWU0OTgzOWUwNmNkMWQ0
ZTFiNTgwM2U3OGEwYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3
YWl0LW1vemlsbGEuanMKQEAgLTAsMCArMSwzMDUgQEAKKy8qIFRoaXMgU291cmNlIENvZGUgRm9y
bSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWMKKyAqIExpY2Vu
c2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRo
IHRoaXMKKyAqIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96Lm9yZy9NUEwv
Mi4wLy4gKi8KKworLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5D
VElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVu
Y3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnID0gIiIpIHsKKyAgICBpZiAobXNn
KQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsg
YWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
QmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBo
YWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFs
ID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9
IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKyAgICBp
ZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKyAgICBzaG91bGRCZShleHBlY3Rl
ZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhydW4sIGVycm9yVHlw
ZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7
CisgICAgdHJ5IHsKKyAgICAgICAgYWN0dWFsID0gcnVuKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBoYWRFcnJvciA9IHRydWU7CisgICAgICAgIGFjdHVhbCA9IGU7CisgICAgfQorICAg
IGlmICghaGFkRXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1
biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJv
dy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JU
eXBlLm5hbWUgKyAiICwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVz
c2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNz
YWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVu
Y3Rpb24gc2hvdWxkVGhyb3dBc3luYyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxl
dCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5j
dGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9u
KGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWlu
TWljcm90YXNrcygpOworICAgIGlmICghaGFkRXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAi
LCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJv
clR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkg
dG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IHRocmV3ICciICsgYWN0dWFsICsg
IiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBt
ZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkg
dG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdl
ICsgIiciKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0KGNvbmQsIG1zZyA9ICIiKSB7CisgICAgaWYg
KCFjb25kKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKK30KKworZnVuY3Rpb24gc2hv
dWxkVGhyb3dTeW50YXhFcnJvcihzdHIsIG1lc3NhZ2UpIHsKKyAgICB2YXIgaGFkRXJyb3IgPSBm
YWxzZTsKKyAgICB0cnkgeworICAgICAgICBldmFsKHN0cik7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7CisgICAgICAgICAgICBoYWRF
cnJvciA9IHRydWU7CisgICAgICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmci
KQorICAgICAgICAgICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09IG1lc3NhZ2UsICJFeHBlY3Rl
ZCAnIiArIG1lc3NhZ2UgKyAiJyBidXQgdGhyZXcgJyIgKyBlLm1lc3NhZ2UgKyAiJyIpOworICAg
ICAgICB9CisgICAgfQorICAgIGFzc2VydChoYWRFcnJvciwgIkRpZCBub3QgdGhyb3cgc3ludGF4
IGVycm9yIik7Cit9CisKKy8vIHNlbWFudGljcy5qcworKGZ1bmN0aW9uIG1velNlbWFudGljcygp
IHsKKworYXN5bmMgZnVuY3Rpb24gZW1wdHkoKSB7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNpbXBs
ZVJldHVybigpIHsKKyAgICByZXR1cm4gMTsKK30KKworYXN5bmMgZnVuY3Rpb24gc2ltcGxlQXdh
aXQoKSB7CisgICAgdmFyIHJlc3VsdCA9IGF3YWl0IDI7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworYXN5bmMgZnVuY3Rpb24gc2ltcGxlQXdhaXRBc3luYygpIHsKKyAgICB2YXIgcmVzdWx0ID0g
YXdhaXQgc2ltcGxlUmV0dXJuKCk7CisgICAgcmV0dXJuIDIgKyByZXN1bHQ7Cit9CisKK2FzeW5j
IGZ1bmN0aW9uIHJldHVybk90aGVyQXN5bmMoKSB7CisgICAgcmV0dXJuIDEgKyBhd2FpdCBzaW1w
bGVBd2FpdEFzeW5jKCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNpbXBsZVRocm93ZXIoKSB7Cisg
ICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGRlbGVnYXRlZFRocm93
ZXIoKSB7CisgICAgdmFyIHZhbCA9IGF3YWl0IHNpbXBsZVRocm93ZXIoKTsKKyAgICByZXR1cm4g
dmFsOworfQorCithc3luYyBmdW5jdGlvbiB0cnlDYXRjaCgpIHsKKyAgICB0cnkgeworICAgICAg
ICBhd2FpdCBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgICAgIHJldHVybiAnRkFJTEVEJzsKKyAg
ICB9IGNhdGNoIChfKSB7CisgICAgICAgIHJldHVybiA1OworICAgIH0KK30KKworYXN5bmMgZnVu
Y3Rpb24gdHJ5Q2F0Y2hUaHJvdygpIHsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBkZWxlZ2F0
ZWRUaHJvd2VyKCk7CisgICAgICAgIHJldHVybiAnRkFJTEVEJzsKKyAgICB9IGNhdGNoIChfKSB7
CisgICAgICAgIHJldHVybiBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgfQorfQorCithc3luYyBm
dW5jdGlvbiB3ZWxsRmluYWxseSgpIHsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBkZWxlZ2F0
ZWRUaHJvd2VyKCk7CisgICAgfSBjYXRjaCAoXykgeworICAgICAgICByZXR1cm4gJ0ZBSUxFRCc7
CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgcmV0dXJuIDY7CisgICAgfQorfQorCithc3luYyBm
dW5jdGlvbiBmaW5hbGx5TWF5RmFpbCgpIHsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBkZWxl
Z2F0ZWRUaHJvd2VyKCk7CisgICAgfSBjYXRjaCAoXykgeworICAgICAgICByZXR1cm4gNTsKKyAg
ICB9IGZpbmFsbHkgeworICAgICAgICByZXR1cm4gZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0K
K30KKworYXN5bmMgZnVuY3Rpb24gZW1iZWRkZWQoKSB7CisgICAgYXN5bmMgZnVuY3Rpb24gaW5u
ZXIoKSB7CisgICAgICAgIHJldHVybiA3OworICAgIH0KKyAgICByZXR1cm4gYXdhaXQgaW5uZXIo
KTsKK30KKworLy8gcmVjdXJzaW9uLCBpdCB3b3JrcyEKK2FzeW5jIGZ1bmN0aW9uIGZpYihuKSB7
CisgICAgcmV0dXJuIChuID09IDAgfHwgbiA9PSAxKSA/IG4gOiBhd2FpdCBmaWIobiAtIDEpICsg
YXdhaXQgZmliKG4gLSAyKTsKK30KKworLy8gbXV0dWFsIHJlY3Vyc2lvbgorYXN5bmMgZnVuY3Rp
b24gaXNPZGQobikgeworICAgIGFzeW5jIGZ1bmN0aW9uIGlzRXZlbihuKSB7CisgICAgICAgIHJl
dHVybiBuID09PSAwIHx8IGF3YWl0IGlzT2RkKG4gLSAxKTsKKyAgICB9CisgICAgcmV0dXJuIG4g
IT09IDAgJiYgYXdhaXQgaXNFdmVuKG4gLSAxKTsKK30KKworLy8gcmVjdXJzaW9uLCB0YWtlIHRo
cmVlIQordmFyIGhhcmRjb3JlRmliID0gYXN5bmMgZnVuY3Rpb24gZmliMihuKSB7CisgICAgcmV0
dXJuIChuID09IDAgfHwgbiA9PSAxKSA/IG4gOiBhd2FpdCBmaWIyKG4gLSAxKSArIGF3YWl0IGZp
YjIobiAtIDIpOworfQorCit2YXIgYXN5bmNFeHByID0gYXN5bmMgZnVuY3Rpb24oKSB7CisgICAg
cmV0dXJuIDEwOworfQorCit2YXIgbmFtZWRBc3luY0V4cHIgPSBhc3luYyBmdW5jdGlvbiBzaW1w
bGUoKSB7CisgICAgcmV0dXJuIDExOworfQorCithc3luYyBmdW5jdGlvbiBleGVjdXRpb25PcmRl
cigpIHsKKyAgICB2YXIgdmFsdWUgPSAwOworICAgIGFzeW5jIGZ1bmN0aW9uIGZpcnN0KCkgewor
ICAgICAgICByZXR1cm4gKHZhbHVlID0gdmFsdWUgPT09IDAgPyAxIDogdmFsdWUpOworICAgIH0K
KyAgICBhc3luYyBmdW5jdGlvbiBzZWNvbmQoKSB7CisgICAgICAgIHJldHVybiAodmFsdWUgPSB2
YWx1ZSA9PT0gMCA/IDIgOiB2YWx1ZSk7CisgICAgfQorICAgIGFzeW5jIGZ1bmN0aW9uIHRoaXJk
KCkgeworICAgICAgICByZXR1cm4gKHZhbHVlID0gdmFsdWUgPT09IDAgPyAzIDogdmFsdWUpOwor
ICAgIH0KKyAgICByZXR1cm4gYXdhaXQgZmlyc3QoKSArIGF3YWl0IHNlY29uZCgpICsgYXdhaXQg
dGhpcmQoKSArIDY7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIG1pc2NlbGxhbmVvdXMoKSB7CisgICAg
aWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYKKyAgICAgICAgYXJndW1lbnRzLmNhbGxlZS5u
YW1lID09PSAibWlzY2VsbGFuZW91cyIpCisgICAgICAgIHJldHVybiAxNDsKK30KKworZnVuY3Rp
b24gdGhyb3dlcigpIHsKKyAgICB0aHJvdyAxNTsKK30KKworYXN5bmMgZnVuY3Rpb24gZGVmYXVs
dEFyZ3MoYXJnID0gdGhyb3dlcigpKSB7Cit9CisKKy8vIEFzeW5jIGZ1bmN0aW9ucyBhcmUgbm90
IGNvbnN0cnVjdGlibGUKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBhc3luYyBmdW5jdGlvbiBQ
ZXJzb24oKSB7CisgICAgfQorICAgIG5ldyBQZXJzb24oKTsKK30sIFR5cGVFcnJvcik7CisKK3No
b3VsZEJlQXN5bmModW5kZWZpbmVkLCBlbXB0eSk7CitzaG91bGRCZUFzeW5jKDEsIHNpbXBsZVJl
dHVybik7CitzaG91bGRCZUFzeW5jKDIsIHNpbXBsZUF3YWl0KTsKK3Nob3VsZEJlQXN5bmMoMywg
c2ltcGxlQXdhaXRBc3luYyk7CitzaG91bGRCZUFzeW5jKDQsIHJldHVybk90aGVyQXN5bmMpOwor
c2hvdWxkVGhyb3dBc3luYyhzaW1wbGVUaHJvd2VyLCBFcnJvcik7CitzaG91bGRCZUFzeW5jKDUs
IHRyeUNhdGNoKTsKK3Nob3VsZEJlQXN5bmMoNiwgd2VsbEZpbmFsbHkpOworc2hvdWxkVGhyb3dB
c3luYyhmaW5hbGx5TWF5RmFpbCwgRXJyb3IpOworc2hvdWxkQmVBc3luYyg3LCBlbWJlZGRlZCk7
CitzaG91bGRCZUFzeW5jKDgsICgpID0+IGZpYig2KSk7CitzaG91bGRCZUFzeW5jKDksIGV4ZWN1
dGlvbk9yZGVyKTsKK3Nob3VsZEJlQXN5bmMoMTAsIGFzeW5jRXhwcik7CitzaG91bGRCZUFzeW5j
KDExLCBuYW1lZEFzeW5jRXhwcik7CitzaG91bGRCZUFzeW5jKDEyLCAoKSA9PiBpc09kZCgxMiku
dGhlbih2ID0+IHYgPyAib29wcyIgOiAxMikpOworc2hvdWxkQmVBc3luYygxMywgKCkgPT4gaGFy
ZGNvcmVGaWIoNykpOworc2hvdWxkQmVBc3luYygxNCwgKCkgPT4gbWlzY2VsbGFuZW91cygxLCAy
LCAzKSk7CitzaG91bGRCZUFzeW5jKDE1LCAoKSA9PiBkZWZhdWx0QXJncygpLmNhdGNoKGUgPT4g
ZSkpOworCit9KSgpOworCisvLyBtZXRob2RzLmpzCisoZnVuY3Rpb24gbW96TWV0aG9kcygpIHsK
KworY2xhc3MgWCB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSA0
MjsKKyAgICB9CisgICAgYXN5bmMgZ2V0VmFsdWUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnZh
bHVlOworICAgIH0KKyAgICBzZXRWYWx1ZSh2YWx1ZSkgeworICAgICAgICB0aGlzLnZhbHVlID0g
dmFsdWU7CisgICAgfQorICAgIGFzeW5jIGluY3JlbWVudCgpIHsKKyAgICAgICAgdmFyIHZhbHVl
ID0gYXdhaXQgdGhpcy5nZXRWYWx1ZSgpOworICAgICAgICB0aGlzLnNldFZhbHVlKHZhbHVlICsg
MSk7CisgICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7CisgICAgfQorICAgIGFzeW5jIGdl
dEJhc2VDbGFzc05hbWUoKSB7CisgICAgICAgIHJldHVybiAnWCc7CisgICAgfQorICAgIHN0YXRp
YyBhc3luYyBnZXRTdGF0aWNWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJuIDQ0OworICAgIH0KK30K
KworY2xhc3MgWSBleHRlbmRzIFggeworICAgIGFzeW5jIGdldEJhc2VDbGFzc05hbWUoKSB7Cisg
ICAgICAgIHJldHVybiBzdXBlci5nZXRCYXNlQ2xhc3NOYW1lKCk7CisgICAgfQorfQorCit2YXIg
b2JqTGl0ZXJhbCA9IHsKKyAgICBhc3luYyBnZXQoKSB7CisgICAgICAgIHJldHVybiA0NTsKKyAg
ICB9LAorICAgIHNvbWVTdHVmZjogNQorfTsKKwordmFyIHggPSBuZXcgWCgpOwordmFyIHkgPSBu
ZXcgWSgpOworCitzaG91bGRCZUFzeW5jKDQyLCAoKSA9PiB4LmdldFZhbHVlKCkpOworc2hvdWxk
QmVBc3luYyg0MywgKCkgPT4geC5pbmNyZW1lbnQoKSk7CitzaG91bGRCZUFzeW5jKDQ0LCAoKSA9
PiBYLmdldFN0YXRpY1ZhbHVlKCkpOworc2hvdWxkQmVBc3luYyg0NSwgKCkgPT4gb2JqTGl0ZXJh
bC5nZXQoKSk7CitzaG91bGRCZUFzeW5jKCdYJywgKCkgPT4geS5nZXRCYXNlQ2xhc3NOYW1lKCkp
OworCit9KSgpOworCisoZnVuY3Rpb24gbW96RnVuY3Rpb25OYW1lSW5mZXJyZW5jZSgpIHsKKwor
YXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsgfQorCit2YXIgYW5vbiA9IGFzeW5jIGZ1bmN0aW9uKCkg
eyB9CisKK3Nob3VsZEJlKCJ0ZXN0IiwgdGVzdC5uYW1lKTsKK3Nob3VsZEJlKCJhbm9uIiwgYW5v
bi5uYW1lKTsKKworfSkoKTsKKworKGZ1bmN0aW9uIG1velN5bnRheEVycm9ycygpIHsKKworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiJ3VzZSBzdHJpY3QnOyBhc3luYyBmdW5jdGlvbiBldmFsKCkg
e30iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIid1c2Ugc3RyaWN0JzsgYXN5bmMgZnVuY3Rp
b24gYXJndW1lbnRzKCkge30iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0
aW9uIGEoayA9IHN1cGVyLnByb3ApIHsgfSIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gYSgpIHsgc3VwZXIucHJvcCgpOyB9Iik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJhc3luYyBmdW5jdGlvbiBhKCkgeyBzdXBlcigpOyB9Iik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJhc3luYyBmdW5jdGlvbiBhKGsgPSBhd2FpdCAzKSB7fSIpOworCit9KSgpOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5j
LWF3YWl0LXJlc2VydmVkLXdvcmQuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1yZXNl
cnZlZC13b3JkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4ZTFkMzMyMWM3ZjgwMDg3YmVkZjBmMTU3MjFiMjk1
YjgxZWVmYjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1y
ZXNlcnZlZC13b3JkLmpzCkBAIC0wLDAgKzEsMTY2IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMg
RU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxk
IHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBhc3NlcnQoY29uZCwgbXNnID0gIiIpIHsKKyAg
ICBpZiAoIWNvbmQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpOworfQorbm9JbmxpbmUo
YXNzZXJ0KTsKKworZnVuY3Rpb24gc2hvdWxkVGhyb3dTeW50YXhFcnJvcihzdHIsIG1lc3NhZ2Up
IHsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBldmFsKHN0
cik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN5bnRheEVy
cm9yKSB7CisgICAgICAgICAgICBoYWRFcnJvciA9IHRydWU7CisgICAgICAgICAgICBpZiAodHlw
ZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgICAgIGFzc2VydChlLm1lc3Nh
Z2UgPT09IG1lc3NhZ2UsICJFeHBlY3RlZCAnIiArIG1lc3NhZ2UgKyAiJyBidXQgdGhyZXcgJyIg
KyBlLm1lc3NhZ2UgKyAiJyIpOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChoYWRFcnJv
ciwgIkRpZCBub3QgdGhyb3cgc3ludGF4IGVycm9yIik7Cit9Citub0lubGluZShzaG91bGRUaHJv
d1N5bnRheEVycm9yKTsKKwordmFyIEFzeW5jRnVuY3Rpb24gPSAoYXN5bmMgZnVuY3Rpb24oKSB7
fSkuY29uc3RydWN0b3I7CisKKy8vIEFzeW5jRnVuY3Rpb25FeHByZXNzaW9uCitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciBhd2FpdDsgfSkiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIgW2F3YWl0XSA9
IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24o
KSB7IHZhciBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIge2lzQXN5bmM6IGF3
YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVu
Y3Rpb24oKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IGF3YWl0OyB9KSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0
IFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQge2F3
YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihh
c3luYyBmdW5jdGlvbigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCB7
aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCBhd2FpdDsgfSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IFth
d2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIo
YXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IHth
d2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIo
YXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNv
bnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSki
LCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgYXN5
bmMgZnVuY3Rpb24gYXdhaXQoKSB7fSB9KSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1l
ZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiKGFzeW5jIGZ1bmN0aW9uKGF3YWl0KSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBw
YXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKFthd2FpdF0pIHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoWy4uLmF3YWl0XSkge30pIiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24gZiguLi5hd2FpdCkge30p
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24gZih7YXdh
aXR9KSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlv
biBmKHtpc0FzeW5jOiBhd2FpdH0pIHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFt
ZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworCisvLyBBc3luY0Z1bmN0aW9uRGVj
bGFyYXRpb24KK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZh
ciBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlv
biBmKCkgeyB2YXIgW2F3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIge2F3YWl0
fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlv
biBmKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9
IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBm
KCkgeyBsZXQgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQgW2F3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IFsuLi5h
d2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFz
eW5jIGZ1bmN0aW9uIGYoKSB7IGxldCB7YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQge2lzQXN5bmM6
IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
YXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNv
bnN0IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZigpIHsgY29uc3QgW2F3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3QgWy4uLmF3
YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZigpIHsgY29uc3Qge2F3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3Qge2lzQXN5
bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigp
IHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVk
ICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJhc3luYyBmdW5jdGlvbiBmKCkgeyBhc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fu
bm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoYXdhaXQpIHt9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKFthd2FpdF0p
IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKFsu
Li5hd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5j
dGlvbiBmKC4uLmF3YWl0KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZih7YXdhaXR9KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFt
ZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiYXN5bmMgZnVuY3Rpb24gZih7aXNBc3luYzogYXdhaXR9KSB7fSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworCisvLyBB
c3luY0Fycm93RnVuY3Rpb24KK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMg
KCkgPT4geyB2YXIgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IGYgPSBhc3luYyAoKSA9PiB7IHZhciBbYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIgWy4uLmF3YWl0XSA9IFtd
OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+
IHsgdmFyIHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIge2lz
QXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCBbYXdhaXRdID0gW107
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5j
ICgpID0+IHsgbGV0IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQge2F3YWl0fSA9IHt9OyB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAo
KSA9PiB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IHtpc0FzeW5jOiBh
d2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCBbYXdhaXRdID0g
W107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFz
eW5jICgpID0+IHsgY29uc3QgWy4uLmF3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IHthd2FpdH0g
PSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0g
YXN5bmMgKCkgPT4geyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3Qg
e2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJD
YW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGFzeW5j
IGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAn
YXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIGYgPSBhc3luYyAoYXdhaXQpID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFy
YW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgZiA9IGFzeW5jIChbYXdhaXRdKSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoWy4uLmF3YWl0XSkgPT4ge30iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKC4uLmF3YWl0KSA9PiB7fSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoe2F3YWl0fSkgPT4g
e30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKHtpc0Fz
eW5jOiBhd2FpdH0pID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
ZiA9IGFzeW5jIGF3YWl0ID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVy
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CisKKy8vIEFzeW5jTWV0aG9kCitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIGF3YWl0OyB9IH0iLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciBb
YXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9
IHsgYXN5bmMgZigpIHsgdmFyIFsuLi5hd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIge2F3YWl0fSA9IHt9OyB9
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7
IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsg
fSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkg
eyBsZXQgYXdhaXQ7IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBPID0geyBhc3luYyBmKCkgeyBsZXQgW2F3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IFsu
Li5hd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCB7YXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQg
e2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7
fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7
IGFzeW5jIGYoKSB7IGNvbnN0IGF3YWl0OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3QgW2F3YWl0XSA9IFtdOyB9
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5
bmMgZigpIHsgY29uc3QgWy4uLmF3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3Qge2F3YWl0fSA9
IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9
IHsgYXN5bmMgZigpIHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29u
c3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9
IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsg
YXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24g
bmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBPID0geyBhc3luYyBmKGF3YWl0KSB7fSB9ICIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoW2F3YWl0XSkge30iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKFsuLi5hd2FpdF0pIHt9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZiguLi5hd2Fp
dCkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBm
KHthd2FpdH0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsg
YXN5bmMgZih7aXNBc3luYzogYXdhaXR9KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBh
cmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworCisvLyBBc3luY0Z1bmN0aW9u
IGNvbnN0cnVjdG9yCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIg
YXdhaXQ7JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbign
dmFyIFthd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3lu
Y0Z1bmN0aW9uKCd2YXIgWy4uLmF3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciB7YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIHtpc0FzeW5jOiBhd2FpdH0g
PSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2
YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoIkFzeW5jRnVuY3Rpb24oJ2xldCBhd2FpdDsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCBbYXdhaXRdID0gW107JykiLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQgWy4u
LmF3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
QXN5bmNGdW5jdGlvbignbGV0IHthd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCB7aXNBc3luYzogYXdhaXR9ID0g
e307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0
aW9uKCdsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3QgYXdhaXQ7JykiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCBbYXdh
aXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3lu
Y0Z1bmN0aW9uKCdjb25zdCBbLi4uYXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCB7YXdhaXR9ID0ge307Jyki
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdj
b25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307
JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9u
KCdmdW5jdGlvbiBhd2FpdCgpIHt9JykiLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQg
J2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
IkFzeW5jRnVuY3Rpb24oJ2FzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30nKSIsICJDYW5ub3QgZGVj
bGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignYXdhaXQnLCAnJykiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ1thd2FpdF0nLCAnJykiLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ1suLi5hd2FpdF0n
LCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJy4u
LmF3YWl0JywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0
aW9uKCd7YXdhaXR9JywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3lu
Y0Z1bmN0aW9uKCd7aXNBc3luYzogYXdhaXR9JywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292752</attachid>
            <date>2016-10-25 08:07:03 -0700</date>
            <delta_ts>2016-10-25 08:32:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163760-20161025110317.patch</filename>
            <type>text/plain</type>
            <size>188785</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
OWEwN2Y1MTVjNGZhNjU0MGQ4YjlkYTk3MzhiZWI4YmQyOTI4OTNmLi41NjM4MTg2ZjZmODExMDU5
ZjM0ODg4ZTMzODgwYzEwYTQzNmQ5MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTcgQEAKKzIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBm
dW5jdGlvbnMgZ2VuZXJhdGUgYnl0ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3
aGljaCBpcworICAgICAgICBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb246CisgICAgICAgIAorICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5z
bGF0aW9uOgorICAgICAgICBhc3luYyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAv
LyBBZnRlciB0cmFuc2xhdGlvbjoKKyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAg
ICAgICAgIGxldCBnZW5lcmF0b3IgPSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQm9keSBvZiBhc3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgQGdlbmVyYXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5l
cmF0b3JUaGlzOiB0aGlzLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8
ZnJhbWUgc3RhdGU+LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgQXdhaXQgRXhw
cmVzc2lvbnMgYXJlIGVxdWl2YWxlbnQgdG8gbm9uLWRlbGVnYXRpbmcgWWllbGQgZXhwcmVzc2lv
bnMsIGFuZCBlbWl0IGlkZW50aWNhbCBieXRlY29kZS4KKworICAgICAgICBJbiB0aGlzIGJ1Zywg
YXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBvbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCwgYXMg
c3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGRvIG5vdCB5ZXQgd29y
ayBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5q
czogQWRkZWQuCisgICAgICAgIChhc3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19hc3luY19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3
RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZSk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6QXN5bmNG
dW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6
SlNBc3luY0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJl
bnRseSk6CisKIDIwMTYtMTAtMjEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVuYW1lIFdBU00gdG8gV2FzbQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDAxY2IyOTQ3MzdiMjQ0ZjIxZGI3YTk1Mzk3OWU0OTJiNzMwMDQyZDgu
LmFlMTE5YmFmZWQ2YjcwMDUyN2M1YTI0NTM0MmEzZDUxMWY5ZDkxZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTYzNSw2ICs2MzUsOCBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfU09VUkNFUwogICAgIHJ1bnRpbWUvQXJyYXlDb252ZW50aW9ucy5jcHAKICAgICBydW50aW1l
L0FycmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKKyAgICBydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1l
L0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9CYXNpY0Jsb2NrTG9jYXRp
b24uY3BwCiAgICAgcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9C
b29sZWFuT2JqZWN0LmNwcApAQCAtNzExLDYgKzcxMyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9T
T1VSQ0VTCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCiAgICAgcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCisgICAgcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0NKU1ZhbHVlLmNwcAogICAgIHJ1bnRp
bWUvSlNDYWxsZWUuY3BwCkBAIC0xMjk1LDYgKzEyOTgsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
QlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJh
eUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
QXJyYXlQcm90b3R5cGUuanMKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlu
cy9EYXRlUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Z1
bmN0aW9uUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA2NjMwNTM3MjAyNGUxZGQ5M2E0YWM3MmQwMjkwNmEzMjAzMDU0NjYyLi4yODU0
ZDVlNzk4NmRiMDkxYjJiOTg0Y2EwZTNmMGYyNDc5MGMyYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODksNiArODksNyBAQCBKYXZhU2NyaXB0Q29y
ZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5UHJvdG90eXBlLmpzIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Bc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9EYXRl
UHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9GdW5jdGlvblBy
b3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvR2VuZXJhdG9yUHJv
dG90eXBlLmpzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhYTA4NGU4MTFk
YTMxNGRhNmNmYjQ3MDFhMzMzOGZiMzBjMzM3MS4uMThmZTU3MTdlYjYzNzViZDRiMDhiNGIwZWE0
ZTRkNzEzMzI1YWJjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNDMsNiAr
MTI0MywxMiBAQAogCQk1M0ZBMkFFMzFDRjM4MDM5MDAyMjcxMUQgLyogTExJbnRQcm90b3R5cGVM
b2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkEyQUUyMUNGMzgwMzkwMDIyNzExRCAvKiBMTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwICovOyB9OwogCQk1
M0ZEMDREMzFEN0FCMjc3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQxMUQ3QUIx
ODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwICovOyB9OwogCQk1M0ZEMDRE
NDFEN0FCMjkxMDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0ZEMDREMjFEN0FCMTg3MDAzMjg3
RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi87IH07CisJCTVCNzBDRkRFMURCNjlFNjYw
MEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkQ4MURCNjlFNUMwMEVDMjNGOSAvKiBKU0FzeW5jRnVu
Y3Rpb24uaCAqLzsgfTsKKwkJNUI3MENGREYxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5j
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLzsgfTsKKwkJ
NUI3MENGRTAxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRBMURCNjlF
NUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi87IH07CisJCTVCNzBDRkUx
MURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRCMURCNjlFNUMwMEVD
MjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKKwkJNUI3MENGRTIxREI2
OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGREMxREI2OUU1QzAwRUMyM0Y5
IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyB9OworCQk1QjcwQ0ZFMzFEQjY5RTY2
MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAv
KiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk1RDVEOEFEMTBFMEQwRUJF
MDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVENUQ4QUQwMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJlZGl0LmR5
bGliICovOyB9OwogCQk1REJCMTUxQjEzMUQwQjMxMDA1NkFEMzYgLyogdGVzdGFwaS5qcyBpbiBD
b3B5IFN1cHBvcnQgU2NyaXB0ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0
RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0ZXN0YXBpLmpzICovOyB9OwogCQk1REJCMTUyNTEz
MUQwQkQ3MDA1NkFEMzYgLyogbWluaWRvbS5qcyBpbiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MTIxMTBEMEE0ODc4ODcwMDQ4MDI1NSAv
KiBtaW5pZG9tLmpzICovOyB9OwpAQCAtMzU0OCw2ICszNTU0LDEzIEBACiAJCTUzRkEyQUUyMUNG
MzgwMzkwMDIyNzExRCAvKiBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTExJbnRQcm90
b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTNGRDA0RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29u
dmVudGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ2Fs
bGluZ0NvbnZlbnRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0ZEMDRE
MjFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DYWxsaW5nQ29udmVudGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1
bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXN5bmNGdW5jdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIz
RjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQXN5bmNGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVCNzBDRkRBMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGREIxREI2OUU1QzAwRUMyM0Y5IC8q
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkREMURCNjlF
NUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZHlsaWIiOyBuYW1lID0gbGliZWRpdC5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmVkaXQu
ZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTVEQUZENkNCMTQ2QjY4NjMw
MEZCRUZCNCAvKiBKU0MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gSlNDLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RERERjQ0NjE0RkVFNzIyMDBCNEZCNEQgLyogTExJ
bnREZXNpcmVkT2Zmc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTElu
dERlc2lyZWRPZmZzZXRzLmg7IHBhdGggPSBMTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0
cy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNTkxNSw2ICs1OTI4
LDEwIEBACiAJCQkJRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNw
cCAqLywKIAkJCQlGNjkyQTg0RTAyNTU1OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuaCAq
LywKIAkJCQkwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggKi8sCisJ
CQkJNUI3MENGREQxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgKi8sCisJCQkJNUI3MENGREMxREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oICovLAorCQkJCTVCNzBDRkRCMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0
aW9uUHJvdG90eXBlLmNwcCAqLywKKwkJCQk1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJCTBGMzhEMkEwMUQ0NDE5NjYwMDY4MDQ5OSAv
KiBBdXhpbGlhcnlCYXJyaWVyLmggKi8sCiAJCQkJMEYzOEQyQTExRDQ0MTk2NjAwNjgwNDk5IC8q
IEF1eGlsaWFyeUJhcnJpZXJJbmxpbmVzLmggKi8sCiAJCQkJNTI2NzhGOEMxQTAzMTAwOTAwNkEz
MDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5jcHAgKi8sCkBAIC02MTAwLDYgKzYxMTcsOCBAQAog
CQkJCTBGMkI2NkJCMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlldy5oICovLAog
CQkJCTBGMkI2NkJDMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyVmlld0lubGluZXMu
aCAqLywKIAkJCQk1MzlGQjhCOTFDOTlEQTdDMDA5NDBGQTEgLyogSlNBcnJheUlubGluZXMuaCAq
LywKKwkJCQk1QjcwQ0ZEOTFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAq
LywKKwkJCQk1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8s
CiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8s
CiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAog
CQkJCTY1N0NGNDU2MTlCRjY2NjIwMDRBQ0JGMiAvKiBKU0NhbGxlZS5jcHAgKi8sCkBAIC03Mjg4
LDYgKzczMDcsNyBAQAogCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheVByb3Rv
dHlwZS5qcyAqLywKIAkJCQk3Q0Y5QkM1ODFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlDb25zdHJ1
Y3Rvci5qcyAqLywKIAkJCQk3Q0Y5QkM1OTFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5qcyAqLywKKwkJCQk1QjgyNDMwNDFEQjdBQTQ5MDBFQTYzODQgLyogQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5qcyAqLywKIAkJCQlERTI2RTkwNjFDQjVERDk2MDBEMkJFODIgLyog
QnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCAqLywKIAkJCQlERTI2RTkwMjFDQjVERDA1MDBE
MkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmggKi8sCiAJCQkJQTdEODAxQTExODgw
RDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVjdXRhYmxlcy5jcHAgKi8sCkBAIC03NzIwLDYgKzc3
NDAsNyBAQAogCQkJCURDM0QyQjBBMUQzNDMxNjIwMEJBOTE4QyAvKiBIZWFwQ2VsbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZDM0NDRkMxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NGRDE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tN
YXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZFMjFEQjY5RTY2MDBFQzIzRjkg
LyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0NG
RTE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QkYxNThEMTlCN0E1MzEwMDY5NUREMCAvKiBERkdCbG9ja1NldElubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzNDRDAwMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja1dvcmtsaXN0Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTgyODgsNiArODMwOSw3IEBACiAJCQkJN0MxODRFMUIxN0JFREJE
MzAwN0NCNjNBIC8qIEpTUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxODRFMjMxN0JF
RTI0MDAwN0NCNjNBIC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OTZCNzMxRTFCREEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNlQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZERTFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1
bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyog
SlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTFGMTdCRUUyMkUw
MDdDQjYzQSAvKiBKU1Byb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NkI3
MzFGMUJEQTA4RUYwMDMzMUI4NCAvKiBKU1Byb21pc2VQcm90b3R5cGUubHV0LmggaW4gSGVhZGVy
cyAqLywKQEAgLTg0MjgsNiArODQ1MCw3IEBACiAJCQkJQkMxOEM0M0YwRTE2RjVDRDAwQjM0NDYw
IC8qIE5vZGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUU0NUEyODE4QTFCMjU5MDAyNkQ4OEYg
LyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MTBF
MTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTVCNzBDRkUwMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MjBFMTZGNUNEMDBCMzQ0NjAgLyogTnVtYmVyQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MzBFMTZGNUNEMDBCMzQ0NjAg
LyogTnVtYmVyT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0NDBFMTZGNUNEMDBC
MzQ0NjAgLyogTnVtYmVyUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTkyOTMsNiArOTMx
Niw3IEBACiAJCQkJQTU1NzE0QkYxQ0Q4MDRBNDAwMDREMkM2IC8qIENvbnNvbGVPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGF0Y2hw
b2ludFNwZWNpYWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MjcxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzUGF0Y2hwb2ludFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCNzBDRkUz
MURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQzg1MjkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUGhhc2VTY29wZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkVDODUyQjFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1
cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM0MjJBNjIxQzE1OEU2QTAwRTJFQjk4IC8qIEIz
Q29uc3RGbG9hdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTcwNiw2ICs5NzMwLDcgQEAK
IAkJCQkwRjU1MTNBODFENUE2OENEMDBDMzJCRDggLyogRnJlZUxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkU5OUIyNEExQzI0QzNENzAwQzgyMTU5IC8qIEpJVE5lZ0dlbmVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkNDODVDNDBFRTdBODk0MDAyODg2ODIgLyogSklUUHJvcGVy
dHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENGRTExREI2OUU2NjAwRUMyM0Y5
IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdDMUU4
RTQxMTJFNzJFRjAwQTM3Rjk4IC8qIEpJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZCNDE1ODQxRDc4RkI0QzAwREY4RDA5IC8qIEFycmF5Q29udmVudGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NjZEMjgxNUE4Q0MxRTAwOEYzNjNFIC8qIEpJVFN0
dWJSb3V0aW5lLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTg4Myw2ICs5OTA4LDcgQEAKIAkJCQkx
NDhGMjFCNzEwN0VDNTQ3MDA0MkVDMkMgLyogTm9kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
REM2OUFBNjYxQ0Y3QTFGMjAwQzYyNzJGIC8qIE1hdGNoUmVzdWx0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNUI3MENGREYxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNG
dW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUg
LyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1NDZGNTIxMUEzMkIzMTMw
MDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMy
MkU1QTIxREE2NDQzOTAwNkU3NzA5IC8qIERGR0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyNDc4ODJhZmM4YjBlM2Ux
NGFjZmRjN2M3YTEwNzA0YWYzMTM0YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2Fs
aWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVu
Y3Rpb24gYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9k
ZSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisgICAgbGV0IHN0YXRlID0gZ2VuZXJhdG9yLkBnZW5l
cmF0b3JTdGF0ZTsKKyAgICBsZXQgdmFsdWUgPSBAdW5kZWZpbmVkOworCisgICAgaWYgKHN0YXRl
ID09PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQgfHwgKHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0
b3JSZXN1bWVNb2RlTm9ybWFsICYmIHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVNb2Rl
VGhyb3cpKQorICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFzeW5jIGZ1bmN0aW9uIGlsbGVnYWxs
eSByZXN1bWVkIik7CisKKyAgICB0cnkgeworICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0
YXRlID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRv
ci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRv
ciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFt
ZSk7CisgICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBAR2VuZXJhdG9y
U3RhdGVFeGVjdXRpbmcpIHsKKyAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUg
PSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CisgICAgICAgICAgICByZXR1cm4gQFByb21pc2Uu
QHJlc29sdmUodmFsdWUpOworICAgICAgICB9CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAg
ICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsK
KyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoZXJyb3IpOworICAgIH0KKworICAgIHJl
dHVybiBAUHJvbWlzZS5AcmVzb2x2ZSh2YWx1ZSkuQHRoZW4oCisgICAgICAgIGZ1bmN0aW9uKHZh
bHVlKSB7IHJldHVybiBAYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHZhbHVlLCBAR2Vu
ZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCk7IH0sCisgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IHJl
dHVybiBAYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIGVycm9yLCBAR2VuZXJhdG9yUmVz
dW1lTW9kZVRocm93KTsgfSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggNTc2ZGU0MDA2MDRkMTAxNDc1MWNjNjNiZWFjZWM3
N2E1NWZkNGZmNy4uODRhZTNiZGEyZjAwYjkwZDhmMWQyMzBmNjFiYWQwOTI4YzgxMTMxNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29u
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpA
QCAtMTA1LDYgKzEwNSw4IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZnVuY19l
eHAiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5l
cmF0b3JfZnVuYyIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfbmV3X2FzeW5jX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX25ld19hc3luY19mdW5jX2V4cCIsICJsZW5ndGgiIDogNCB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2V0X2Z1bmN0aW9uX25hbWUiLCAibGVuZ3RoIiA6IDMg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RhaWxfY2FsbCIsICJsZW5ndGgiIDogOSB9LApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCBk
OTczYmNmYjEzN2MzMmMwYzZkZWVkZjNkZTBlMWRkOTQxNjU0YzZmLi4xNjJkYjI4MmNkNTUzOTA1
MDE4NTU3MTBjMjFlYmI0MTdmYTUwNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMTY0LDYgKzE2NCw3IEBAIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJ
RCwgSW5zdHJ1Y3RpCiAgICAgY2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2Fz
ZSBvcF9uZXdfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgor
ICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3Ry
aW5nOgogICAgIGNhc2Ugb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CiAgICAgY2FzZSBv
cF9yZXNvbHZlX3Njb3BlOgpAQCAtMTk2LDYgKzE5Nyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1
Y3RpCiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAgICBjYXNlIG9wX25ld19mdW5jOgogICAgIGNh
c2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6CiAg
ICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9h
cmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKQEAgLTM4OCw2ICszOTAsOCBAQCB2
b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2Rl
SUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNh
c2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5j
X2V4cDoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5j
X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfY2FsbF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9j
YWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF90YWlsX2NhbGxfZm9yd2FyZF9hcmd1bWVudHM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGIxNTIx
MTJiM2E2YWViMGI1ODY4ZjZhYTIwOTllZWM1NTY3YjJhZjguLjFhMjk5NzUyYzJmMTNjMjRlM2Vi
OWZiMTE1NmY0ODE3NjJjODJjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCkBAIC0xNDYzLDYgKzE0NjMsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0
ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19hc3luY19mdW5jOiB7
CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGlu
dCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJuZXdfYXN5bmNfZnVuYyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCksIGYwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
bmV3X2Z1bmNfZXhwOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTQ3OSw2ICsxNDg3
LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19hc3luY19mdW5jX2V4
cCIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUo
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfc2V0X2Z1bmN0aW9uX25hbWU6IHsKICAg
ICAgICAgICAgIGludCBmdW5jUmVnID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgbmFtZVJlZyA9ICgrK2l0KS0+dS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCAyNWEzNTdiZjU2MTE2NDUw
YzFiMGUyNTVjOTc3MGEyM2FkM2UxOWVjLi5lOTE4YTkzYzI0ZTY3OGRlMTIyZDc1NTAxMTgxOTJk
YjU3N2YzMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
U3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1
c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KICAgICBTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJzZU1vZGU7IH0KLSAgICBib29sIGlz
QXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KICAg
ICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0K
ICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RXZhbENvbnRleHRUeXBlPihtX2V2YWxDb250ZXh0VHlwZSk7IH0KICAgICBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlv
bkNvbnRleHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggYmFjNDA1NDEzYTZiMmZkZDk5
NzI3MmMyOGYwYzc0YTcyMzA2YTMzOC4uNmY1NThjZjdhOTc0Yzg1MzMzYmE4NTIzMDAyMThmZTIz
MTIyZTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsgfQogICAgIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQqIHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fcGFyZW50U2NvcGVURFpWYXJpYWJsZXM7IH0KICAgICAKLSAgICBib29sIGlzQXJy
b3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KKyAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUoKSk7IH0KIAogICAg
IEpTQzo6RGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHtyZXR1
cm4gc3RhdGljX2Nhc3Q8SlNDOjpEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVyaXZlZENvbnRleHRU
eXBlKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGY3ZTEwMzE3YTIxNGM2NDgzOTBiOTRiMThi
Y2ZkNzM3M2Q1Y2UxN2YuLmQxNDk1NTE4NjM0ZjdlMWE2ODc3NTViODlhYmU3NGY2Mzc5NTgwNmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICB9CiAgICAgCiAKLSAgICBpZiAobV9jb2RlQmxv
Y2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisg
ICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShtX2NvZGVCbG9j
ay0+cGFyc2VNb2RlKCkpKQogICAgICAgICBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKG1fY29k
ZUJsb2NrLmdldCgpLCBtX2luc3RydWN0aW9ucywgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
LmdldCgpLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CiAKICAgICBtX2NvZGVC
bG9jay0+c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6bWFrZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlv
blN0cmVhbT4obV9pbnN0cnVjdGlvbnMpKTsKQEAgLTI2OCwxNSArMjY4LDE1IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rp
b25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBt
X3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29s
IG5lZWRzQXJndW1lbnRzID0gKGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVC
bG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYm
ICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJB
cnJvd0Z1bmN0aW9uKCkpKTsKIAotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlk
ZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGlu
IGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KKyAgICBpZiAoaXNHZW5lcmF0b3JP
ckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpIHsKKyAgICAgICAgLy8gR2Vu
ZXJhdG9yIGFuZCBBc3luY0Z1bmN0aW9uIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJn
dW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3Ig
ZnVuY3Rpb24gc2NvcGUuCiAgICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CiAKLSAgICAg
ICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhlIHZhciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRz
IHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4K
KyAgICAgICAgLy8gR2VuZXJhdG9yIGFuZCBBc3luY0Z1bmN0aW9uIHVzZXMgdGhlIHZhciBzY29w
ZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUg
aXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KICAgICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRo
aW5ncyA9IHRydWU7CiAgICAgfQogCi0gICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAg
ICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKHBhcnNlTW9k
ZSkgJiYgbmVlZHNBcmd1bWVudHMpIHsKICAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHBy
b3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHBy
b3ZpZGVzICJhcmd1bWVudHMiLgogICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRz
IG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0Lgog
ICAgICAgICAvLyBUbyB3b3JrYXJvdW5kIGl0LCB3ZSBldmFsdWF0ZSB0aGVzZSBhcmd1bWVudHMg
YXMgYXJndW1lbnRzIG9mIGEgd3JhcHBpbmcgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhbmQgcmVmZXJl
bmNlIGl0IGZyb20gYSBnZW5lcmF0b3IuCkBAIC0zMjAsMTMgKzMyMCwxNCBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9u
Tm9kZSwgVW5saW5rZQogCiAgICAgZW1pdEVudGVyKCk7CiAKLSAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKGlzR2VuZXJhdG9y
T3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAgICAgICBtX2dlbmVy
YXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKIAogICAgIGFsbG9jYXRlQW5kRW1pdFNj
b3BlKCk7CiAKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRl
bnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJUKHBh
cnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsKKyAgICAgICAg
QVNTRVJUKCFpc0FzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpOwogICAgICAg
ICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJs
b2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAgICAgYm9v
bCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5pZGVudCgp
LmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNTY29wZSB8
fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwpAQCAtNTA1LDcgKzUwNiw4IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBib29sIHNo
b3VsZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUgPSAhaGF2ZVBhcmFtZXRlck5hbWVkQXJndW1lbnRz
ICYmICFtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCk7CisgICAgICAgIGJvb2wgc2hvdWxk
Q3JlYXRlQXJndW1lbnNWYXJpYWJsZSA9ICFoYXZlUGFyYW1ldGVyTmFtZWRBcmd1bWVudHMKKyAg
ICAgICAgICAgICYmICFTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1
bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250
YWlucyhtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkpOwogICAgICAgICBzaG91bGRDcmVhdGVBcmd1
bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2NvcGUgPSBzaG91bGRDcmVhdGVBcmd1bWVuc1Zhcmlh
YmxlICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3Q7CiAgICAgICAgIC8vIERvIG5vdCBjcmVhdGUg
YXJndW1lbnRzIHZhcmlhYmxlIGluIGNhc2Ugb2YgQXJyb3cgZnVuY3Rpb24uIFZhbHVlIHdpbGwg
YmUgbG9hZGVkIGZyb20gcGFyZW50IHNjb3BlCiAgICAgICAgIGlmIChzaG91bGRDcmVhdGVBcmd1
bWVuc1ZhcmlhYmxlICYmICFzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVy
U2NvcGUpIHsKQEAgLTU0OSw2ICs1NTEsMjkgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJy
b3dGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9k
ZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU6IHsKKyAgICAg
ICAgQVNTRVJUKCFpc0NvbnN0cnVjdG9yKCkpOworICAgICAgICBBU1NFUlQoY29uc3RydWN0b3JL
aW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKTsKKyAgICAgICAgbV9nZW5lcmF0b3JSZWdp
c3RlciA9IGFkZFZhcigpOworCisgICAgICAgIGlmIChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VN
b2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogRW1p
dCB0b190aGlzIG9ubHkgd2hlbiBBc3luY0Z1bmN0aW9uQm9keSB1c2VzIGl0LgorICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU4NgorICAg
ICAgICAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfdG9fdGhpcyk7Cisg
ICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoa2lsbCgmbV90aGlzUmVnaXN0ZXIpKTsK
KyAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICAgICAgfQorCisgICAgICAgIGVtaXROZXdPYmplY3Qo
bV9nZW5lcmF0b3JSZWdpc3Rlcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTogewogICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFk
eSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgogICAgICAgICBlbWl0TG9hZChtX25ld1Rh
cmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKQEAgLTYwOCw3ICs2MzMsNyBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0
aW9uTm9kZSwgVW5saW5rZQogCiAgICAgLy8gV2UgbmVlZCBsb2FkIHxzdXBlcnwgJiB8dGhpc3wg
Zm9yIGFycm93IGZ1bmN0aW9uIGJlZm9yZSBpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVl
c0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrCiAgICAgLy8gaWYgd2UgaGF2ZSBkZWZhdWx0IHBh
cmFtZXRlciBleHByZXNzaW9uLiBCZWNhdXNlIHxzdXBlcnwgJiB8dGhpc3wgdmFsdWVzIGNhbiBi
ZSB1c2VkIHRoZXJlCi0gICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUg
PT0gcGFyc2VNb2RlICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAgICBpZiAoKFNvdXJj
ZVBhcnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSkgJiYg
IWlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+
dXNlc1RoaXMoKSB8fCBmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkpCiAgICAgICAg
ICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwog
CkBAIC02MjcsMTIgKzY1Miw0NiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIC8vIEFs
bCAiYWRkVmFyKCkicyBuZWVkcyB0byBoYXBwZW4gYmVmb3JlICJpbml0aWFsaXplRGVmYXVsdFBh
cmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKCkiIGlzIGNhbGxlZAogICAg
IC8vIGJlY2F1c2UgYSBmdW5jdGlvbidzIGRlZmF1bHQgcGFyYW1ldGVyIEV4cHJlc3Npb25Ob2Rl
cyB3aWxsIHVzZSB0ZW1wb3JhcnkgcmVnaXN0ZXJzLgogICAgIHB1c2hURFpWYXJpYWJsZXMoKnBh
cmVudFNjb3BlVERaVmFyaWFibGVzLCBURFpDaGVja09wdGltaXphdGlvbjo6RG9Ob3RPcHRpbWl6
ZSwgVERaUmVxdWlyZW1lbnQ6OlVuZGVyVERaKTsKKworICAgIFRyeURhdGEqIHRyeUZvcm1hbFBh
cmFtZXRlcnNEYXRhID0gbnVsbHB0cjsKKyAgICBpZiAoaXNBc3luY0Z1bmN0aW9uV3JhcHBlclBh
cnNlTW9kZShwYXJzZU1vZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAgICAgICAg
UmVmUHRyPExhYmVsPiB0cnlGb3JtYWxQYXJhbWV0ZXJzU3RhcnQgPSBlbWl0TGFiZWwobmV3TGFi
ZWwoKS5nZXQoKSk7CisgICAgICAgIHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhID0gcHVzaFRyeSh0
cnlGb3JtYWxQYXJhbWV0ZXJzU3RhcnQuZ2V0KCkpOworICAgIH0KKwogICAgIGluaXRpYWxpemVE
ZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2socGFyYW1ldGVy
cywgaXNTaW1wbGVQYXJhbWV0ZXJMaXN0LCBmdW5jdGlvbk5vZGUsIGZ1bmN0aW9uU3ltYm9sVGFi
bGUsIHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleCwgY2FwdHVyZXMsIHNob3VsZENyZWF0ZUFyZ3Vt
ZW50c1ZhcmlhYmxlSW5QYXJhbWV0ZXJTY29wZSk7Ci0gICAgCisKKyAgICBpZiAoaXNBc3luY0Z1
bmN0aW9uV3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxp
c3QpIHsKKyAgICAgICAgUmVmUHRyPExhYmVsPiBkaWROb3RUaHJvdyA9IG5ld0xhYmVsKCk7Cisg
ICAgICAgIGVtaXRKdW1wKGRpZE5vdFRocm93LmdldCgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGV4Y2VwdGlvbiA9IG5ld1RlbXBvcmFyeSgpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdGhyb3duVmFsdWUgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgUmVmUHRyPExhYmVs
PiBjYXRjaEhlcmUgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7CisgICAgICAgIHBvcFRy
eUFuZEVtaXRDYXRjaCh0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSwgZXhjZXB0aW9uLmdldCgpLCB0
aHJvd25WYWx1ZS5nZXQoKSwgY2F0Y2hIZXJlLmdldCgpLCBIYW5kbGVyVHlwZTo6Q2F0Y2gpOwor
CisgICAgICAgIC8vIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KHRocm93blZhbHVlKTsKKyAgICAg
ICAgVmFyaWFibGUgcHJvbWlzZVZhciA9IHZhcmlhYmxlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLlByb21pc2VQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZW1pdFJlc29sdmVTY29wZShuZXdUZW1wb3JhcnkoKSwgcHJvbWlzZVZh
cik7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9taXNlQ29uc3RydWN0b3IgPSBlbWl0
R2V0RnJvbVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgcHJvbWlzZVZhciwgUmVz
b2x2ZU1vZGU6OlRocm93SWZOb3RGb3VuZCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBw
cm9taXNlUmVqZWN0ID0gZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHByb21pc2VDb25zdHJ1
Y3Rvci5nZXQoKSwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVqZWN0UHJp
dmF0ZU5hbWUoKSk7CisKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKCp0aGlzLCBudWxscHRy
LCAxKTsKKworICAgICAgICBlbWl0TW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBwcm9taXNlQ29u
c3RydWN0b3IuZ2V0KCkpOworICAgICAgICBlbWl0TW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIo
MCksIHRocm93blZhbHVlLmdldCgpKTsKKworICAgICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdChm
dW5jdGlvbk5vZGUtPmZpcnN0TGluZSgpLCBmdW5jdGlvbk5vZGUtPnN0YXJ0T2Zmc2V0KCksIGZ1
bmN0aW9uTm9kZS0+bGluZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZXN1bHQgPSBlbWl0Q2FsbChuZXdUZW1wb3JhcnkoKSwgcHJvbWlzZVJlamVjdC5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCwgZGl2b3QsIGRpdm90LCBEZWJ1Z2dh
YmxlQ2FsbDo6Tm8pOworICAgICAgICBlbWl0UmV0dXJuKHJlc3VsdC5nZXQoKSk7CisKKyAgICAg
ICAgZW1pdExhYmVsKGRpZE5vdFRocm93LmdldCgpKTsKKyAgICB9CisKICAgICAvLyBJZiB3ZSBk
b24ndCBoYXZlICBkZWZhdWx0IHBhcmFtZXRlciBleHByZXNzaW9uLCB0aGVuIGxvYWRpbmcgfHRo
aXN8IGluc2lkZSBhbiBhcnJvdyBmdW5jdGlvbiBtdXN0IGJlIGRvbmUKICAgICAvLyBhZnRlciBp
bml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNr
KCkgYmVjYXVzZSB0aGF0IGZ1bmN0aW9uIHNldHMgdXAgdGhlCiAgICAgLy8gU3ltYm9sVGFibGUg
c3RhY2sgYW5kIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50
KCkgY29uc3VsdHMgdGhlIFN5bWJvbFRhYmxlIHN0YWNrCi0gICAgaWYgKFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGUgPT0gcGFyc2VNb2RlICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlz
dCkgeworICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1
bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250
YWlucyhwYXJzZU1vZGUpICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgewogICAgICAgICBpZiAo
ZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJvcGVy
dHkoKSkKICAgICAgICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVu
dmlyb25tZW50KCk7CiAgICAgCkBAIC02NDIsNyArNzAxLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2UKICAgICAKICAgICAvLyBTZXQgdXAgdGhlIGxleGljYWwgZW52aXJvbm1lbnQgc2NvcGUg
YXMgdGhlIGdlbmVyYXRvciBmcmFtZS4gV2Ugc3RvcmUgdGhlIHNhdmVkIGFuZCByZXN1bWVkIGdl
bmVyYXRvciByZWdpc3RlcnMgaW50byB0aGlzIHNjb3BlIHdpdGggdGhlIHN5bWJvbCBrZXlzLgog
ICAgIC8vIFNpbmNlIHRoZXkgYXJlIHN5bWJvbCBrZXllZCwgdGhlc2UgdmFyaWFibGVzIGNhbm5v
dCBiZSByZWFjaGVkIGZyb20gdGhlIHVzdWFsIGNvZGUuCi0gICAgaWYgKFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yQm9keU1vZGUgPT0gcGFyc2VNb2RlKSB7CisgICAgaWYgKGlzR2VuZXJhdG9y
T3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKSB7CiAgICAgICAgIEFTU0VS
VChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKICAgICAgICAgbV9nZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlLnNldCgqbV92bSwgZnVuY3Rpb25TeW1ib2xUYWJsZSk7CiAgICAgICAgIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4ID0gc3ltYm9sVGFibGVDb25zdGFudEluZGV4
OwpAQCAtMjY0NCw2ICsyNzAzLDIxIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRT
ZXR0ZXJCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHNldHRlci0+aW5kZXgoKSk7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRHZW5lcmF0b3JGaWVsZHMoUmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9u
KQoreworICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIGp1c3QgY3JlYXRlIGFuIG9iamVjdCBh
bmQgc3RvcmUgZ2VuZXJhdG9yIHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBwcm9wZXJ0aWVzIGZvciBl
YXNlLgorICAgIC8vIEJ1dCB0byBtYWtlIGl0IGVmZmljaWVudCwgd2Ugd2lsbCBpbnRyb2R1Y2Ug
SlNHZW5lcmF0b3IgY2xhc3MsIGFkZCBvcGNvZGUgbmV3X2dlbmVyYXRvciBhbmQgdXNlIGl0cyBD
KysgZmllbGRzIGluc3RlYWQgb2YgdGhlc2UgcHJpdmF0ZSBwcm9wZXJ0aWVzLgorICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKKworICAgIGVtaXRE
aXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUoKSwgbmV4dEZ1bmN0aW9uLCBQcm9wZXJ0
eU5vZGU6Oktub3duRGlyZWN0KTsKKworICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9y
UmVnaXN0ZXIsIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JUaGlzUHJp
dmF0ZU5hbWUoKSwgJm1fdGhpc1JlZ2lzdGVyLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsK
KworICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIGVtaXRMb2Fk
KG51bGxwdHIsIGpzTnVtYmVyKDApKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAg
ICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxs
cHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworfQorCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGV0ZUJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKICAgICBlbWl0
T3Bjb2RlKG9wX2RlbF9ieV9pZCk7CkBAIC0yOTg2LDYgKzMwNjAsMTEgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiBk
c3QsIEZ1bmN0aW8KICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1
bmN0aW9uTW9kZToKICAgICAgICAgb3Bjb2RlSUQgPSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlv
bk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZToKKyAgICAgICAgb3Bj
b2RlSUQgPSBvcF9uZXdfYXN5bmNfZnVuY19leHA7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMwMDQsNyArMzA4Myw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVy
SUQqIGRzdCwgRnVuY0V4CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3
QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0LCBBcnJvd0Z1bmNFeHByTm9k
ZSogZnVuYykKIHsKLSAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0g
U291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBmdW5jLT5tZXRhZGF0YSgpLT5w
YXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpOwor
ICAgIEFTU0VSVChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250YWlu
cyhmdW5jLT5tZXRhZGF0YSgpLT5wYXJzZU1vZGUoKSkpOwogICAgIGVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24oZHN0LCBmdW5jLT5tZXRhZGF0YSgpKTsKICAgICByZXR1cm4gZHN0Owog
fQpAQCAtMzAzOCw2ICszMTE3LDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGEKICAgICB1bnNp
Z25lZCBpbmRleCA9IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2wobWFrZUZ1bmN0aW9uKGZ1
bmN0aW9uKSk7CiAgICAgaWYgKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUpCiAgICAgICAgIGVtaXRPcGNvZGUob3Bf
bmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlIGlmIChmdW5jdGlvbi0+cGFyc2VNb2RlKCkg
PT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSkKKyAgICAgICAgZW1pdE9wY29k
ZShvcF9uZXdfYXN5bmNfZnVuYyk7CiAgICAgZWxzZQogICAgICAgICBlbWl0T3Bjb2RlKG9wX25l
d19mdW5jKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAppbmRleCBkNGMxYzhlOGVlYTg4YjFjMjBmNGE5NWU0NTM2OTJjY2RlNDliZmJmLi43YzAx
NzI5MTYzNTFjZmEwYzRmMzg1MzRiODZlNGNlNWVlNzFjNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01
NzYsNyArNTc2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRQdXRHZXR0
ZXJTZXR0ZXIoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIFJlZ2lzdGVySUQqIGdldHRlciwgUmVnaXN0ZXJJRCogc2V0dGVy
KTsKICAgICAgICAgdm9pZCBlbWl0UHV0R2V0dGVyQnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogcHJvcGVydHksIHVuc2lnbmVkIHByb3BlcnR5RGVzY3JpcHRvck9wdGlvbnMsIFJl
Z2lzdGVySUQqIGdldHRlcik7CiAgICAgICAgIHZvaWQgZW1pdFB1dFNldHRlckJ5VmFsKFJlZ2lz
dGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCB1bnNpZ25lZCBwcm9wZXJ0eURlc2Ny
aXB0b3JPcHRpb25zLCBSZWdpc3RlcklEKiBzZXR0ZXIpOwotICAgICAgICAKKworICAgICAgICAv
LyBJbml0aWFsaXplIG9iamVjdCB3aXRoIGdlbmVyYXRvciBmaWVsZHMgKEBnZW5lcmF0b3JUaGlz
LCBAZ2VuZXJhdG9yTmV4dCwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yRnJhbWUpCisgICAg
ICAgIHZvaWQgZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24p
OworCiAgICAgICAgIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbkZvcklkZW50aWZp
ZXIoY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q2FsbChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1
bWVudHMmLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVD
YWxsKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGxJblRhaWxQb3NpdGlvbihSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVu
dHMmLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQsIERlYnVnZ2FibGVDYWxs
KTsKQEAgLTg0Miw3ICs4NDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICAgICAgRGVyaXZlZENvbnRleHRUeXBlIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRD
b250ZXh0VHlwZTo6Tm9uZTsKIAotICAgICAgICAgICAgaWYgKG1ldGFkYXRhLT5wYXJzZU1vZGUo
KSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICBp
ZiAoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUs
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMobWV0YWRh
dGEtPnBhcnNlTW9kZSgpKSkgewogICAgICAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvcktpbmQo
KSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkV4dGVuZHMgfHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250
ZXh0KCkpCiAgICAgICAgICAgICAgICAgICAgIG5ld0Rlcml2ZWRDb250ZXh0VHlwZSA9IERlcml2
ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dDsKICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChtX2NvZGVCbG9jay0+aXNDbGFzc0NvbnRleHQoKSB8fCBpc0Rlcml2ZWRDbGFz
c0NvbnRleHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAppbmRleCBkMzg3Y2RmODE1MDM4NTQ0MWEzNGU5NjNkNmI4YTI4MGFm
MDMyNDAyLi5lZjJjNWU2MDI0ZTQxNTQ0NDE2MmJkZmQ1ZmVlZWE4NTA1ODRjZmIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CkBAIC0zNDAyLDI1ICszNDAyLDY0IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgICAgICBl
bWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIG5leHQuZ2V0KCksIGhvbWVPYmplY3QuZ2V0KCkp
OwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBjcmVh
dGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRzIHBy
b3BlcnRpZXMgZm9yIGVhc2UuCi0gICAgICAgIC8vIEJ1dCB0byBtYWtlIGl0IGVmZmljaWVudCwg
d2Ugd2lsbCBpbnRyb2R1Y2UgSlNHZW5lcmF0b3IgY2xhc3MsIGFkZCBvcGNvZGUgbmV3X2dlbmVy
YXRvciBhbmQgdXNlIGl0cyBDKysgZmllbGRzIGluc3RlYWQgb2YgdGhlc2UgcHJpdmF0ZSBwcm9w
ZXJ0aWVzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUxNTQ1CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0R2VuZXJhdG9yRmllbGRzKG5leHQu
Z2V0KCkpOwogCi0gICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZW5lcmF0b3Iu
Z2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5nZW5lcmF0b3JOZXh0UHJpdmF0ZU5hbWUoKSwgbmV4dC5nZXQoKSwgUHJvcGVydHlOb2Rl
OjpLbm93bkRpcmVjdCk7CisgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFy
dE9mZnNldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2Fs
bEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3Rlcigp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCi0gICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0
UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5
TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JUaGlzUHJpdmF0ZU5hbWUoKSwgZ2VuZXJh
dG9yLnRoaXNSZWdpc3RlcigpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNB
cnJvd0Z1bmN0aW9uTW9kZTogeworICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1l
bnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKHNpbmdsZVN0YXRl
bWVudC0+aXNFeHByU3RhdGVtZW50KCkpOworICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogZXhw
clN0YXRlbWVudCA9IHN0YXRpY19jYXN0PEV4cHJTdGF0ZW1lbnROb2RlKj4oc2luZ2xlU3RhdGVt
ZW50KTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIgPSBleHByU3RhdGVtZW50LT5leHBy
KCk7CisgICAgICAgIEFTU0VSVChleHByLT5pc0Z1bmNFeHByTm9kZSgpKTsKKyAgICAgICAgRnVu
Y0V4cHJOb2RlKiBmdW5jRXhwciA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpOwog
Ci0gICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxTdGF0ZSA9IGdlbmVyYXRvci5lbWl0TG9hZChu
dWxscHRyLCBqc051bWJlcigwKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJ
ZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMo
KS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIGluaXRpYWxTdGF0
ZSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBuZXh0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUobmV4dC5nZXQoKSwgZnVuY0V4cHIpOwogCi0gICAgICAgIGdlbmVyYXRvci5lbWl0RGly
ZWN0UHV0QnlJZChnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdl
bmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bGwoKSksIFByb3BlcnR5Tm9kZTo6S25vd25E
aXJlY3QpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLnN1cGVyQmluZGluZygpID09IFN1cGVyQmlu
ZGluZzo6TmVlZGVkIHx8IGdlbmVyYXRvci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBEb24ndCBh
bHdheXMgbG9hZCBob21lIG9iamVjdCBmb3IgYXN5bmMgYXJyb3dzCisgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gaG9tZU9iamVjdCA9IGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKGdlbmVy
YXRvcik7CisgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIG5leHQuZ2V0
KCksIGhvbWVPYmplY3QuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRHZW5lcmF0b3JGaWVsZHMobmV4dC5nZXQoKSk7CiAKICAgICAgICAgQVNTRVJUKHN0YXJ0
T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxp
bmVTdGFydE9mZnNldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9y
LmdlbmVyYXRvclJlZ2lzdGVyKCkpOworCisgICAgICAgIC8vIGxvYWQgQGFzeW5jRnVuY3Rpb25S
ZXN1bWUsIGFuZCBjYWxsLgorICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3RhcnRBc3luY0Z1
bmN0aW9uID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBhdXRvIHZhciA9IGdl
bmVyYXRvci52YXJpYWJsZShnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmFzeW5jRnVuY3Rpb25SZXN1bWVQcml2YXRlTmFtZSgpKTsKKworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVy
YXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwgdmFyKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
R2V0RnJvbVNjb3BlKHN0YXJ0QXN5bmNGdW5jdGlvbi5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwg
VGhyb3dJZk5vdEZvdW5kKTsKKworICAgICAgICAvLyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1
bWUuQGNhbGwodGhpcywgQGdlbmVyYXRvciwgQHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9k
ZTo6Tm9ybWFsTW9kZSkKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVs
bHB0ciwgMyk7CisgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnQgPSAwOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdExvYWQoYXJncy50aGlzUmVnaXN0ZXIoKSwganNVbmRlZmluZWQoKSk7Cisg
ICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRD
b3VudCsrKSwgZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCkpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGpzVW5k
ZWZpbmVkKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWQoYXJncy5hcmd1bWVudFJlZ2lz
dGVyKGFyZ3VtZW50Q291bnQrKyksIGpzTnVtYmVyKHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpKSk7CisgICAg
ICAgIC8vIEpTVGV4dFBvc2l0aW9uKGludCBfbGluZSwgaW50IF9vZmZzZXQsIGludCBfbGluZVN0
YXJ0T2Zmc2V0KQorICAgICAgICBKU1RleHRQb3NpdGlvbiBkaXZvdChmaXJzdExpbmUoKSwgc3Rh
cnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZXN1bHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0Q2FsbEluVGFpbFBvc2l0aW9uKHJlc3VsdC5nZXQoKSwgc3RhcnRBc3luY0Z1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIGRpdm90LCBkaXZvdCwgZGl2b3QsIERl
YnVnZ2FibGVDYWxsOjpObyk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHJlc3VsdC5n
ZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNGdW5jdGlvbkJvZHlNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZTogewogICAgICAgICBSZWZQdHI8TGFiZWw+IGdlbmVyYXRvckJvZHlMYWJlbCA9
IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKaW5kZXggNTQyYTQ3MTNmNTJkNWE5ZmE5YzYzZTU2ZTAxNmUyMjMwNWE4YWRmNi4uNDliMWE4
NmVkMTVhZjQxYWZhYTllN2QxM2I4OGE1YzQ0Nzc4OWJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcApAQCAtMjk5LDYgKzI5OSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jX2V4cCkKICAgICAgICAgREVGSU5F
X09QKG9wX25ld19nZW5lcmF0b3JfZnVuYykKICAgICAgICAgREVGSU5FX09QKG9wX25ld19nZW5l
cmF0b3JfZnVuY19leHApCisgICAgICAgIERFRklORV9PUChvcF9uZXdfYXN5bmNfZnVuYykKKyAg
ICAgICAgREVGSU5FX09QKG9wX25ld19hc3luY19mdW5jX2V4cCkKICAgICAgICAgREVGSU5FX09Q
KG9wX25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQogICAgICAg
ICBERUZJTkVfT1Aob3Bfbm90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMDVkZTI4Y2Ux
ZWQ2NzBiNTFmZWI4ZjUzYzM5YTRmZjU0NDkyOGU0YS4uNmQyMDI0OTM4N2IyOTFhYmViZGZhOWZi
Yjc0N2RhODI3MDVmNmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01NDQsNiArNTQ0
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZnVuY19leHAo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4
cChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2FzeW5jX2Z1bmMoSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jX2V4cChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3JlZ2V4cChJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3Bfbm90KEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAppbmRleCBiOTAxYmI0NjMxMDYwMDEyMGUxMWY4NGUxZWNhOWNiNjI2
NzQ5YjhkLi45Zjk5YWJhOWNmOTllY2QyOWEwMjlkODE0NDJiYThlMmZlZWY0MDkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTk3MSw5ICs5NzEsMTEgQEAg
dm9pZCBKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoY3VycmVudEluc3RydWN0aW9uLT51Lm9wY29kZSk7CiAgICAgaWYgKG9wY29kZUlEID09IG9w
X25ld19mdW5jKQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBk
c3QsIHJlZ1QwLCBmdW5jRXhlYyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChvcGNvZGVJ
RCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOworICAgIGVsc2UgaWYgKG9wY29kZUlEID09IG9w
X25ld19nZW5lcmF0b3JfZnVuYykKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdH
ZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOworICAgIGVsc2UgeworICAg
ICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2FzeW5jX2Z1bmMpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVj
KTsKICAgICB9CiB9CiAKQEAgLTk4Nyw2ICs5ODksMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3
X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRf
b3BfbmV3X2FzeW5jX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICBlbWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOworfQorCiB2b2lkIEpJVDo6
ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7
CiAgICAgSnVtcCBub3RVbmRlZmluZWRTY29wZTsKQEAgLTEwMDgsOSArMTAxNSwxMSBAQCB2b2lk
IEpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2Z1bmNfZXhwKQogICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwKTsKKyAgICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNf
ZXhwKQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9u
LCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChvcGNv
ZGVJRCA9PSBvcF9uZXdfYXN5bmNfZnVuY19leHApOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKICAgICB9CiAK
ICAgICBkb25lLmxpbmsodGhpcyk7CkBAIC0xMDI2LDYgKzEwMzUsMTEgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3Ry
dWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAppbmRleCA4ZjhkNGFkMzQ1M2ZkNDZiMDMwNDMyYjMxOWMwNjNiMDMyOWMzOTU0Li5lYmQ3N2Nk
MDM4NjhiZGMxZmI4YWFiYWUwZmJmOTNkMGU3NjFkYWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJK
SVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSklUVG9ERkdEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCkBAIC0xMTcwLDYgKzExNzEs
MTYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JG
dW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2MKICAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVu
Y3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgdHJ1ZSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3QXN5bmNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0Nl
bGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKK3sKKyAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rp
b25Db21tb248SlNBc3luY0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxl
LCBmYWxzZSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
QXN5bmNGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7
CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlvbj4o
ZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgdHJ1ZSk7Cit9CisKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwq
IGZ1bmNDZWxsLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkTmFtZSkKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKaW5k
ZXggYWRmZWY3OGM2ZjAwYzUwM2QwNmZiZjg2NzY1Njg3ZTdkYzE0M2MyNC4uZGI1YmE4OTY1YTdh
NTAxYmEzNTI3YWE2NTQ4ODVlNmNmM2RkOTUzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgKQEAgLTM3NSw2ICszNzUsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0Nl
bGwqKQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbldp
dGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSos
IEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4
ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNT
Y29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQoRXhlY1N0YXRlKiwgSlNTY29wZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUoRXhlY1N0YXRlKiwgSlND
ZWxsKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdSZWdleHAoRXhlY1N0
YXRlKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDg3NTgyNTFmYTRhMWQ0OWY5MTAwYmViZWMwODg2
NWJkNDEyZDdkZjUuLmY1OGY0Zjk2NmVhNzc0M2JmYzRlYzgwN2MxMWVmM2FiNGRkNDI5YmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAt
NDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMu
aCIKICNpbmNsdWRlICJKSVRXb3JrbGlzdC5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5j
bHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgpAQCAtMTE0OSw2ICsxMTUwLDE3IEBAIExMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCiAgICAgTExJTlRf
UkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlv
bkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX25ld19hc3luY19mdW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU1Njb3BlKiBz
Y29wZSA9IGV4ZWMtPnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUo
KTsKKyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2dGKCJDcmVhdGluZyBh
c3luYyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKEpTQXN5bmNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQp
LCBzY29wZSkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNf
ZXhwKQogewogICAgIExMSU5UX0JFR0lOKCk7CkBAIC0xMTcxLDYgKzExODMsMTcgQEAgTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnVuY19leHApCiAgICAgTExJ
TlRfUkVUVVJOKEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2Nv
cGUpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hc3luY19mdW5j
X2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIAorICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNo
ZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbM10udS5v
cGVyYW5kKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUo
dm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9zZXRfZnVuY3Rpb25fbmFtZSkKIHsKICAgICBMTElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAppbmRleCA5ODRlOWNjNDAzMDMy
NzlhYTcwMmRmOGZlYjc4OGMzYjhiOTYwNTBlLi5kNzYxMzhjMTI0NGZmN2FhZjQ4M2QwODAzYWQ1
YmI4MTE3ZWE3OWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuaApAQCAtMTAzLDYgKzEwMyw4IEBAIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV3X2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9uZXdfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9u
ZXdfZ2VuZXJhdG9yX2Z1bmMpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpOworTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9uZXdfYXN5bmNfZnVuY19leHApOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9zZXRfZnVuY3Rpb25fbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2NhbGwpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9jb25zdHJ1Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDU2MGRmM2VjYWI4MmRhODJiMjdmNDQzNjI0ZDBmZGU4
ZTUwMWNlOWUuLjY0NDVhNDdjZWRhOWE1Y2Y3NTlhMTZlMTcyYzNiZDg0NmFiOWRiN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KQEAgLTEzMjEsNiArMTMyMSwxMiBAQCBfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgog
ICAgIGRpc3BhdGNoKDQpCiAKIAorX2xsaW50X29wX25ld19hc3luY19mdW5jOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXN5bmNf
ZnVuYykKKyAgICBkaXNwYXRjaCg0KQorCisKIF9sbGludF9vcF9uZXdfYXJyYXk6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25l
d19hcnJheSkKQEAgLTE1OTksNiArMTYwNSwxMiBAQCBfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cDoKICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmNfZXhwKQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9uZXdfYXN5bmNf
ZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX25ld19hc3luY19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCg0KQorCisKIF9sbGlu
dF9vcF9zZXRfZnVuY3Rpb25fbmFtZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbE9w
Y29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfc2V0X2Z1bmN0aW9uX25hbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNDkwODg0MTUxMWUyZjQwMTc3M2Iy
MGZjZTY4ZjU4Mzk3NmY2ZDBhMS4uMmI1MmUzMmQ4MTMzZTY3MGZlZDI1ODcxODQ0NTc3YTAxYWU0
YzgzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjYxLDcg
KzI2MSw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVu
dGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vCiAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiA9IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJy
b3dGdW5jdGlvbkJvZHlNb2RlICYmICFtYXRjaChPUEVOQlJBQ0UpOwogICAgIGlmIChtX2xleGVy
LT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFT
VEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKLSAgICAgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNldChT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKS5jb250YWlucyhwYXJzZU1vZGUpIHx8
IGlzQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkKKyAgICAgICAgaWYgKGlz
R2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAgICAg
ICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBm
dW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBt
X3BhcmFtZXRlcnMgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUs
IGZ1bmN0aW9uSW5mbyk7CkBAIC01NjgsMTEgKzU2OCwxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3lu
Y0Z1bgogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGFzeW5jRnVuY3Rpb25Cb2R5U2Nv
cGUodGhpcywgcHVzaFNjb3BlKCkpOwogICAgICAgICBhc3luY0Z1bmN0aW9uQm9keVNjb3BlLT5z
ZXRTb3VyY2VQYXJzZU1vZGUoaW5uZXJQYXJzZU1vZGUpOwotICAgICAgICBTeW50YXhDaGVja2Vy
IGFzeW5jRnVuY3Rpb25Db250ZXh0KGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQo
KSk7Ci0gICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKLSAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291
cmNlRWxlbWVudHMoYXN5bmNGdW5jdGlvbkNvbnRleHQpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5
IG9mIGFzeW5jIGFycm93IGZ1bmN0aW9uIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZh
aWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoYXN5bmNGdW5jdGlvbkNvbnRleHQsIG1vZGUp
LCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgICAgIFN5
bnRheENoZWNrZXIgc3ludGF4Q2hlY2tlcihjb25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIu
Z2V0KCkpOworICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pIHsKKyAg
ICAgICAgICAgIGlmIChtX2RlYnVnZ2VyUGFyc2VEYXRhKQorICAgICAgICAgICAgICAgIGZhaWxJ
ZkZhbHNlKHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNlRWxlbWVu
dHMoY29udGV4dCksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgYXJyb3cgZnVuY3Rp
b24iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJz
ZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKHN5bnRheENo
ZWNrZXIpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGFzeW5jIGFycm93IGZ1bmN0aW9uIik7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dlclBhcnNlRGF0YSkK
KyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQs
IG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGFzeW5jIGZ1bmN0aW9uIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVt
ZW50cyhzeW50YXhDaGVja2VyLCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3lu
YyBmdW5jdGlvbiIpOworICAgICAgICB9CiAgICAgICAgIHBvcFNjb3BlKGFzeW5jRnVuY3Rpb25C
b2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIH0KICAg
ICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlv
biwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1v
ZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0
ZXJDb3VudCwgaW5mby5mdW5jdGlvbkxlbmd0aCwgaW5uZXJQYXJzZU1vZGUsIGlzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKTsKQEAgLTIzNDEsNyArMjM0OCw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8o
VHJlZUJ1aWxkCiAgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uQm9keShjb250ZXh0LCBzeW50
YXhDaGVja2VyLCBzdGFydExvY2F0aW9uLCBzdGFydENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIGNvbnN0cnVjdG9yS2luZCwg
ZXhwZWN0ZWRTdXBlckJpbmRpbmcsIGZ1bmN0aW9uQm9keVR5cGUsIGZ1bmN0aW9uSW5mby5wYXJh
bWV0ZXJDb3VudCwgZnVuY3Rpb25JbmZvLmZ1bmN0aW9uTGVuZ3RoLCBtb2RlKTsKICAgICB9Owog
Ci0gICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rp
b25Nb2RlIHx8IGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUobW9kZSkpIHsKKyAgICBp
ZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKG1vZGUpKSB7CiAg
ICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3Bl
KCkpOwogICAgICAgICBTb3VyY2VQYXJzZU1vZGUgaW5uZXJQYXJzZU1vZGUgPSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOwogICAgICAgICBpZiAoaXNBc3luY0Z1bmN0aW9uV3Jh
cHBlclBhcnNlTW9kZShtb2RlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
aW5kZXggOGM0NDc0YjA5OTMzNzJlNzQyNDYwMWRiOWFhMDY0NDVkZjkzN2VkOC4uODVjYjFhNDE4
MjgwMTBlZjQxM2ZlNmM3MDNlMDhhODBjOTRjN2VmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9k
ZToKLSAgICAgICAgICAgIHNldElzQXN5bmNBcnJvd0Z1bmN0aW9uQm9keSgpOworICAgICAgICAg
ICAgc2V0SXNBc3luY0Z1bmN0aW9uQm9keSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOgpAQCAtMTA5OCw3ICsx
MDk4LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBtX3Njb3BlU3Rh
Y2suc2l6ZSgpIC0gMTsKICAgICAgICAgQVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgpICYm
IG1fc2NvcGVTdGFjay5zaXplKCkpOwotICAgICAgICB3aGlsZSAoaSAmJiAoIW1fc2NvcGVTdGFj
a1tpXS5pc0Z1bmN0aW9uQm91bmRhcnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNHZW5lcmF0b3JC
b3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFja1tpXS5pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeSgpKSkK
KyAgICAgICAgd2hpbGUgKGkgJiYgKCFtX3Njb3BlU3RhY2tbaV0uaXNGdW5jdGlvbkJvdW5kYXJ5
KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlzR2VuZXJhdG9yQm91bmRhcnkoKSB8fCBtX3Njb3BlU3Rh
Y2tbaV0uaXNBc3luY0Z1bmN0aW9uQm91bmRhcnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNBcnJv
d0Z1bmN0aW9uQm91bmRhcnkoKSkpCiAgICAgICAgICAgICBpLS07CiAgICAgICAgIC8vIFdoZW4g
cmVhY2hpbmcgdGhlIHRvcCBsZXZlbCBzY29wZSAoaXQgY2FuIGJlIG5vbiBvcmRpbmFyeSBmdW5j
dGlvbiBzY29wZSksIHdlIHJldHVybiBpdC4KICAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Nj
b3BlU3RhY2ssIGkpOwpAQCAtMTIyOCw2ICsxMjI4LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBpLS07CiAgICAgICAgICAgICBBU1NFUlQoaSA8IG1fc2NvcGVTdGFjay5zaXplKCkpOwogICAg
ICAgICB9CisgICAgICAgIGlmICgobV9zY29wZVN0YWNrW2ldLmlzQXN5bmNGdW5jdGlvbkJvdW5k
YXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlzR2VuZXJhdG9yQm91bmRhcnkoKSkgJiYgaSkgewor
ICAgICAgICAgICAgaS0tOworICAgICAgICAgICAgQVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6
ZSgpKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9zY29wZVN0YWNrW2ldLmhhc0RlY2xh
cmVkUGFyYW1ldGVyKGlkZW50KTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlck1vZGVzLmgKaW5kZXggYTBkNzQwNDk0MTVlNGI4NDczNTYyZTM2ZTYyMjBk
MzBjZTUxYmE2YS4uNmRhODgzN2EzNzk0MTcyYjRjNTU2YjM3ZDIzZjk5NzZlZTZmMGIzMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMTQ4LDYgKzE0
OCwzMiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNZXRob2RQYXJzZU1vZGUoU291cmNlUGFyc2VN
b2RlIHBhcnNlTW9kZSkKICAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGUp
LmNvbnRhaW5zKHBhcnNlTW9kZSk7CiB9CiAKK0FMV0FZU19JTkxJTkUgYm9vbCBpc0dlbmVyYXRv
ck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkK
K3sKKyAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KAorICAgICAgICBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckJvZHlNb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVu
Y3Rpb25Cb2R5TW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rp
b25Cb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKK30KKworQUxXQVlTX0lOTElORSBib29s
IGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShTb3VyY2VQYXJzZU1v
ZGUgcGFyc2VNb2RlKQoreworICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCisgICAgICAg
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSwKKyAgICAgICAg
U291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VN
b2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jTWV0aG9kTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKK30KKworQUxXQVlTX0lOTElORSBi
b29sIGlzQXJyb3dGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQor
eworICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCisgICAgICAgIFNvdXJjZVBhcnNlTW9k
ZTo6QXJyb3dGdW5jdGlvbk1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJv
d0Z1bmN0aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rp
b25Cb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKK30KKworCiBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNNb2R1bGVQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkgCiB7IAogICAg
IHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTc2N2M1N2JmMmU2NWZkN2VkMGI5NTJhZDFiZDJiMzliMGRhOWFlYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0
bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUg
IkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9y
LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElD
X0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
cik7CisKK2NvbnN0IENsYXNzSW5mbyBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIkFzeW5jRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcikgfTsKKworQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24odm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9p
ZCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQXN5bmNG
dW5jdGlvblByb3RvdHlwZSogcHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtLCAiQXN5bmNGdW5jdGlvbiIpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOworCisgICAgLy8gTnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgY29u
c3RydWN0b3IKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxG
dW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5
bmMpKTsKK30KKworQ2FsbFR5cGUgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1
bmN0aW9uID0gY2FsbEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4gQ2FsbFR5
cGU6Okhvc3Q7Cit9CisKK0NvbnN0cnVjdFR5cGUgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7
CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJuIENvbnN0cnVjdFR5cGU6Okhvc3Q7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzVhMmMxZTRmOTE1
Y2FjMGI0YjE3NzNlNmQwNTg5ZTI3NDc0N2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTAsMCAr
MSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBA
aWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJu
YWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXN5bmNGdW5jdGlvblBy
b3RvdHlwZTsKKworY2xhc3MgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVy
bmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNl
OworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpCisgICAgeworICAgICAgICBBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yPih2bS5oZWFwKSkgQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRp
b24odm0sIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
eworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYsIFN0cnVj
dHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlKik7CisgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwq
LCBDb25zdHJ1Y3REYXRhJik7CisgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmIxZjBlMTA2ZWU2NzEzNmU5MjcwMWQ2OGMzOWQ5NWIyZmM0ODY1NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rp
b25Qcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIgorCisjaW5j
bHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCisj
aW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIkxleGVyLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6c19p
bmZvID0geyAiQXN5bmNGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoQXN5bmNGdW5jdGlvblByb3RvdHlwZSkgfTsKKworQXN5bmNGdW5jdGlvblBy
b3RvdHlwZTo6QXN5bmNGdW5jdGlvblByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisK
K3ZvaWQgQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygp
KSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9T
dHJpbmdUYWdTeW1ib2wsIGpzU3RyaW5nKCZ2bSwgIkFzeW5jRnVuY3Rpb24iKSwgRG9udEVudW0g
fCBSZWFkT25seSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIwMWU2YjhmZDU4
OThhMjIxZTA2MmE3OGYzZWE2MGRlYTc5YTgyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaApAQCAtMCwwICsx
LDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBp
Z2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXN5bmNGdW5jdGlvblByb3RvdHlwZSA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICB7CisgICAgICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU+KHZtLmhlYXApKSBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcAppbmRleCBkMmYzMzUyZDYwNjhiMTE5ZmUwNDkzMTBjOTM4ODY3ZjI3OThiNTEyLi41MTQ1
MmViNzU0OTFiM2RiYWJjNGYwOGQwNjM2MDZiYjIyNjMwNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMjMs
NiArMjMsNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtOTMsMTggKzk0LDMzIEBAIEpTT2JqZWN0KiBjb25z
dHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAg
IGNvbnN0IGNoYXIqIHByZWZpeCA9IG51bGxwdHI7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBudWxscHRyOworICAgIHN3aXRjaCAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKSB7CisgICAg
Y2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uOgorICAgICAgICBzdHJ1Y3R1
cmUgPSBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIHByZWZpeCA9
ICJ7ZnVuY3Rpb24gIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGU6OkdlbmVyYXRvcjoKKyAgICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5n
ZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpOworICAgICAgICBwcmVmaXggPSAie2Z1bmN0aW9u
ICoiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6
QXN5bmM6CisgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXN5bmNGdW5jdGlvblN0
cnVjdHVyZSgpOworICAgICAgICBwcmVmaXggPSAie2FzeW5jIGZ1bmN0aW9uICI7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIC8vIEhvdyB3ZSBzdHJpbmdpZnkgZnVuY3Rpb25zIGlzIHNv
bWV0aW1lcyBpbXBvcnRhbnQgZm9yIHdlYiBjb21wYXRpYmlsaXR5LgogICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNTAuCiAgICAgU3RyaW5nIHBy
b2dyYW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0
cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5n
KCksICIoKSB7XG5cbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKHByZWZpeCwg
ZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOwogICAgIGVsc2UgaWYgKGFyZ3Mu
c2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwg
ZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2Vu
ZXJhdG9yID8gIioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIsIGFyZ3Mu
YXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOworICAgICAgICBwcm9n
cmFtID0gbWFrZVN0cmluZyhwcmVmaXgsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcbiIs
IGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59fSIpOwogICAgIGVs
c2UgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgie2Z1bmN0aW9uICIpOwotICAgICAgICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yKQotICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoJyonKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQocHJlZml4KTsK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoZnVuY3Rpb25OYW1lLnN0cmluZygpKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQoJygnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJncy5hdCgwKS50
b1N0cmluZyhleGVjKS0+dmlldyhleGVjKS5nZXQoKSk7CkBAIC0xMjYsMTIgKzE0MiwyMCBAQCBK
U09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICB9
CiAKLSAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6
Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbmV3VGFyZ2V0LCBmdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyBnbG9iYWxP
YmplY3QtPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgOiBnbG9iYWxPYmplY3QtPmZ1bmN0
aW9uU3RydWN0dXJlKCkpOworICAgIFN0cnVjdHVyZSogc3ViY2xhc3NTdHJ1Y3R1cmUgPSBJbnRl
cm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBuZXdUYXJnZXQsIHN0
cnVjdHVyZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKLSAg
ICBpZiAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZTo6R2VuZXJhdG9yKQorICAgIHN3aXRjaCAoZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlKSB7Cisg
ICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uOgorICAgICAgICByZXR1
cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxT
Y29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGU6OkdlbmVyYXRvcjoKICAgICAgICAgcmV0dXJuIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NT
dHJ1Y3R1cmUpOwotICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBn
bG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAgICBjYXNl
IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmM6CisgICAgICAgIHJldHVybiBKU0FzeW5j
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUo
KSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOworICAgIH0KKworICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFU
Rk9STSgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiAvLyBFQ01BIDE1LjMuMiBUaGUgRnVu
Y3Rpb24gQ29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCAzMWMzM2Q2YWY0ZmYxMmJjMjRjMWUyYjViZjRl
NTU1OGQ3NjU2OTA2Li5kZWVlOWE1NWQ2ZjJjNjFlOWY3MTQ0ODNiMzFhYmQ1N2ZiMWNhZTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oCkBAIC01OCw2ICs1OCw3IEBAIHByaXZhdGU6CiBlbnVtIGNsYXNzIEZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZSB7CiAgICAgRnVuY3Rpb24sCiAgICAgR2VuZXJhdG9yLAorICAgIEFzeW5j
LAogfTsKIAogSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZpZXImIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGNvbnN0IFdURjo6VGV4dFBvc2l0aW9uJiwgRnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlID0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbiwg
SlNWYWx1ZSBuZXdUYXJnZXQgPSBKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCmluZGV4IDVmYzBjYTNmNDM4N2Jk
YzI3NmY4ZDg5YTQyYTYxMmRjYjQyNWMzZmIuLjFmOGRlY2ZkN2Y0OGYxNmM4ZWUxMDM1NzIxOWY0
MmQ5MDIzMjU5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJFcnJvci5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNs
dWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgpAQCAt
MTAzLDYgKzEwNCwxNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJv
dG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBjbGFzc1NvdXJjZS50b1N0cmluZ1dpdGhvdXRDb3B5
aW5nKCkpKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHMoSlNB
c3luY0Z1bmN0aW9uOjppbmZvKCkpKSB7CisgICAgICAgICAgICBTdHJpbmcgZnVuY3Rpb25IZWFk
ZXIgPSBleGVjdXRhYmxlLT5pc0Fycm93RnVuY3Rpb24oKSA/ICJhc3luYyAiIDogImFzeW5jIGZ1
bmN0aW9uICI7CisKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcgc291cmNlID0gZXhlY3V0YWJsZS0+
c291cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoCisgICAgICAgICAgICAgICAgZXhlY3V0YWJs
ZS0+cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCksCisgICAgICAgICAgICAgICAgZXhlY3V0YWJsZS0+
cGFyYW1ldGVyc1N0YXJ0T2Zmc2V0KCkgKyBleGVjdXRhYmxlLT5zb3VyY2UoKS5sZW5ndGgoKSk7
CisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJp
bmcoZXhlYywgZnVuY3Rpb25IZWFkZXIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgc291cmNlKSk7Cisg
ICAgICAgIH0KKwogICAgICAgICBTdHJpbmcgZnVuY3Rpb25IZWFkZXIgPSBleGVjdXRhYmxlLT5p
c0Fycm93RnVuY3Rpb24oKSA/ICIiIDogImZ1bmN0aW9uICI7CiAgICAgICAgIAogICAgICAgICBT
dHJpbmdWaWV3IHNvdXJjZSA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJh
bmdlKApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWJhNzQzNzIzYmRjN2ZhZWVmZjYyNTFlMmZmMmEyZGRjNjQyOGU3
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5
bmNGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKKworI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIlByb3BlcnR5U2xvdC5oIgorI2luY2x1
ZGUgIlZNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSlNBc3luY0Z1
bmN0aW9uOjpzX2luZm8gPSB7ICJBc3luY0Z1bmN0aW9uIiwgICZCYXNlOjpzX2luZm8sIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNBc3luY0Z1bmN0aW9uKSB9OworCitKU0FzeW5jRnVu
Y3Rpb246OkpTQXN5bmNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSkKK3sKK30KKworSlNBc3luY0Z1bmN0aW9u
KiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZUltcGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAg
ICBKU0FzeW5jRnVuY3Rpb24qIGFzeW5jRnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU0FzeW5jRnVuY3Rpb24+KHZtLmhlYXApKSBKU0FzeW5jRnVuY3Rpb24odm0sIGV4ZWN1
dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOworICAgIEFTU0VSVChhc3luY0Z1bmN0aW9uLT5zdHJ1
Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOworICAgIGFzeW5jRnVuY3Rpb24tPmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICByZXR1cm4gYXN5bmNGdW5jdGlvbjsKK30KKworSlNBc3luY0Z1bmN0aW9u
KiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgSlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1
bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxP
YmplY3QoKS0+YXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICBleGVjdXRhYmxlLT5zaW5n
bGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgYXN5bmNGdW5jdGlvbiwgIkFsbG9jYXRp
bmcgYW4gYXN5bmMgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gYXN5bmNGdW5jdGlvbjsKK30KKwor
SlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQoreworICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5bmNGdW5jdGlvbiA9IGNyZWF0ZUltcGwo
dm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpOworICAgIGV4ZWN1dGFibGUtPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBhc3luY0Z1bmN0aW9uLCAiQWxsb2NhdGlu
ZyBhbiBhc3luYyBmdW5jdGlvbiIpOworICAgIHJldHVybiBhc3luY0Z1bmN0aW9uOworfQorCitK
U0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRhdGVkUmVh
bGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSwgSlNTY29wZSogc2NvcGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUo
KSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXN5bmNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1
bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDdkYTg3ZGI2ZDM4NWE3OWQ1NTc2YzFiNzJhMTM0Y2EzZTIx
YmYxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXN5bmNGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEpTQXN5bmNGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBmcmllbmQgY2xh
c3MgSklUOworICAgIGZyaWVuZCBjbGFzcyBWTTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTRnVu
Y3Rpb24gQmFzZTsKKworICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAg
IHN0YXRpYyBKU0FzeW5jRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSos
IEpTU2NvcGUqKTsKKyAgICBzdGF0aWMgSlNBc3luY0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5j
dGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIEpTQXN5
bmNGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChW
TSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKworICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemUoc2l6ZV90IGlubGluZUNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgQVNT
RVJUX1VOVVNFRChpbmxpbmVDYXBhY2l0eSwgIWlubGluZUNhcGFjaXR5KTsKKyAgICAgICAgcmV0
dXJuIHNpemVvZihKU0FzeW5jRnVuY3Rpb24pOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCk7
CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKEpTRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIEpTQXN5bmNGdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsKKworICAgIHN0YXRpYyBKU0FzeW5jRnVu
Y3Rpb24qIGNyZWF0ZUltcGwoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3Ry
dWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmNDhjYmNmMDkxMzJjYWE2
N2VjNzFmNTc1MTQ5MDBjOGVjZTAyODBiLi5jNGMzY2UwYzk5ZDdhNDFjZjczN2ZkZTVkN2ZhZDVi
ZGFjNmY3MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkFycmF5SXRlcmF0b3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJBcnJh
eVByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJCb29sZWFuQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJCb29sZWFuUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQnVpbHRp
bk5hbWVzLmgiCkBAIC02Myw2ICs2NSw3IEBACiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgog
I2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0JvdW5kRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDYWxsYmFja0NvbnN0cnVjdG9yLmgiCkBAIC01ODUsNiArNTg4LDggQEAgbV8gIyMgcHJvcGVy
TmFtZSAjIyBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBpbnN0YW5jZVR5cGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGgKICAgICBtX3Rocm93VHlwZUVycm9yRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCB0
aHJvd1R5cGVFcnJvckZ1bmN0aW9uKTsKIAogICAgIEpTQ2VsbCogZnVuY3Rpb25Db25zdHJ1Y3Rv
ciA9IEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9m
dW5jdGlvblByb3RvdHlwZS5nZXQoKSk7CisgICAgbV9mdW5jdGlvbkNvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgKEZ1bmN0aW9uQ29uc3RydWN0b3IqKWZ1bmN0aW9uQ29uc3RydWN0b3IpOworCiAg
ICAgQXJyYXlDb25zdHJ1Y3RvciogYXJyYXlDb25zdHJ1Y3RvciA9IEFycmF5Q29uc3RydWN0b3I6
OmNyZWF0ZSh2bSwgdGhpcywgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9hcnJheVByb3RvdHlwZS5nZXQoKSwg
bV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsKICAgICBtX2FycmF5Q29uc3RydWN0b3Iuc2V0
KHZtLCB0aGlzLCBhcnJheUNvbnN0cnVjdG9yKTsKICAgICAKQEAgLTYzMCw3ICs2MzUsMTcgQEAg
bV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmMKIAogICAgIG1fZ2VuZXJhdG9yUHJvdG90eXBlLT5wdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Is
IG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCksIERvbnRFbnVtIHwgUmVhZE9ubHkp
OwogICAgIG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIG1fZ2VuZXJhdG9yUHJvdG90
eXBlLmdldCgpLCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICAKKworICAgIG1fYXN5bmNGdW5j
dGlvblN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdKExhenlDbGFzc1N0cnVjdHVyZTo6
SW5pdGlhbGl6ZXImIGluaXQpIHsKKyAgICAgICAgICAgIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUq
IGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUo
aW5pdC52bSwgQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwor
ICAgICAgICAgICAgaW5pdC5zZXRQcm90b3R5cGUoYXN5bmNGdW5jdGlvblByb3RvdHlwZSk7Cisg
ICAgICAgICAgICBpbml0LnNldFN0cnVjdHVyZShKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVN0cnVj
dHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5wcm90b3R5cGUpKTsKKyAgICAgICAgICAg
IGluaXQuc2V0Q29uc3RydWN0b3IoUHJvcGVydHlOYW1lKG51bGxwdHIpLCBBc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fZnVuY3Rp
b25Db25zdHJ1Y3Rvci5nZXQoKSksIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpKTsKKworICAgICAg
ICAgICAgaW5pdC5nbG9iYWwtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGluaXQudm0sIGlu
aXQudm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXN5bmNGdW5jdGlvblJlc3VtZVBy
aXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihpbml0LnZtLCBh
c3luY0Z1bmN0aW9uUHJvdG90eXBlQXN5bmNGdW5jdGlvblJlc3VtZUNvZGVHZW5lcmF0b3IoaW5p
dC52bSksIGluaXQuZ2xvYmFsKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwor
ICAgICAgICB9KTsKKwogICAgIG1fb2JqZWN0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIG9iamVjdENvbnN0cnVj
dG9yLCBEb250RW51bSk7CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBmdW5jdGlvbkNv
bnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgbV9hcnJheVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBhcnJheUNv
bnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0xMTAyLDYgKzExMTcsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlci52aXNpdCh2aXNp
dG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckFy
Z3VtZW50c0NhbGxlZUFuZENhbGxlckdldHRlclNldHRlcik7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fbW9kdWxlTG9hZGVyKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9mdW5jdGlvblByb3RvdHlwZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKQEAgLTExMTAsNiArMTEyNiw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvdHlwZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvclByb3Rv
dHlwZSk7CisgICAgdGhpc09iamVjdC0+bV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlLnZpc2l0KHZp
c2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlclBy
b3RvdHlwZSk7CiAKICAgICB0aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUudmlz
aXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAppbmRleCA0MDg0NmNlMjk3YjQ3YzI4NWVjNDA5MWNkNzM0MDI5NWMwNmRhNWYwLi4y
ZGQ0NDE2OWQxZjFjYzA4YmFjNjE3ZWI3NWIyNDBmMDM2NTYzMmM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTU2LDYgKzU2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFycmF5Q29uc3RydWN0b3I7CiBjbGFzcyBBcnJheVBy
b3RvdHlwZTsKK2NsYXNzIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBCb29sZWFuUHJv
dG90eXBlOwogY2xhc3MgQ29uc29sZUNsaWVudDsKIGNsYXNzIERlYnVnZ2VyOwpAQCAtNjMsNiAr
NjQsNyBAQCBjbGFzcyBFcnJvckNvbnN0cnVjdG9yOwogY2xhc3MgRXJyb3JQcm90b3R5cGU7CiBj
bGFzcyBFdmFsQ29kZUJsb2NrOwogY2xhc3MgRXZhbEV4ZWN1dGFibGU7CitjbGFzcyBGdW5jdGlv
bkNvbnN0cnVjdG9yOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZW5lcmF0b3JQ
cm90b3R5cGU7CiBjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKQEAgLTIzMyw2ICsy
MzUsNyBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yPiBtX3N5bnRheEVycm9yQ29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJy
aWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fdHlwZUVycm9yQ29uc3RydWN0b3I7CiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX1VS
SUVycm9yQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uQ29uc3RydWN0b3I+
IG1fZnVuY3Rpb25Db25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3RydWN0
b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5Q29uc3RydWN0
b3I+IG1fYXJyYXlDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29uc3Ry
dWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9yOwpAQCAtMzA2LDYgKzMwOSw3IEBAIHB1YmxpYzoK
ICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX2Fz
eW5jRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5l
cmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Rv
bGxhclZNU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JS
ZXN1bHRPYmplY3RTdHJ1Y3R1cmU7CkBAIC01MjcsNiArNTMxLDE5IEBAIHB1YmxpYzoKICAgICBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CiAgICAg
R2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQogCisgICAgTGF6eUNsYXNzU3RydWN0dXJlJiBs
YXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9hc3lu
Y0Z1bmN0aW9uU3RydWN0dXJlOworICAgIH0KKyAgICBjb25zdCBMYXp5Q2xhc3NTdHJ1Y3R1cmUm
IGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgfQorICAgIEFzeW5jRnVuY3Rpb25Qcm90
b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiByZWludGVycHJl
dF9jYXN0PEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqPihsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVy
ZSgpLnByb3RvdHlwZSh0aGlzKSk7IH0KKyAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxBc3luY0Z1bmN0aW9uUHJvdG90eXBlKj4obGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1
cmUoKS5wcm90b3R5cGVDb25jdXJyZW50bHkoKSk7IH0KKyAgICBTdHJ1Y3R1cmUqIGFzeW5jRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVy
ZSgpLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogYXN5bmNGdW5jdGlvblN0cnVjdHVyZUNv
bmN1cnJlbnRseSgpIGNvbnN0IHsgcmV0dXJuIGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCku
Z2V0Q29uY3VycmVudGx5KCk7IH0KKwogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQodGhpcyk7
IH0KICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
d2l0aFNjb3BlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaWN0RXZh
bEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdEV2YWxBY3RpdmF0
aW9uU3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg3ODk0NDU3NTMzZDRhZWMwYzE5MWI3ZmQxMDdhZjU1ZWI2
Y2YyZDMuLjBkMTUxZTBhNWQzYWNlYjg0NTQyODQzZDhhNGNmYjRkOWY0YmE3MmUgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIwIEBACisyMDE2LTEwLTIwICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0pTQ10gaW1wbGVtZW50IHJ1bnRpbWUgZm9yIGFzeW5jIGZ1bmN0aW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNzYwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXN5
bmMtYXdhaXQtYmFzaWMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
c2hvdWxkQmVBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRU
aHJvd0FzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93U3ludGF4RXJyb3IpOgorICAgICAgICAo
bGV0LkFzeW5jRnVuY3Rpb24uYXN5bmMpOgorICAgICAgICAoYXN5bmMuYXN5bmNGdW5jdGlvbkZv
clByb3RvKToKKyAgICAgICAgKE9iamVjdC5nZXRQcm90b3R5cGVPZi5hc3luYyk6CisgICAgICAg
IChPYmplY3QuZ2V0UHJvdG90eXBlT2YuYXN5bmMubWV0aG9kKToKKyAgICAgICAgKGFzeW5jKToK
KyAgICAgICAgKGFzeW5jLm1ldGhvZCk6CisgICAgICAgIChhc3luYy5hc3luY05vbkNvbnN0cnVj
dG9yRGVjbCk6CisgICAgICAgIChzaG91bGRUaHJvdy5uZXcuYXN5bmMpOgorICAgICAgICAoc2hv
dWxkVGhyb3cubmV3LmFzeW5jLm5vbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKGFzeW5jLmFzeW5j
RGVjbCk6CisgICAgICAgIChhc3luYy5mKToKKyAgICAgICAgKE15RXJyb3IpOgorICAgICAgICAo
YXN5bmMuYXN5bmNEZWNsVGhyb3dlcik6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jLmFzeW5j
KToKKyAgICAgICAgKHJlc29sdmVMYXRlcik6CisgICAgICAgIChyZWplY3RMYXRlcik6CisgICAg
ICAgIChhc3luYy5yZXN1bWVBZnRlck5vcm1hbCk6CisgICAgICAgIChPLmFzeW5jLnJlc3VtZUFm
dGVyTm9ybWFsKToKKyAgICAgICAgKHJlc3VtZUFmdGVyTm9ybWFsQXJyb3cuYXN5bmMpOgorICAg
ICAgICAoYXN5bmMucmVzdW1lQWZ0ZXJUaHJvdyk6CisgICAgICAgIChPLmFzeW5jLnJlc3VtZUFm
dGVyVGhyb3cpOgorICAgICAgICAocmVzdW1lQWZ0ZXJUaHJvd0Fycm93LmFzeW5jKToKKyAgICAg
ICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVk
LXdvcmQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoU3ludGF4
RXJyb3IuQ2Fuc3RyaW5nX2FwcGVhcmVkX2hlcmVhd2FpdC5jaGVja01vZHVsZVN5bnRheEVycm9y
LlN0cmluZy5yYXcuYXdhaXQpOgorICAgICAgICAoY2hlY2tNb2R1bGVTeW50YXhFcnJvci5TdHJp
bmcucmF3LmF3YWl0KToKKyAgICAgICAgKGNoZWNrTW9kdWxlU3ludGF4RXJyb3IuU3RyaW5nLnJh
dy5hc3luYy5hd2FpdCk6CisgICAgICAgIChTeW50YXhFcnJvci5DYW5ub3QuZGVjbGFyZS5uYW1l
ZCk6CisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChzaG91
bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKToKKyAgICAgICAgKGFzc2VydCk6
CisgICAgICAgIChzaG91bGRUaHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKG1velNlbWFudGlj
cy5hc3luYy5lbXB0eSk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuc2ltcGxlUmV0dXJu
KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5zaW1wbGVBd2FpdCk6CisgICAgICAgICht
b3pTZW1hbnRpY3MuYXN5bmMuc2ltcGxlQXdhaXRBc3luYyk6CisgICAgICAgIChtb3pTZW1hbnRp
Y3MuYXN5bmMucmV0dXJuT3RoZXJBc3luYyk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMu
c2ltcGxlVGhyb3dlcik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZGVsZWdhdGVkVGhy
b3dlcik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMudHJ5Q2F0Y2gpOgorICAgICAgICAo
bW96U2VtYW50aWNzLmFzeW5jLnRyeUNhdGNoVGhyb3cpOgorICAgICAgICAobW96U2VtYW50aWNz
LmFzeW5jLndlbGxGaW5hbGx5KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5maW5hbGx5
TWF5RmFpbCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZW1iZWRkZWQuYXN5bmMuaW5u
ZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmVtYmVkZGVkKToKKyAgICAgICAgKG1v
elNlbWFudGljcy5hc3luYy5maWIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmlzT2Rk
LmFzeW5jLmlzRXZlbik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuaXNPZGQpOgorICAg
ICAgICAobW96U2VtYW50aWNzLmhhcmRjb3JlRmliLmFzeW5jLmZpYjIpOgorICAgICAgICAobW96
U2VtYW50aWNzLm5hbWVkQXN5bmNFeHByLmFzeW5jLnNpbXBsZSk6CisgICAgICAgIChtb3pTZW1h
bnRpY3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIuYXN5bmMuZmlyc3QpOgorICAgICAgICAobW96U2Vt
YW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFzeW5jLnNlY29uZCk6CisgICAgICAgIChtb3pT
ZW1hbnRpY3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIuYXN5bmMudGhpcmQpOgorICAgICAgICAobW96
U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyKToKKyAgICAgICAgKG1velNlbWFudGljcy5h
c3luYy5taXNjZWxsYW5lb3VzKToKKyAgICAgICAgKG1velNlbWFudGljcy50aHJvd2VyKToKKyAg
ICAgICAgKG1velNlbWFudGljcy5hc3luYy5kZWZhdWx0QXJncyk6CisgICAgICAgIChtb3pTZW1h
bnRpY3Muc2hvdWxkVGhyb3cpOgorICAgICAgICAobW96U2VtYW50aWNzKToKKyAgICAgICAgKG1v
ek1ldGhvZHMuWCk6CisgICAgICAgIChtb3pNZXRob2RzLlgucHJvdG90eXBlLmFzeW5jLmdldFZh
bHVlKToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuc2V0VmFsdWUpOgorICAgICAg
ICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5hc3luYy5pbmNyZW1lbnQpOgorICAgICAgICAobW96
TWV0aG9kcy5YLnByb3RvdHlwZS5hc3luYy5nZXRCYXNlQ2xhc3NOYW1lKToKKyAgICAgICAgKG1v
ek1ldGhvZHMuWC5hc3luYy5nZXRTdGF0aWNWYWx1ZSk6CisgICAgICAgIChtb3pNZXRob2RzLlku
cHJvdG90eXBlLmFzeW5jLmdldEJhc2VDbGFzc05hbWUpOgorICAgICAgICAobW96TWV0aG9kcy5Z
KToKKyAgICAgICAgKG1vekZ1bmN0aW9uTmFtZUluZmVycmVuY2UuYXN5bmMudGVzdCk6CisgICAg
ICAgIChtb3pTeW50YXhFcnJvcnMpOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1hd2FpdC1yZXNl
cnZlZC13b3JkLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChzaG91bGRU
aHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKEFzeW5jRnVuY3Rpb24uYXN5bmMpOgorICAgICAg
ICAqIHN0cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9hcmd1bWVudHNfYmluZGlu
Zy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5j
KToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMpOgorICAgICAgICAobm9Bcmd1bWVudHNBcnJv
dzIuYXN5bmMpOgorICAgICAgICAqIHN0cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNh
bF9uZXcudGFyZ2V0X2JpbmRpbmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKToKKyAgICAg
ICAgKEMxKToKKyAgICAgICAgKEMyKToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMuYXN5bmMp
OgorICAgICAgICAqIHN0cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9zdXBlcl9i
aW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJl
QXN5bmMpOgorICAgICAgICAoQmFzZUNsYXNzLnByb3RvdHlwZS5iYXNlQ2xhc3NWYWx1ZSk6Cisg
ICAgICAgIChCYXNlQ2xhc3MucHJvdG90eXBlLmdldCBwcm9wZXJ0eSk6CisgICAgICAgIChCYXNl
Q2xhc3MpOgorICAgICAgICAoQ2hpbGRDbGFzcy5wcm90b3R5cGUuYXN5bmNTdXBlclByb3ApOgor
ICAgICAgICAoQ2hpbGRDbGFzcy5wcm90b3R5cGUuYXN5bmNTdXBlclByb3AyKToKKyAgICAgICAg
KENoaWxkQ2xhc3MpOgorICAgICAgICAoQ2hpbGRDbGFzczIpOgorICAgICAgICAqIHN0cmVzcy9h
c3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF90aGlzX2JpbmRpbmcuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChkLnkp
OgorCiAyMDE2LTEwLTIxICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0pTQ10gZG9uJ3QgY3Jhc2ggd2hlbiBhcmd1bWVudHMgdG8gYG5ldyBGdW5jdGlvbigp
YCBwcm9kdWNlIHVuZXhwZWN0ZWQgQVNUCmRpZmYgLS1naXQgYS9KU1Rlc3RzL2FzeW5jRnVuY3Rp
b25UZXN0cy55YW1sIGIvSlNUZXN0cy9hc3luY0Z1bmN0aW9uVGVzdHMueWFtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41ZmI3OGJlZDc0YmM0ODAyMTIzYjY2NmM3NTZiMTUyNGY4YjUyMWE2Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9hc3luY0Z1bmN0aW9uVGVzdHMueWFtbApAQCAtMCwwICsxLDM5MiBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+Lgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBQcm92aWRlZCB0byBz
aW1wbGlmeSBydW5uaW5nIGFzeW5jIGZ1bmN0aW9uIHRlc3RzLiBUbyBiZSByZW1vdmVkIG9uY2Ug
YXN5bmMKKyMgZnVuY3Rpb25zIGFyZSBubyBsb25nZXIgYmVoaW5kIGEgZmVhdHVyZSBmbGFnLgor
CistLS0KKy0gcGF0aDogc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXN1cGVy
LWJpbmRpbmcuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1hcnJv
dy1mdW5jdGlvbnMtbGV4aWNhbC1hcmd1bWVudHMtYmluZGluZy5qcworICBjbWQ6IHJ1bkRlZmF1
bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXRoaXMtYmlu
ZGluZy5qcworICBjbWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWFycm93LWZ1
bmN0aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQtYmluZGluZy5qcworICBjbWQ6IHJ1bkRlZmF1bHQK
Ky0gcGF0aDogc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzCisgIGNtZDogcnVuRGVmYXVsdAor
LSBwYXRoOiBzdHJlc3MvYXN5bmMtYXdhaXQtbW96aWxsYS5qcworICBjbWQ6IHJ1bkRlZmF1bHQK
Ky0gcGF0aDogc3RyZXNzL2FzeW5jLWF3YWl0LXN5bnRheC5qcworICBjbWQ6IHJ1bkRlZmF1bHQK
Ky0gcGF0aDogc3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzCisgIGNt
ZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2ZWQtd29yZC5q
cworICBjbWQ6IHJ1bkRlZmF1bHQKKworIyBUZXN0MjYyCistIHBhdGg6IHRlc3QyNjIvdGVzdC9i
dWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLWNvbnN0cnVjdC5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1jb25zdHJ1Y3QuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9u
LWlzLWV4dGVuc2libGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0Fz
eW5jRnVuY3Rpb24taXMtZXh0ZW5zaWJsZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
Ik5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlu
cy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24taXMtc3ViY2xhc3MuanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24taXMtc3ViY2xhc3MuanMKKyAg
Y21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLWxl
bmd0aC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8u
Li8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLWxlbmd0aC5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3By
b3BlcnR5SGVscGVyLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQt
aW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1uYW1lLmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVydHlIZWxw
ZXIuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9u
L0FzeW5jRnVuY3Rpb24tbmFtZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhj
ZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFs6c3RyaWN0
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5j
dGlvbi1wcm90b3R5cGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiLCAiLi4vLi4vLi4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbXQorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1wcm90b3R5
cGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4v
Li4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24uanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24uanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3Qy
NjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLWlz
LWV4dGVuc2libGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIs
IFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5j
RnVuY3Rpb25Qcm90b3R5cGUtaXMtZXh0ZW5zaWJsZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1
aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUtcHJvdG90eXBlLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uUHJvdG90
eXBlLXByb3RvdHlwZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0
aW9uL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUtdG8tc3RyaW5nLmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVydHlIZWxw
ZXIuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9u
L0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUtdG8tc3RyaW5nLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVydHlIZWxwZXIu
anMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5j
dGlvbi9pbnN0YW5jZS1jb25zdHJ1Y3QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJO
b0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1
bmN0aW9uL2luc3RhbmNlLWNvbnN0cnVjdC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
Ik5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlu
cy9Bc3luY0Z1bmN0aW9uL2luc3RhbmNlLWhhcy1uYW1lLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVydHlIZWxwZXIu
anMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL2lu
c3RhbmNlLWhhcy1uYW1lLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVydHlIZWxwZXIuanMiXSwgWzpzdHJpY3RdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9pbnN0YW5jZS1sZW5n
dGguanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4v
Li4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
YnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vaW5zdGFuY2UtbGVuZ3RoLmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVydHlI
ZWxwZXIuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5
bmNGdW5jdGlvbi9pbnN0YW5jZS1wcm90b3R5cGUtcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1
aWx0LWlucy9Bc3luY0Z1bmN0aW9uL2luc3RhbmNlLXByb3RvdHlwZS1wcm9wZXJ0eS5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL2lzLW5vdC1hLWdsb2JhbC5q
cworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vaXMtbm90LWEtZ2xvYmFsLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQor
CisjIEZJWE1FOiBDcmVhdGVEeW5hbWljRnVuY3Rpb24oKSBpcyBicm9rZW4gaW4gSlNDLCBuZWVk
IHRvIHBhcnNlIGZvcm1hbCBwYXJhbWV0ZXJzIGFuZCBib2R5IHNlcGFyYXRlbHkuCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3RyaW5nL0FzeW5j
RnVuY3Rpb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBbIi4u
Ly4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvRnVuY3Rpb24vcHJv
dG90eXBlL3RvU3RyaW5nL0FzeW5jRnVuY3Rpb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpmYWls
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorCisjIEZJWE1FOiBUaGVz
ZSB0ZXN0cyByZXF1aXJlIEYucC50b1N0cmluZyByZXZpc2lvbnMgKGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vRnVuY3Rpb24tcHJvdG90eXBlLXRvU3RyaW5nLXJldmlzaW9uLykKKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUvdG9TdHJpbmcvYXN5bmMtZnVu
Y3Rpb24tZGVjbGFyYXRpb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvRnVu
Y3Rpb24vcHJvdG90eXBlL3RvU3RyaW5nL2FzeW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0
cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUv
dG9TdHJpbmcvYXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIg
OmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUvdG9TdHJpbmcvYXN5bmMtZnVuY3Rpb24t
ZXhwcmVzc2lvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvRnVu
Y3Rpb24vcHJvdG90eXBlL3RvU3RyaW5nL2FzeW5jLW1ldGhvZC5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUvdG9TdHJpbmcvYXN5bmMtbWV0aG9k
LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbOnN0cmljdF0KKworLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMv
YXN5bmMtYXJyb3ctZnVuY3Rpb24vYXJyb3ctcmV0dXJucy1wcm9taXNlLmpzCisgIGNtZDogcnVu
VGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5l
c3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9hcnJvdy1yZXR1cm5zLXBy
b21pc2UuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDph
c3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFy
cm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1OU1BMLXdpdGgtVVNELmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtYXJyb3ctTlNQTC13aXRoLVVTRC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1h
cnJvdy1hcmd1bWVudHMtaW4tZm9ybWFsLXBhcmFtZXRlcnMuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3Qy
NjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1l
cnJvcnMtYXJyb3ctYXdhaXQtaW4tZm9ybWFscy1kZWZhdWx0LmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMt
YXJyb3ctYXdhaXQtaW4tZm9ybWFscy1kZWZhdWx0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3Jz
LWFycm93LWF3YWl0LWluLWZvcm1hbHMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJT
eW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4
cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1hd2FpdC1p
bi1mb3JtYWxzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBb
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lv
bnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWJvZHktY29udGFpbnMt
c3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwg
WyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5
bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWJvZHktY29udGFpbnMtc3VwZXIt
Y2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2Fz
eW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1ib2R5LWNvbnRhaW5zLXN1cGVy
LXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBb
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3lu
Yy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctYm9keS1jb250YWlucy1zdXBlci1w
cm9wZXJ0eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIu
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1kdXBsaWNhdGUtcGFyYW1l
dGVycy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2Fz
eW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1ldmFsLWluLWZvcm1hbC1wYXJh
bWV0ZXJzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMv
YXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWZvcm1hbHMtYm9keS1kdXBs
aWNhdGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFy
cm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1mb3JtYWxzLWJvZHktZHVwbGljYXRlLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3Ry
aWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJy
b3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWZvcm1hbHMtY29udGFpbnMtc3VwZXItY2Fs
bC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ct
ZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWZvcm1hbHMtY29udGFpbnMtc3VwZXItY2FsbC5q
cworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8u
Li9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0
cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFy
cm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1mb3JtYWxzLWNvbnRhaW5zLXN1cGVyLXBy
b3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1h
cnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctZm9ybWFscy1jb250YWlucy1zdXBlci1w
cm9wZXJ0eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIu
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLU5TUEwtd2l0aC1VU0QuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vh
cmx5LWVycm9ycy1leHByZXNzaW9uLU5TUEwtd2l0aC1VU0QuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3Qy
NjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMt
ZXhwcmVzc2lvbi1iaW5kaW5nLWlkZW50aWZpZXItYXJndW1lbnRzLmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJy
b3JzLWV4cHJlc3Npb24tYmluZGluZy1pZGVudGlmaWVyLWV2YWwuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJv
cnMtZXhwcmVzc2lvbi1ib2R5LWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHBy
ZXNzaW9uLWJvZHktY29udGFpbnMtc3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHBy
ZXNzaW9uLWJvZHktY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNz
aW9uLWJvZHktY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZXhw
cmVzc2lvbi1ldmFsLWluLWZvcm1hbC1wYXJhbWV0ZXJzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWV4
cHJlc3Npb24tZm9ybWFscy1ib2R5LWR1cGxpY2F0ZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFu
Z3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24t
Zm9ybWFscy1ib2R5LWR1cGxpY2F0ZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5
bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLWZv
cm1hbHMtY29udGFpbnMtc3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
IlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uv
ZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tZm9ybWFs
cy1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3lu
dGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tZm9y
bWFscy1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tZm9y
bWFscy1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNz
aW9uLW5vdC1zaW1wbGUtYXNzaWdubWVudC10YXJnZXQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJSZWZlcmVuY2VFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNz
aW9uLW5vdC1zaW1wbGUtYXNzaWdubWVudC10YXJnZXQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJSZWZlcmVuY2VFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3Qy
NjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9leHByZXNzaW9uLXJl
dHVybnMtcHJvbWlzZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMv
YXN5bmMtZnVuY3Rpb24vZXhwcmVzc2lvbi1yZXR1cm5zLXByb21pc2UuanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9zeW50YXgt
ZXhwcmVzc2lvbi1pcy1QcmltYXJ5RXhwcmVzc2lvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFu
Z3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vc3ludGF4LWV4cHJlc3Npb24taXMtUHJp
bWFyeUV4cHJlc3Npb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHBy
ZXNzaW9ucy9hd2FpdC9hd2FpdC1CaW5kaW5nSWRlbnRpZmllci1pbi1nbG9iYWwuanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDog
dGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LUJpbmRpbmdJZGVu
dGlmaWVyLWluLWdsb2JhbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0
aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4
cHJlc3Npb25zL2F3YWl0L2F3YWl0LUJpbmRpbmdJZGVudGlmaWVyLW5lc3RlZC5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtQmluZGluZ0lkZW50
aWZpZXItbmVzdGVkLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3Ii
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVz
c2lvbnMvYXdhaXQvYXdhaXQtYXdhaXRzLXRoZW5hYmxlLW5vdC1jYWxsYWJsZS5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtYXdhaXRzLXRoZW5hYmxlLW5vdC1j
YWxsYWJsZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwg
OmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQv
YXdhaXQtYXdhaXRzLXRoZW5hYmxlcy10aGF0LXRocm93LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXBy
aW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9l
eHByZXNzaW9ucy9hd2FpdC9hd2FpdC1hd2FpdHMtdGhlbmFibGVzLXRoYXQtdGhyb3cuanMKKyAg
Y21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWF3YWl0cy10
aGVuYWJsZXMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWF3
YWl0cy10aGVuYWJsZXMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpz
dHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L2F3YWl0L2F3YWl0LWluLWZ1bmN0aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
Tm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9l
eHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1mdW5jdGlvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIg
Om5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWluLWdlbmVyYXRvci5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtaW4tZ2Vu
ZXJhdG9yLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMv
YXdhaXQvYXdhaXQtaW4tZ2xvYmFsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHBy
ZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1nbG9iYWwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1uZXN0ZWQtZnVuY3Rpb24uanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWluLW5l
c3RlZC1mdW5jdGlvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL2F3YWl0L2F3YWl0LWluLW5lc3RlZC1nZW5lcmF0b3IuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWluLW5lc3RlZC1nZW5lcmF0b3Iu
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpz
dHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9h
d2FpdC10aHJvd3MtcmVqZWN0aW9ucy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhw
cmVzc2lvbnMvYXdhaXQvYXdhaXQtdGhyb3dzLXJlamVjdGlvbnMuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCisKKyNGSVhNRTog
SlNDIGFsd2F5cyB0aHJvd3MgdGhlc2UgUmVmZXJlbmNlRXJyb3JzIGF0IHJ1bnRpbWUgcmF0aGVy
IHRoYW4gYXQgcGFyc2UgdGltZS4KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL2F3YWl0L2Vhcmx5LWVycm9ycy1hd2FpdC1ub3Qtc2ltcGxlLWFzc2lnbm1lbnQtdGFy
Z2V0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIlJlZmVyZW5jZUVycm9yIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvZWFy
bHktZXJyb3JzLWF3YWl0LW5vdC1zaW1wbGUtYXNzaWdubWVudC10YXJnZXQuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpmYWlsLCAiUmVmZXJlbmNlRXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9uby1vcGVyYW5k
LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4u
Ly4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtd
CistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9uby1vcGVy
YW5kLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0s
IFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdh
aXQvc3ludGF4LWF3YWl0LWhhcy1VbmFyeUV4cHJlc3Npb24td2l0aC1NdWx0aXBsaWNhdGl2ZUV4
cHJlc3Npb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L3N5bnRheC1h
d2FpdC1oYXMtVW5hcnlFeHByZXNzaW9uLXdpdGgtTXVsdGlwbGljYXRpdmVFeHByZXNzaW9uLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9zeW50YXgtYXdh
aXQtaGFzLVVuYXJ5RXhwcmVzc2lvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5q
cyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMv
YXdhaXQvc3ludGF4LWF3YWl0LWhhcy1VbmFyeUV4cHJlc3Npb24uanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9k
b25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKworLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L21ldGhvZC1kZWZpbml0aW9uL2FzeW5j
LXN1cGVyLWNhbGwtYm9keS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0
aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRs
ZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lv
bnMvb2JqZWN0L21ldGhvZC1kZWZpbml0aW9uL2FzeW5jLXN1cGVyLWNhbGwtYm9keS5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8u
Li8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5j
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L21ldGhv
ZC1kZWZpbml0aW9uL2FzeW5jLXN1cGVyLWNhbGwtcGFyYW0uanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFy
bmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9hc3luYy1zdXBl
ci1jYWxsLXBhcmFtLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpz
Il0sIFs6c3RyaWN0LCA6YXN5bmNdCisKKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0
YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZGVjbGFyYXRpb24tcmV0dXJucy1wcm9taXNlLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2RlY2xh
cmF0aW9uLXJldHVybnMtcHJvbWlzZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLU5T
UEwtd2l0aC1VU0QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIs
IFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5
bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLU5TUEwtd2l0aC1VU0QuanMKKyAg
Y21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3Rd
CistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9u
L2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1hcmd1bWVudHMtaW4tZm9ybWFsLXBhcmFtZXRlcnMu
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpz
dHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1
bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1hd2FpdC1pbi1mb3JtYWxzLWRlZmF1bHQu
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24v
ZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWF3YWl0LWluLWZvcm1hbHMtZGVmYXVsdC5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24v
ZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWF3YWl0LWluLWZvcm1hbHMuanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRl
Y2xhcmF0aW9uLWF3YWl0LWluLWZvcm1hbHMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlv
bi1iaW5kaW5nLWlkZW50aWZpZXItYXJndW1lbnRzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFy
YXRpb24tYmluZGluZy1pZGVudGlmaWVyLWV2YWwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJh
dGlvbi1ib2R5LWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWJv
ZHktY29udGFpbnMtc3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5
bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWJv
ZHktY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWJvZHkt
Y29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJT
eW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5n
dWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1k
dXBsaWNhdGUtcGFyYW1ldGVycy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRh
eEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWV2YWwt
aW4tZm9ybWFsLXBhcmFtZXRlcnMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50
YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1mb3Jt
YWxzLWJvZHktZHVwbGljYXRlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4
RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1l
bnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1mb3JtYWxzLWJvZHkt
ZHVwbGljYXRlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBb
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50
cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tZm9ybWFscy1jb250YWlu
cy1zdXBlci1jYWxsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3Ii
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2Fz
eW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1mb3JtYWxzLWNvbnRhaW5zLXN1
cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsi
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRz
L2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1mb3JtYWxzLWNvbnRhaW5z
LXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJy
b3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5l
c3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRz
L2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1mb3JtYWxzLWNvbnRhaW5z
LXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJy
b3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5l
c3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3Rh
dGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtbm8tYXN5bmMtZ2VuZXJhdG9yLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vh
cmx5LWVycm9ycy1uby1hc3luYy1nZW5lcmF0b3IuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tYm9keS10aGF0
LXJldHVybnMtYWZ0ZXItYXdhaXQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMi
XSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5
bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1ib2R5LXRoYXQtcmV0dXJucy1hZnRlci1hd2FpdC5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8u
Li8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5jXQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFs
dWF0aW9uLWJvZHktdGhhdC1yZXR1cm5zLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
Tm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxl
LmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRz
L2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tYm9keS10aGF0LXJldHVybnMuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFy
bmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1i
b2R5LXRoYXQtdGhyb3dzLWFmdGVyLWF3YWl0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFu
ZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1l
bnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tYm9keS10aGF0LXRocm93cy1hZnRlci1hd2Fp
dC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIu
Li8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5j
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlv
bi9ldmFsdWF0aW9uLWJvZHktdGhhdC10aHJvd3MuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRI
YW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRl
bWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1ib2R5LXRoYXQtdGhyb3dzLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRp
b24tYm9keS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1m
dW5jdGlvbi9ldmFsdWF0aW9uLWJvZHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJO
b0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5n
dWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tZGVmYXVsdC10aGF0LXRo
cm93cy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFs
dWF0aW9uLWRlZmF1bHQtdGhhdC10aHJvd3MuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5k
bGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1tYXBwZWQtYXJndW1lbnRzLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24t
dGhpcy12YWx1ZS1nbG9iYWwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2Vw
dGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwg
Wzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMt
ZnVuY3Rpb24vZXZhbHVhdGlvbi10aGlzLXZhbHVlLXBhc3NlZC5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2Rv
bmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLXRoaXMtdmFsdWUtcGFzc2Vk
LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4u
Ly4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNd
CistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9u
L2V2YWx1YXRpb24tdW5tYXBwZWQtYXJndW1lbnRzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50
SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0
ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tdW5tYXBwZWQtYXJndW1lbnRzLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL3N5bnRh
eC1kZWNsYXJhdGlvbi1saW5lLXRlcm1pbmF0b3JzLWFsbG93ZWQuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vc3ludGF4LWRlY2xhcmF0aW9u
LWxpbmUtdGVybWluYXRvcnMtYWxsb3dlZC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
Ik5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xh
bmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vc3ludGF4LWRlY2xhcmF0aW9uLW5vLWxp
bmUtdGVybWluYXRvci5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9h
c3luYy1mdW5jdGlvbi9zeW50YXgtZGVjbGFyYXRpb24tbm8tbGluZS10ZXJtaW5hdG9yLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlv
bi9zeW50YXgtZGVjbGFyYXRpb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMi
XSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5
bmMtZnVuY3Rpb24vc3ludGF4LWRlY2xhcmF0aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50
SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCisKKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xh
bmd1YWdlL3N0YXRlbWVudHMvY2xhc3MvZGVmaW5pdGlvbi9tZXRob2RzLWFzeW5jLXN1cGVyLWNh
bGwtYm9keS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBb
OmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9jbGFzcy9k
ZWZpbml0aW9uL21ldGhvZHMtYXN5bmMtc3VwZXItY2FsbC1ib2R5LmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uLy4u
L2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2NsYXNzL2RlZmluaXRpb24vbWV0aG9k
cy1hc3luYy1zdXBlci1jYWxsLXBhcmFtLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
Tm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXBy
aW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9z
dGF0ZW1lbnRzL2NsYXNzL2RlZmluaXRpb24vbWV0aG9kcy1hc3luYy1zdXBlci1jYWxsLXBhcmFt
LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
IiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0
LCA6YXN5bmNdCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlv
bnMtbGV4aWNhbC1hcmd1bWVudHMtYmluZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFy
cm93LWZ1bmN0aW9ucy1sZXhpY2FsLWFyZ3VtZW50cy1iaW5kaW5nLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1
ZTAyYTM4NjlhNzFhNjI0MDNlM2Y3YTE4YzQ0MjU5ZDgwZmNmM2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1hcmd1bWVudHMt
YmluZGluZy5qcwpAQCAtMCwwICsxLDUzIEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxF
X0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUu
CisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsK
KyAgICBpZiAobXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAg
ICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVh
bCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5
bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJy
b3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZh
bHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVl
OyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAo
aGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVk
LCBhY3R1YWwsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJv
clR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZh
bHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0s
CisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVh
bCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmICghaGFkRXJy
b3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0
aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBp
ZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsg
IiwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9p
ZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1
dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKwordmFyIG5vQXJndW1lbnRz
QXJyb3cgPSBhc3luYyAoKSA9PiBhd2FpdCBbLi4uYXJndW1lbnRzXTsKK3Nob3VsZFRocm93QXN5
bmMoKCkgPT4gbm9Bcmd1bWVudHNBcnJvdygxLCAyLCAzKSwgUmVmZXJlbmNlRXJyb3IpOwordmFy
IG5vQXJndW1lbnRzQXJyb3cyID0gYXN5bmMgKCkgPT4geyByZXR1cm4gYXdhaXQgWy4uLmFyZ3Vt
ZW50c107IH0KK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gbm9Bcmd1bWVudHNBcnJvdzIoMSwgMiwg
MyksIFJlZmVyZW5jZUVycm9yKTsKKworc2hvdWxkQmVBc3luYygiWzEsMiwzXSIsICgpID0+IChm
dW5jdGlvbigpIHsgcmV0dXJuIChhc3luYyAoKSA9PiBKU09OLnN0cmluZ2lmeShbLi4uYXJndW1l
bnRzXSkpKCk7IH0pKDEsIDIsIDMpKTsKK3Nob3VsZEJlQXN5bmMoIls0LDUsNl0iLCAoKSA9PiAo
ZnVuY3Rpb24oKSB7IHJldHVybiAoYXN5bmMgKCkgPT4geyByZXR1cm4gSlNPTi5zdHJpbmdpZnko
Wy4uLmF3YWl0IGFyZ3VtZW50c10pIH0pKCk7IH0pKDQsIDUsIDYpKTsKKworKGZ1bmN0aW9uIHRl
c3RBcmd1bWVudHNCaW5kaW5nKCkgeworICAgIHZhciBhcmdzQmluZGluZzsKKyAgICB2YXIgcHJv
bWlzZSA9IChmdW5jdGlvbigpIHsgYXJnc0JpbmRpbmcgPSBhcmd1bWVudHM7IHJldHVybiAoYXN5
bmMoKSA9PiBhcmd1bWVudHMpKCkgfSkoMSwgMiwgMyk7CisgICAgc2hvdWxkQmVBc3luYyhhcmdz
QmluZGluZywgKCkgPT4gcHJvbWlzZSk7Cit9KSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtbmV3LnRhcmdldC1iaW5kaW5nLmpzIGIv
SlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtbmV3LnRhcmdldC1i
aW5kaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNmEzOTgzZjdhOTI3NDBlZTQ3OGMzZmY3YmI4MzBjNzg1
YWU0MDkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5j
dGlvbnMtbGV4aWNhbC1uZXcudGFyZ2V0LWJpbmRpbmcuanMKQEAgLTAsMCArMSw1NSBAQAorLy8g
VGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8g
YmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUo
ZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQorICAgICAg
ICBtc2cgPSAiIjsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZh
bHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOwor
fQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxl
dCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5j
dGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9u
KGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWlu
TWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7
CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5jdGlvbiBz
aG91bGRUaHJvd0FzeW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVh
bDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZh
bHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3Ip
IHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rh
c2tzKCk7CisKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0
IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBl
KSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRo
cm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7
CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2Fn
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRo
cm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICIn
Iik7Cit9CisKK2Z1bmN0aW9uIEMxKCkgeworICAgIHJldHVybiBhc3luYyAoKSA9PiBhd2FpdCBu
ZXcudGFyZ2V0OworfQorCitmdW5jdGlvbiBDMigpIHsKKyAgICByZXR1cm4gYXN5bmMgKCkgPT4g
eyByZXR1cm4gYXdhaXQgbmV3LnRhcmdldCB9OworfQorCitzaG91bGRCZUFzeW5jKEMxLCBuZXcg
QzEoKSk7CitzaG91bGRCZUFzeW5jKHVuZGVmaW5lZCwgQzEoKSk7CitzaG91bGRCZUFzeW5jKEMy
LCBuZXcgQzIoKSk7CitzaG91bGRCZUFzeW5jKHVuZGVmaW5lZCwgQzIoKSk7CisKK3Nob3VsZFRo
cm93QXN5bmMoYXN5bmMgKCkgPT4gYXdhaXQgbmV3LnRhcmdldCwgUmVmZXJlbmNlRXJyb3IpOwor
c2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiB7IHJldHVybiBhd2FpdCBuZXcudGFyZ2V0OyB9
LCBSZWZlcmVuY2VFcnJvcik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJv
dy1mdW5jdGlvbnMtbGV4aWNhbC1zdXBlci1iaW5kaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5
bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtc3VwZXItYmluZGluZy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
OGJmMGY5YWNlM2M3NWY3ZDhmN2ViY2IyMDNmNzM4ZGIzOWM5ZmRiCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtc3VwZXItYmlu
ZGluZy5qcwpAQCAtMCwwICsxLDU1IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VT
MjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisv
L0Agc2tpcAorCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZykgewor
ICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNnID0gIiI7CisgICAgZWxzZQorICAg
ICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFs
ICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBc3lu
YyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJv
ciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFs
dWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7
IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmICho
YWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhwZWN0ZWQs
IGFjdHVhbCwgbXNnKTsKK30KKworY2xhc3MgQmFzZUNsYXNzIHsKKyAgICBiYXNlQ2xhc3NWYWx1
ZSgpIHsKKyAgICAgICAgcmV0dXJuICJCYXNlQ2xhc3NWYWx1ZSI7CisgICAgfQorICAgIGdldCBw
cm9wZXJ0eSgpIHsKKyAgICAgICAgcmV0dXJuICJ0ZXN0ISI7CisgICAgfQorfQorCitjbGFzcyBD
aGlsZENsYXNzIGV4dGVuZHMgQmFzZUNsYXNzIHsKKyAgICBhc3luY1N1cGVyUHJvcCgpIHsKKyAg
ICAgICAgcmV0dXJuIGFzeW5jIHggPT4gc3VwZXIuYmFzZUNsYXNzVmFsdWUoKTsKKyAgICB9Cisg
ICAgYXN5bmNTdXBlclByb3AyKCkgeworICAgICAgICByZXR1cm4gYXN5bmMgeCA9PiB7IHJldHVy
biBzdXBlci5iYXNlQ2xhc3NWYWx1ZSgpOyB9CisgICAgfQorfQorCisvLyBGSVhNRTogc3VwZXIg
YmluZGluZ3MgaW4gYXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBicm9rZW4KK3Nob3VsZEJlQXN5
bmMoIkJhc2VDbGFzc1ZhbHVlIiwgbmV3IENoaWxkQ2xhc3MoKS5hc3luY1N1cGVyUHJvcCgpKTsK
K3Nob3VsZEJlQXN5bmMoIkJhc2VDbGFzc1ZhbHVlIiwgbmV3IENoaWxkQ2xhc3MoKS5hc3luY1N1
cGVyUHJvcDIoKSk7CisKK2NsYXNzIENoaWxkQ2xhc3MyIGV4dGVuZHMgQmFzZUNsYXNzIHsKKyAg
ICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jIChzZWxmID0gc3VwZXIoKSkg
PT4gc2VsZi5iYXNlQ2xhc3NWYWx1ZSgpICsgJyAnICsgc3VwZXIucHJvcGVydHk7CisgICAgfQor
fQorCitzaG91bGRCZUFzeW5jKCJCYXNlQ2xhc3NWYWx1ZSB0ZXN0ISIsIG5ldyBDaGlsZENsYXNz
MigpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1s
ZXhpY2FsLXRoaXMtYmluZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0
aW9ucy1sZXhpY2FsLXRoaXMtYmluZGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MmFmYTExM2ZhOTEyNmMz
ZTE2N2ZhZTQxMWMzYTA0ZTg3YTExYjVhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtdGhpcy1iaW5kaW5nLmpzCkBAIC0wLDAg
KzEsMzAgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJ
T05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0
aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZykgeworICAgIGlmIChtc2cgPT09IHZv
aWQgMCkKKyAgICAgICAgbXNnID0gIiI7CisgICAgZWxzZQorICAgICAgICBtc2cgPSAiIGZvciAi
ICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBt
c2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1
bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAg
ICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9
KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAg
dGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30K
KwordmFyIGQgPSAoeyB4IDogImJhciIsIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuIGFzeW5jIHog
PT4gdGhpcy54ICsgejsgfX0pLnkoKTsKK3ZhciBlID0geyB4IDogImJheiIsIHkgOiBkIH07CisK
K3Nob3VsZEJlQXN5bmMoImJhcmxleSIsICgpID0+IGQoImxleSIpKTsKK3Nob3VsZEJlQXN5bmMo
ImJhcmxleSIsICgpID0+IGUueSgibGV5IikpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
YXN5bmMtYXdhaXQtYmFzaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1iYXNpYy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lOGYyMDY1MzY1M2VjYWNkN2YzZWRiNjNiYjMyZDExYjc0YTkyZDNmCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMuanMKQEAg
LTAsMCArMSwyOTkgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5D
RlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisK
K2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9ICIiKSB7CisgICAgaWYg
KG1zZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjog
IiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2
YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFj
dHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJy
b3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisK
KyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJl
KGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KHJ1biwg
ZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3Ig
PSBmYWxzZTsKKworICAgIHRyeSB7CisgICAgICAgIGFjdHVhbCA9IHJ1bigpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICBhY3R1YWwgPSBlOwor
ICAgIH0KKworICAgIGlmICghaGFkRXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQg
ZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUp
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjZWQgIiArIHJ1biArICIoKSB0byB0aHJv
dyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiICwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsK
KyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhy
b3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIici
KTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3luYyhydW4sIGVycm9yVHlwZSwgbWVzc2Fn
ZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVu
KCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0p
OworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKCFoYWRFcnJvcikKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJv
clR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOworICAgIGlmICghKGFjdHVhbCBp
bnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQg
IiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgdGhyZXcg
JyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFs
Lm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQg
IiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsg
YWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd1N5bnRheEVy
cm9yKHN0ciwgbWVzc2FnZSkgeworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc3RyKTsKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBgIiArIHN0ciArICJgIHRvIHRocm93IGEgU3lu
dGF4RXJyb3IsIGJ1dCBkaWQgbm90IHRocm93LiIpCisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBpZiAoZS5jb25zdHJ1Y3RvciAhPT0gU3ludGF4RXJyb3IpCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkV4cGVjdGVkIGAiICsgc3RyICsgImAgdG8gdGhyb3cgYSBTeW50YXhFcnJvciwg
YnV0IHRocmV3ICciICsgZSArICInIik7CisgICAgICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAg
JiYgZS5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCBgIiArIHN0ciArICJgIHRvIHRocm93IFN5bnRheEVycm9yOiAnIiArIG1lc3NhZ2Ug
KyAiJywgYnV0IHRocmV3ICciICsgZSArICInIik7CisgICAgfQorfQorCisvLyBEbyBub3QgaW5z
dGFsbCBgQXN5bmNGdW5jdGlvbmAgY29uc3RydWN0b3Igb24gZ2xvYmFsIG9iamVjdAorc2hvdWxk
QmUodW5kZWZpbmVkLCB0aGlzLkFzeW5jRnVuY3Rpb24pOworbGV0IEFzeW5jRnVuY3Rpb24gPSAo
YXN5bmMgZnVuY3Rpb24oKSB7fSkuY29uc3RydWN0b3I7CisKKy8vIExldCBmdW5jdGlvblByb3Rv
dHlwZSBiZSB0aGUgaW50cmluc2ljIG9iamVjdCAlQXN5bmNGdW5jdGlvblByb3RvdHlwZSUuCith
c3luYyBmdW5jdGlvbiBhc3luY0Z1bmN0aW9uRm9yUHJvdG8oKSB7fQorc2hvdWxkQmUoQXN5bmNG
dW5jdGlvbi5wcm90b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZihhc3luY0Z1bmN0aW9uRm9y
UHJvdG8pKTsKK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3QuZ2V0UHJv
dG90eXBlT2YoYXN5bmMgZnVuY3Rpb24oKSB7fSkpOworc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5w
cm90b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZihhc3luYyAoKSA9PiB7fSkpOworc2hvdWxk
QmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZih7IGFzeW5j
IG1ldGhvZCgpIHt9IH0ubWV0aG9kKSk7CisKKy8vIEZJWE1FOiBBc3luY0Z1bmN0aW9uIGNvbnN0
cnVjdG9yIHNob3VsZCBidWlsZCBmdW5jdGlvbnMgd2l0aCBjb3JyZWN0IHByb3RvdHlwZS4KKy8v
IHNob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
QXN5bmNGdW5jdGlvbigpKSk7CisKKy8vIEFzeW5jRnVuY3Rpb25DcmVhdGUgZG9lcyBub3QgcHJv
ZHVjZSBhbiBvYmplY3Qgd2l0aCBhIFByb3RvdHlwZQorc2hvdWxkQmUodW5kZWZpbmVkLCBhc3lu
Y0Z1bmN0aW9uRm9yUHJvdG8ucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCBhc3luY0Z1bmN0
aW9uRm9yUHJvdG8uaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKK3Nob3VsZEJlKHVuZGVm
aW5lZCwgKGFzeW5jIGZ1bmN0aW9uKCkge30pLnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwg
KGFzeW5jIGZ1bmN0aW9uKCkge30pLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKSk7CitzaG91
bGRCZSh1bmRlZmluZWQsIChhc3luYygpID0+IHt9KS5wcm90b3R5cGUpOworc2hvdWxkQmUoZmFs
c2UsIChhc3luYygpID0+IHt9KS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOworc2hvdWxk
QmUodW5kZWZpbmVkLCAoeyBhc3luYyBtZXRob2QoKSB7fSB9KS5tZXRob2QucHJvdG90eXBlKTsK
K3Nob3VsZEJlKGZhbHNlLCAoeyBhc3luYyBtZXRob2QoKSB7fSB9KS5tZXRob2QuaGFzT3duUHJv
cGVydHkoInByb3RvdHlwZSIpKTsKK3Nob3VsZEJlKHVuZGVmaW5lZCwgQXN5bmNGdW5jdGlvbigp
LnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgQXN5bmNGdW5jdGlvbigpLmhhc093blByb3Bl
cnR5KCJwcm90b3R5cGUiKSk7CisKKy8vIEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlWyBAQHRvU3Ry
aW5nVGFnIF0KK3ZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5nVGFnKTsKK3Nob3VsZEJl
KCJBc3luY0Z1bmN0aW9uIiwgZGVzY3JpcHRvci52YWx1ZSk7CitzaG91bGRCZShmYWxzZSwgZGVz
Y3JpcHRvci5lbnVtZXJhYmxlKTsKK3Nob3VsZEJlKGZhbHNlLCBkZXNjcmlwdG9yLndyaXRhYmxl
KTsKK3Nob3VsZEJlKHRydWUsIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKTsKKworc2hvdWxkQmUo
MSwgQXN5bmNGdW5jdGlvbi5sZW5ndGgpOworCisvLyBMZXQgRiBiZSAhIEZ1bmN0aW9uQWxsb2Nh
dGUoZnVuY3Rpb25Qcm90b3R5cGUsIFN0cmljdCwgIm5vbi1jb25zdHJ1Y3RvciIpCithc3luYyBm
dW5jdGlvbiBhc3luY05vbkNvbnN0cnVjdG9yRGVjbCgpIHt9CitzaG91bGRUaHJvdygoKSA9PiBu
ZXcgYXN5bmNOb25Db25zdHJ1Y3RvckRlY2woKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgp
ID0+IG5ldyAoYXN5bmMgZnVuY3Rpb24oKSB7fSksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygo
KSA9PiBuZXcgKHsgYXN5bmMgbm9uQ29uc3RydWN0b3IoKSB7fSB9KS5ub25Db25zdHJ1Y3Rvcigp
LCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3ICgoKSA9PiAibm90IGEgY29uc3Ry
dWN0b3IhIiksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgKEFzeW5jRnVuY3Rp
b24oKSksIFR5cGVFcnJvcik7CisKKy8vIE5vcm1hbCBjb21wbGV0aW9uCithc3luYyBmdW5jdGlv
biBhc3luY0RlY2woKSB7IHJldHVybiAidGVzdCI7IH0KK3Nob3VsZEJlQXN5bmMoInRlc3QiLCBh
c3luY0RlY2wpOworc2hvdWxkQmVBc3luYygidGVzdDIiLCBhc3luYyBmdW5jdGlvbigpIHsgcmV0
dXJuICJ0ZXN0MiI7IH0pOworc2hvdWxkQmVBc3luYygidGVzdDMiLCBhc3luYyAoKSA9PiAidGVz
dDMiKTsKK3Nob3VsZEJlQXN5bmMoInRlc3Q0IiwgKCkgPT4gKHsgYXN5bmMgZigpIHsgcmV0dXJu
ICJ0ZXN0NCI7IH0gfSkuZigpKTsKKworY2xhc3MgTXlFcnJvciBleHRlbmRzIEVycm9yIHt9Owor
CisvLyBUaHJvdyBjb21wbGV0aW9uCithc3luYyBmdW5jdGlvbiBhc3luY0RlY2xUaHJvd2VyKGUp
IHsgdGhyb3cgbmV3IE15RXJyb3IoZSk7IH0KK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gYXN5bmNE
ZWNsVGhyb3dlcigiYm9vbSEiKSwgTXlFcnJvciwgImJvb20hIik7CitzaG91bGRUaHJvd0FzeW5j
KCgpID0+IChhc3luYyBmdW5jdGlvbihlKSB7IHRocm93IG5ldyBNeUVycm9yKGUpOyB9KSgiYm9v
bSEhISIpLCBNeUVycm9yLCAiYm9vbSEhISIpOworc2hvdWxkVGhyb3dBc3luYygoKSA9PiAoYXN5
bmMgZSA9PiB7IHRocm93IG5ldyBNeUVycm9yKGUpIH0pKCJib29tISEiKSwgTXlFcnJvciwgImJv
b20hISIpOworc2hvdWxkVGhyb3dBc3luYygoKSA9PiAoeyBhc3luYyB0aHJvd2VyKGUpIHsgdGhy
b3cgbmV3IE15RXJyb3IoZSk7IH0gfSkudGhyb3dlcigiYm9vbSEhISEiKSwgTXlFcnJvciwgImJv
b20hISEhIik7CisKK2Z1bmN0aW9uIHJlc29sdmVMYXRlcih2YWx1ZSkgeyByZXR1cm4gUHJvbWlz
ZS5yZXNvbHZlKHZhbHVlKTsgfQorZnVuY3Rpb24gcmVqZWN0TGF0ZXIoZXJyb3IpIHsgcmV0dXJu
IFByb21pc2UucmVqZWN0KGVycm9yKTsgfQorCisvLyBSZXN1bWUgYWZ0ZXIgTm9ybWFsIGNvbXBs
ZXRpb24KK3ZhciBsb2cgPSBbXTsKK2FzeW5jIGZ1bmN0aW9uIHJlc3VtZUFmdGVyTm9ybWFsKHZh
bHVlKSB7CisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2Fp
dCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1
ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cu
cHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK30KKworc2hv
dWxkQmVBc3luYyg0LCAoKSA9PiByZXN1bWVBZnRlck5vcm1hbCgxKSk7CitzaG91bGRCZSgic3Rh
cnQ6MSByZXN1bWU6MiByZXN1bWU6MyIsIGxvZy5qb2luKCIgIikpOworCit2YXIgTyA9IHsKKyAg
ICBhc3luYyByZXN1bWVBZnRlck5vcm1hbCh2YWx1ZSkgeworICAgICAgICBsb2cucHVzaCgic3Rh
cnQ6IiArIHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUg
KyAxKTsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgICAgICB2YWx1
ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgICAgICBsb2cucHVzaCgicmVz
dW1lOiIgKyB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZSArIDE7CisgICAgfQorfTsKK2xv
ZyA9IFtdOworc2hvdWxkQmVBc3luYyg1LCAoKSA9PiBPLnJlc3VtZUFmdGVyTm9ybWFsKDIpKTsK
K3Nob3VsZEJlKCJzdGFydDoyIHJlc3VtZTozIHJlc3VtZTo0IiwgbG9nLmpvaW4oIiAiKSk7CisK
K3ZhciByZXN1bWVBZnRlck5vcm1hbEFycm93ID0gYXN5bmMgKHZhbHVlKSA9PiB7CisgICAgbG9n
LnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIo
dmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgdmFsdWUg
PSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIg
KyB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK307Citsb2cgPSBbXTsKK3Nob3VsZEJl
QXN5bmMoNiwgKCkgPT4gcmVzdW1lQWZ0ZXJOb3JtYWxBcnJvdygzKSk7CitzaG91bGRCZSgic3Rh
cnQ6MyByZXN1bWU6NCByZXN1bWU6NSIsIGxvZy5qb2luKCIgIikpOworCit2YXIgcmVzdW1lQWZ0
ZXJOb3JtYWxFdmFsID0gQXN5bmNGdW5jdGlvbigidmFsdWUiLCBgCisgICAgbG9nLnB1c2goInN0
YXJ0OiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAx
KTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCBy
ZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7
CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK2ApOworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDcs
ICgpID0+IHJlc3VtZUFmdGVyTm9ybWFsRXZhbCg0KSk7CitzaG91bGRCZSgic3RhcnQ6NCByZXN1
bWU6NSByZXN1bWU6NiIsIGxvZy5qb2luKCIgIikpOworCisvLyBSZXN1bWUgYWZ0ZXIgVGhyb3cg
Y29tcGxldGlvbgorYXN5bmMgZnVuY3Rpb24gcmVzdW1lQWZ0ZXJUaHJvdyh2YWx1ZSkgeworICAg
IGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHRyeSB7CisgICAgICAgIHZhbHVlID0g
YXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
bG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIHZhbHVl
ID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHJldHVybiB2YWx1ZSArIDE7
Cit9CisKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYygyLCAoKSA9PiByZXN1bWVBZnRlclRocm93
KDEpKTsKK3Nob3VsZEJlKCJzdGFydDoxIHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxv
Zy5qb2luKCIgIikpOworCit2YXIgTyA9IHsKKyAgICBhc3luYyByZXN1bWVBZnRlclRocm93KHZh
bHVlKSB7CisgICAgICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgICAgICB0cnkg
eworICAgICAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cxIik7CisgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOwor
ICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVj
dExhdGVyKCJ0aHJvdzIiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgbG9n
LnB1c2goInJlc3VtZToiICsgZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlICsg
MTsKKyAgICB9Cit9Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoMywgKCkgPT4gTy5yZXN1bWVB
ZnRlclRocm93KDIpKTsKK3Nob3VsZEJlKCJzdGFydDoyIHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRo
cm93MiIsIGxvZy5qb2luKCIgIikpOworCit2YXIgcmVzdW1lQWZ0ZXJUaHJvd0Fycm93ID0gYXN5
bmMgKHZhbHVlKSA9PiB7CisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdHJ5
IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cxIik7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9CisgICAg
dHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cyIik7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHZhbHVlICsgMTsKK307Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoNCwgKCkg
PT4gcmVzdW1lQWZ0ZXJUaHJvd0Fycm93KDMpKTsKK3Nob3VsZEJlKCJzdGFydDozIHJlc3VtZTp0
aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOworCit2YXIgcmVzdW1lQWZ0ZXJU
aHJvd0V2YWwgPSBBc3luY0Z1bmN0aW9uKCJ2YWx1ZSIsIGAKKyAgICBsb2cucHVzaCgic3RhcnQ6
IiArIHZhbHVlKTsKKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVy
KCJ0aHJvdzEiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6
IiArIGUpOworICAgIH0KKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExh
dGVyKCJ0aHJvdzIiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1
bWU6IiArIGUpOworICAgIH0KKyAgICByZXR1cm4gdmFsdWUgKyAxOworYCk7Citsb2cgPSBbXTsK
K3Nob3VsZEJlQXN5bmMoNSwgKCkgPT4gcmVzdW1lQWZ0ZXJUaHJvd0V2YWwoNCkpOworc2hvdWxk
QmUoInN0YXJ0OjQgcmVzdW1lOnRocm93MSByZXN1bWU6dGhyb3cyIiwgbG9nLmpvaW4oIiAiKSk7
CisKKy8vIE1ldGhvb2REZWZpbml0aW9uIFN5bnRheEVycm9ycworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIG9iaiA9IHsgYXN5bmMgZm9vIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2Vu
ICc6Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIGZvbyA9IHRydWUgfTsiLCAiVW5l
eHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxp
c3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBmb28gLCBi
YXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9y
IGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBh
c3luYyBmb28gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNp
cyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9i
aiA9IHsgYXN5bmMgMCA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVk
IGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgb2JqID0geyBhc3luYyAwID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9
Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIDAgLCBiYXIgfTsiLCAiVW5leHBlY3Rl
ZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAwIH0iLCAiVW5leHBl
Y3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3Qu
Iik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nIDog
dHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBm
b3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7
IGFzeW5jICdmb28nID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQg
YSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4g
JywnLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgJ2ZvbycgfSIsICJVbmV4cGVjdGVk
IHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsK
Kworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSA6IHRy
dWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9y
IGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBh
c3luYyBbJ2ZvbyddID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQg
YSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBvYmogPSB7IGFzeW5jIFsnZm9vJ10gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tl
biAnLCcuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBbJ2ZvbyddIH0iLCAiVW5leHBl
Y3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3Qu
Iik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBmb28gOiB0cnVl
IH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZv
cmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImNsYXNzIEMgeyBhc3luYyBmb28gPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4g
Jz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJh
bWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBm
b28gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5pbmcg
JygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIGZvbyB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4g
J30nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJh
bWV0ZXIgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5j
IDAgOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhbiBvcGVuaW5n
ICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAwID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVk
IHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9k
J3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsg
YXN5bmMgMCAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYW4gb3Bl
bmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgMCB9IiwgIlVuZXhwZWN0ZWQgdG9r
ZW4gJ30nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBw
YXJhbWV0ZXIgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFz
eW5jICdmb28nIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4g
b3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgJ2ZvbycgPSB0cnVlIH07Iiwg
IlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBh
c3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
ImNsYXNzIEMgeyBhc3luYyAnZm9vJyAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4g
RXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVy
IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgJ2Zvbycg
fSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3Jl
IGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImNsYXNzIEMgeyBhc3luYyBbJ2ZvbyddIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRv
a2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3Mg
cGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5
bmMgWydmb28nXSA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGFu
IG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsnZm9vJ10gLCBiYXIgfTsi
LCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBh
IGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiY2xhc3MgQyB7IGFzeW5jIFsnZm9vJ10gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhw
ZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxp
c3QuIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVz
ZXJ2ZWQtd29yZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZl
ZC13b3JkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4YjI0ZmU3NjBiMGEzYWIyZDlmZjViMTVjMzQ3ZmNmNzFj
MmY4MTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb2R1
bGUtcmVzZXJ2ZWQtd29yZC5qcwpAQCAtMCwwICsxLDcyIEBACisvLyBUaGlzIHRlc3QgcmVxdWly
ZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1
aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1l
c3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBu
dWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBp
ZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsK
KyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitmdW5jdGlvbiBj
aGVja01vZHVsZVN5bnRheEVycm9yKHNvdXJjZSwgZXJyb3JNZXNzYWdlKSB7CisgICAgc2hvdWxk
VGhyb3coKCkgPT4gY2hlY2tNb2R1bGVTeW50YXgoc291cmNlKSwgZXJyb3JNZXNzYWdlKTsKK30K
KworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAordmFyIGF3YWl0OworYCwgYFN5
bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1
bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoYAorZXhwb3J0IHZhciBhd2FpdDsKK2As
IGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGEg
bW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitsZXQgYXdh
aXQ7CitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgCitleHBvcnQgbGV0IGF3YWl0OworYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hlY2tN
b2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorY29uc3QgYXdhaXQgPSAxCitgLCBgU3ludGF4
RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGEg
bW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQg
Y29uc3QgYXdhaXQgPSAxCitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CisKK2NoZWNrTW9kdWxlU3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AKK2Z1bmN0aW9uIGF3YWl0KCkge30KK2AsIGBTeW50YXhFcnJv
cjogQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhIG1vZHVsZS46MmAp
OworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZnVuY3Rpb24qIGF3YWl0KCkg
e30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0
JyBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAor
YXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFy
ZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGEgbW9kdWxlLjoyYCk7CisKK2NoZWNrTW9kdWxl
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCB7YXdhaXR9IGZyb20gJ2Zvbyc7CitgLCBg
U3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5h
bWUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCB7Zm9v
IGFzIGF3YWl0fSBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2Fp
dCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVy
cm9yKFN0cmluZy5yYXdgCitpbXBvcnQgKiBhcyBhd2FpdCBmcm9tICdmb28nOworYCwgYFN5bnRh
eEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoy
YCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgYXdhaXQsIHt4
LCB5LCB6fSBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcg
YXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9y
KFN0cmluZy5yYXdgCitpbXBvcnQgYXdhaXQsIHt4LCB5LCB6LH0gZnJvbSAnZm9vJzsKK2AsIGBT
eW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFt
ZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IGF3YWl0
IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBp
bXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5n
LnJhd2AKK2ltcG9ydCBhd2FpdCwgKiBhcyBmb28gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJv
cjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW96aWxsYS5qcyBiL0pTVGVz
dHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGM1ZDZiOTJkM2U2
MWU0OTgzOWUwNmNkMWQ0ZTFiNTgwM2U3OGEwYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanMKQEAgLTAsMCArMSwzMDUgQEAKKy8qIFRoaXMg
U291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQ
dWJsaWMKKyAqIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBk
aXN0cmlidXRlZCB3aXRoIHRoaXMKKyAqIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRw
Oi8vbW96Lm9yZy9NUEwvMi4wLy4gKi8KKworLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9F
UzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgor
Ly9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnID0gIiIp
IHsKKyAgICBpZiAobXNnKQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIg
KyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKwor
ZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0
dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24o
dmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJv
cikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3Jv
dGFza3MoKTsKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKyAgICBz
aG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJv
dyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhh
ZEVycm9yID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgYWN0dWFsID0gcnVuKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBoYWRFcnJvciA9IHRydWU7CisgICAgICAgIGFjdHVhbCA9
IGU7CisgICAgfQorICAgIGlmICghaGFkRXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBi
dXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5
cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjZWQgIiArIHJ1biArICIoKSB0byB0
aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiICwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIici
KTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNz
YWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8g
dGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsg
IiciKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3luYyhydW4sIGVycm9yVHlwZSwgbWVz
c2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAg
cnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7
IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworICAgIGlmICghaGFkRXJyb3IpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJy
b3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwg
aW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
ICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IHRocmV3
ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVh
bC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
ICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiAr
IGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0KGNvbmQsIG1zZyA9
ICIiKSB7CisgICAgaWYgKCFjb25kKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkVGhyb3dTeW50YXhFcnJvcihzdHIsIG1lc3NhZ2UpIHsKKyAgICB2
YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBldmFsKHN0cik7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7Cisg
ICAgICAgICAgICBoYWRFcnJvciA9IHRydWU7CisgICAgICAgICAgICBpZiAodHlwZW9mIG1lc3Nh
Z2UgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09IG1l
c3NhZ2UsICJFeHBlY3RlZCAnIiArIG1lc3NhZ2UgKyAiJyBidXQgdGhyZXcgJyIgKyBlLm1lc3Nh
Z2UgKyAiJyIpOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChoYWRFcnJvciwgIkRpZCBu
b3QgdGhyb3cgc3ludGF4IGVycm9yIik7Cit9CisKKy8vIHNlbWFudGljcy5qcworKGZ1bmN0aW9u
IG1velNlbWFudGljcygpIHsKKworYXN5bmMgZnVuY3Rpb24gZW1wdHkoKSB7Cit9CisKK2FzeW5j
IGZ1bmN0aW9uIHNpbXBsZVJldHVybigpIHsKKyAgICByZXR1cm4gMTsKK30KKworYXN5bmMgZnVu
Y3Rpb24gc2ltcGxlQXdhaXQoKSB7CisgICAgdmFyIHJlc3VsdCA9IGF3YWl0IDI7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworYXN5bmMgZnVuY3Rpb24gc2ltcGxlQXdhaXRBc3luYygpIHsKKyAg
ICB2YXIgcmVzdWx0ID0gYXdhaXQgc2ltcGxlUmV0dXJuKCk7CisgICAgcmV0dXJuIDIgKyByZXN1
bHQ7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJldHVybk90aGVyQXN5bmMoKSB7CisgICAgcmV0dXJu
IDEgKyBhd2FpdCBzaW1wbGVBd2FpdEFzeW5jKCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNpbXBs
ZVRocm93ZXIoKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9u
IGRlbGVnYXRlZFRocm93ZXIoKSB7CisgICAgdmFyIHZhbCA9IGF3YWl0IHNpbXBsZVRocm93ZXIo
KTsKKyAgICByZXR1cm4gdmFsOworfQorCithc3luYyBmdW5jdGlvbiB0cnlDYXRjaCgpIHsKKyAg
ICB0cnkgeworICAgICAgICBhd2FpdCBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgICAgIHJldHVy
biAnRkFJTEVEJzsKKyAgICB9IGNhdGNoIChfKSB7CisgICAgICAgIHJldHVybiA1OworICAgIH0K
K30KKworYXN5bmMgZnVuY3Rpb24gdHJ5Q2F0Y2hUaHJvdygpIHsKKyAgICB0cnkgeworICAgICAg
ICBhd2FpdCBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgICAgIHJldHVybiAnRkFJTEVEJzsKKyAg
ICB9IGNhdGNoIChfKSB7CisgICAgICAgIHJldHVybiBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAg
fQorfQorCithc3luYyBmdW5jdGlvbiB3ZWxsRmluYWxseSgpIHsKKyAgICB0cnkgeworICAgICAg
ICBhd2FpdCBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgfSBjYXRjaCAoXykgeworICAgICAgICBy
ZXR1cm4gJ0ZBSUxFRCc7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgcmV0dXJuIDY7CisgICAg
fQorfQorCithc3luYyBmdW5jdGlvbiBmaW5hbGx5TWF5RmFpbCgpIHsKKyAgICB0cnkgeworICAg
ICAgICBhd2FpdCBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgfSBjYXRjaCAoXykgeworICAgICAg
ICByZXR1cm4gNTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICByZXR1cm4gZGVsZWdhdGVkVGhy
b3dlcigpOworICAgIH0KK30KKworYXN5bmMgZnVuY3Rpb24gZW1iZWRkZWQoKSB7CisgICAgYXN5
bmMgZnVuY3Rpb24gaW5uZXIoKSB7CisgICAgICAgIHJldHVybiA3OworICAgIH0KKyAgICByZXR1
cm4gYXdhaXQgaW5uZXIoKTsKK30KKworLy8gcmVjdXJzaW9uLCBpdCB3b3JrcyEKK2FzeW5jIGZ1
bmN0aW9uIGZpYihuKSB7CisgICAgcmV0dXJuIChuID09IDAgfHwgbiA9PSAxKSA/IG4gOiBhd2Fp
dCBmaWIobiAtIDEpICsgYXdhaXQgZmliKG4gLSAyKTsKK30KKworLy8gbXV0dWFsIHJlY3Vyc2lv
bgorYXN5bmMgZnVuY3Rpb24gaXNPZGQobikgeworICAgIGFzeW5jIGZ1bmN0aW9uIGlzRXZlbihu
KSB7CisgICAgICAgIHJldHVybiBuID09PSAwIHx8IGF3YWl0IGlzT2RkKG4gLSAxKTsKKyAgICB9
CisgICAgcmV0dXJuIG4gIT09IDAgJiYgYXdhaXQgaXNFdmVuKG4gLSAxKTsKK30KKworLy8gcmVj
dXJzaW9uLCB0YWtlIHRocmVlIQordmFyIGhhcmRjb3JlRmliID0gYXN5bmMgZnVuY3Rpb24gZmli
MihuKSB7CisgICAgcmV0dXJuIChuID09IDAgfHwgbiA9PSAxKSA/IG4gOiBhd2FpdCBmaWIyKG4g
LSAxKSArIGF3YWl0IGZpYjIobiAtIDIpOworfQorCit2YXIgYXN5bmNFeHByID0gYXN5bmMgZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuIDEwOworfQorCit2YXIgbmFtZWRBc3luY0V4cHIgPSBhc3lu
YyBmdW5jdGlvbiBzaW1wbGUoKSB7CisgICAgcmV0dXJuIDExOworfQorCithc3luYyBmdW5jdGlv
biBleGVjdXRpb25PcmRlcigpIHsKKyAgICB2YXIgdmFsdWUgPSAwOworICAgIGFzeW5jIGZ1bmN0
aW9uIGZpcnN0KCkgeworICAgICAgICByZXR1cm4gKHZhbHVlID0gdmFsdWUgPT09IDAgPyAxIDog
dmFsdWUpOworICAgIH0KKyAgICBhc3luYyBmdW5jdGlvbiBzZWNvbmQoKSB7CisgICAgICAgIHJl
dHVybiAodmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDIgOiB2YWx1ZSk7CisgICAgfQorICAgIGFzeW5j
IGZ1bmN0aW9uIHRoaXJkKCkgeworICAgICAgICByZXR1cm4gKHZhbHVlID0gdmFsdWUgPT09IDAg
PyAzIDogdmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gYXdhaXQgZmlyc3QoKSArIGF3YWl0IHNl
Y29uZCgpICsgYXdhaXQgdGhpcmQoKSArIDY7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIG1pc2NlbGxh
bmVvdXMoKSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYKKyAgICAgICAgYXJn
dW1lbnRzLmNhbGxlZS5uYW1lID09PSAibWlzY2VsbGFuZW91cyIpCisgICAgICAgIHJldHVybiAx
NDsKK30KKworZnVuY3Rpb24gdGhyb3dlcigpIHsKKyAgICB0aHJvdyAxNTsKK30KKworYXN5bmMg
ZnVuY3Rpb24gZGVmYXVsdEFyZ3MoYXJnID0gdGhyb3dlcigpKSB7Cit9CisKKy8vIEFzeW5jIGZ1
bmN0aW9ucyBhcmUgbm90IGNvbnN0cnVjdGlibGUKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBh
c3luYyBmdW5jdGlvbiBQZXJzb24oKSB7CisgICAgfQorICAgIG5ldyBQZXJzb24oKTsKK30sIFR5
cGVFcnJvcik7CisKK3Nob3VsZEJlQXN5bmModW5kZWZpbmVkLCBlbXB0eSk7CitzaG91bGRCZUFz
eW5jKDEsIHNpbXBsZVJldHVybik7CitzaG91bGRCZUFzeW5jKDIsIHNpbXBsZUF3YWl0KTsKK3No
b3VsZEJlQXN5bmMoMywgc2ltcGxlQXdhaXRBc3luYyk7CitzaG91bGRCZUFzeW5jKDQsIHJldHVy
bk90aGVyQXN5bmMpOworc2hvdWxkVGhyb3dBc3luYyhzaW1wbGVUaHJvd2VyLCBFcnJvcik7Citz
aG91bGRCZUFzeW5jKDUsIHRyeUNhdGNoKTsKK3Nob3VsZEJlQXN5bmMoNiwgd2VsbEZpbmFsbHkp
Oworc2hvdWxkVGhyb3dBc3luYyhmaW5hbGx5TWF5RmFpbCwgRXJyb3IpOworc2hvdWxkQmVBc3lu
Yyg3LCBlbWJlZGRlZCk7CitzaG91bGRCZUFzeW5jKDgsICgpID0+IGZpYig2KSk7CitzaG91bGRC
ZUFzeW5jKDksIGV4ZWN1dGlvbk9yZGVyKTsKK3Nob3VsZEJlQXN5bmMoMTAsIGFzeW5jRXhwcik7
CitzaG91bGRCZUFzeW5jKDExLCBuYW1lZEFzeW5jRXhwcik7CitzaG91bGRCZUFzeW5jKDEyLCAo
KSA9PiBpc09kZCgxMikudGhlbih2ID0+IHYgPyAib29wcyIgOiAxMikpOworc2hvdWxkQmVBc3lu
YygxMywgKCkgPT4gaGFyZGNvcmVGaWIoNykpOworc2hvdWxkQmVBc3luYygxNCwgKCkgPT4gbWlz
Y2VsbGFuZW91cygxLCAyLCAzKSk7CitzaG91bGRCZUFzeW5jKDE1LCAoKSA9PiBkZWZhdWx0QXJn
cygpLmNhdGNoKGUgPT4gZSkpOworCit9KSgpOworCisvLyBtZXRob2RzLmpzCisoZnVuY3Rpb24g
bW96TWV0aG9kcygpIHsKKworY2xhc3MgWCB7CisgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAg
IHRoaXMudmFsdWUgPSA0MjsKKyAgICB9CisgICAgYXN5bmMgZ2V0VmFsdWUoKSB7CisgICAgICAg
IHJldHVybiB0aGlzLnZhbHVlOworICAgIH0KKyAgICBzZXRWYWx1ZSh2YWx1ZSkgeworICAgICAg
ICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgfQorICAgIGFzeW5jIGluY3JlbWVudCgpIHsKKyAg
ICAgICAgdmFyIHZhbHVlID0gYXdhaXQgdGhpcy5nZXRWYWx1ZSgpOworICAgICAgICB0aGlzLnNl
dFZhbHVlKHZhbHVlICsgMSk7CisgICAgICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCk7CisgICAg
fQorICAgIGFzeW5jIGdldEJhc2VDbGFzc05hbWUoKSB7CisgICAgICAgIHJldHVybiAnWCc7Cisg
ICAgfQorICAgIHN0YXRpYyBhc3luYyBnZXRTdGF0aWNWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJu
IDQ0OworICAgIH0KK30KKworY2xhc3MgWSBleHRlbmRzIFggeworICAgIGFzeW5jIGdldEJhc2VD
bGFzc05hbWUoKSB7CisgICAgICAgIHJldHVybiBzdXBlci5nZXRCYXNlQ2xhc3NOYW1lKCk7Cisg
ICAgfQorfQorCit2YXIgb2JqTGl0ZXJhbCA9IHsKKyAgICBhc3luYyBnZXQoKSB7CisgICAgICAg
IHJldHVybiA0NTsKKyAgICB9LAorICAgIHNvbWVTdHVmZjogNQorfTsKKwordmFyIHggPSBuZXcg
WCgpOwordmFyIHkgPSBuZXcgWSgpOworCitzaG91bGRCZUFzeW5jKDQyLCAoKSA9PiB4LmdldFZh
bHVlKCkpOworc2hvdWxkQmVBc3luYyg0MywgKCkgPT4geC5pbmNyZW1lbnQoKSk7CitzaG91bGRC
ZUFzeW5jKDQ0LCAoKSA9PiBYLmdldFN0YXRpY1ZhbHVlKCkpOworc2hvdWxkQmVBc3luYyg0NSwg
KCkgPT4gb2JqTGl0ZXJhbC5nZXQoKSk7CitzaG91bGRCZUFzeW5jKCdYJywgKCkgPT4geS5nZXRC
YXNlQ2xhc3NOYW1lKCkpOworCit9KSgpOworCisoZnVuY3Rpb24gbW96RnVuY3Rpb25OYW1lSW5m
ZXJyZW5jZSgpIHsKKworYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsgfQorCit2YXIgYW5vbiA9IGFz
eW5jIGZ1bmN0aW9uKCkgeyB9CisKK3Nob3VsZEJlKCJ0ZXN0IiwgdGVzdC5uYW1lKTsKK3Nob3Vs
ZEJlKCJhbm9uIiwgYW5vbi5uYW1lKTsKKworfSkoKTsKKworKGZ1bmN0aW9uIG1velN5bnRheEVy
cm9ycygpIHsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiJ3VzZSBzdHJpY3QnOyBhc3luYyBm
dW5jdGlvbiBldmFsKCkge30iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIid1c2Ugc3RyaWN0
JzsgYXN5bmMgZnVuY3Rpb24gYXJndW1lbnRzKCkge30iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoImFzeW5jIGZ1bmN0aW9uIGEoayA9IHN1cGVyLnByb3ApIHsgfSIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gYSgpIHsgc3VwZXIucHJvcCgpOyB9Iik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBhKCkgeyBzdXBlcigpOyB9Iik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBhKGsgPSBhd2FpdCAzKSB7fSIp
OworCit9KSgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdvcmQuanMgYi9KU1Rlc3RzL3N0cmVzcy9h
c3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4ZTFkMzMyMWM3ZjgwMDg3
YmVkZjBmMTU3MjFiMjk1YjgxZWVmYjMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzCkBAIC0wLDAgKzEsMTY2IEBACisvLyBUaGlz
IHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBl
bmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBhc3NlcnQoY29uZCwg
bXNnID0gIiIpIHsKKyAgICBpZiAoIWNvbmQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cp
OworfQorbm9JbmxpbmUoYXNzZXJ0KTsKKworZnVuY3Rpb24gc2hvdWxkVGhyb3dTeW50YXhFcnJv
cihzdHIsIG1lc3NhZ2UpIHsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICB0cnkgewor
ICAgICAgICBldmFsKHN0cik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0
YW5jZW9mIFN5bnRheEVycm9yKSB7CisgICAgICAgICAgICBoYWRFcnJvciA9IHRydWU7CisgICAg
ICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgICAg
IGFzc2VydChlLm1lc3NhZ2UgPT09IG1lc3NhZ2UsICJFeHBlY3RlZCAnIiArIG1lc3NhZ2UgKyAi
JyBidXQgdGhyZXcgJyIgKyBlLm1lc3NhZ2UgKyAiJyIpOworICAgICAgICB9CisgICAgfQorICAg
IGFzc2VydChoYWRFcnJvciwgIkRpZCBub3QgdGhyb3cgc3ludGF4IGVycm9yIik7Cit9Citub0lu
bGluZShzaG91bGRUaHJvd1N5bnRheEVycm9yKTsKKwordmFyIEFzeW5jRnVuY3Rpb24gPSAoYXN5
bmMgZnVuY3Rpb24oKSB7fSkuY29uc3RydWN0b3I7CisKKy8vIEFzeW5jRnVuY3Rpb25FeHByZXNz
aW9uCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciBhd2Fp
dDsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkg
eyB2YXIgW2F3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIo
YXN5bmMgZnVuY3Rpb24oKSB7IHZhciBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIHthd2FpdH0gPSB7fTsg
fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2
YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IGF3
YWl0OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBm
dW5jdGlvbigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCBbLi4uYXdhaXRdID0gW107
IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0
aW9uKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7
fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVu
Y3Rpb24oKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCBhd2FpdDsg
fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rp
b24oKSB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsg
fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rp
b24oKSB7IGNvbnN0IHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0g
PSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMg
ZnVuY3Rpb24oKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGZ1bmN0aW9u
IGF3YWl0KCkge30gfSkiLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBm
dW5jdGlvbigpIHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fSB9KSIsICJDYW5ub3QgZGVjbGFy
ZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKGF3YWl0KSB7fSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKFthd2FpdF0pIHt9KSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoWy4uLmF3YWl0
XSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24g
ZiguLi5hd2FpdCkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMg
ZnVuY3Rpb24gZih7YXdhaXR9KSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0
ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
Iihhc3luYyBmdW5jdGlvbiBmKHtpc0FzeW5jOiBhd2FpdH0pIHt9KSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworCisvLyBB
c3luY0Z1bmN0aW9uRGVjbGFyYXRpb24KK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1
bmN0aW9uIGYoKSB7IHZhciBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIgW2F3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIgWy4uLmF3YWl0XSA9
IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBm
KCkgeyB2YXIge2F3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIge2lz
QXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJh
c3luYyBmdW5jdGlvbiBmKCkgeyBsZXQgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQgW2F3YWl0XSA9IFtdOyB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24g
ZigpIHsgbGV0IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCB7YXdhaXR9ID0ge307IH0iLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkg
eyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0g
PSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1
bmN0aW9uIGYoKSB7IGNvbnN0IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3QgW2F3YWl0XSA9IFtdOyB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigp
IHsgY29uc3QgWy4uLmF3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3Qge2F3YWl0fSA9IHt9OyB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigp
IHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3Qge2lzQXN5bmM6IGF3
YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZigpIHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBkZWNsYXJl
IGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBhc3luYyBmdW5jdGlvbiBhd2Fp
dCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9u
IGYoYXdhaXQpIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5j
dGlvbiBmKFthd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3lu
YyBmdW5jdGlvbiBmKFsuLi5hd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFy
YW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJhc3luYyBmdW5jdGlvbiBmKC4uLmF3YWl0KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZih7YXdhaXR9KSB7fSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZih7aXNBc3luYzogYXdhaXR9KSB7fSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworCisvLyBBc3luY0Fycm93RnVuY3Rpb24KK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciBbYXdhaXRdID0gW107IH0pIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIg
Wy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
ZiA9IGFzeW5jICgpID0+IHsgdmFyIHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciB7aXNBc3luYzogYXdhaXR9
ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMg
KCkgPT4geyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IGF3YWl0OyB9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxl
dCBbYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQg
e2F3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsg
bGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCBhd2FpdDsgfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBj
b25zdCBbYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3QgWy4uLmF3YWl0XSA9IFtdOyB9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7
IGNvbnN0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5j
ICgpID0+IHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdh
aXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGZ1bmN0aW9uIGF3
YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3lu
YyAoKSA9PiB7IGFzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBm
dW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoYXdhaXQpID0+IHt9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jIChbYXdhaXRdKSA9PiB7fSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoWy4uLmF3YWl0XSkgPT4g
e30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKC4uLmF3
YWl0KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3lu
YyAoe2F3YWl0fSkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBm
ID0gYXN5bmMgKHtpc0FzeW5jOiBhd2FpdH0pID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jIGF3YWl0ID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CisKKy8vIEFzeW5j
TWV0aG9kCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFy
IGF3YWl0OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFz
eW5jIGYoKSB7IHZhciBbYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIFsuLi5hd2FpdF0gPSBbXTsgfSB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIg
e2F3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8g
PSB7IGFzeW5jIGYoKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIHtpc0FzeW5j
OiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBP
ID0geyBhc3luYyBmKCkgeyBsZXQgYXdhaXQ7IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQgW2F3YWl0XSA9IFtdOyB9
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5
bmMgZigpIHsgbGV0IFsuLi5hd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCB7YXdhaXR9ID0ge307
IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBh
c3luYyBmKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IGF3YWl0OyB9IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3Qg
W2F3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3QgWy4uLmF3YWl0XSA9IFtdOyB9IH0iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsg
Y29uc3Qge2F3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9
OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsg
YXN5bmMgZigpIHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgZnVuY3Rp
b24gYXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9
IHsgYXN5bmMgZigpIHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IH0iLCAiQ2Fubm90IGRl
Y2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKGF3YWl0KSB7fSB9ICIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoW2F3YWl0XSkg
e30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKFsu
Li5hd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsg
YXN5bmMgZiguLi5hd2FpdCkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBPID0geyBhc3luYyBmKHthd2FpdH0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFy
YW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgTyA9IHsgYXN5bmMgZih7aXNBc3luYzogYXdhaXR9KSB7fSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworCisv
LyBBc3luY0Z1bmN0aW9uIGNvbnN0cnVjdG9yCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3lu
Y0Z1bmN0aW9uKCd2YXIgYXdhaXQ7JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
QXN5bmNGdW5jdGlvbigndmFyIFthd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIgWy4uLmF3YWl0XSA9IFtdOycpIiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciB7YXdhaXR9ID0ge307
JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIHtp
c0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJB
c3luY0Z1bmN0aW9uKCd2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCBhd2FpdDsnKSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCBbYXdhaXRd
ID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1
bmN0aW9uKCdsZXQgWy4uLmF3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignbGV0IHthd2FpdH0gPSB7fTsnKSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCB7aXNB
c3luYzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3QgYXdh
aXQ7JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0
aW9uKCdjb25zdCBbYXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCBbLi4uYXdhaXRdID0gW107JykiLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCB7
YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJB
c3luY0Z1bmN0aW9uKCdjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCB7aXNBc3lu
YzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJBc3luY0Z1bmN0aW9uKCdmdW5jdGlvbiBhd2FpdCgpIHt9JykiLCAiQ2Fubm90IGRlY2xhcmUg
ZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2FzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30n
KSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignYXdhaXQn
LCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ1th
d2FpdF0nLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rp
b24oJ1suLi5hd2FpdF0nLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFz
eW5jRnVuY3Rpb24oJy4uLmF3YWl0JywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFy
YW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJBc3luY0Z1bmN0aW9uKCd7YXdhaXR9JywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd7aXNBc3luYzogYXdhaXR9JywgJycpIiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292754</attachid>
            <date>2016-10-25 08:32:31 -0700</date>
            <delta_ts>2016-10-26 14:32:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163760-20161025112844.patch</filename>
            <type>text/plain</type>
            <size>188751</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NzI0NGFlZjBiZmMxZTBmMjhhZGVmOThhNTZlZWNkMDQ4MTFmNjU1Li5mMDE5OTZhZjcyYTdiMmIx
MTY3YWE5NjljZTFlZjU3YTY0OWQ3YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTcgQEAKKzIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBm
dW5jdGlvbnMgZ2VuZXJhdGUgYnl0ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3
aGljaCBpcworICAgICAgICBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb246CisgICAgICAgIAorICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5z
bGF0aW9uOgorICAgICAgICBhc3luYyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAv
LyBBZnRlciB0cmFuc2xhdGlvbjoKKyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAg
ICAgICAgIGxldCBnZW5lcmF0b3IgPSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQm9keSBvZiBhc3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgQGdlbmVyYXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5l
cmF0b3JUaGlzOiB0aGlzLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8
ZnJhbWUgc3RhdGU+LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgQXdhaXQgRXhw
cmVzc2lvbnMgYXJlIGVxdWl2YWxlbnQgdG8gbm9uLWRlbGVnYXRpbmcgWWllbGQgZXhwcmVzc2lv
bnMsIGFuZCBlbWl0IGlkZW50aWNhbCBieXRlY29kZS4KKworICAgICAgICBJbiB0aGlzIGJ1Zywg
YXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBvbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCwgYXMg
c3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGRvIG5vdCB5ZXQgd29y
ayBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5q
czogQWRkZWQuCisgICAgICAgIChhc3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19hc3luY19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3
RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZSk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6QXN5bmNG
dW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6
SlNBc3luY0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJl
bnRseSk6CisKIDIwMTYtMTAtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CiAKICAgICAgICAgQXJyb3cgZnVuY3Rpb25zIHdpdGggY29uY2lzZSBib2RpZXMgY2Fubm90
IHJldHVybiByZWd1bGFyIGV4cHJlc3Npb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggODdmNzNlNWEwNzBjYzEyMjFmYzhkNDIzMjI1YzM3MTg2MDY0OWU0MS4uZjI5YTRl
MTk5NThkYjE4MTdhMTJhNDE2ZTUzYWVmNzljZWVlZWJhZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNjM4LDYgKzYzOCw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgcnVudGltZS9BcnJheUNvbnZlbnRpb25zLmNwcAogICAgIHJ1bnRpbWUvQXJyYXlJ
dGVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorICAg
IHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Jhc2ljQmxvY2tMb2NhdGlvbi5jcHAK
ICAgICBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0Jvb2xlYW5P
YmplY3QuY3BwCkBAIC03MTQsNiArNzE2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0pT
QXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5j
cHAKKyAgICBydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0Nh
bGxlZS5jcHAKQEAgLTEyOTgsNiArMTMwMSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElO
U19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5Q29uc3Ry
dWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheVBy
b3RvdHlwZS5qcworICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9Bc3luY0Z1bmN0
aW9uUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0RhdGVQ
cm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvRnVuY3Rpb25Q
cm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvR2VuZXJhdG9y
UHJvdG90eXBlLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmlu
ZGV4IDY2MzA1MzcyMDI0ZTFkZDkzYTRhYzcyZDAyOTA2YTMyMDMwNTQ2NjIuLjI4NTRkNWU3OTg2
ZGIwOTFiMmI5ODRjYTBlM2YwZjI0NzkwYzJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCkBAIC04OSw2ICs4OSw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxU
SU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlDb25z
dHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlJdGVyYXRv
clByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlQcm90
b3R5cGUuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0RhdGVQcm90b3R5
cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBl
LmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUu
anMgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNzcwYmJiNjI1N2U5ZDc1NzQ1
MThlMzA1NmFkMDRlZjM2NGE5ODE4Li44ZTZjNzc2YmM5ZDRkYTM5YWQwODI5YzAxZjgyZGNjMGQ5
Y2Y0NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NCw2ICsxMjQ0LDEy
IEBACiAJCTUzRkQwNEQzMUQ3QUIyNzcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGRDA0
RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHAgKi87IH07CiAJ
CTUzRkQwNEQ0MUQ3QUIyOTEwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQyMUQ3QUIx
ODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCAqLzsgfTsKIAkJNUM0RThFOTYx
REJFQkU2MjAwMzZGMUZDIC8qIEpTT05QYXJzZVRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0RThFOTQxREJFQkRBMjAwMzZGMUZDIC8qIEpT
T05QYXJzZVRlc3QuY3BwICovOyB9OworCQk1QjcwQ0ZERTFEQjY5RTY2MDBFQzIzRjkgLyogSlNB
c3luY0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi87IH07
CisJCTVCNzBDRkRGMURCNjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGRDkxREI2OUU1
QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgKi87IH07CisJCTVCNzBDRkUwMURCNjlF
NjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyog
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5oICovOyB9OworCQk1QjcwQ0ZFMTFEQjY5RTY2MDBFQzIz
RjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEQjFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CisJCTVCNzBDRkUyMURCNjlFNjYwMEVDMjNGOSAv
KiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJNUI3MENGRTMxREI2OUU2NjAwRUMyM0Y5IC8qIEFz
eW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZERDFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxp
YmVkaXQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLzsgfTsKIAkJ
NURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBTdXBwb3J0IFNj
cmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NTc3NDBBNDY5NkM4
MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsKIAkJNURCQjE1MjUxMzFEMEJENzAwNTZBRDM2
IC8qIG1pbmlkb20uanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNDEyMTEwRDBBNDg3ODg3MDA0ODAyNTUgLyogbWluaWRvbS5qcyAq
LzsgfTsKQEAgLTM1NTYsNiArMzU2MiwxMyBAQAogCQk1M0ZEMDREMjFEN0FCMTg3MDAzMjg3RDMg
LyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdhc21DYWxsaW5nQ29udmVudGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzRFOEU5NDFEQkVCREEyMDAzNkYxRkMgLyogSlNPTlBhcnNlVGVzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU09OUGFyc2VUZXN0LmNwcDsgcGF0aCA9IEFQ
SS90ZXN0cy9KU09OUGFyc2VUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUM0RThFOTUxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05QYXJzZVRlc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSlNPTlBhcnNlVGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0pT
T05QYXJzZVRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGRDgxREI2
OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0FzeW5jRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUI3MENGRDkxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FzeW5jRnVuY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
c3luY0Z1bmN0aW9uUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVC
NzBDRkRCMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZEQzFEQjY5RTVDMDBFQzIz
RjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1QjcwQ0ZERDFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCODI0
MzA0MURCN0FBNDkwMEVBNjM4NCAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjky
IC8qIGxpYmVkaXQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmVkaXQuZHlsaWI7
IHBhdGggPSAvdXNyL2xpYi9saWJlZGl0LmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4i
OyB9OwogCQk1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsg
cGF0aCA9IEpTQy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUREREY0
NDYxNEZFRTcyMjAwQjRGQjREIC8qIExMSW50RGVzaXJlZE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnREZXNpcmVkT2Zmc2V0cy5oOyBwYXRoID0gTExJbnRP
ZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKQEAgLTU5MzAsNiArNTk0MywxMCBAQAogCQkJCUY2OTJBODREMDI1NTU5N0QwMUZG
NjBGNyAvKiBBcnJheVByb3RvdHlwZS5jcHAgKi8sCiAJCQkJRjY5MkE4NEUwMjU1NTk3RDAxRkY2
MEY3IC8qIEFycmF5UHJvdG90eXBlLmggKi8sCiAJCQkJMEZCN0YzOEExNUVEOEUzODAwRjE2N0Iy
IC8qIEFycmF5U3RvcmFnZS5oICovLAorCQkJCTVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAvKiBB
c3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAorCQkJCTVCNzBDRkRDMURCNjlFNUMwMEVD
MjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKKwkJCQk1QjcwQ0ZEQjFEQjY5
RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8sCisJCQkJNUI3MENG
REExREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQkw
RjM4RDJBMDFENDQxOTY2MDA2ODA0OTkgLyogQXV4aWxpYXJ5QmFycmllci5oICovLAogCQkJCTBG
MzhEMkExMUQ0NDE5NjYwMDY4MDQ5OSAvKiBBdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oICovLAog
CQkJCTUyNjc4RjhDMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwICov
LApAQCAtNjExNSw2ICs2MTMyLDggQEAKIAkJCQkwRjJCNjZCQjE3QjZCNUFCMDBBN0FFM0YgLyog
SlNBcnJheUJ1ZmZlclZpZXcuaCAqLywKIAkJCQkwRjJCNjZCQzE3QjZCNUFCMDBBN0FFM0YgLyog
SlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggKi8sCiAJCQkJNTM5RkI4QjkxQzk5REE3QzAwOTQw
RkExIC8qIEpTQXJyYXlJbmxpbmVzLmggKi8sCisJCQkJNUI3MENGRDkxREI2OUU1QzAwRUMyM0Y5
IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgKi8sCisJCQkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5
IC8qIEpTQXN5bmNGdW5jdGlvbi5oICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAv
KiBKU0JvdW5kRnVuY3Rpb24uY3BwICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAv
KiBKU0JvdW5kRnVuY3Rpb24uaCAqLywKIAkJCQk2NTdDRjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyog
SlNDYWxsZWUuY3BwICovLApAQCAtNzMwMyw2ICs3MzIyLDcgQEAKIAkJCQlBN0Q4MDFBMDE4ODBE
NjZFMDAyNkMzOUIgLyogQXJyYXlQcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNTgxQjY1RDlB
MzAwOURCMUVGIC8qIEFycmF5Q29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNTkxQjY1RDlB
MzAwOURCMUVGIC8qIEFycmF5SXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCisJCQkJNUI4MjQzMDQx
REI3QUE0OTAwRUE2Mzg0IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgKi8sCiAJCQkJREUy
NkU5MDYxQ0I1REQ5NjAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAgKi8s
CiAJCQkJREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRv
ci5oICovLAogCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJs
ZXMuY3BwICovLApAQCAtNzc0MSw2ICs3NzYxLDcgQEAKIAkJCQlEQzNEMkIwQTFEMzQzMTYyMDBC
QTkxOEMgLyogSGVhcENlbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzNDQ0ZDMTlBREE0MTAw
MDZBQzcyQSAvKiBERkdCbG9ja01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkQxOUFE
QTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NUI3MENGRTIxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkUxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrU2V0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJGMTU4RDE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxv
Y2tTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMzQ0QwMDE5QURBNDEwMDA2QUM3
MkEgLyogREZHQmxvY2tXb3JrbGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzA5LDYgKzgzMzAs
NyBAQAogCQkJCTdDMTg0RTFCMTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21pc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDMTg0RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2QjczMUUxQkRBMDhFRjAwMzMxQjg0IC8qIEpT
UHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUI3MENGREUxREI2
OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0Mw
MDhDREIxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QzE4NEUxRjE3QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OTZCNzMxRjFCREEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNl
UHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDUxLDYgKzg0NzMsNyBAQAogCQkJ
CUJDMThDNDNGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTlFNDVBMjgxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxOEM0NDEwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlckNvbnN0cnVj
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZFMDFEQjY5RTY2MDBFQzIzRjkgLyogQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDIwRTE2RjVD
RDAwQjM0NDYwIC8qIE51bWJlckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMxOEM0NDMwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlck9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0NDQwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlclByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8sCkBAIC05MzE3LDYgKzkzNDAsNyBAQAogCQkJCUE1NTcxNEJGMUNEODA0QTQwMDA0
RDJDNiAvKiBDb25zb2xlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTI1MUJE
QUNEQUMwMDgwRkY3NCAvKiBCM1BhdGNocG9pbnRTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRUM4NTI3MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BhdGNocG9pbnRWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1QjcwQ0ZFMzFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTI5MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM1BoYXNlU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MkIxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNDIy
QTYyMUMxNThFNkEwMEUyRUI5OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTk3MzAsNiArOTc1NCw3IEBACiAJCQkJMEY1NTEzQTgxRDVBNjhDRDAwQzMyQkQ4IC8q
IEZyZWVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFOTlCMjRBMUMyNEMzRDcwMEM4MjE1
OSAvKiBKSVROZWdHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDQzg1QzQwRUU3
QTg5NDAwMjg4NjgyIC8qIEpJVFByb3BlcnR5QWNjZXNzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTVCNzBDRkUxMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE3QzFFOEU0MTEyRTcyRUYwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjQxNTg0MUQ3OEZCNEMwMERG
OEQwOSAvKiBBcnJheUNvbnZlbnRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDI4
MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTk5MDcsNiArOTkzMiw3IEBACiAJCQkJMTQ4RjIxQjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURDNjlBQTY2MUNGN0ExRjIwMEM2MjcyRiAvKiBNYXRj
aFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUg
LyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCNzBDRkRGMURC
NjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NjU1RUIyOUIxMENFMjU4MTAwMUE5OTBFIC8qIE5vZGVzQ29kZWdlbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk2NTQ2RjUyMTFBMzJCMzEzMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUzMjJFNUEyMURBNjQ0MzkwMDZFNzcwOSAvKiBERkdET01K
SVRQYXRjaHBvaW50UGFyYW1zLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMjQ3ODgyYWZjOGIwZTNlMTRhY2ZkYzdjN2ExMDcwNGFmMzEzNGMyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuanMKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBD
YWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJh
dG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCit7CisgICAgInVzZSBzdHJpY3QiOworICAgIGxl
dCBzdGF0ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGU7CisgICAgbGV0IHZhbHVlID0gQHVu
ZGVmaW5lZDsKKworICAgIGlmIChzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkIHx8
IChyZXN1bWVNb2RlICE9PSBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCAmJiByZXN1bWVNb2Rl
ICE9PSBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KSkKKyAgICAgICAgQHRocm93VHlwZUVycm9y
KCJBc3luYyBmdW5jdGlvbiBpbGxlZ2FsbHkgcmVzdW1lZCIpOworCisgICAgdHJ5IHsKKyAgICAg
ICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsK
KyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9y
LkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUs
IGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5l
cmF0b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOworICAg
ICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKHZhbHVlKTsKKyAgICAgICAgfQorICAg
IH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBA
R2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0
KGVycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUodmFsdWUpLkB0
aGVuKAorICAgICAgICBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1
bWUoZ2VuZXJhdG9yLCB2YWx1ZSwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpOyB9LAorICAg
ICAgICBmdW5jdGlvbihlcnJvcikgeyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJh
dG9yLCBlcnJvciwgQEdlbmVyYXRvclJlc3VtZU1vZGVUaHJvdyk7IH0pOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDU3NmRl
NDAwNjA0ZDEwMTQ3NTFjYzYzYmVhY2VjNzdhNTVmZDRmZjcuLjg0YWUzYmRhMmYwMGI5MGQ4ZjFk
MjMwZjYxYmFkMDkyOGM4MTEzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTEwNSw2ICsxMDUsOCBAQAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiLCAibGVuZ3Ro
IiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hc3luY19mdW5jIiwgImxl
bmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXN5bmNfZnVuY19l
eHAiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3NldF9mdW5j
dGlvbl9uYW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9j
YWxsIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2Nh
bGwiLCAibGVuZ3RoIiA6IDkgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggZDk3M2JjZmIxMzdjMzJjMGM2ZGVlZGYzZGUwZTFkZDk0
MTY1NGM2Zi4uMTYyZGIyODJjZDU1MzkwNTAxODU1NzEwYzIxZWJiNDE3ZmE1MDVlNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE2
NCw2ICsxNjQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNv
ZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfZ2V0X2Vu
dW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4cDoK
ICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50OgogICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZToKQEAgLTE5Niw2ICsxOTcs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywg
T3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAg
Y2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICBj
YXNlIG9wX25ld19hc3luY19mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAg
ICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jl
c3Q6CkBAIC0zODgsNiArMzkwLDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNl
IG9wX25ld19mdW5jX2V4cDoKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBj
YXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVu
YzoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFy
YXJnczoKICAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9j
YWxsX2ZvcndhcmRfYXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAppbmRleCA1Yjc0ODNjZmVmMzg3OGMyNzJlMDA4Y2JkZWI3NTBkZTA2Mjdm
ODE1Li5mNzk5OTkwYjFjMzc1ODYxMTljNDRmZGZlODFkOGVhNzU1ZmM4NWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ2NCw2ICsxNDY0
LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9uZXdfYXN5bmNfZnVuYzogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51
Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAg
ICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2FzeW5jX2Z1bmMiKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDogewogICAgICAgICAgICAgaW50
IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUu
b3BlcmFuZDsKQEAgLTE0ODAsNiArMTQ4OCwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUo
cjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOiB7Cisg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBy
MSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJuZXdfYXN5bmNfZnVuY19leHAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0
YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3NldF9mdW5jdGlvbl9uYW1lOiB7CiAgICAgICAgICAgICBpbnQgZnVuY1JlZyA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG5hbWVSZWcgPSAoKytpdCktPnUub3BlcmFuZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKaW5kZXggMjVhMzU3YmY1NjExNjQ1MGMxYjBlMjU1Yzk3NzBhMjNhZDNlMTllYy4uZTkxOGE5
M2MyNGU2NzhkZTEyMmQ3NTUwMTE4MTkyZGI1NzdmMzE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTEyMiw3ICsxMjIs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lz
U3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNF
dmFsOyB9CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyc2VNb2RlOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3BhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CisgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJz
ZU1vZGUocGFyc2VNb2RlKCkpOyB9CiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250
ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4o
bV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxDb250ZXh0VHlwZT4obV9ldmFs
Q29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CmluZGV4IGJhYzQwNTQxM2E2YjJmZGQ5OTcyNzJjMjhmMGM3NGE3MjMwNmEzMzguLjZmNTU4Y2Y3
YTk3NGM4NTMzM2JhODUyMzAwMjE4ZmUyMzEyMmUxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9y
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVz
OyB9CiAgICAgCi0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CisgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1v
ZGUocGFyc2VNb2RlKCkpOyB9CiAKICAgICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVk
Q29udGV4dFR5cGUoKSBjb25zdCB7cmV0dXJuIHN0YXRpY19jYXN0PEpTQzo6RGVyaXZlZENvbnRl
eHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBm
N2UxMDMxN2EyMTRjNjQ4MzkwYjk0YjE4YmNmZDczNzNkNWNlMTdmLi5kMTQ5NTUxODYzNGY3ZTFh
Njg3NzU1Yjg5YWJlNzRmNjM3OTU4MDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTU4LDcgKzE1
OCw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgfQog
ICAgIAogCi0gICAgaWYgKG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlv
bkJvZHlQYXJzZU1vZGUobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpKSkKICAgICAgICAgcGVyZm9y
bUdlbmVyYXRvcmlmaWNhdGlvbihtX2NvZGVCbG9jay5nZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXgpOwogCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9ucyhzdGQ6Om1ha2Vf
dW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+KG1faW5zdHJ1Y3Rpb25zKSk7CkBAIC0y
NjgsMTUgKzI2OCwxNSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hvdWxk
Q2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxv
Y2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUt
PnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9k
ZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAm
JiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAg
Ly8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZl
cmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2Nv
cGUuCisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJz
ZU1vZGUpKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBhbmQgQXN5bmNGdW5jdGlvbiBuZXZlciBw
cm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2
ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0Fy
Z3VtZW50cyA9IGZhbHNlOwogCi0gICAgICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2Nv
cGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3Bl
IGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCisgICAgICAgIC8vIEdlbmVyYXRvciBhbmQgQXN5bmNG
dW5jdGlvbiB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJs
ZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCiAgICAgICAg
IHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOwogICAgIH0KIAotICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2Rl
ICYmIG5lZWRzQXJndW1lbnRzKSB7CisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9u
V3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUpICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAg
IC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFw
cGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8g
VGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVh
dGVkIGJlZm9yZSBzdGFydGluZyBpdC4KICAgICAgICAgLy8gVG8gd29ya2Fyb3VuZCBpdCwgd2Ug
ZXZhbHVhdGUgdGhlc2UgYXJndW1lbnRzIGFzIGFyZ3VtZW50cyBvZiBhIHdyYXBwaW5nIGdlbmVy
YXRvciBmdW5jdGlvbiwgYW5kIHJlZmVyZW5jZSBpdCBmcm9tIGEgZ2VuZXJhdG9yLgpAQCAtMzIw
LDEzICszMjAsMTQgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIGVtaXRFbnRlcigp
OwogCi0gICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlN
b2RlKQorICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFy
c2VNb2RlKSkKICAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbMV07
CiAKICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlz
SW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2Rl
KCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSk7CisgICAgICAgIEFTU0VSVCghaXNBc3luY0Z1bmN0aW9uQm9keVBhcnNl
TW9kZShwYXJzZU1vZGUpKTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9u
TmFtZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSk7CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1
cmVzKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkpOwogICAgICAgICBib29sIG1hcmtBc0Nh
cHR1cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZDsKQEAgLTUw
NSw3ICs1MDYsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgYm9vbCBzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxlID0gIWhh
dmVQYXJhbWV0ZXJOYW1lZEFyZ3VtZW50cyAmJiAhbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlv
bigpOworICAgICAgICBib29sIHNob3VsZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUgPSAhaGF2ZVBh
cmFtZXRlck5hbWVkQXJndW1lbnRzCisgICAgICAgICAgICAmJiAhU291cmNlUGFyc2VNb2RlU2V0
KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpKTsK
ICAgICAgICAgc2hvdWxkQ3JlYXRlQXJndW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3BlID0g
c2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJpYWJsZSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0Owog
ICAgICAgICAvLyBEbyBub3QgY3JlYXRlIGFyZ3VtZW50cyB2YXJpYWJsZSBpbiBjYXNlIG9mIEFy
cm93IGZ1bmN0aW9uLiBWYWx1ZSB3aWxsIGJlIGxvYWRlZCBmcm9tIHBhcmVudCBzY29wZQogICAg
ICAgICBpZiAoc2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJpYWJsZSAmJiAhc2hvdWxkQ3JlYXRlQXJn
dW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3BlKSB7CkBAIC01NDksNiArNTUxLDI5IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIEFTU0VSVCghaXNDb25zdHJ1Y3RvcigpKTsKKyAg
ICAgICAgQVNTRVJUKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSk7
CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKworICAgICAgICBpZiAo
cGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkgewor
ICAgICAgICAgICAgLy8gRklYTUU6IEVtaXQgdG9fdGhpcyBvbmx5IHdoZW4gQXN5bmNGdW5jdGlv
bkJvZHkgdXNlcyBpdC4KKyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTE1ODYKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgICAgICAgICBl
bWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgIH0K
KworICAgICAgICBlbWl0TmV3T2JqZWN0KG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJv
ZHlNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5
TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6IHsKICAg
ICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNvcnJlY3RseSBiZWZvcmUgaGVyZS4K
ICAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3RlciwganNVbmRlZmluZWQoKSk7CkBA
IC02MDgsNyArNjMzLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIC8vIFdlIG5l
ZWQgbG9hZCB8c3VwZXJ8ICYgfHRoaXN8IGZvciBhcnJvdyBmdW5jdGlvbiBiZWZvcmUgaW5pdGlh
bGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjawogICAg
IC8vIGlmIHdlIGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbi4gQmVjYXVzZSB8c3Vw
ZXJ8ICYgfHRoaXN8IHZhbHVlcyBjYW4gYmUgdXNlZCB0aGVyZQotICAgIGlmIChTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlID09IHBhcnNlTW9kZSAmJiAhaXNTaW1wbGVQYXJhbWV0
ZXJMaXN0KSB7CisgICAgaWYgKChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2Rl
KS5jb250YWlucyhwYXJzZU1vZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHx8IHBhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKSB7CiAg
ICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgZnVuY3Rpb25Ob2RlLT51c2Vz
U3VwZXJQcm9wZXJ0eSgpKQogICAgICAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rp
b25MZXhpY2FsRW52aXJvbm1lbnQoKTsKIApAQCAtNjI3LDEyICs2NTIsNDYgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlv
bk5vZGUsIFVubGlua2UKICAgICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJl
Zm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2Nv
cGVTdGFjaygpIiBpcyBjYWxsZWQKICAgICAvLyBiZWNhdXNlIGEgZnVuY3Rpb24ncyBkZWZhdWx0
IHBhcmFtZXRlciBFeHByZXNzaW9uTm9kZXMgd2lsbCB1c2UgdGVtcG9yYXJ5IHJlZ2lzdGVycy4K
ICAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hlY2tP
cHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CisK
KyAgICBUcnlEYXRhKiB0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSA9IG51bGxwdHI7CisgICAgaWYg
KGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKSAmJiAhaXNTaW1wbGVQ
YXJhbWV0ZXJMaXN0KSB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gdHJ5Rm9ybWFsUGFyYW1ldGVy
c1N0YXJ0ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAgICAgICB0cnlGb3JtYWxQ
YXJhbWV0ZXJzRGF0YSA9IHB1c2hUcnkodHJ5Rm9ybWFsUGFyYW1ldGVyc1N0YXJ0LmdldCgpKTsK
KyAgICB9CisKICAgICBpbml0aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVu
Y3Rpb25TY29wZVN0YWNrKHBhcmFtZXRlcnMsIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCwgZnVuY3Rp
b25Ob2RlLCBmdW5jdGlvblN5bWJvbFRhYmxlLCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgsIGNh
cHR1cmVzLCBzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2NvcGUpOwot
ICAgIAorCisgICAgaWYgKGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2Rl
KSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gZGlk
Tm90VGhyb3cgPSBuZXdMYWJlbCgpOworICAgICAgICBlbWl0SnVtcChkaWROb3RUaHJvdy5nZXQo
KSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBleGNlcHRpb24gPSBuZXdUZW1wb3Jhcnko
KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRocm93blZhbHVlID0gbmV3VGVtcG9yYXJ5
KCk7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gY2F0Y2hIZXJlID0gZW1pdExhYmVsKG5ld0xhYmVs
KCkuZ2V0KCkpOworICAgICAgICBwb3BUcnlBbmRFbWl0Q2F0Y2godHJ5Rm9ybWFsUGFyYW1ldGVy
c0RhdGEsIGV4Y2VwdGlvbi5nZXQoKSwgdGhyb3duVmFsdWUuZ2V0KCksIGNhdGNoSGVyZS5nZXQo
KSwgSGFuZGxlclR5cGU6OkNhdGNoKTsKKworICAgICAgICAvLyByZXR1cm4gQFByb21pc2UuQHJl
amVjdCh0aHJvd25WYWx1ZSk7CisgICAgICAgIFZhcmlhYmxlIHByb21pc2VWYXIgPSB2YXJpYWJs
ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5Qcm9taXNlUHJpdmF0ZU5hbWUo
KSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGVtaXRSZXNvbHZlU2NvcGUo
bmV3VGVtcG9yYXJ5KCksIHByb21pc2VWYXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJvbWlzZUNvbnN0cnVjdG9yID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgc2Nv
cGUuZ2V0KCksIHByb21pc2VWYXIsIFJlc29sdmVNb2RlOjpUaHJvd0lmTm90Rm91bmQpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvbWlzZVJlamVjdCA9IGVtaXRHZXRCeUlkKG5ld1Rl
bXBvcmFyeSgpLCBwcm9taXNlQ29uc3RydWN0b3IuZ2V0KCksIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOworCisgICAgICAgIENhbGxBcmd1
bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMSk7CisKKyAgICAgICAgZW1pdE1vdmUoYXJncy50
aGlzUmVnaXN0ZXIoKSwgcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpKTsKKyAgICAgICAgZW1pdE1v
dmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKDApLCB0aHJvd25WYWx1ZS5nZXQoKSk7CisKKyAgICAg
ICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZnVuY3Rpb25Ob2RlLT5maXJzdExpbmUoKSwgZnVuY3Rp
b25Ob2RlLT5zdGFydE9mZnNldCgpLCBmdW5jdGlvbk5vZGUtPmxpbmVTdGFydE9mZnNldCgpKTsK
KworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZW1pdENhbGwobmV3VGVtcG9y
YXJ5KCksIHByb21pc2VSZWplY3QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgZGl2
b3QsIGRpdm90LCBkaXZvdCwgRGVidWdnYWJsZUNhbGw6Ok5vKTsKKyAgICAgICAgZW1pdFJldHVy
bihyZXN1bHQuZ2V0KCkpOworCisgICAgICAgIGVtaXRMYWJlbChkaWROb3RUaHJvdy5nZXQoKSk7
CisgICAgfQorCiAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSAgZGVmYXVsdCBwYXJhbWV0ZXIgZXhw
cmVzc2lvbiwgdGhlbiBsb2FkaW5nIHx0aGlzfCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rpb24gbXVz
dCBiZSBkb25lCiAgICAgLy8gYWZ0ZXIgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNB
bmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBzZXRzIHVw
IHRoZQogICAgIC8vIFN5bWJvbFRhYmxlIHN0YWNrIGFuZCBlbWl0TG9hZFRoaXNGcm9tQXJyb3dG
dW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpIGNvbnN1bHRzIHRoZSBTeW1ib2xUYWJsZSBzdGFj
awotICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlID09IHBhcnNlTW9k
ZSAmJiBpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAgICBpZiAoU291cmNlUGFyc2VNb2RlU2V0
KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKSAmJiBpc1NpbXBsZVBhcmFt
ZXRlckxpc3QpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBmdW5j
dGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkpCiAgICAgICAgICAgICBlbWl0TG9hZFRoaXNG
cm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogICAgIApAQCAtNjQyLDcgKzcw
MSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0
aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgCiAgICAgLy8gU2V0IHVwIHRoZSBs
ZXhpY2FsIGVudmlyb25tZW50IHNjb3BlIGFzIHRoZSBnZW5lcmF0b3IgZnJhbWUuIFdlIHN0b3Jl
IHRoZSBzYXZlZCBhbmQgcmVzdW1lZCBnZW5lcmF0b3IgcmVnaXN0ZXJzIGludG8gdGhpcyBzY29w
ZSB3aXRoIHRoZSBzeW1ib2wga2V5cy4KICAgICAvLyBTaW5jZSB0aGV5IGFyZSBzeW1ib2wga2V5
ZWQsIHRoZXNlIHZhcmlhYmxlcyBjYW5ub3QgYmUgcmVhY2hlZCBmcm9tIHRoZSB1c3VhbCBjb2Rl
LgotICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlID09IHBhcnNlTW9k
ZSkgeworICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFy
c2VNb2RlKSkgewogICAgICAgICBBU1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7
CiAgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5zZXQoKm1fdm0sIGZ1bmN0aW9u
U3ltYm9sVGFibGUpOwogICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCA9
IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsKQEAgLTI2NDQsNiArMjcwMywyMSBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U2V0dGVyQnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogcHJvcGVydAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzZXR0ZXItPmluZGV4
KCkpOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0R2VuZXJhdG9yRmllbGRz
KFJlZ2lzdGVySUQqIG5leHRGdW5jdGlvbikKK3sKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3
ZSBqdXN0IGNyZWF0ZSBhbiBvYmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciByZWxhdGVkIGZpZWxk
cyBhcyBpdHMgcHJvcGVydGllcyBmb3IgZWFzZS4KKyAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZp
Y2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpTR2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5l
d19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysrIGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZh
dGUgcHJvcGVydGllcy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUxNTQ1CisKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVy
LCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZhdGVOYW1l
KCksIG5leHRGdW5jdGlvbiwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICBlbWl0
RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lKCksICZtX3RoaXNSZWdpc3RlciwgUHJv
cGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVy
YXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3Rh
dGVQcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSksIFByb3BlcnR5
Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JS
ZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJp
dmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktu
b3duRGlyZWN0KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
dGVCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHkpCiB7CiAgICAgZW1pdE9wY29kZShvcF9kZWxfYnlfaWQpOwpAQCAtMjk4Niw2
ICszMDYwLDExIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJl
c3Npb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvCiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CiAgICAgICAgIG9wY29kZUlEID0g
b3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpBc3luY01ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dG
dW5jdGlvbk1vZGU6CisgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOwor
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0z
MDA0LDcgKzMwODMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1
bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmNFeAogCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVy
SUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMpCiB7Ci0gICAgQVNTRVJUKGZ1bmMtPm1l
dGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGUgfHwgZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpB
c3luY0Fycm93RnVuY3Rpb25Nb2RlKTsKKyAgICBBU1NFUlQoU291cmNlUGFyc2VNb2RlU2V0KFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNB
cnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkp
KTsKICAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKGRzdCwgZnVuYy0+bWV0YWRh
dGEoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KQEAgLTMwMzgsNiArMzExNyw4IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBG
dW5jdGlvbk1ldGFkYXRhCiAgICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVu
Y3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOwogICAgIGlmIChmdW5jdGlvbi0+cGFy
c2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2Rl
KQogICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxzZSBp
ZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlv
bk1vZGUpCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2FzeW5jX2Z1bmMpOwogICAgIGVsc2UK
ICAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZDRjMWM4ZThlZWE4OGIxYzIwZjRh
OTVlNDUzNjkyY2NkZTQ5YmZiZi4uN2MwMTcyOTE2MzUxY2ZhMGM0ZjM4NTM0Yjg2ZTRjZTVlZTcx
YzYxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTc2LDcgKzU3NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBlbWl0UHV0R2V0dGVyU2V0dGVyKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBSZWdpc3RlcklEKiBn
ZXR0ZXIsIFJlZ2lzdGVySUQqIHNldHRlcik7CiAgICAgICAgIHZvaWQgZW1pdFB1dEdldHRlckJ5
VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCB1bnNpZ25lZCBwcm9w
ZXJ0eURlc2NyaXB0b3JPcHRpb25zLCBSZWdpc3RlcklEKiBnZXR0ZXIpOwogICAgICAgICB2b2lk
IGVtaXRQdXRTZXR0ZXJCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0
eSwgdW5zaWduZWQgcHJvcGVydHlEZXNjcmlwdG9yT3B0aW9ucywgUmVnaXN0ZXJJRCogc2V0dGVy
KTsKLSAgICAgICAgCisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBvYmplY3Qgd2l0aCBnZW5lcmF0
b3IgZmllbGRzIChAZ2VuZXJhdG9yVGhpcywgQGdlbmVyYXRvck5leHQsIEBnZW5lcmF0b3JTdGF0
ZSwgQGdlbmVyYXRvckZyYW1lKQorICAgICAgICB2b2lkIGVtaXRQdXRHZW5lcmF0b3JGaWVsZHMo
UmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9uKTsKKwogICAgICAgICBFeHBlY3RlZEZ1bmN0aW9uIGV4
cGVjdGVkRnVuY3Rpb25Gb3JJZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBF
eHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRD
YWxsSW5UYWlsUG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBl
Y3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CkBAIC04NDIsNyArODQ1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBuZXdEZXJp
dmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmU7CiAKLSAgICAgICAgICAg
IGlmIChtZXRhZGF0YS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0
aW9uTW9kZSkgeworICAgICAgICAgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5j
dGlvbk1vZGUpLmNvbnRhaW5zKG1ldGFkYXRhLT5wYXJzZU1vZGUoKSkpIHsKICAgICAgICAgICAg
ICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIHx8
IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQogICAgICAgICAgICAgICAgICAgICBuZXdE
ZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQ7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9jb2RlQmxvY2stPmlzQ2xhc3ND
b250ZXh0KCkgfHwgaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDM4N2NkZjgx
NTAzODU0NDFhMzRlOTYzZDZiOGEyODBhZjAzMjQwMi4uZWYyYzVlNjAyNGU0MTU0NDQxNjJiZGZk
NWZlZWVhODUwNTg0Y2ZiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQwMiwyNSArMzQwMiw2NCBAQCB2b2lkIEZ1
bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqKQogICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBuZXh0
LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJWE1F
OiBDdXJyZW50bHksIHdlIGp1c3QgY3JlYXRlIGFuIG9iamVjdCBhbmQgc3RvcmUgZ2VuZXJhdG9y
IHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBwcm9wZXJ0aWVzIGZvciBlYXNlLgotICAgICAgICAvLyBC
dXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpTR2VuZXJhdG9yIGNs
YXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysrIGZpZWxkcyBpbnN0
ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGllcy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQorICAgICAgICBnZW5lcmF0b3IuZW1p
dFB1dEdlbmVyYXRvckZpZWxkcyhuZXh0LmdldCgpKTsKIAotICAgICAgICBnZW5lcmF0b3IuZW1p
dERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZhdGVOYW1lKCks
IG5leHQuZ2V0KCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgICAgICBBU1NFUlQo
c3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQo
KSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5l
cmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAotICAg
ICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lz
dGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
VGhpc1ByaXZhdGVOYW1lKCksIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgUHJvcGVydHlOb2Rl
OjpLbm93bkRpcmVjdCk7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25N
b2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgU3Rh
dGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7Cisg
ICAgICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICAg
ICAgRXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0aWNfY2FzdDxFeHByU3Rh
dGVtZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBl
eHByID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOworICAgICAgICBBU1NFUlQoZXhwci0+aXNGdW5j
RXhwck5vZGUoKSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2Fz
dDxGdW5jRXhwck5vZGUqPihleHByKTsKIAotICAgICAgICBSZWdpc3RlcklEKiBpbml0aWFsU3Rh
dGUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCks
IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQ
cml2YXRlTmFtZSgpLCBpbml0aWFsU3RhdGUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKIAot
ICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJl
Z2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yRnJhbWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdWxs
KCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5z
dXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCB8fCBnZW5lcmF0b3IucGFyc2VN
b2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKSB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogRG9uJ3QgYWx3YXlzIGxvYWQgaG9tZSBvYmplY3QgZm9yIGFzeW5j
IGFycm93cworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0
SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOworICAgICAgICAgICAgZW1pdFB1dEhvbWVP
YmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsKKyAgICAgICAg
fQorCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0R2VuZXJhdG9yRmllbGRzKG5leHQuZ2V0KCkp
OwogCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0
TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKKworICAgICAg
ICAvLyBsb2FkIEBhc3luY0Z1bmN0aW9uUmVzdW1lLCBhbmQgY2FsbC4KKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHN0YXJ0QXN5bmNGdW5jdGlvbiA9IGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KTsKKyAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0Z1bmN0aW9uUmVzdW1lUHJpdmF0ZU5hbWUo
KSk7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChz
Y29wZS5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikp
OworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShzdGFydEFzeW5jRnVuY3Rpb24u
Z2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisKKyAgICAgICAgLy8g
cmV0dXJuIEBhc3luY0Z1bmN0aW9uUmVzdW1lLkBjYWxsKHRoaXMsIEBnZW5lcmF0b3IsIEB1bmRl
ZmluZWQsIEdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1hbE1vZGUpCisgICAgICAgIENhbGxBcmd1
bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDMpOworICAgICAgICB1bnNpZ25lZCBhcmd1
bWVudENvdW50ID0gMDsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lz
dGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoYXJncy5h
cmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyksIGdlbmVyYXRvci5nZW5lcmF0b3JSZWdp
c3RlcigpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rl
cihhcmd1bWVudENvdW50KyspLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVN
b2RlOjpOb3JtYWxNb2RlKSkpOworICAgICAgICAvLyBKU1RleHRQb3NpdGlvbihpbnQgX2xpbmUs
IGludCBfb2Zmc2V0LCBpbnQgX2xpbmVTdGFydE9mZnNldCkKKyAgICAgICAgSlNUZXh0UG9zaXRp
b24gZGl2b3QoZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsK
KworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXN1bHQu
Z2V0KCksIHN0YXJ0QXN5bmNGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdz
LCBkaXZvdCwgZGl2b3QsIGRpdm90LCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworICAgICAgICBnZW5l
cmF0b3IuZW1pdFJldHVybihyZXN1bHQuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6Cisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAgUmVmUHRyPExh
YmVsPiBnZW5lcmF0b3JCb2R5TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDU0MmE0NzEzZjUyZDVhOWZhOWM2M2U1
NmUwMTZlMjIzMDVhOGFkZjYuLjQ5YjFhODZlZDE1YWY0MWFmYWE5ZTdkMTNiODhhNWM0NDc3ODli
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTI5OSw2ICsyOTksOCBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdf
ZnVuY19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCiAgICAg
ICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQorICAgICAgICBERUZJTkVf
T1Aob3BfbmV3X2FzeW5jX2Z1bmMpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfYXN5bmNfZnVu
Y19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfb2JqZWN0KQogICAgICAgICBERUZJTkVf
T1Aob3BfbmV3X3JlZ2V4cCkKICAgICAgICAgREVGSU5FX09QKG9wX25vdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCmluZGV4IDA1ZGUyOGNlMWVkNjcwYjUxZmViOGY1M2MzOWE0ZmY1NDQ5MjhlNGEu
LjZkMjAyNDkzODdiMjkxYWJlYmRmYTlmYmI3NDdkYTgyNzA1ZjZmZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaApAQCAtNTQ0LDYgKzU0NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX25ld19hc3luY19mdW5jKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9v
cF9uZXdfYXN5bmNfZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdl
eHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25vdChJbnN0cnVjdGlvbiop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYjkwMWJiNDYz
MTA2MDAxMjBlMTFmODRlMWVjYTljYjYyNjc0OWI4ZC4uOWY5OWFiYTljZjk5ZWNkMjlhMDI5ZDgx
NDQyYmE4ZTJmZWVmNDA5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCkBAIC05NzEsOSArOTcxLDExIEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92
bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUp
OwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuYykKICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOwotICAgIGVsc2Ug
ewotICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAg
ICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCiAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1
bmNFeGVjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19h
c3luY19mdW5jKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBc3luY0Z1bmN0
aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CiAgICAgfQogfQogCkBAIC05ODcsNiArOTg5LDEx
IEBAIHZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlv
bik7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3Ry
dWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEp1bXAgbm90VW5kZWZpbmVkU2NvcGU7CkBA
IC0xMDA4LDkgKzEwMTUsMTEgQEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX25l
d19mdW5jX2V4cCkKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwg
ZHN0LCByZWdUMCwgZnVuY3Rpb24pOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQob3Bjb2Rl
SUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CisgICAgZWxzZSBpZiAob3Bjb2RlSUQg
PT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgIGVs
c2UgeworICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uLCBkc3QsIHJl
Z1QwLCBmdW5jdGlvbik7CiAgICAgfQogCiAgICAgZG9uZS5saW5rKHRoaXMpOwpAQCAtMTAyNiw2
ICsxMDM1LDExIEBAIHZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24o
Y3VycmVudEluc3RydWN0aW9uKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1
bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0X29w
X25ld19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBk
c3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggOGY4ZDRhZDM0NTNmZDQ2YjAzMDQzMmIz
MTljMDYzYjAzMjljMzk1NC4uZWJkNzdjZDAzODY4YmRjMWZiOGFhYmFlMGZiZjkzZDBlNzYxZGFi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00
OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5o
IgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5j
bHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5oIgpAQCAtMTE3MCw2ICsxMTcxLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jCiAg
ICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9yRnVuY3Rpb24+
KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOwogfQogCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAg
cmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlvbj4oZXhlYywg
c2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFs
bG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2Vs
bCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlv
bkNvbW1vbjxKU0FzeW5jRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUs
IHRydWUpOworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1l
KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBmdW5jQ2VsbCwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE5hbWUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGFkZmVmNzhjNmYwMGM1MDNkMDZmYmY4Njc2NTY4
N2U3ZGMxNDNjMjQuLmRiNWJhODk2NWE3YTUwMWJhMzUyN2FhNjU0ODg1ZTZjZjNkZDk1MzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0zNzUsNiArMzc1
LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihF
eGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNT
dGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVk
UmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RG
X0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3lu
Y0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CitF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRo
SW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBK
U0NlbGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0RnVu
Y3Rpb25OYW1lKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJO
QUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA4NzU4
MjUxZmE0YTFkNDlmOTEwMGJlYmVjMDg4NjViZDQxMmQ3ZGY1Li5mNThmNGY5NjZlYTc3NDNiZmM0
ZWM4MDdjMTFlZjNhYjRkZDQyOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKKyNp
bmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAg
LTExNDksNiArMTE1MCwxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dl
bmVyYXRvcl9mdW5jKQogICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVh
dGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7
CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuYykKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUu
b3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcK
KyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgYXN5bmMgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAg
IExMSU5UX1JFVFVSTihKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5j
dGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAt
MTE3MSw2ICsxMTgzLDE3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmNfZXhwKQogICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpj
cmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpT
U2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVy
OjpzY29wZSgpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9j
ay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7CisgICAgCisgICAgTExJTlRfUkVUVVJO
KEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworfQorCiBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2V0X2Z1bmN0aW9uX25hbWUpCiB7CiAgICAg
TExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmgKaW5kZXggOTg0ZTljYzQwMzAzMjc5YWE3MDJkZjhmZWI3ODhjM2I4Yjk2MDUwZS4uZDc2
MTM4YzEyNDRmZjdhYWY0ODNkMDgwM2FkNWJiODExN2VhNzlhOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKQEAgLTEwMyw2ICsxMDMsOCBAQCBMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CitMTElO
VF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19hc3luY19mdW5jKTsKK0xMSU5U
X1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmNfZXhwKTsKIExM
SU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2V0X2Z1bmN0aW9uX25hbWUpOwog
TExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3RydWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA1NjBkZjNl
Y2FiODJkYTgyYjI3ZjQ0MzYyNGQwZmRlOGU1MDFjZTllLi42NDQ1YTQ3Y2VkYTlhNWNmNzU5YTE2
ZTE3MmMzYmQ4NDZhYjlkYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMzIxLDYgKzEzMjEsMTIgQEAgX2xsaW50
X29wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK19sbGludF9vcF9u
ZXdfYXN5bmNfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpCisgICAgZGlzcGF0Y2goNCkKKworCiBfbGxp
bnRfb3BfbmV3X2FycmF5OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsT3Bjb2RlU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyYXkpCkBAIC0xNTk5LDYgKzE2MDUsMTIgQEAg
X2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FsbE9wY29kZVNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0
KQogCitfbGxpbnRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXN5bmNfZnVuY19leHApCisg
ICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3Bfc2V0X2Z1bmN0aW9uX25hbWU6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgIGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Nl
dF9mdW5jdGlvbl9uYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmlu
ZGV4IDg5NzRhZGJiMWRjZmQ2M2IxODczNTk5OWQ2MTY3Yzk3MmVlNjU0NTMuLjhiMDkzNTk1MWNm
ZGFmMGMzNTBiOGQ4ODkwM2ZiNzU4YjcyNjhmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VN
bwogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSAmJiAhbWF0Y2goT1BF
TkJSQUNFKTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAg
ICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAg
IGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9k
ZSkuY29udGFpbnMocGFyc2VNb2RlKSB8fCBpc0FzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBh
cnNlTW9kZSkpCisgICAgICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJz
ZU1vZGUocGFyc2VNb2RlKSkKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFt
ZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwpAQCAtNTY4LDExICs1Njgs
MTggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW4KICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29w
ZVJlZiBhc3luY0Z1bmN0aW9uQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAgICAgICAg
YXN5bmNGdW5jdGlvbkJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKGlubmVyUGFyc2VNb2Rl
KTsKLSAgICAgICAgU3ludGF4Q2hlY2tlciBhc3luY0Z1bmN0aW9uQ29udGV4dChjb25zdF9jYXN0
PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOwotICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9u
Qm9keUV4cHJlc3Npb24pCi0gICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUFycm93RnVuY3Rp
b25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGFzeW5jRnVuY3Rpb25Db250ZXh0
KSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBhcnJvdyBmdW5jdGlvbiIpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGFz
eW5jRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3lu
YyBmdW5jdGlvbiIpOworICAgICAgICBTeW50YXhDaGVja2VyIHN5bnRheENoZWNrZXIoY29uc3Rf
Y2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKKyAgICAgICAgaWYgKGlzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uKSB7CisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dlclBhcnNlRGF0
YSkKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVF
eHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpLCAiQ2Fubm90IHBhcnNlIHRoZSBi
b2R5IG9mIGFzeW5jIGFycm93IGZ1bmN0aW9uIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJv
ZHlTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBv
ZiBhc3luYyBhcnJvdyBmdW5jdGlvbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKG1fZGVidWdnZXJQYXJzZURhdGEpCisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UocGFy
c2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBv
ZiBhc3luYyBmdW5jdGlvbiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZh
aWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgbW9kZSksICJDYW5u
b3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgZnVuY3Rpb24iKTsKKyAgICAgICAgfQogICAgICAg
ICBwb3BTY29wZShhc3luY0Z1bmN0aW9uQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVl
VmFyaWFibGVJbmZvKTsKICAgICB9CiAgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5j
dGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4s
IHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwg
cGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9z
dXBlckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQsIGluZm8uZnVuY3Rpb25MZW5ndGgsIGlu
bmVyUGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CkBAIC0yMzQxLDcg
KzIzNDgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogICAgICAgICByZXR1cm4gcGFyc2VG
dW5jdGlvbkJvZHkoY29udGV4dCwgc3ludGF4Q2hlY2tlciwgc3RhcnRMb2NhdGlvbiwgc3RhcnRD
b2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVy
c1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBmdW5jdGlvbkJv
ZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQsIGZ1bmN0aW9uSW5mby5mdW5jdGlv
bkxlbmd0aCwgbW9kZSk7CiAgICAgfTsKIAotICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSB8fCBpc0FzeW5jRnVuY3Rpb25XcmFwcGVy
UGFyc2VNb2RlKG1vZGUpKSB7CisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3Jh
cHBlclBhcnNlTW9kZShtb2RlKSkgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9y
Qm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAgICAgICAgU291cmNlUGFyc2VNb2RlIGlu
bmVyUGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTsKICAgICAg
ICAgaWYgKGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUobW9kZSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGFkNWQzNmFmYmFjZjNkZWRiYWUwNmNhODYy
Mjg4NzBmNjMwMzg1MzguLmE1NDkzM2U3OGUwOWJlMTkxZDIyN2E4ZmVmZWQyODc2YTcxNTk1NDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjQ1LDcgKzI0NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6Ci0gICAgICAgICAgICBzZXRJc0FzeW5jQXJyb3dG
dW5jdGlvbkJvZHkoKTsKKyAgICAgICAgICAgIHNldElzQXN5bmNGdW5jdGlvbkJvZHkoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZToKQEAgLTEwOTgsNyArMTA5OCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAg
ICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUoKSAtIDE7CiAgICAgICAgIEFTU0VSVChp
IDwgbV9zY29wZVN0YWNrLnNpemUoKSAmJiBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKLSAgICAgICAg
d2hpbGUgKGkgJiYgKCFtX3Njb3BlU3RhY2tbaV0uaXNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgbV9z
Y29wZVN0YWNrW2ldLmlzR2VuZXJhdG9yQm91bmRhcnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNB
cnJvd0Z1bmN0aW9uQm91bmRhcnkoKSkpCisgICAgICAgIHdoaWxlIChpICYmICghbV9zY29wZVN0
YWNrW2ldLmlzRnVuY3Rpb25Cb3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFja1tpXS5pc0dlbmVyYXRv
ckJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkg
fHwgbV9zY29wZVN0YWNrW2ldLmlzQXJyb3dGdW5jdGlvbkJvdW5kYXJ5KCkpKQogICAgICAgICAg
ICAgaS0tOwogICAgICAgICAvLyBXaGVuIHJlYWNoaW5nIHRoZSB0b3AgbGV2ZWwgc2NvcGUgKGl0
IGNhbiBiZSBub24gb3JkaW5hcnkgZnVuY3Rpb24gc2NvcGUpLCB3ZSByZXR1cm4gaXQuCiAgICAg
ICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBpKTsKQEAgLTEyMjgsNiArMTIyOCwx
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgaS0tOwogICAgICAgICAgICAgQVNTRVJUKGkgPCBt
X3Njb3BlU3RhY2suc2l6ZSgpKTsKICAgICAgICAgfQorICAgICAgICBpZiAoKG1fc2NvcGVTdGFj
a1tpXS5pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFja1tpXS5pc0dlbmVy
YXRvckJvdW5kYXJ5KCkpICYmIGkpIHsKKyAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgIEFT
U0VSVChpIDwgbV9zY29wZVN0YWNrLnNpemUoKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IG1fc2NvcGVTdGFja1tpXS5oYXNEZWNsYXJlZFBhcmFtZXRlcihpZGVudCk7CiAgICAgfQogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IGEwZDc0
MDQ5NDE1ZTRiODQ3MzU2MmUzNmU2MjIwZDMwY2U1MWJhNmEuLjZkYTg4MzdhMzc5NDE3MmI0YzU1
NmIzN2QyM2Y5OTc2ZWU2ZjBiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlck1vZGVzLmgKQEAgLTE0OCw2ICsxNDgsMzIgQEAgQUxXQVlTX0lOTElORSBib29sIGlzTWV0
aG9kUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlKS5jb250YWlucyhwYXJzZU1vZGUpOwogfQogCitBTFdB
WVNfSU5MSU5FIGJvb2wgaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKFNv
dXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCit7CisgICAgcmV0dXJuIFNvdXJjZVBhcnNlTW9kZVNl
dCgKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSwKKyAgICAgICAg
U291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGUsCisgICAgICAgIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7
Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbldyYXBw
ZXJQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKK3sKKyAgICByZXR1cm4gU291
cmNlUGFyc2VNb2RlU2V0KAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBw
ZXJGdW5jdGlvbk1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1v
ZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSwKKyAg
ICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGUpLmNvbnRhaW5zKHBhcnNlTW9k
ZSk7Cit9CisKK0FMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUoU291
cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKK3sKKyAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0
KAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUsCisgICAgICAgIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7
Cit9CisKKwogQUxXQVlTX0lOTElORSBib29sIGlzTW9kdWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUpIAogeyAKICAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KCAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE3NjdjNTdiZjJlNjVmZDdlZDBiOTUyYWQxYmQy
YjM5YjBkYTlhZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+Lgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJM
RShBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gQXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBc3luY0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3Ip
IH07CisKK0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZt
LCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgIkFzeW5jRnVuY3Rpb24iKTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBw
cm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIC8vIE51
bWJlciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCisgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRP
bmx5IHwgRG9udEVudW0pOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBB
cmdMaXN0IGFyZ3MoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RG
dW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxP
YmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYykpOworfQorCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50
ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCBGdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKSk7Cit9CisKK0NhbGxUeXBlIEFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQor
eworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNhbGxBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3I7CisgICAgcmV0dXJuIENhbGxUeXBlOjpIb3N0OworfQorCitDb25zdHJ1Y3RUeXBlIEFz
eW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1
Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0
aW9uID0gY29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDb25z
dHJ1Y3RUeXBlOjpIb3N0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDM1YTJjMWU0ZjkxNWNhYzBiNGIxNzczZTZkMDU4OWUyNzQ3NDdkNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU7CisKK2NsYXNzIEFzeW5jRnVuY3Rpb25D
b25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0
YXRpYyBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0u
aGVhcCkpIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAg
Y29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsK
KyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBl
IGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBD
YWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMWYwZTEwNmVlNjcxMzZlOTI3
MDFkNjhjMzlkOTViMmZjNDg2NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDU3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2lu
Y2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNB
cnJheS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNp
bmNsdWRlICJMZXhlci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEFz
eW5jRnVuY3Rpb25Qcm90b3R5cGU6OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFzeW5jRnVuY3Rpb25Qcm90b3R5
cGUpIH07CisKK0FzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVj
dCh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygmdm0sICJB
c3luY0Z1bmN0aW9uIiksIERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHZtLnByb3RvdHlwZU1h
cC5hZGRQcm90b3R5cGUodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIyMDFlNmI4ZmQ1ODk4YTIyMWUwNjJhNzhmM2VhNjBkZWE3OWE4MjIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0
aW9uUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBERUNMQVJFX0lO
Rk87CisKKyAgICBzdGF0aWMgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0Z1bmN0aW9u
UHJvdG90eXBlPih2bS5oZWFwKSkgQXN5bmNGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJl
KTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVy
biBwcm90b3R5cGU7CisgICAgfQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykK
KyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
ICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJp
dmF0ZToKKyAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZDJmMzM1MmQ2MDY4YjExOWZlMDQ5
MzEwYzkzODg2N2YyNzk4YjUxMi4uNTE0NTJlYjc1NDkxYjNkYmFiYzRmMDhkMDYzNjA2YmIyMjYz
MDU4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlv
bkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpT
QXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dl
bmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTkzLDE4
ICs5NCwzMyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVk
Q2hlY2soCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKKyAgICBjb25zdCBjaGFyKiBwcmVmaXggPSBudWxscHRyOwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKGZ1bmN0aW9u
Q29uc3RydWN0aW9uTW9kZSkgeworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpG
dW5jdGlvbjoKKyAgICAgICAgc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVj
dHVyZSgpOworICAgICAgICBwcmVmaXggPSAie2Z1bmN0aW9uICI7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3I6CisgICAgICAgIHN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAg
ICAgICAgcHJlZml4ID0gIntmdW5jdGlvbiAqIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBG
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jOgorICAgICAgICBzdHJ1Y3R1cmUgPSBnbG9i
YWxPYmplY3QtPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgcHJlZml4ID0gInth
c3luYyBmdW5jdGlvbiAiOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICAvLyBIb3cgd2Ug
c3RyaW5naWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0
aWJpbGl0eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI0MzUwLgogICAgIFN0cmluZyBwcm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkK
LSAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0
cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIg
OiAiIiwgZnVuY3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuXG59fSIpOworICAgICAgICBwcm9n
cmFtID0gbWFrZVN0cmluZyhwcmVmaXgsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxu
fX0iKTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQotICAgICAgICBwcm9ncmFtID0g
bWFrZVN0cmluZygie2Z1bmN0aW9uICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUu
c3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSwgIlxufX0iKTsKKyAgICAgICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcocHJlZml4LCBmdW5jdGlv
bk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSwgIlxufX0iKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIntmdW5jdGlvbiAiKTsKLSAgICAg
ICAgaWYgKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1v
ZGU6OkdlbmVyYXRvcikKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcqJyk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKHByZWZpeCk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9u
TmFtZS5zdHJpbmcoKSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYykuZ2V0KCkp
OwpAQCAtMTI2LDEyICsxNDIsMjAgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBp
bmdFdmFsRW5hYmxlZENoZWNrKAogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGV4Y2VwdGlvbik7CiAgICAgfQogCi0gICAgU3RydWN0dXJlKiBzdWJjbGFzc1N0cnVj
dHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG5l
d1RhcmdldCwgZnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZTo6R2VuZXJhdG9yID8gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVy
ZSgpIDogZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUq
IHN1YmNsYXNzU3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1
Y3R1cmUoZXhlYywgbmV3VGFyZ2V0LCBzdHJ1Y3R1cmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAgaWYgKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9
PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikKKyAgICBzd2l0Y2ggKGZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSkgeworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
OjpGdW5jdGlvbjoKKyAgICAgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rp
b24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOworICAg
IGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3I6CiAgICAgICAgIHJldHVy
biBKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3Qt
Pmdsb2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKLSAgICByZXR1cm4gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJj
bGFzc1N0cnVjdHVyZSk7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5j
OgorICAgICAgICByZXR1cm4gSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBn
bG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAgICB9CisK
KyAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1bmN0aW9uIENvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXggMzFj
MzNkNmFmNGZmMTJiYzI0YzFlMmI1YmY0ZTU1NThkNzY1NjkwNi4uZGVlZTlhNTVkNmYyYzYxZTlm
NzE0NDgzYjMxYWJkNTdmYjFjYWU1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRl
OgogZW51bSBjbGFzcyBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgewogICAgIEZ1bmN0aW9uLAog
ICAgIEdlbmVyYXRvciwKKyAgICBBc3luYywKIH07CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJ
ZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBX
VEY6OlRleHRQb3NpdGlvbiYsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZTo6RnVuY3Rpb24sIEpTVmFsdWUgbmV3VGFyZ2V0ID0gSlNWYWx1ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcAppbmRleCA1ZmMwY2EzZjQzODdiZGMyNzZmOGQ4OWE0MmE2MTJkY2I0MjVjM2ZiLi4xZjhk
ZWNmZDdmNDhmMTZjOGVlMTAzNTcyMTlmNDJkOTAyMzI1OTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAj
aW5jbHVkZSAiSlNTdHJpbmcuaCIKQEAgLTEwMyw2ICsxMDQsMTUgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgY2xhc3NT
b3VyY2UudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSk7CiAgICAgICAgIH0KIAorICAgICAgICBp
ZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTQXN5bmNGdW5jdGlvbjo6aW5mbygpKSkgeworICAgICAg
ICAgICAgU3RyaW5nIGZ1bmN0aW9uSGVhZGVyID0gZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9u
KCkgPyAiYXN5bmMgIiA6ICJhc3luYyBmdW5jdGlvbiAiOworCisgICAgICAgICAgICBTdHJpbmdW
aWV3IHNvdXJjZSA9IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAor
ICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAorICAg
ICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpICsgZXhlY3V0
YWJsZS0+c291cmNlKCkubGVuZ3RoKCkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsIGZ1bmN0aW9uSGVhZGVyLCBmdW5jdGlv
bi0+bmFtZSh2bSksIHNvdXJjZSkpOworICAgICAgICB9CisKICAgICAgICAgU3RyaW5nIGZ1bmN0
aW9uSGVhZGVyID0gZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkgPyAiIiA6ICJmdW5jdGlv
biAiOwogICAgICAgICAKICAgICAgICAgU3RyaW5nVmlldyBzb3VyY2UgPSBleGVjdXRhYmxlLT5z
b3VyY2UoKS5wcm92aWRlcigpLT5nZXRSYW5nZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiYTc0MzcyM2JkYzdm
YWVlZmY2MjUxZTJmZjJhMmRkYzY0MjhlNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1
bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
ICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNsdWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y29uc3QgQ2xhc3NJbmZvIEpTQXN5bmNGdW5jdGlvbjo6c19pbmZvID0geyAiQXN5bmNGdW5jdGlv
biIsICAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQXN5bmNG
dW5jdGlvbikgfTsKKworSlNBc3luY0Z1bmN0aW9uOjpKU0FzeW5jRnVuY3Rpb24oVk0mIHZtLCBG
dW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUp
Cit7Cit9CisKK0pTQXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJbXBsKFZN
JiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9u
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBc3luY0Z1bmN0aW9uPih2bS5oZWFwKSkg
SlNBc3luY0Z1bmN0aW9uKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBB
U1NFUlQoYXN5bmNGdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICBh
c3luY0Z1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGFzeW5jRnVuY3Rp
b247Cit9CisKK0pTQXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZt
LCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAg
IEpTQXN5bmNGdW5jdGlvbiogYXN5bmNGdW5jdGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFi
bGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUo
KSk7CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0s
IGFzeW5jRnVuY3Rpb24sICJBbGxvY2F0aW5nIGFuIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgcmV0
dXJuIGFzeW5jRnVuY3Rpb247Cit9CisKK0pTQXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9u
OjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUq
IHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBKU0FzeW5jRnVuY3Rpb24qIGFz
eW5jRnVuY3Rpb24gPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJl
KTsKKyAgICBleGVjdXRhYmxlLT5zaW5nbGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwg
YXN5bmNGdW5jdGlvbiwgIkFsbG9jYXRpbmcgYW4gYXN5bmMgZnVuY3Rpb24iKTsKKyAgICByZXR1
cm4gYXN5bmNGdW5jdGlvbjsKK30KKworSlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246
OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIHJldHVy
biBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgp
LT5hc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZGE4N2RiNmQz
ODVhNzlkNTU3NmMxYjcyYTEzNGNhM2UyMWJmMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0FzeW5jRnVuY3Rpb24gOiBwdWJsaWMgSlNG
dW5jdGlvbiB7CisgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgVk07Citw
dWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1bmN0aW9uIEJhc2U7CisKKyAgICBjb25zdCBzdGF0aWMg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgSlNBc3luY0Z1bmN0aW9uKiBjcmVhdGUo
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisgICAgc3RhdGljIEpTQXN5bmNG
dW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVj
dHVyZSopOworICAgIHN0YXRpYyBKU0FzeW5jRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3Bl
Kik7CisKKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxp
bmVDYXBhY2l0eSk7CisgICAgICAgIHJldHVybiBzaXplb2YoSlNBc3luY0Z1bmN0aW9uKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChnbG9iYWxPYmplY3QpOworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0FzeW5j
RnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7
CisKKyAgICBzdGF0aWMgSlNBc3luY0Z1bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiwgRnVuY3Rpb25F
eGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggZjQ4Y2JjZjA5MTMyY2FhNjdlYzcxZjU3NTE0OTAwYzhlY2UwMjgwYi4uYzRjM2Nl
MGM5OWQ3YTQxY2Y3MzdmZGU1ZDdmYWQ1YmRhYzZmNzExYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzMsNiArMzMsOCBAQAog
I2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJBcnJheUl0ZXJhdG9yUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiQm9vbGVhbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgpAQCAtNjMsNiArNjUsNyBAQAogI2lu
Y2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNB
c3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtNTg1
LDYgKzU4OCw4IEBAIG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
aW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoCiAgICAgbV90aHJvd1R5cGVFcnJv
ckZ1bmN0aW9uLnNldCh2bSwgdGhpcywgdGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICBK
U0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5j
dGlvblByb3RvdHlwZS5nZXQoKSksIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1f
ZnVuY3Rpb25Db25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIChGdW5jdGlvbkNvbnN0cnVjdG9yKilm
dW5jdGlvbkNvbnN0cnVjdG9yKTsKKwogICAgIEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3Ry
dWN0b3IgPSBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIHRoaXMsIEFycmF5Q29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSks
IG1fYXJyYXlQcm90b3R5cGUuZ2V0KCksIG1fc3BlY2llc0dldHRlclNldHRlci5nZXQoKSk7CiAg
ICAgbV9hcnJheUNvbnN0cnVjdG9yLnNldCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CiAg
ICAgCkBAIC02MzAsNyArNjM1LDE3IEBAIG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jCiAKICAgICBt
X2dlbmVyYXRvclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdl
dCgpLCBEb250RW51bSB8IFJlYWRPbmx5KTsKICAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKSwgRG9udEVudW0gfCBSZWFkT25seSk7
Ci0gICAgCisKKyAgICBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAg
ICBbXShMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAg
ICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlID0gQXN5bmNG
dW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0UHJvdG90eXBlKGFz
eW5jRnVuY3Rpb25Qcm90b3R5cGUpOworICAgICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSlNB
c3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQu
cHJvdG90eXBlKSk7CisgICAgICAgICAgICBpbml0LnNldENvbnN0cnVjdG9yKFByb3BlcnR5TmFt
ZShudWxscHRyKSwgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgQXN5
bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9i
YWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0aW9uQ29uc3RydWN0b3IuZ2V0KCkpLCBhc3luY0Z1bmN0
aW9uUHJvdG90eXBlKSk7CisKKyAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5wdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbihpbml0LnZtLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmFzeW5jRnVuY3Rpb25SZXN1bWVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVC
dWlsdGluRnVuY3Rpb24oaW5pdC52bSwgYXN5bmNGdW5jdGlvblByb3RvdHlwZUFzeW5jRnVuY3Rp
b25SZXN1bWVDb2RlR2VuZXJhdG9yKGluaXQudm0pLCBpbml0Lmdsb2JhbCksIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICAgICAgfSk7CisKICAgICBtX29iamVjdFByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Q
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fYXJy
YXlQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMTEwMiw2
ICsxMTE3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJy
b3JHZXR0ZXJTZXR0ZXIudmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fdGhyb3dUeXBlRXJyb3JBcmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0
ZXIpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlcik7Cisg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b3R5cGUpOwogCiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG90eXBlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvdHlwZSk7CkBAIC0xMTEw
LDYgKzExMjYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1faXRlcmF0b3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9nZW5lcmF0b3JQcm90b3R5cGUpOworICAgIHRoaXNPYmplY3QtPm1fYXN5bmNG
dW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9tb2R1bGVMb2FkZXJQcm90b3R5cGUpOwogCiAgICAgdGhpc09iamVjdC0+bV9k
ZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNDA4NDZjZTI5N2I0N2MyODVl
YzQwOTFjZDczNDAyOTVjMDZkYTVmMC4uMmRkNDQxNjlkMWYxY2MwOGJhYzYxN2ViNzViMjQwZjAz
NjU2MzJjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBcnJheUNv
bnN0cnVjdG9yOwogY2xhc3MgQXJyYXlQcm90b3R5cGU7CitjbGFzcyBBc3luY0Z1bmN0aW9uUHJv
dG90eXBlOwogY2xhc3MgQm9vbGVhblByb3RvdHlwZTsKIGNsYXNzIENvbnNvbGVDbGllbnQ7CiBj
bGFzcyBEZWJ1Z2dlcjsKQEAgLTYzLDYgKzY0LDcgQEAgY2xhc3MgRXJyb3JDb25zdHJ1Y3RvcjsK
IGNsYXNzIEVycm9yUHJvdG90eXBlOwogY2xhc3MgRXZhbENvZGVCbG9jazsKIGNsYXNzIEV2YWxF
eGVjdXRhYmxlOworY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3RvcjsKIGNsYXNzIEZ1bmN0aW9uUHJv
dG90eXBlOwogY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlOwogY2xhc3MgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGU7CkBAIC0yMzMsNiArMjM1LDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9zeW50YXhFcnJvckNv
bnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5
cGVFcnJvckNvbnN0cnVjdG9yOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFy
cmllcjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAgICAgV3Jp
dGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogICAgIFdy
aXRlQmFycmllcjxBcnJheUNvbnN0cnVjdG9yPiBtX2FycmF5Q29uc3RydWN0b3I7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKQEAg
LTMwNiw2ICszMDksNyBAQCBwdWJsaWM6CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5h
bWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAg
ICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xsYXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlOwpAQCAtNTI3LDYg
KzUzMSwxOSBAQCBwdWJsaWM6CiAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5nZXQoKTsgfQogICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAor
ICAgIExhenlDbGFzc1N0cnVjdHVyZSYgbGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZTsKKyAgICB9CisgICAg
Y29uc3QgTGF6eUNsYXNzU3RydWN0dXJlJiBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOworICAg
IH0KKyAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKCkg
Y29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBc3luY0Z1bmN0aW9uUHJvdG90eXBlKj4o
bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5wcm90b3R5cGUodGhpcykpOyB9CisgICAgQXN5
bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3RvdHlwZUNvbmN1cnJlbnRseSgp
IGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXN5bmNGdW5jdGlvblByb3RvdHlwZSo+
KGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkucHJvdG90eXBlQ29uY3VycmVudGx5KCkpOyB9
CisgICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUq
IGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25jdXJyZW50bHkoKSBjb25zdCB7IHJldHVybiBsYXp5
QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLmdldENvbmN1cnJlbnRseSgpOyB9CisKICAgICBTdHJ1
Y3R1cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2Vy
U2NvcGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0K
ICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA2ZmM1YzA0MWEz
NmRjYjdlN2U3MzRmNjg0YzJhNWZmZGFmZWJlNmI5Li45ODYxNDljNzA0MzMzODM4YjlhMzMxYjNk
ZThmMTE5NTI5Y2ZhZTBmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAxNi0xMC0yMCAgQ2FpdGxpbiBQb3R0
ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIGltcGxlbWVudCBydW50aW1l
IGZvciBhc3luYyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2Mzc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoc2hvdWxk
VGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJv
d1N5bnRheEVycm9yKToKKyAgICAgICAgKGxldC5Bc3luY0Z1bmN0aW9uLmFzeW5jKToKKyAgICAg
ICAgKGFzeW5jLmFzeW5jRnVuY3Rpb25Gb3JQcm90byk6CisgICAgICAgIChPYmplY3QuZ2V0UHJv
dG90eXBlT2YuYXN5bmMpOgorICAgICAgICAoT2JqZWN0LmdldFByb3RvdHlwZU9mLmFzeW5jLm1l
dGhvZCk6CisgICAgICAgIChhc3luYyk6CisgICAgICAgIChhc3luYy5tZXRob2QpOgorICAgICAg
ICAoYXN5bmMuYXN5bmNOb25Db25zdHJ1Y3RvckRlY2wpOgorICAgICAgICAoc2hvdWxkVGhyb3cu
bmV3LmFzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93Lm5ldy5hc3luYy5ub25Db25zdHJ1Y3Rv
cik6CisgICAgICAgIChhc3luYy5hc3luY0RlY2wpOgorICAgICAgICAoYXN5bmMuZik6CisgICAg
ICAgIChNeUVycm9yKToKKyAgICAgICAgKGFzeW5jLmFzeW5jRGVjbFRocm93ZXIpOgorICAgICAg
ICAoc2hvdWxkVGhyb3dBc3luYy5hc3luYyk6CisgICAgICAgIChyZXNvbHZlTGF0ZXIpOgorICAg
ICAgICAocmVqZWN0TGF0ZXIpOgorICAgICAgICAoYXN5bmMucmVzdW1lQWZ0ZXJOb3JtYWwpOgor
ICAgICAgICAoTy5hc3luYy5yZXN1bWVBZnRlck5vcm1hbCk6CisgICAgICAgIChyZXN1bWVBZnRl
ck5vcm1hbEFycm93LmFzeW5jKToKKyAgICAgICAgKGFzeW5jLnJlc3VtZUFmdGVyVGhyb3cpOgor
ICAgICAgICAoTy5hc3luYy5yZXN1bWVBZnRlclRocm93KToKKyAgICAgICAgKHJlc3VtZUFmdGVy
VGhyb3dBcnJvdy5hc3luYyk6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL2Fz
eW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZFRocm93KToKKyAgICAgICAgKFN5bnRheEVycm9yLkNhbnN0cmluZ19hcHBlYXJlZF9oZXJlYXdh
aXQuY2hlY2tNb2R1bGVTeW50YXhFcnJvci5TdHJpbmcucmF3LmF3YWl0KToKKyAgICAgICAgKGNo
ZWNrTW9kdWxlU3ludGF4RXJyb3IuU3RyaW5nLnJhdy5hd2FpdCk6CisgICAgICAgIChjaGVja01v
ZHVsZVN5bnRheEVycm9yLlN0cmluZy5yYXcuYXN5bmMuYXdhaXQpOgorICAgICAgICAoU3ludGF4
RXJyb3IuQ2Fubm90LmRlY2xhcmUubmFtZWQpOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1hd2Fp
dC1tb3ppbGxhLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3Vs
ZEJlQXN5bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3dB
c3luYyk6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoc2hvdWxkVGhyb3dTeW50YXhFcnJv
cik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZW1wdHkpOgorICAgICAgICAobW96U2Vt
YW50aWNzLmFzeW5jLnNpbXBsZVJldHVybik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMu
c2ltcGxlQXdhaXQpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZUF3YWl0QXN5
bmMpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnJldHVybk90aGVyQXN5bmMpOgorICAg
ICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZVRocm93ZXIpOgorICAgICAgICAobW96U2Vt
YW50aWNzLmFzeW5jLmRlbGVnYXRlZFRocm93ZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFz
eW5jLnRyeUNhdGNoKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy50cnlDYXRjaFRocm93
KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy53ZWxsRmluYWxseSk6CisgICAgICAgICht
b3pTZW1hbnRpY3MuYXN5bmMuZmluYWxseU1heUZhaWwpOgorICAgICAgICAobW96U2VtYW50aWNz
LmFzeW5jLmVtYmVkZGVkLmFzeW5jLmlubmVyKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3lu
Yy5lbWJlZGRlZCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZmliKToKKyAgICAgICAg
KG1velNlbWFudGljcy5hc3luYy5pc09kZC5hc3luYy5pc0V2ZW4pOgorICAgICAgICAobW96U2Vt
YW50aWNzLmFzeW5jLmlzT2RkKToKKyAgICAgICAgKG1velNlbWFudGljcy5oYXJkY29yZUZpYi5h
c3luYy5maWIyKToKKyAgICAgICAgKG1velNlbWFudGljcy5uYW1lZEFzeW5jRXhwci5hc3luYy5z
aW1wbGUpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFzeW5j
LmZpcnN0KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5leGVjdXRpb25PcmRlci5hc3lu
Yy5zZWNvbmQpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFz
eW5jLnRoaXJkKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5leGVjdXRpb25PcmRlcik6
CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMubWlzY2VsbGFuZW91cyk6CisgICAgICAgICht
b3pTZW1hbnRpY3MudGhyb3dlcik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZGVmYXVs
dEFyZ3MpOgorICAgICAgICAobW96U2VtYW50aWNzLnNob3VsZFRocm93KToKKyAgICAgICAgKG1v
elNlbWFudGljcyk6CisgICAgICAgIChtb3pNZXRob2RzLlgpOgorICAgICAgICAobW96TWV0aG9k
cy5YLnByb3RvdHlwZS5hc3luYy5nZXRWYWx1ZSk6CisgICAgICAgIChtb3pNZXRob2RzLlgucHJv
dG90eXBlLnNldFZhbHVlKToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuYXN5bmMu
aW5jcmVtZW50KToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuYXN5bmMuZ2V0QmFz
ZUNsYXNzTmFtZSk6CisgICAgICAgIChtb3pNZXRob2RzLlguYXN5bmMuZ2V0U3RhdGljVmFsdWUp
OgorICAgICAgICAobW96TWV0aG9kcy5ZLnByb3RvdHlwZS5hc3luYy5nZXRCYXNlQ2xhc3NOYW1l
KToKKyAgICAgICAgKG1vek1ldGhvZHMuWSk6CisgICAgICAgIChtb3pGdW5jdGlvbk5hbWVJbmZl
cnJlbmNlLmFzeW5jLnRlc3QpOgorICAgICAgICAobW96U3ludGF4RXJyb3JzKToKKyAgICAgICAg
KiBzdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2ZWQtd29yZC5qczogQWRkZWQuCisgICAgICAgIChh
c3NlcnQpOgorICAgICAgICAoc2hvdWxkVGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgIChBc3lu
Y0Z1bmN0aW9uLmFzeW5jKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25z
X2xleGljYWxfYXJndW1lbnRzX2JpbmRpbmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKToK
KyAgICAgICAgKG5vQXJndW1lbnRzQXJyb3cyLmFzeW5jKToKKyAgICAgICAgKiBzdHJlc3MvYXN5
bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfbmV3LnRhcmdldF9iaW5kaW5nLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAo
c2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChDMSk6CisgICAgICAgIChDMik6CisgICAgICAg
IChzaG91bGRUaHJvd0FzeW5jLmFzeW5jKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3df
ZnVuY3Rpb25zX2xleGljYWxfc3VwZXJfYmluZGluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKEJhc2VDbGFzcy5wcm90
b3R5cGUuYmFzZUNsYXNzVmFsdWUpOgorICAgICAgICAoQmFzZUNsYXNzLnByb3RvdHlwZS5nZXQg
cHJvcGVydHkpOgorICAgICAgICAoQmFzZUNsYXNzKToKKyAgICAgICAgKENoaWxkQ2xhc3MucHJv
dG90eXBlLmFzeW5jU3VwZXJQcm9wKToKKyAgICAgICAgKENoaWxkQ2xhc3MucHJvdG90eXBlLmFz
eW5jU3VwZXJQcm9wMik6CisgICAgICAgIChDaGlsZENsYXNzKToKKyAgICAgICAgKENoaWxkQ2xh
c3MyKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfdGhp
c19iaW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3Vs
ZEJlQXN5bmMpOgorICAgICAgICAoZC55KToKKwogMjAxNi0xMC0yNCAgWXVzdWtlIFN1enVraSAg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBBcnJvdyBmdW5jdGlvbnMgd2l0aCBj
b25jaXNlIGJvZGllcyBjYW5ub3QgcmV0dXJuIHJlZ3VsYXIgZXhwcmVzc2lvbnMKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvYXN5bmNGdW5jdGlvblRlc3RzLnlhbWwgYi9KU1Rlc3RzL2FzeW5jRnVuY3Rp
b25UZXN0cy55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmYjc4YmVkNzRiYzQ4MDIxMjNiNjY2Yzc1NmIxNTI0
ZjhiNTIxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL2FzeW5jRnVuY3Rpb25UZXN0cy55
YW1sCkBAIC0wLDAgKzEsMzkyIEBACisjIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRl
ciA8Y2FpdHBAaWdhbGlhLmNvbT4uCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisjIFByb3ZpZGVkIHRvIHNpbXBsaWZ5IHJ1bm5pbmcgYXN5bmMgZnVuY3Rpb24gdGVz
dHMuIFRvIGJlIHJlbW92ZWQgb25jZSBhc3luYworIyBmdW5jdGlvbnMgYXJlIG5vIGxvbmdlciBi
ZWhpbmQgYSBmZWF0dXJlIGZsYWcuCisKKy0tLQorLSBwYXRoOiBzdHJlc3MvYXN5bmMtYXJyb3ct
ZnVuY3Rpb25zLWxleGljYWwtc3VwZXItYmluZGluZy5qcworICBjbWQ6IHJ1bkRlZmF1bHQKKy0g
cGF0aDogc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLWFyZ3VtZW50cy1iaW5k
aW5nLmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5bmMtYXJyb3ctZnVu
Y3Rpb25zLWxleGljYWwtdGhpcy1iaW5kaW5nLmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRo
OiBzdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtbmV3LnRhcmdldC1iaW5kaW5n
LmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMu
anMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1hd2FpdC1tb3ppbGxh
LmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5bmMtYXdhaXQtc3ludGF4
LmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxl
LXJlc2VydmVkLXdvcmQuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9hc3lu
Yy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzCisgIGNtZDogcnVuRGVmYXVsdAorCisjIFRlc3QyNjIK
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rp
b24tY29uc3RydWN0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3lu
Y0Z1bmN0aW9uLWNvbnN0cnVjdC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhj
ZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3lu
Y0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24taXMtZXh0ZW5zaWJsZS5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVp
bHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1pcy1leHRlbnNpYmxlLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1pcy1z
dWJjbGFzcy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5j
dGlvbi1pcy1zdWJjbGFzcy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0
aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1
bmN0aW9uL0FzeW5jRnVuY3Rpb24tbGVuZ3RoLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVydHlIZWxwZXIuanMiXSwg
W10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVu
Y3Rpb24tbGVuZ3RoLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
IiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVydHlIZWxwZXIuanMiXSwgWzpzdHJpY3RdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLW5h
bWUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4v
Li4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
YnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1uYW1lLmpzCisgIGNtZDogcnVu
VGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVy
dHlIZWxwZXIuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMv
QXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLXByb3RvdHlwZS5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3Byb3BlcnR5SGVs
cGVyLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlv
bi9Bc3luY0Z1bmN0aW9uLXByb3RvdHlwZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
Ik5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFs6
c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5
bmNGdW5jdGlvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwg
WyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNG
dW5jdGlvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
OnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0Fz
eW5jRnVuY3Rpb25Qcm90b3R5cGUtaXMtZXh0ZW5zaWJsZS5qcworICBjbWQ6IHJ1blRlc3QyNjIg
Om5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQt
aW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvblByb3RvdHlwZS1pcy1leHRlbnNpYmxlLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlv
blByb3RvdHlwZS1wcm90b3R5cGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0
aW9uL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUtcHJvdG90eXBlLmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvblByb3RvdHlwZS10by1zdHJp
bmcuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4v
Li4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
YnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvblByb3RvdHlwZS10by1zdHJpbmcu
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4v
aGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL2luc3RhbmNlLWNvbnN0cnVjdC5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vaW5zdGFuY2UtY29uc3RydWN0LmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vaW5zdGFuY2UtaGFzLW5hbWUu
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4v
aGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVp
bHQtaW5zL0FzeW5jRnVuY3Rpb24vaW5zdGFuY2UtaGFzLW5hbWUuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9wcm9wZXJ0eUhl
bHBlci5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3lu
Y0Z1bmN0aW9uL2luc3RhbmNlLWxlbmd0aC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
Ik5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFtd
CistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9pbnN0YW5jZS1s
ZW5ndGguanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4v
Li4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4v
Li4vLi4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL2luc3RhbmNlLXByb3RvdHlwZS1wcm9w
ZXJ0eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vaW5zdGFuY2UtcHJv
dG90eXBlLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVu
Y3Rpb24vaXMtbm90LWEtZ2xvYmFsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5l
c3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5j
dGlvbi9pcy1ub3QtYS1nbG9iYWwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgWzpzdHJpY3RdCisKKyMgRklYTUU6IENyZWF0ZUR5bmFtaWNGdW5jdGlvbigp
IGlzIGJyb2tlbiBpbiBKU0MsIG5lZWQgdG8gcGFyc2UgZm9ybWFsIHBhcmFtZXRlcnMgYW5kIGJv
ZHkgc2VwYXJhdGVseS4KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9w
cm90b3R5cGUvdG9TdHJpbmcvQXN5bmNGdW5jdGlvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOmZh
aWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUvdG9TdHJpbmcvQXN5bmNGdW5jdGlvbi5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpz
dHJpY3RdCisKKyMgRklYTUU6IFRoZXNlIHRlc3RzIHJlcXVpcmUgRi5wLnRvU3RyaW5nIHJldmlz
aW9ucyAoaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9GdW5jdGlvbi1wcm90b3R5cGUtdG9TdHJpbmct
cmV2aXNpb24vKQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3Rv
dHlwZS90b1N0cmluZy9hc3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi5qcworICBjbWQ6IHJ1blRl
c3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUvdG9TdHJpbmcvYXN5bmMtZnVu
Y3Rpb24tZGVjbGFyYXRpb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQt
aW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS90b1N0cmluZy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9u
LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS90
b1N0cmluZy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUvdG9TdHJpbmcvYXN5bmMtbWV0
aG9kLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlw
ZS90b1N0cmluZy9hc3luYy1tZXRob2QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9hcnJvdy1yZXR1cm5z
LXByb21pc2UuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1
bmN0aW9uL2Fycm93LXJldHVybnMtcHJvbWlzZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhh
bmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LU5T
UEwtd2l0aC1VU0QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIs
IFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2Fz
eW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1OU1BMLXdpdGgtVVNELmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ct
ZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWFyZ3VtZW50cy1pbi1mb3JtYWwtcGFyYW1ldGVy
cy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
OnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5j
LWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1hd2FpdC1pbi1mb3JtYWxzLWRlZmF1
bHQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4v
Li4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
W10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93
LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1hd2FpdC1pbi1mb3JtYWxzLWRlZmF1bHQuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJp
Y3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJv
dy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctYXdhaXQtaW4tZm9ybWFscy5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFy
bHktZXJyb3JzLWFycm93LWF3YWl0LWluLWZvcm1hbHMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJv
cnMtYXJyb3ctYm9keS1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJy
b3ctYm9keS1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFy
cm93LWJvZHktY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xh
bmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJv
dy1ib2R5LWNvbnRhaW5zLXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3Jz
LWFycm93LWR1cGxpY2F0ZS1wYXJhbWV0ZXJzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFy
cm93LWV2YWwtaW4tZm9ybWFsLXBhcmFtZXRlcnMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMt
YXJyb3ctZm9ybWFscy1ib2R5LWR1cGxpY2F0ZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWZv
cm1hbHMtYm9keS1kdXBsaWNhdGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50
YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctZm9y
bWFscy1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
U3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9l
eHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctZm9ybWFs
cy1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3lu
dGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWZv
cm1hbHMtY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1m
b3JtYWxzLWNvbnRhaW5zLXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWV4cHJl
c3Npb24tTlNQTC13aXRoLVVTRC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRh
eEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVz
c2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tTlNQTC13aXRoLVVT
RC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
OnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5j
LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLWJpbmRpbmctaWRlbnRpZmllci1hcmd1
bWVudHMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9h
c3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZXhwcmVzc2lvbi1iaW5kaW5nLWlkZW50aWZpZXIt
ZXZhbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2Fz
eW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLWJvZHktY29udGFpbnMtc3VwZXIt
Y2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVu
Y3Rpb24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tYm9keS1jb250YWlucy1zdXBlci1jYWxsLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3Ry
aWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVu
Y3Rpb24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tYm9keS1jb250YWlucy1zdXBlci1wcm9wZXJ0
eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rp
b24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tYm9keS1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5q
cworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8u
Li9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0
cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1
bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLWV2YWwtaW4tZm9ybWFsLXBhcmFtZXRlcnMu
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpz
dHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1m
dW5jdGlvbi9lYXJseS1lcnJvcnMtZXhwcmVzc2lvbi1mb3JtYWxzLWJvZHktZHVwbGljYXRlLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9l
YXJseS1lcnJvcnMtZXhwcmVzc2lvbi1mb3JtYWxzLWJvZHktZHVwbGljYXRlLmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFy
bHktZXJyb3JzLWV4cHJlc3Npb24tZm9ybWFscy1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1l
cnJvcnMtZXhwcmVzc2lvbi1mb3JtYWxzLWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtZXhwcmVzc2lvbi1mb3JtYWxzLWNvbnRhaW5zLXN1cGVyLXByb3BlcnR5LmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtZXhwcmVzc2lvbi1mb3JtYWxzLWNvbnRhaW5zLXN1cGVyLXByb3BlcnR5LmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rp
b24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tbm90LXNpbXBsZS1hc3NpZ25tZW50LXRhcmdldC5q
cworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlJlZmVyZW5jZUVycm9yIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rp
b24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tbm90LXNpbXBsZS1hc3NpZ25tZW50LXRhcmdldC5q
cworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlJlZmVyZW5jZUVycm9yIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
OnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5j
LWZ1bmN0aW9uL2V4cHJlc3Npb24tcmV0dXJucy1wcm9taXNlLmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9leHByZXNzaW9uLXJldHVybnMt
cHJvbWlzZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L2FzeW5jLWZ1bmN0aW9uL3N5bnRheC1leHByZXNzaW9uLWlzLVByaW1hcnlFeHByZXNzaW9uLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9z
eW50YXgtZXhwcmVzc2lvbi1pcy1QcmltYXJ5RXhwcmVzc2lvbi5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LUJpbmRpbmdJZGVudGlm
aWVyLWluLWdsb2JhbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMv
YXdhaXQvYXdhaXQtQmluZGluZ0lkZW50aWZpZXItaW4tZ2xvYmFsLmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtQmluZGluZ0lkZW50
aWZpZXItbmVzdGVkLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3Ii
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9h
d2FpdC9hd2FpdC1CaW5kaW5nSWRlbnRpZmllci1uZXN0ZWQuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3Qy
NjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1hd2FpdHMtdGhlbmFibGUt
bm90LWNhbGxhYmxlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5
bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2Fp
dC1hd2FpdHMtdGhlbmFibGUtbm90LWNhbGxhYmxlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50
SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5n
dWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1hd2FpdHMtdGhlbmFibGVzLXRoYXQtdGhyb3cu
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDog
dGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWF3YWl0cy10aGVu
YWJsZXMtdGhhdC10aHJvdy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0
aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBb
OnN0cmljdCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lv
bnMvYXdhaXQvYXdhaXQtYXdhaXRzLXRoZW5hYmxlcy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmlu
dEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhw
cmVzc2lvbnMvYXdhaXQvYXdhaXQtYXdhaXRzLXRoZW5hYmxlcy5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2Rv
bmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtaW4tZnVuY3Rpb24uanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDog
dGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWluLWZ1bmN0aW9u
LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4u
Ly4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6
c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQv
YXdhaXQtaW4tZ2VuZXJhdG9yLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNl
cHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNz
aW9ucy9hd2FpdC9hd2FpdC1pbi1nZW5lcmF0b3IuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1nbG9iYWwuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWluLWdsb2JhbC5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmlj
dF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0
LWluLW5lc3RlZC1mdW5jdGlvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhj
ZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVz
c2lvbnMvYXdhaXQvYXdhaXQtaW4tbmVzdGVkLWZ1bmN0aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0
MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtaW4tbmVzdGVkLWdlbmVy
YXRvci5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdh
aXQtaW4tbmVzdGVkLWdlbmVyYXRvci5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LXRocm93cy1yZWplY3Rpb25zLmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC10aHJvd3MtcmVqZWN0
aW9ucy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbOnN0cmljdF0KKworI0ZJWE1FOiBKU0MgYWx3YXlzIHRocm93cyB0aGVzZSBSZWZlcmVuY2VF
cnJvcnMgYXQgcnVudGltZSByYXRoZXIgdGhhbiBhdCBwYXJzZSB0aW1lLgorLSBwYXRoOiB0ZXN0
MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvZWFybHktZXJyb3JzLWF3YWl0LW5v
dC1zaW1wbGUtYXNzaWdubWVudC10YXJnZXQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAi
UmVmZXJlbmNlRXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9leHByZXNzaW9ucy9hd2FpdC9lYXJseS1lcnJvcnMtYXdhaXQtbm90LXNpbXBsZS1hc3NpZ25t
ZW50LXRhcmdldC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJSZWZlcmVuY2VFcnJvciIs
IFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgWzpzdHJpY3RdCisKKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL2F3YWl0L25vLW9wZXJhbmQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJT
eW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4
cHJlc3Npb25zL2F3YWl0L25vLW9wZXJhbmQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9zeW50YXgtYXdhaXQtaGFzLVVuYXJ5RXhwcmVzc2lv
bi13aXRoLU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmlu
dEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhw
cmVzc2lvbnMvYXdhaXQvc3ludGF4LWF3YWl0LWhhcy1VbmFyeUV4cHJlc3Npb24td2l0aC1NdWx0
aXBsaWNhdGl2ZUV4cHJlc3Npb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMi
XSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL2F3YWl0L3N5bnRheC1hd2FpdC1oYXMtVW5hcnlFeHByZXNzaW9uLmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9zeW50YXgtYXdhaXQtaGFzLVVuYXJ5RXhwcmVz
c2lvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFz
eW5jXQorCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3Qv
bWV0aG9kLWRlZmluaXRpb24vYXN5bmMtc3VwZXItY2FsbC1ib2R5LmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uLy4u
L2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24vYXN5bmMt
c3VwZXItY2FsbC1ib2R5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxl
LmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9l
eHByZXNzaW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24vYXN5bmMtc3VwZXItY2FsbC1wYXJh
bS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5j
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L21ldGhv
ZC1kZWZpbml0aW9uL2FzeW5jLXN1cGVyLWNhbGwtcGFyYW0uanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFy
bmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKworLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9kZWNsYXJhdGlv
bi1yZXR1cm5zLXByb21pc2UuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2Vw
dGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVu
dHMvYXN5bmMtZnVuY3Rpb24vZGVjbGFyYXRpb24tcmV0dXJucy1wcm9taXNlLmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtZGVjbGFyYXRpb24tTlNQTC13aXRoLVVTRC5qcworICBjbWQ6IHJ1blRlc3QyNjIg
Om5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRp
b24tTlNQTC13aXRoLVVTRC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVy
cm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0
YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWFyZ3VtZW50
cy1pbi1mb3JtYWwtcGFyYW1ldGVycy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5
bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWF3
YWl0LWluLWZvcm1hbHMtZGVmYXVsdC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5
bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3Rh
dGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tYXdhaXQtaW4t
Zm9ybWFscy1kZWZhdWx0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJy
b3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5l
c3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3Rh
dGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tYXdhaXQtaW4t
Zm9ybWFscy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIu
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1m
dW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tYXdhaXQtaW4tZm9ybWFscy5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24v
ZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWJpbmRpbmctaWRlbnRpZmllci1hcmd1bWVudHMuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJp
Y3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0
aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1iaW5kaW5nLWlkZW50aWZpZXItZXZhbC5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmlj
dF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rp
b24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWJvZHktY29udGFpbnMtc3VwZXItY2FsbC5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtZGVjbGFyYXRpb24tYm9keS1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtZGVjbGFyYXRpb24tYm9keS1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1l
cnJvcnMtZGVjbGFyYXRpb24tYm9keS1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFy
bHktZXJyb3JzLWRlY2xhcmF0aW9uLWR1cGxpY2F0ZS1wYXJhbWV0ZXJzLmpzCisgIGNtZDogcnVu
VGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1l
cnJvcnMtZGVjbGFyYXRpb24tZXZhbC1pbi1mb3JtYWwtcGFyYW1ldGVycy5qcworICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHkt
ZXJyb3JzLWRlY2xhcmF0aW9uLWZvcm1hbHMtYm9keS1kdXBsaWNhdGUuanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRl
Y2xhcmF0aW9uLWZvcm1hbHMtYm9keS1kdXBsaWNhdGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNs
YXJhdGlvbi1mb3JtYWxzLWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0
aW9uLWZvcm1hbHMtY29udGFpbnMtc3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xh
cmF0aW9uLWZvcm1hbHMtY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xh
cmF0aW9uLWZvcm1hbHMtY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9y
cy1uby1hc3luYy1nZW5lcmF0b3IuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50
YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRl
bWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLW5vLWFzeW5jLWdlbmVyYXRvci5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmlj
dF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rp
b24vZXZhbHVhdGlvbi1ib2R5LXRoYXQtcmV0dXJucy1hZnRlci1hd2FpdC5qcworICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLWJvZHktdGhhdC1y
ZXR1cm5zLWFmdGVyLWF3YWl0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNl
cHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0s
IFs6c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1l
bnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tYm9keS10aGF0LXJldHVybnMuanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1ib2R5LXRo
YXQtcmV0dXJucy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwg
WyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmlj
dCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3lu
Yy1mdW5jdGlvbi9ldmFsdWF0aW9uLWJvZHktdGhhdC10aHJvd3MtYWZ0ZXItYXdhaXQuanMKKyAg
Y21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1ib2R5
LXRoYXQtdGhyb3dzLWFmdGVyLWF3YWl0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
Tm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxl
LmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9z
dGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tYm9keS10aGF0LXRocm93cy5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8u
Li8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0
MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLWJv
ZHktdGhhdC10aHJvd3MuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpz
dHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMv
YXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1ib2R5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5n
dWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tYm9keS5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZh
bHVhdGlvbi1kZWZhdWx0LXRoYXQtdGhyb3dzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFu
ZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1l
bnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tZGVmYXVsdC10aGF0LXRocm93cy5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5jXQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0
aW9uLW1hcHBlZC1hcmd1bWVudHMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMi
XSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5
bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi10aGlzLXZhbHVlLWdsb2JhbC5qcworICBjbWQ6IHJ1blRl
c3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2Vy
dC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFu
Z3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLXRoaXMtdmFsdWUtcGFz
c2VkLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1
YXRpb24tdGhpcy12YWx1ZS1wYXNzZWQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJO
b0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUu
anMiXSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0
YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi11bm1hcHBlZC1hcmd1bWVudHMuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4v
Li4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi11
bm1hcHBlZC1hcmd1bWVudHMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2Vw
dGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwg
WzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVu
dHMvYXN5bmMtZnVuY3Rpb24vc3ludGF4LWRlY2xhcmF0aW9uLWxpbmUtdGVybWluYXRvcnMtYWxs
b3dlZC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5j
dGlvbi9zeW50YXgtZGVjbGFyYXRpb24tbGluZS10ZXJtaW5hdG9ycy1hbGxvd2VkLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9z
eW50YXgtZGVjbGFyYXRpb24tbm8tbGluZS10ZXJtaW5hdG9yLmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL3N5bnRheC1kZWNsYXJhdGlvbi1u
by1saW5lLXRlcm1pbmF0b3IuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2Vw
dGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9z
dGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL3N5bnRheC1kZWNsYXJhdGlvbi5qcworICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9zeW50YXgtZGVjbGFyYXRpb24uanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4v
Li4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKwor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9jbGFzcy9kZWZpbml0aW9u
L21ldGhvZHMtYXN5bmMtc3VwZXItY2FsbC1ib2R5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mv
ZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5n
dWFnZS9zdGF0ZW1lbnRzL2NsYXNzL2RlZmluaXRpb24vbWV0aG9kcy1hc3luYy1zdXBlci1jYWxs
LWJvZHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4v
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpz
dHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMv
Y2xhc3MvZGVmaW5pdGlvbi9tZXRob2RzLWFzeW5jLXN1cGVyLWNhbGwtcGFyYW0uanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4v
Li4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDog
dGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvY2xhc3MvZGVmaW5pdGlvbi9tZXRob2Rz
LWFzeW5jLXN1cGVyLWNhbGwtcGFyYW0uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJO
b0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJp
bnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLWFyZ3VtZW50cy1iaW5kaW5nLmpzIGIv
SlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtYXJndW1lbnRzLWJp
bmRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTVlMDJhMzg2OWE3MWE2MjQwM2UzZjdhMThjNDQyNTlkODBm
Y2YzYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0
aW9ucy1sZXhpY2FsLWFyZ3VtZW50cy1iaW5kaW5nLmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8vIFRo
aXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJl
IGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4
cGVjdGVkLCBhY3R1YWwsIG1zZykgeworICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAg
bXNnID0gIiI7CisgICAgZWxzZQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1
ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQg
YWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rp
b24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihl
cnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1p
Y3JvdGFza3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOwor
CisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hv
dWxkVGhyb3dBc3luYyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7
CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1
ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7
IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNr
cygpOworCisgICAgaWYgKCFoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBk
aWQgbm90IHRocm93LiIpOworICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJv
dyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOwor
ICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2Up
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJv
dyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIp
OworfQorCit2YXIgbm9Bcmd1bWVudHNBcnJvdyA9IGFzeW5jICgpID0+IGF3YWl0IFsuLi5hcmd1
bWVudHNdOworc2hvdWxkVGhyb3dBc3luYygoKSA9PiBub0FyZ3VtZW50c0Fycm93KDEsIDIsIDMp
LCBSZWZlcmVuY2VFcnJvcik7Cit2YXIgbm9Bcmd1bWVudHNBcnJvdzIgPSBhc3luYyAoKSA9PiB7
IHJldHVybiBhd2FpdCBbLi4uYXJndW1lbnRzXTsgfQorc2hvdWxkVGhyb3dBc3luYygoKSA9PiBu
b0FyZ3VtZW50c0Fycm93MigxLCAyLCAzKSwgUmVmZXJlbmNlRXJyb3IpOworCitzaG91bGRCZUFz
eW5jKCJbMSwyLDNdIiwgKCkgPT4gKGZ1bmN0aW9uKCkgeyByZXR1cm4gKGFzeW5jICgpID0+IEpT
T04uc3RyaW5naWZ5KFsuLi5hcmd1bWVudHNdKSkoKTsgfSkoMSwgMiwgMykpOworc2hvdWxkQmVB
c3luYygiWzQsNSw2XSIsICgpID0+IChmdW5jdGlvbigpIHsgcmV0dXJuIChhc3luYyAoKSA9PiB7
IHJldHVybiBKU09OLnN0cmluZ2lmeShbLi4uYXdhaXQgYXJndW1lbnRzXSkgfSkoKTsgfSkoNCwg
NSwgNikpOworCisoZnVuY3Rpb24gdGVzdEFyZ3VtZW50c0JpbmRpbmcoKSB7CisgICAgdmFyIGFy
Z3NCaW5kaW5nOworICAgIHZhciBwcm9taXNlID0gKGZ1bmN0aW9uKCkgeyBhcmdzQmluZGluZyA9
IGFyZ3VtZW50czsgcmV0dXJuIChhc3luYygpID0+IGFyZ3VtZW50cykoKSB9KSgxLCAyLCAzKTsK
KyAgICBzaG91bGRCZUFzeW5jKGFyZ3NCaW5kaW5nLCAoKSA9PiBwcm9taXNlKTsKK30pKCk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1u
ZXcudGFyZ2V0LWJpbmRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlv
bnMtbGV4aWNhbC1uZXcudGFyZ2V0LWJpbmRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI2YTM5ODNmN2E5
Mjc0MGVlNDc4YzNmZjdiYjgzMGM3ODVhZTQwOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQtYmluZGluZy5q
cwpAQCAtMCwwICsxLDU1IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19B
U1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tp
cAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAo
bXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAgbXNn
ID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4
cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0
ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxz
ZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAor
ICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwg
PSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3Ip
CisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWws
IG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUsIG1l
c3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAg
IHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAg
ICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9y
OyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmICghaGFkRXJyb3IpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsg
ZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1
YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IHRo
cmV3ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFj
dHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAn
IiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gQzEoKSB7CisgICAgcmV0
dXJuIGFzeW5jICgpID0+IGF3YWl0IG5ldy50YXJnZXQ7Cit9CisKK2Z1bmN0aW9uIEMyKCkgewor
ICAgIHJldHVybiBhc3luYyAoKSA9PiB7IHJldHVybiBhd2FpdCBuZXcudGFyZ2V0IH07Cit9CisK
K3Nob3VsZEJlQXN5bmMoQzEsIG5ldyBDMSgpKTsKK3Nob3VsZEJlQXN5bmModW5kZWZpbmVkLCBD
MSgpKTsKK3Nob3VsZEJlQXN5bmMoQzIsIG5ldyBDMigpKTsKK3Nob3VsZEJlQXN5bmModW5kZWZp
bmVkLCBDMigpKTsKKworc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiBhd2FpdCBuZXcudGFy
Z2V0LCBSZWZlcmVuY2VFcnJvcik7CitzaG91bGRUaHJvd0FzeW5jKGFzeW5jICgpID0+IHsgcmV0
dXJuIGF3YWl0IG5ldy50YXJnZXQ7IH0sIFJlZmVyZW5jZUVycm9yKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcu
anMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1zdXBlci1i
aW5kaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4YmYwZjlhY2UzYzc1ZjdkOGY3ZWJjYjIwM2Y3MzhkYjM5
YzlmZGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5j
dGlvbnMtbGV4aWNhbC1zdXBlci1iaW5kaW5nLmpzCkBAIC0wLDAgKzEsNTUgQEAKKy8vIFRoaXMg
dGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVu
YWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhw
ZWN0ZWQsIGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQorICAgICAgICBt
c2cgPSAiIjsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVl
IiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQor
CitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxldCBh
Y3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlv
bih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVy
cm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWlj
cm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisK
KyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitjbGFzcyBCYXNlQ2xh
c3MgeworICAgIGJhc2VDbGFzc1ZhbHVlKCkgeworICAgICAgICByZXR1cm4gIkJhc2VDbGFzc1Zh
bHVlIjsKKyAgICB9CisgICAgZ2V0IHByb3BlcnR5KCkgeworICAgICAgICByZXR1cm4gInRlc3Qh
IjsKKyAgICB9Cit9CisKK2NsYXNzIENoaWxkQ2xhc3MgZXh0ZW5kcyBCYXNlQ2xhc3MgeworICAg
IGFzeW5jU3VwZXJQcm9wKCkgeworICAgICAgICByZXR1cm4gYXN5bmMgeCA9PiBzdXBlci5iYXNl
Q2xhc3NWYWx1ZSgpOworICAgIH0KKyAgICBhc3luY1N1cGVyUHJvcDIoKSB7CisgICAgICAgIHJl
dHVybiBhc3luYyB4ID0+IHsgcmV0dXJuIHN1cGVyLmJhc2VDbGFzc1ZhbHVlKCk7IH0KKyAgICB9
Cit9CisKKy8vIEZJWE1FOiBzdXBlciBiaW5kaW5ncyBpbiBhc3luYyBhcnJvdyBmdW5jdGlvbnMg
YXJlIGJyb2tlbgorc2hvdWxkQmVBc3luYygiQmFzZUNsYXNzVmFsdWUiLCBuZXcgQ2hpbGRDbGFz
cygpLmFzeW5jU3VwZXJQcm9wKCkpOworc2hvdWxkQmVBc3luYygiQmFzZUNsYXNzVmFsdWUiLCBu
ZXcgQ2hpbGRDbGFzcygpLmFzeW5jU3VwZXJQcm9wMigpKTsKKworY2xhc3MgQ2hpbGRDbGFzczIg
ZXh0ZW5kcyBCYXNlQ2xhc3MgeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICByZXR1cm4g
YXN5bmMgKHNlbGYgPSBzdXBlcigpKSA9PiBzZWxmLmJhc2VDbGFzc1ZhbHVlKCkgKyAnICcgKyBz
dXBlci5wcm9wZXJ0eTsKKyAgICB9Cit9CisKK3Nob3VsZEJlQXN5bmMoIkJhc2VDbGFzc1ZhbHVl
IHRlc3QhIiwgbmV3IENoaWxkQ2xhc3MyKCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
YXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtdGhpcy1iaW5kaW5nLmpzIGIvSlNUZXN0cy9z
dHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtdGhpcy1iaW5kaW5nLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcyYWZhMTEzZmE5MTI2YzNlMTY3ZmFlNDExYzNhMDRlODdhMTFiNWEKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC10
aGlzLWJpbmRpbmcuanMKQEAgLTAsMCArMSwzMCBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVO
QUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0
aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNn
KSB7CisgICAgaWYgKG1zZyA9PT0gdm9pZCAwKQorICAgICAgICBtc2cgPSAiIjsKKyAgICBlbHNl
CisgICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBh
Y3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRC
ZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhh
ZEVycm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwg
PSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0g
dHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAg
aWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBl
Y3RlZCwgYWN0dWFsLCBtc2cpOworfQorCit2YXIgZCA9ICh7IHggOiAiYmFyIiwgeSA6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gYXN5bmMgeiA9PiB0aGlzLnggKyB6OyB9fSkueSgpOwordmFyIGUgPSB7
IHggOiAiYmF6IiwgeSA6IGQgfTsKKworc2hvdWxkQmVBc3luYygiYmFybGV5IiwgKCkgPT4gZCgi
bGV5IikpOworc2hvdWxkQmVBc3luYygiYmFybGV5IiwgKCkgPT4gZS55KCJsZXkiKSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1iYXNpYy5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4ZjIwNjUzNjUzZWNhY2Q3ZjNl
ZGI2M2JiMzJkMTFiNzRhOTJkM2YKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9h
c3luYy1hd2FpdC1iYXNpYy5qcwpAQCAtMCwwICsxLDI5OSBAQAorLy8gVGhpcyB0ZXN0IHJlcXVp
cmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBi
dWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVh
bCwgbXNnID0gIiIpIHsKKyAgICBpZiAobXNnKQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNn
OworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
ImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsK
KyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRo
ZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBm
dW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAg
ICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cg
YWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworZnVu
Y3Rpb24gc2hvdWxkVGhyb3cocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0
dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworCisgICAgdHJ5IHsKKyAgICAgICAgYWN0
dWFsID0gcnVuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBoYWRFcnJvciA9IHRydWU7
CisgICAgICAgIGFjdHVhbCA9IGU7CisgICAgfQorCisgICAgaWYgKCFoYWRFcnJvcikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBl
cnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOworICAgIGlmICghKGFjdHVh
bCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWNl
ZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIgLCBidXQgdGhy
ZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0
dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICci
ICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0FzeW5j
KHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFk
RXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9
IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0
cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBp
ZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4g
KyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cu
Iik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5
cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3Nh
Z2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2Fn
ZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZFRocm93U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7CisgICAgdHJ5IHsKKyAg
ICAgICAgZXZhbChzdHIpOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGAiICsg
c3RyICsgImAgdG8gdGhyb3cgYSBTeW50YXhFcnJvciwgYnV0IGRpZCBub3QgdGhyb3cuIikKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlLmNvbnN0cnVjdG9yICE9PSBTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgYCIgKyBzdHIgKyAiYCB0
byB0aHJvdyBhIFN5bnRheEVycm9yLCBidXQgdGhyZXcgJyIgKyBlICsgIiciKTsKKyAgICAgICAg
aWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBlLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGAiICsgc3RyICsgImAgdG8gdGhyb3cgU3lu
dGF4RXJyb3I6ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBlICsgIiciKTsKKyAg
ICB9Cit9CisKKy8vIERvIG5vdCBpbnN0YWxsIGBBc3luY0Z1bmN0aW9uYCBjb25zdHJ1Y3RvciBv
biBnbG9iYWwgb2JqZWN0CitzaG91bGRCZSh1bmRlZmluZWQsIHRoaXMuQXN5bmNGdW5jdGlvbik7
CitsZXQgQXN5bmNGdW5jdGlvbiA9IChhc3luYyBmdW5jdGlvbigpIHt9KS5jb25zdHJ1Y3RvcjsK
KworLy8gTGV0IGZ1bmN0aW9uUHJvdG90eXBlIGJlIHRoZSBpbnRyaW5zaWMgb2JqZWN0ICVBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlJS4KK2FzeW5jIGZ1bmN0aW9uIGFzeW5jRnVuY3Rpb25Gb3JQcm90
bygpIHt9CitzaG91bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3Rv
dHlwZU9mKGFzeW5jRnVuY3Rpb25Gb3JQcm90bykpOworc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5w
cm90b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZihhc3luYyBmdW5jdGlvbigpIHt9KSk7Citz
aG91bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKGFz
eW5jICgpID0+IHt9KSk7CitzaG91bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0
LmdldFByb3RvdHlwZU9mKHsgYXN5bmMgbWV0aG9kKCkge30gfS5tZXRob2QpKTsKKworLy8gRklY
TUU6IEFzeW5jRnVuY3Rpb24gY29uc3RydWN0b3Igc2hvdWxkIGJ1aWxkIGZ1bmN0aW9ucyB3aXRo
IGNvcnJlY3QgcHJvdG90eXBlLgorLy8gc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUs
IE9iamVjdC5nZXRQcm90b3R5cGVPZihBc3luY0Z1bmN0aW9uKCkpKTsKKworLy8gQXN5bmNGdW5j
dGlvbkNyZWF0ZSBkb2VzIG5vdCBwcm9kdWNlIGFuIG9iamVjdCB3aXRoIGEgUHJvdG90eXBlCitz
aG91bGRCZSh1bmRlZmluZWQsIGFzeW5jRnVuY3Rpb25Gb3JQcm90by5wcm90b3R5cGUpOworc2hv
dWxkQmUoZmFsc2UsIGFzeW5jRnVuY3Rpb25Gb3JQcm90by5oYXNPd25Qcm9wZXJ0eSgicHJvdG90
eXBlIikpOworc2hvdWxkQmUodW5kZWZpbmVkLCAoYXN5bmMgZnVuY3Rpb24oKSB7fSkucHJvdG90
eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCAoYXN5bmMgZnVuY3Rpb24oKSB7fSkuaGFzT3duUHJvcGVy
dHkoInByb3RvdHlwZSIpKTsKK3Nob3VsZEJlKHVuZGVmaW5lZCwgKGFzeW5jKCkgPT4ge30pLnBy
b3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgKGFzeW5jKCkgPT4ge30pLmhhc093blByb3BlcnR5
KCJwcm90b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQsICh7IGFzeW5jIG1ldGhvZCgpIHt9
IH0pLm1ldGhvZC5wcm90b3R5cGUpOworc2hvdWxkQmUoZmFsc2UsICh7IGFzeW5jIG1ldGhvZCgp
IHt9IH0pLm1ldGhvZC5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOworc2hvdWxkQmUodW5k
ZWZpbmVkLCBBc3luY0Z1bmN0aW9uKCkucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCBBc3lu
Y0Z1bmN0aW9uKCkuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKKworLy8gQXN5bmNGdW5j
dGlvbi5wcm90b3R5cGVbIEBAdG9TdHJpbmdUYWcgXQordmFyIGRlc2NyaXB0b3IgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBTeW1ib2wu
dG9TdHJpbmdUYWcpOworc2hvdWxkQmUoIkFzeW5jRnVuY3Rpb24iLCBkZXNjcmlwdG9yLnZhbHVl
KTsKK3Nob3VsZEJlKGZhbHNlLCBkZXNjcmlwdG9yLmVudW1lcmFibGUpOworc2hvdWxkQmUoZmFs
c2UsIGRlc2NyaXB0b3Iud3JpdGFibGUpOworc2hvdWxkQmUodHJ1ZSwgZGVzY3JpcHRvci5jb25m
aWd1cmFibGUpOworCitzaG91bGRCZSgxLCBBc3luY0Z1bmN0aW9uLmxlbmd0aCk7CisKKy8vIExl
dCBGIGJlICEgRnVuY3Rpb25BbGxvY2F0ZShmdW5jdGlvblByb3RvdHlwZSwgU3RyaWN0LCAibm9u
LWNvbnN0cnVjdG9yIikKK2FzeW5jIGZ1bmN0aW9uIGFzeW5jTm9uQ29uc3RydWN0b3JEZWNsKCkg
e30KK3Nob3VsZFRocm93KCgpID0+IG5ldyBhc3luY05vbkNvbnN0cnVjdG9yRGVjbCgpLCBUeXBl
RXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IChhc3luYyBmdW5jdGlvbigpIHt9KSwgVHlw
ZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyAoeyBhc3luYyBub25Db25zdHJ1Y3Rvcigp
IHt9IH0pLm5vbkNvbnN0cnVjdG9yKCksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBu
ZXcgKCgpID0+ICJub3QgYSBjb25zdHJ1Y3RvciEiKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IG5ldyAoQXN5bmNGdW5jdGlvbigpKSwgVHlwZUVycm9yKTsKKworLy8gTm9ybWFsIGNv
bXBsZXRpb24KK2FzeW5jIGZ1bmN0aW9uIGFzeW5jRGVjbCgpIHsgcmV0dXJuICJ0ZXN0IjsgfQor
c2hvdWxkQmVBc3luYygidGVzdCIsIGFzeW5jRGVjbCk7CitzaG91bGRCZUFzeW5jKCJ0ZXN0MiIs
IGFzeW5jIGZ1bmN0aW9uKCkgeyByZXR1cm4gInRlc3QyIjsgfSk7CitzaG91bGRCZUFzeW5jKCJ0
ZXN0MyIsIGFzeW5jICgpID0+ICJ0ZXN0MyIpOworc2hvdWxkQmVBc3luYygidGVzdDQiLCAoKSA9
PiAoeyBhc3luYyBmKCkgeyByZXR1cm4gInRlc3Q0IjsgfSB9KS5mKCkpOworCitjbGFzcyBNeUVy
cm9yIGV4dGVuZHMgRXJyb3Ige307CisKKy8vIFRocm93IGNvbXBsZXRpb24KK2FzeW5jIGZ1bmN0
aW9uIGFzeW5jRGVjbFRocm93ZXIoZSkgeyB0aHJvdyBuZXcgTXlFcnJvcihlKTsgfQorc2hvdWxk
VGhyb3dBc3luYygoKSA9PiBhc3luY0RlY2xUaHJvd2VyKCJib29tISIpLCBNeUVycm9yLCAiYm9v
bSEiKTsKK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gKGFzeW5jIGZ1bmN0aW9uKGUpIHsgdGhyb3cg
bmV3IE15RXJyb3IoZSk7IH0pKCJib29tISEhIiksIE15RXJyb3IsICJib29tISEhIik7CitzaG91
bGRUaHJvd0FzeW5jKCgpID0+IChhc3luYyBlID0+IHsgdGhyb3cgbmV3IE15RXJyb3IoZSkgfSko
ImJvb20hISIpLCBNeUVycm9yLCAiYm9vbSEhIik7CitzaG91bGRUaHJvd0FzeW5jKCgpID0+ICh7
IGFzeW5jIHRocm93ZXIoZSkgeyB0aHJvdyBuZXcgTXlFcnJvcihlKTsgfSB9KS50aHJvd2VyKCJi
b29tISEhISIpLCBNeUVycm9yLCAiYm9vbSEhISEiKTsKKworZnVuY3Rpb24gcmVzb2x2ZUxhdGVy
KHZhbHVlKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpOyB9CitmdW5jdGlvbiByZWpl
Y3RMYXRlcihlcnJvcikgeyByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOyB9CisKKy8vIFJl
c3VtZSBhZnRlciBOb3JtYWwgY29tcGxldGlvbgordmFyIGxvZyA9IFtdOworYXN5bmMgZnVuY3Rp
b24gcmVzdW1lQWZ0ZXJOb3JtYWwodmFsdWUpIHsKKyAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZh
bHVlKTsKKyAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgIGxv
Zy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRl
cih2YWx1ZSArIDEpOworICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICByZXR1
cm4gdmFsdWUgKyAxOworfQorCitzaG91bGRCZUFzeW5jKDQsICgpID0+IHJlc3VtZUFmdGVyTm9y
bWFsKDEpKTsKK3Nob3VsZEJlKCJzdGFydDoxIHJlc3VtZToyIHJlc3VtZTozIiwgbG9nLmpvaW4o
IiAiKSk7CisKK3ZhciBPID0geworICAgIGFzeW5jIHJlc3VtZUFmdGVyTm9ybWFsKHZhbHVlKSB7
CisgICAgICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgICAgICB2YWx1ZSA9IGF3
YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIg
KyB2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7
CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHZh
bHVlICsgMTsKKyAgICB9Cit9OworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDUsICgpID0+IE8u
cmVzdW1lQWZ0ZXJOb3JtYWwoMikpOworc2hvdWxkQmUoInN0YXJ0OjIgcmVzdW1lOjMgcmVzdW1l
OjQiLCBsb2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyTm9ybWFsQXJyb3cgPSBhc3lu
YyAodmFsdWUpID0+IHsKKyAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB2YWx1
ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgIGxvZy5wdXNoKCJyZXN1bWU6
IiArIHZhbHVlKTsKKyAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOwor
ICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWUgKyAxOwor
fTsKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg2LCAoKSA9PiByZXN1bWVBZnRlck5vcm1hbEFy
cm93KDMpKTsKK3Nob3VsZEJlKCJzdGFydDozIHJlc3VtZTo0IHJlc3VtZTo1IiwgbG9nLmpvaW4o
IiAiKSk7CisKK3ZhciByZXN1bWVBZnRlck5vcm1hbEV2YWwgPSBBc3luY0Z1bmN0aW9uKCJ2YWx1
ZSIsIGAKKyAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB2YWx1ZSA9IGF3YWl0
IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVl
KTsKKyAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgIGxvZy5w
dXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWUgKyAxOworYCk7Citsb2cg
PSBbXTsKK3Nob3VsZEJlQXN5bmMoNywgKCkgPT4gcmVzdW1lQWZ0ZXJOb3JtYWxFdmFsKDQpKTsK
K3Nob3VsZEJlKCJzdGFydDo0IHJlc3VtZTo1IHJlc3VtZTo2IiwgbG9nLmpvaW4oIiAiKSk7CisK
Ky8vIFJlc3VtZSBhZnRlciBUaHJvdyBjb21wbGV0aW9uCithc3luYyBmdW5jdGlvbiByZXN1bWVB
ZnRlclRocm93KHZhbHVlKSB7CisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAg
dHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cxIik7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9Cisg
ICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cyIik7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9
CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK30KKworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDIs
ICgpID0+IHJlc3VtZUFmdGVyVGhyb3coMSkpOworc2hvdWxkQmUoInN0YXJ0OjEgcmVzdW1lOnRo
cm93MSByZXN1bWU6dGhyb3cyIiwgbG9nLmpvaW4oIiAiKSk7CisKK3ZhciBPID0geworICAgIGFz
eW5jIHJlc3VtZUFmdGVyVGhyb3codmFsdWUpIHsKKyAgICAgICAgbG9nLnB1c2goInN0YXJ0OiIg
KyB2YWx1ZSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVj
dExhdGVyKCJ0aHJvdzEiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgbG9n
LnB1c2goInJlc3VtZToiICsgZSk7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOworICAgICAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdmFsdWUgKyAxOworICAgIH0KK30KK2xvZyA9IFtdOworc2hvdWxkQmVB
c3luYygzLCAoKSA9PiBPLnJlc3VtZUFmdGVyVGhyb3coMikpOworc2hvdWxkQmUoInN0YXJ0OjIg
cmVzdW1lOnRocm93MSByZXN1bWU6dGhyb3cyIiwgbG9nLmpvaW4oIiAiKSk7CisKK3ZhciByZXN1
bWVBZnRlclRocm93QXJyb3cgPSBhc3luYyAodmFsdWUpID0+IHsKKyAgICBsb2cucHVzaCgic3Rh
cnQ6IiArIHZhbHVlKTsKKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExh
dGVyKCJ0aHJvdzEiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1
bWU6IiArIGUpOworICAgIH0KKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVj
dExhdGVyKCJ0aHJvdzIiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJy
ZXN1bWU6IiArIGUpOworICAgIH0KKyAgICByZXR1cm4gdmFsdWUgKyAxOworfTsKK2xvZyA9IFtd
Oworc2hvdWxkQmVBc3luYyg0LCAoKSA9PiByZXN1bWVBZnRlclRocm93QXJyb3coMykpOworc2hv
dWxkQmUoInN0YXJ0OjMgcmVzdW1lOnRocm93MSByZXN1bWU6dGhyb3cyIiwgbG9nLmpvaW4oIiAi
KSk7CisKK3ZhciByZXN1bWVBZnRlclRocm93RXZhbCA9IEFzeW5jRnVuY3Rpb24oInZhbHVlIiwg
YAorICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHRyeSB7CisgICAgICAgIHZh
bHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHRyeSB7CisgICAgICAg
IHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHJldHVybiB2YWx1
ZSArIDE7CitgKTsKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg1LCAoKSA9PiByZXN1bWVBZnRl
clRocm93RXZhbCg0KSk7CitzaG91bGRCZSgic3RhcnQ6NCByZXN1bWU6dGhyb3cxIHJlc3VtZTp0
aHJvdzIiLCBsb2cuam9pbigiICIpKTsKKworLy8gTWV0aG9vZERlZmluaXRpb24gU3ludGF4RXJy
b3JzCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBmb28gOiB0cnVl
IH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBh
cmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5
bmMgZm9vID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBwYXJl
bnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBvYmogPSB7IGFzeW5jIGZvbyAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhw
ZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIGZvbyB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30n
LiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworCitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAwIDogdHJ1ZSB9OyIsICJVbmV4cGVj
dGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIDAgPSB0cnVlIH07
IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1
bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMg
MCAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNp
cyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmog
PSB7IGFzeW5jIDAgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRo
ZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IG9iaiA9IHsgYXN5bmMgJ2ZvbycgOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBF
eHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgJ2ZvbycgPSB0cnVlIH07IiwgIlVuZXhwZWN0
ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgJ2ZvbycgLCBiYXIg
fTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFy
Z3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3lu
YyAnZm9vJyB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lz
IGZvciBhcmd1bWVudCBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2Jq
ID0geyBhc3luYyBbJ2ZvbyddIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhw
ZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIFsnZm9vJ10gPSB0cnVlIH07IiwgIlVuZXhwZWN0
ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSAsIGJh
ciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3Ig
YXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFz
eW5jIFsnZm9vJ10gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRo
ZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xh
c3MgQyB7IGFzeW5jIGZvbyA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVj
dGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIGZvbyA9IHRydWUg
fTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9y
ZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiY2xhc3MgQyB7IGFzeW5jIGZvbyAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcs
Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1l
dGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgZm9v
IH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9y
ZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgMCA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAn
OicuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFt
ZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIDAg
PSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICco
JyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAwICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9r
ZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBw
YXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3lu
YyAwIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJl
Zm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgJ2ZvbycgOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQg
dG9rZW4gJzonLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2Qn
cyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBh
c3luYyAnZm9vJyA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGFu
IG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nICwgYmFyIH07Iiwg
IlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBh
c3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
ImNsYXNzIEMgeyBhc3luYyAnZm9vJyB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3Rl
ZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4i
KTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsnZm9vJ10gOiB0
cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBi
ZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBbJ2ZvbyddID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVk
IHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9k
J3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsg
YXN5bmMgWydmb28nXSAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQg
YW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgWydmb28nXSB9IiwgIlVu
ZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3lu
YyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5
bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVkLXdvcmQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhiMjRmZTc2MGIw
YTNhYjJkOWZmNWIxNWMzNDdmY2Y3MWMyZjgxOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzCkBAIC0wLDAgKzEsNzIg
QEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lO
VEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNo
b3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZh
bHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBl
cnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1l
c3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJv
cil9YCk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTW9kdWxlU3ludGF4RXJyb3Ioc291cmNlLCBlcnJv
ck1lc3NhZ2UpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiBjaGVja01vZHVsZVN5bnRheChzb3Vy
Y2UpLCBlcnJvck1lc3NhZ2UpOworfQorCitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5y
YXdgCit2YXIgYXdhaXQ7CitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEg
dmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihg
CitleHBvcnQgdmFyIGF3YWl0OworYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJy
b3IoU3RyaW5nLnJhd2AKK2xldCBhd2FpdDsKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNr
TW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCBsZXQgYXdhaXQ7CitgLCBgU3lu
dGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitjb25z
dCBhd2FpdCA9IDEKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJy
b3IoU3RyaW5nLnJhd2AKK2V4cG9ydCBjb25zdCBhd2FpdCA9IDEKK2AsIGBTeW50YXhFcnJvcjog
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUu
OjJgKTsKKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZnVuY3Rpb24gYXdh
aXQoKSB7fQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAn
YXdhaXQnIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5y
YXdgCitmdW5jdGlvbiogYXdhaXQoKSB7fQorYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFy
ZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5
bnRheEVycm9yKFN0cmluZy5yYXdgCithc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9CitgLCBgU3lu
dGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYSBtb2R1
bGUuOjJgKTsKKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IHth
d2FpdH0gZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFz
IGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihT
dHJpbmcucmF3YAoraW1wb3J0IHtmb28gYXMgYXdhaXR9IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4
RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJg
KTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCAqIGFzIGF3YWl0
IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBp
bXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5n
LnJhd2AKK2ltcG9ydCBhd2FpdCwge3gsIHksIHp9IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJy
b3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsK
K2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCBhd2FpdCwge3gsIHks
IHosfSBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMg
YW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0
cmluZy5yYXdgCitpbXBvcnQgYXdhaXQgZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fu
bm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tN
b2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IGF3YWl0LCAqIGFzIGZvbyBmcm9t
ICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0
ZWQgYmluZGluZyBuYW1lLjoyYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1h
d2FpdC1tb3ppbGxhLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW96aWxsYS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYzVkNmI5MmQzZTYxZTQ5ODM5ZTA2Y2QxZDRlMWI1ODAzZTc4YTBiCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW96aWxsYS5qcwpAQCAt
MCwwICsxLDMwNSBAQAorLyogVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhl
IHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpYworICogTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNv
cHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICogZmlsZSwgWW91
IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3oub3JnL01QTC8yLjAvLiAqLworCisvLyBUaGlz
IHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBl
bmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBl
Y3RlZCwgYWN0dWFsLCBtc2cgPSAiIikgeworICAgIGlmIChtc2cpCisgICAgICAgIG1zZyA9ICIg
Zm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBy
dW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7Cisg
ICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAg
ICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJy
b3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworICAgIGlmIChoYWRFcnJvcikKKyAgICAg
ICAgdGhyb3cgYWN0dWFsOworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAg
bGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAg
ICBhY3R1YWwgPSBydW4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGhhZEVycm9yID0g
dHJ1ZTsKKyAgICAgICAgYWN0dWFsID0gZTsKKyAgICB9CisgICAgaWYgKCFoYWRFcnJvcikKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIg
KyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOworICAgIGlmICghKGFj
dHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWNlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIgLCBidXQg
dGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYg
YWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3
ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0Fz
eW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIg
aGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVh
bCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3Ig
PSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisgICAg
aWYgKCFoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVu
ICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93
LiIpOworICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JU
eXBlLm5hbWUgKyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNz
YWdlICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3Nh
Z2UgKyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5j
dGlvbiBhc3NlcnQoY29uZCwgbXNnID0gIiIpIHsKKyAgICBpZiAoIWNvbmQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd1N5bnRheEVycm9y
KHN0ciwgbWVzc2FnZSkgeworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHRyeSB7Cisg
ICAgICAgIGV2YWwoc3RyKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGlmIChlIGluc3Rh
bmNlb2YgU3ludGF4RXJyb3IpIHsKKyAgICAgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gInN0cmluZyIpCisgICAgICAgICAgICAgICAg
YXNzZXJ0KGUubWVzc2FnZSA9PT0gbWVzc2FnZSwgIkV4cGVjdGVkICciICsgbWVzc2FnZSArICIn
IGJ1dCB0aHJldyAnIiArIGUubWVzc2FnZSArICInIik7CisgICAgICAgIH0KKyAgICB9CisgICAg
YXNzZXJ0KGhhZEVycm9yLCAiRGlkIG5vdCB0aHJvdyBzeW50YXggZXJyb3IiKTsKK30KKworLy8g
c2VtYW50aWNzLmpzCisoZnVuY3Rpb24gbW96U2VtYW50aWNzKCkgeworCithc3luYyBmdW5jdGlv
biBlbXB0eSgpIHsKK30KKworYXN5bmMgZnVuY3Rpb24gc2ltcGxlUmV0dXJuKCkgeworICAgIHJl
dHVybiAxOworfQorCithc3luYyBmdW5jdGlvbiBzaW1wbGVBd2FpdCgpIHsKKyAgICB2YXIgcmVz
dWx0ID0gYXdhaXQgMjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCithc3luYyBmdW5jdGlvbiBz
aW1wbGVBd2FpdEFzeW5jKCkgeworICAgIHZhciByZXN1bHQgPSBhd2FpdCBzaW1wbGVSZXR1cm4o
KTsKKyAgICByZXR1cm4gMiArIHJlc3VsdDsKK30KKworYXN5bmMgZnVuY3Rpb24gcmV0dXJuT3Ro
ZXJBc3luYygpIHsKKyAgICByZXR1cm4gMSArIGF3YWl0IHNpbXBsZUF3YWl0QXN5bmMoKTsKK30K
KworYXN5bmMgZnVuY3Rpb24gc2ltcGxlVGhyb3dlcigpIHsKKyAgICB0aHJvdyBuZXcgRXJyb3Io
KTsKK30KKworYXN5bmMgZnVuY3Rpb24gZGVsZWdhdGVkVGhyb3dlcigpIHsKKyAgICB2YXIgdmFs
ID0gYXdhaXQgc2ltcGxlVGhyb3dlcigpOworICAgIHJldHVybiB2YWw7Cit9CisKK2FzeW5jIGZ1
bmN0aW9uIHRyeUNhdGNoKCkgeworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGRlbGVnYXRlZFRo
cm93ZXIoKTsKKyAgICAgICAgcmV0dXJuICdGQUlMRUQnOworICAgIH0gY2F0Y2ggKF8pIHsKKyAg
ICAgICAgcmV0dXJuIDU7CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiB0cnlDYXRjaFRocm93
KCkgeworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGRlbGVnYXRlZFRocm93ZXIoKTsKKyAgICAg
ICAgcmV0dXJuICdGQUlMRUQnOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0dXJuIGRl
bGVnYXRlZFRocm93ZXIoKTsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHdlbGxGaW5hbGx5
KCkgeworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGRlbGVnYXRlZFRocm93ZXIoKTsKKyAgICB9
IGNhdGNoIChfKSB7CisgICAgICAgIHJldHVybiAnRkFJTEVEJzsKKyAgICB9IGZpbmFsbHkgewor
ICAgICAgICByZXR1cm4gNjsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGZpbmFsbHlNYXlG
YWlsKCkgeworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGRlbGVnYXRlZFRocm93ZXIoKTsKKyAg
ICB9IGNhdGNoIChfKSB7CisgICAgICAgIHJldHVybiA1OworICAgIH0gZmluYWxseSB7CisgICAg
ICAgIHJldHVybiBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgfQorfQorCithc3luYyBmdW5jdGlv
biBlbWJlZGRlZCgpIHsKKyAgICBhc3luYyBmdW5jdGlvbiBpbm5lcigpIHsKKyAgICAgICAgcmV0
dXJuIDc7CisgICAgfQorICAgIHJldHVybiBhd2FpdCBpbm5lcigpOworfQorCisvLyByZWN1cnNp
b24sIGl0IHdvcmtzIQorYXN5bmMgZnVuY3Rpb24gZmliKG4pIHsKKyAgICByZXR1cm4gKG4gPT0g
MCB8fCBuID09IDEpID8gbiA6IGF3YWl0IGZpYihuIC0gMSkgKyBhd2FpdCBmaWIobiAtIDIpOwor
fQorCisvLyBtdXR1YWwgcmVjdXJzaW9uCithc3luYyBmdW5jdGlvbiBpc09kZChuKSB7CisgICAg
YXN5bmMgZnVuY3Rpb24gaXNFdmVuKG4pIHsKKyAgICAgICAgcmV0dXJuIG4gPT09IDAgfHwgYXdh
aXQgaXNPZGQobiAtIDEpOworICAgIH0KKyAgICByZXR1cm4gbiAhPT0gMCAmJiBhd2FpdCBpc0V2
ZW4obiAtIDEpOworfQorCisvLyByZWN1cnNpb24sIHRha2UgdGhyZWUhCit2YXIgaGFyZGNvcmVG
aWIgPSBhc3luYyBmdW5jdGlvbiBmaWIyKG4pIHsKKyAgICByZXR1cm4gKG4gPT0gMCB8fCBuID09
IDEpID8gbiA6IGF3YWl0IGZpYjIobiAtIDEpICsgYXdhaXQgZmliMihuIC0gMik7Cit9CisKK3Zh
ciBhc3luY0V4cHIgPSBhc3luYyBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gMTA7Cit9CisKK3Zh
ciBuYW1lZEFzeW5jRXhwciA9IGFzeW5jIGZ1bmN0aW9uIHNpbXBsZSgpIHsKKyAgICByZXR1cm4g
MTE7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGV4ZWN1dGlvbk9yZGVyKCkgeworICAgIHZhciB2YWx1
ZSA9IDA7CisgICAgYXN5bmMgZnVuY3Rpb24gZmlyc3QoKSB7CisgICAgICAgIHJldHVybiAodmFs
dWUgPSB2YWx1ZSA9PT0gMCA/IDEgOiB2YWx1ZSk7CisgICAgfQorICAgIGFzeW5jIGZ1bmN0aW9u
IHNlY29uZCgpIHsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAwID8gMiA6IHZh
bHVlKTsKKyAgICB9CisgICAgYXN5bmMgZnVuY3Rpb24gdGhpcmQoKSB7CisgICAgICAgIHJldHVy
biAodmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDMgOiB2YWx1ZSk7CisgICAgfQorICAgIHJldHVybiBh
d2FpdCBmaXJzdCgpICsgYXdhaXQgc2Vjb25kKCkgKyBhd2FpdCB0aGlyZCgpICsgNjsKK30KKwor
YXN5bmMgZnVuY3Rpb24gbWlzY2VsbGFuZW91cygpIHsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0
aCA9PT0gMyAmJgorICAgICAgICBhcmd1bWVudHMuY2FsbGVlLm5hbWUgPT09ICJtaXNjZWxsYW5l
b3VzIikKKyAgICAgICAgcmV0dXJuIDE0OworfQorCitmdW5jdGlvbiB0aHJvd2VyKCkgeworICAg
IHRocm93IDE1OworfQorCithc3luYyBmdW5jdGlvbiBkZWZhdWx0QXJncyhhcmcgPSB0aHJvd2Vy
KCkpIHsKK30KKworLy8gQXN5bmMgZnVuY3Rpb25zIGFyZSBub3QgY29uc3RydWN0aWJsZQorc2hv
dWxkVGhyb3coKCkgPT4geworICAgIGFzeW5jIGZ1bmN0aW9uIFBlcnNvbigpIHsKKyAgICB9Cisg
ICAgbmV3IFBlcnNvbigpOworfSwgVHlwZUVycm9yKTsKKworc2hvdWxkQmVBc3luYyh1bmRlZmlu
ZWQsIGVtcHR5KTsKK3Nob3VsZEJlQXN5bmMoMSwgc2ltcGxlUmV0dXJuKTsKK3Nob3VsZEJlQXN5
bmMoMiwgc2ltcGxlQXdhaXQpOworc2hvdWxkQmVBc3luYygzLCBzaW1wbGVBd2FpdEFzeW5jKTsK
K3Nob3VsZEJlQXN5bmMoNCwgcmV0dXJuT3RoZXJBc3luYyk7CitzaG91bGRUaHJvd0FzeW5jKHNp
bXBsZVRocm93ZXIsIEVycm9yKTsKK3Nob3VsZEJlQXN5bmMoNSwgdHJ5Q2F0Y2gpOworc2hvdWxk
QmVBc3luYyg2LCB3ZWxsRmluYWxseSk7CitzaG91bGRUaHJvd0FzeW5jKGZpbmFsbHlNYXlGYWls
LCBFcnJvcik7CitzaG91bGRCZUFzeW5jKDcsIGVtYmVkZGVkKTsKK3Nob3VsZEJlQXN5bmMoOCwg
KCkgPT4gZmliKDYpKTsKK3Nob3VsZEJlQXN5bmMoOSwgZXhlY3V0aW9uT3JkZXIpOworc2hvdWxk
QmVBc3luYygxMCwgYXN5bmNFeHByKTsKK3Nob3VsZEJlQXN5bmMoMTEsIG5hbWVkQXN5bmNFeHBy
KTsKK3Nob3VsZEJlQXN5bmMoMTIsICgpID0+IGlzT2RkKDEyKS50aGVuKHYgPT4gdiA/ICJvb3Bz
IiA6IDEyKSk7CitzaG91bGRCZUFzeW5jKDEzLCAoKSA9PiBoYXJkY29yZUZpYig3KSk7CitzaG91
bGRCZUFzeW5jKDE0LCAoKSA9PiBtaXNjZWxsYW5lb3VzKDEsIDIsIDMpKTsKK3Nob3VsZEJlQXN5
bmMoMTUsICgpID0+IGRlZmF1bHRBcmdzKCkuY2F0Y2goZSA9PiBlKSk7CisKK30pKCk7CisKKy8v
IG1ldGhvZHMuanMKKyhmdW5jdGlvbiBtb3pNZXRob2RzKCkgeworCitjbGFzcyBYIHsKKyAgICBj
b25zdHJ1Y3RvcigpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IDQyOworICAgIH0KKyAgICBhc3lu
YyBnZXRWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7CisgICAgfQorICAgIHNl
dFZhbHVlKHZhbHVlKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB9CisgICAg
YXN5bmMgaW5jcmVtZW50KCkgeworICAgICAgICB2YXIgdmFsdWUgPSBhd2FpdCB0aGlzLmdldFZh
bHVlKCk7CisgICAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUgKyAxKTsKKyAgICAgICAgcmV0dXJu
IHRoaXMuZ2V0VmFsdWUoKTsKKyAgICB9CisgICAgYXN5bmMgZ2V0QmFzZUNsYXNzTmFtZSgpIHsK
KyAgICAgICAgcmV0dXJuICdYJzsKKyAgICB9CisgICAgc3RhdGljIGFzeW5jIGdldFN0YXRpY1Zh
bHVlKCkgeworICAgICAgICByZXR1cm4gNDQ7CisgICAgfQorfQorCitjbGFzcyBZIGV4dGVuZHMg
WCB7CisgICAgYXN5bmMgZ2V0QmFzZUNsYXNzTmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVy
LmdldEJhc2VDbGFzc05hbWUoKTsKKyAgICB9Cit9CisKK3ZhciBvYmpMaXRlcmFsID0geworICAg
IGFzeW5jIGdldCgpIHsKKyAgICAgICAgcmV0dXJuIDQ1OworICAgIH0sCisgICAgc29tZVN0dWZm
OiA1Cit9OworCit2YXIgeCA9IG5ldyBYKCk7Cit2YXIgeSA9IG5ldyBZKCk7CisKK3Nob3VsZEJl
QXN5bmMoNDIsICgpID0+IHguZ2V0VmFsdWUoKSk7CitzaG91bGRCZUFzeW5jKDQzLCAoKSA9PiB4
LmluY3JlbWVudCgpKTsKK3Nob3VsZEJlQXN5bmMoNDQsICgpID0+IFguZ2V0U3RhdGljVmFsdWUo
KSk7CitzaG91bGRCZUFzeW5jKDQ1LCAoKSA9PiBvYmpMaXRlcmFsLmdldCgpKTsKK3Nob3VsZEJl
QXN5bmMoJ1gnLCAoKSA9PiB5LmdldEJhc2VDbGFzc05hbWUoKSk7CisKK30pKCk7CisKKyhmdW5j
dGlvbiBtb3pGdW5jdGlvbk5hbWVJbmZlcnJlbmNlKCkgeworCithc3luYyBmdW5jdGlvbiB0ZXN0
KCkgeyB9CisKK3ZhciBhbm9uID0gYXN5bmMgZnVuY3Rpb24oKSB7IH0KKworc2hvdWxkQmUoInRl
c3QiLCB0ZXN0Lm5hbWUpOworc2hvdWxkQmUoImFub24iLCBhbm9uLm5hbWUpOworCit9KSgpOwor
CisoZnVuY3Rpb24gbW96U3ludGF4RXJyb3JzKCkgeworCitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCIndXNlIHN0cmljdCc7IGFzeW5jIGZ1bmN0aW9uIGV2YWwoKSB7fSIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiJ3VzZSBzdHJpY3QnOyBhc3luYyBmdW5jdGlvbiBhcmd1bWVudHMoKSB7fSIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gYShrID0gc3VwZXIucHJv
cCkgeyB9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBhKCkgeyBz
dXBlci5wcm9wKCk7IH0iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9u
IGEoKSB7IHN1cGVyKCk7IH0iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0
aW9uIGEoayA9IGF3YWl0IDMpIHt9Iik7CisKK30pKCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2ZWQtd29y
ZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdvcmQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzhlMWQzMzIxYzdmODAwODdiZWRmMGYxNTcyMWIyOTViODFlZWZiMwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdvcmQuanMKQEAg
LTAsMCArMSwxNjYgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5D
RlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisK
K2Z1bmN0aW9uIGFzc2VydChjb25kLCBtc2cgPSAiIikgeworICAgIGlmICghY29uZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7Cit9Citub0lubGluZShhc3NlcnQpOworCitmdW5jdGlv
biBzaG91bGRUaHJvd1N5bnRheEVycm9yKHN0ciwgbWVzc2FnZSkgeworICAgIHZhciBoYWRFcnJv
ciA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGV2YWwoc3RyKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHsKKyAgICAgICAgICAg
IGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gInN0
cmluZyIpCisgICAgICAgICAgICAgICAgYXNzZXJ0KGUubWVzc2FnZSA9PT0gbWVzc2FnZSwgIkV4
cGVjdGVkICciICsgbWVzc2FnZSArICInIGJ1dCB0aHJldyAnIiArIGUubWVzc2FnZSArICInIik7
CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KGhhZEVycm9yLCAiRGlkIG5vdCB0aHJvdyBz
eW50YXggZXJyb3IiKTsKK30KK25vSW5saW5lKHNob3VsZFRocm93U3ludGF4RXJyb3IpOworCit2
YXIgQXN5bmNGdW5jdGlvbiA9IChhc3luYyBmdW5jdGlvbigpIHt9KS5jb25zdHJ1Y3RvcjsKKwor
Ly8gQXN5bmNGdW5jdGlvbkV4cHJlc3Npb24KK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3lu
YyBmdW5jdGlvbigpIHsgdmFyIGF3YWl0OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciBbYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIFsuLi5hd2FpdF0g
PSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9u
KCkgeyB2YXIge2F3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFz
eW5jIGZ1bmN0aW9uKCkgeyBsZXQgYXdhaXQ7IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQgW2F3YWl0XSA9IFtdOyB9KSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigp
IHsgbGV0IFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhp
Y2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCB7YXdhaXR9ID0ge307IH0pIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBs
ZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7
fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVu
Y3Rpb24oKSB7IGNvbnN0IGF3YWl0OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3QgW2F3YWl0XSA9IFtdOyB9KSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsg
Y29uc3QgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3Qge2F3YWl0fSA9IHt9OyB9KSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsg
Y29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0
fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3lu
YyBmdW5jdGlvbigpIHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9KSIsICJDYW5ub3QgZGVjbGFyZSBm
dW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBhc3luYyBmdW5jdGlvbiBhd2FpdCgp
IHt9IH0pIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24o
YXdhaXQpIHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0
aW9uIGYoW2F3YWl0XSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5
bmMgZnVuY3Rpb24gZihbLi4uYXdhaXRdKSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBw
YXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKC4uLmF3YWl0KSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKHthd2FpdH0pIHt9KSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoe2lzQXN5bmM6IGF3YWl0
fSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CisKKy8vIEFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbgorc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIGF3YWl0OyB9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciBbYXdhaXRd
ID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9u
IGYoKSB7IHZhciBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciB7aXNBc3lu
YzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGYoKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCBhd2FpdDsgfSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYo
KSB7IGxldCBbYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQgWy4uLmF3YWl0XSA9IFtdOyB9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsg
bGV0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkg
eyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3QgYXdhaXQ7IH0iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBj
b25zdCBbYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCBbLi4uYXdhaXRdID0gW107IH0iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBj
b25zdCB7YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0i
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBm
KCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBmdW5jdGlvbiBhd2FpdCgp
IHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYo
KSB7IGFzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlv
biBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZihhd2FpdCkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoW2F3YWl0XSkge30iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoWy4uLmF3YWl0XSkge30iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoLi4uYXdhaXQpIHt9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKHthd2Fp
dH0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBm
KHtpc0FzeW5jOiBhd2FpdH0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVy
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CisKKy8vIEFzeW5jQXJyb3dGdW5jdGlvbgor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciBhd2FpdDsg
fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsg
dmFyIFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IGYgPSBhc3luYyAoKSA9PiB7IHZhciBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIge2F3YWl0fSA9IHt9
OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+
IHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307
IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4g
eyBsZXQgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQgWy4uLmF3
YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IGYgPSBhc3luYyAoKSA9PiB7IGxldCB7YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IHtpc0FzeW5j
OiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7
IGNvbnN0IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
dmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCBb
Li4uYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3Qge2F3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0
IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0g
e307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFz
eW5jICgpID0+IHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0
aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7
fSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jIChhd2Fp
dCkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMg
KFthd2FpdF0pID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9
IGFzeW5jIChbLi4uYXdhaXRdKSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFt
ZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIGYgPSBhc3luYyAoLi4uYXdhaXQpID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICh7YXdhaXR9KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoe2lzQXN5bmM6IGF3YWl0fSkgPT4ge30i
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgYXdhaXQgPT4g
e30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKKworLy8gQXN5bmNNZXRob2QKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBPID0geyBhc3luYyBmKCkgeyB2YXIgYXdhaXQ7IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIFthd2FpdF0gPSBbXTsgfSB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIg
Wy4uLmF3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IE8gPSB7IGFzeW5jIGYoKSB7IHZhciB7YXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIHtpc0FzeW5jOiBhd2Fp
dH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBh
c3luYyBmKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCBhd2FpdDsgfSB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYo
KSB7IGxldCBbYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQgWy4uLmF3YWl0XSA9IFtdOyB9IH0i
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMg
ZigpIHsgbGV0IHthd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0g
e307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0g
eyBhc3luYyBmKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3Qg
YXdhaXQ7IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBP
ID0geyBhc3luYyBmKCkgeyBjb25zdCBbYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCBbLi4u
YXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCB7YXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBjb25z
dCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9
ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBP
ID0geyBhc3luYyBmKCkgeyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUg
ZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBhc3luYyBmdW5jdGlvbiBhd2Fp
dCgpIHt9IH0gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFz
eW5jIGYoYXdhaXQpIHt9IH0gIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
TyA9IHsgYXN5bmMgZihbYXdhaXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFt
ZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIE8gPSB7IGFzeW5jIGYoWy4uLmF3YWl0XSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKC4uLmF3YWl0KSB7fSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoe2F3YWl0fSkge30iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKHtpc0FzeW5jOiBh
d2FpdH0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CisKKy8vIEFzeW5jRnVuY3Rpb24gY29uc3RydWN0b3IKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciBhd2FpdDsnKSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIgW2F3YWl0XSA9IFtdOycp
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciBbLi4u
YXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5j
dGlvbigndmFyIHthd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJBc3luY0Z1bmN0aW9uKCd2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciB7aXNBc3luYzogYXdhaXR9
ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbign
bGV0IGF3YWl0OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5
bmNGdW5jdGlvbignbGV0IFthd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCBbLi4uYXdhaXRdID0gW107JykiLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQg
e2F3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
QXN5bmNGdW5jdGlvbignbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCB7aXNBc3luYzog
YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJB
c3luY0Z1bmN0aW9uKCdjb25zdCBhd2FpdDsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxl
eGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IFthd2FpdF0gPSBbXTsnKSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IFsu
Li5hd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
IkFzeW5jRnVuY3Rpb24oJ2NvbnN0IHthd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IHtpc0FzeW5jOiBhd2Fp
dH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5j
RnVuY3Rpb24oJ2NvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2Z1bmN0aW9uIGF3YWl0KCkg
e30nKSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignYXN5
bmMgZnVuY3Rpb24gYXdhaXQoKSB7fScpIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVk
ICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJBc3luY0Z1bmN0aW9uKCdhd2FpdCcsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBh
cmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiQXN5bmNGdW5jdGlvbignW2F3YWl0XScsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignWy4uLmF3YWl0XScsICcnKSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignLi4uYXdhaXQnLCAnJykiLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3thd2FpdH0nLCAnJyki
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3tpc0FzeW5j
OiBhd2FpdH0nLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292961</attachid>
            <date>2016-10-26 14:32:49 -0700</date>
            <delta_ts>2016-10-27 18:48:43 -0700</delta_ts>
            <desc>Couple comments addressed</desc>
            <filename>bug-163760-20161026172901.patch</filename>
            <type>text/plain</type>
            <size>188711</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MjhhMTlmYTQzMTFiMjQxNWNhOTdhNmJlNDk1NWZjNmY3NmQ4YTM4Li5kNmZiMzQxNzhkNDViNDMz
MGQ0ZjhhZGU1ZTQ1MGNmZDgyZjEyMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTcgQEAKKzIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBm
dW5jdGlvbnMgZ2VuZXJhdGUgYnl0ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3
aGljaCBpcworICAgICAgICBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb246CisgICAgICAgIAorICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5z
bGF0aW9uOgorICAgICAgICBhc3luYyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAv
LyBBZnRlciB0cmFuc2xhdGlvbjoKKyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAg
ICAgICAgIGxldCBnZW5lcmF0b3IgPSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQm9keSBvZiBhc3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgQGdlbmVyYXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5l
cmF0b3JUaGlzOiB0aGlzLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8
ZnJhbWUgc3RhdGU+LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgQXdhaXQgRXhw
cmVzc2lvbnMgYXJlIGVxdWl2YWxlbnQgdG8gbm9uLWRlbGVnYXRpbmcgWWllbGQgZXhwcmVzc2lv
bnMsIGFuZCBlbWl0IGlkZW50aWNhbCBieXRlY29kZS4KKworICAgICAgICBJbiB0aGlzIGJ1Zywg
YXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBvbmx5IHBhcnRpYWxseSBpbXBsZW1lbnRlZCwgYXMg
c3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgZnVuY3Rpb25zCisgICAgICAgIGRvIG5vdCB5ZXQgd29y
ayBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5q
czogQWRkZWQuCisgICAgICAgIChhc3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjppc0Fycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4
cHJlc3Npb25Db21tb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jQ29tbW9uKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX25ld19hc3luY19mdW5jKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TmV3
RnVuY0V4cHJDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogbGxp
bnQvTExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OnNldFNvdXJjZVBhcnNlTW9kZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZSk6CisgICAgICAgIChKU0M6OmlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZSk6CisgICAgICAgICogcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpBc3lu
Y0Z1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Y2Fs
bEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6QXN5bmNG
dW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6
SlNBc3luY0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAg
KEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlvblN0cnVjdHVyZUNvbmN1cnJl
bnRseSk6CisKIDIwMTYtMTAtMjYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3OjpzZXQoKSBzaG91bGQgY2hlY2sgZm9yIGV4
Y2VwdGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODdmNzNlNWEw
NzBjYzEyMjFmYzhkNDIzMjI1YzM3MTg2MDY0OWU0MS4uZjI5YTRlMTk5NThkYjE4MTdhMTJhNDE2
ZTUzYWVmNzljZWVlZWJhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
NjM4LDYgKzYzOCw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9B
cnJheUNvbnZlbnRpb25zLmNwcAogICAgIHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5j
cHAKICAgICBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvQXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcAorICAgIHJ1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5j
cHAKICAgICBydW50aW1lL0Jhc2ljQmxvY2tMb2NhdGlvbi5jcHAKICAgICBydW50aW1lL0Jvb2xl
YW5Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwCkBAIC03MTQs
NiArNzE2LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0pTQXJy
YXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5
cGUuY3BwCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKKyAgICBydW50aW1lL0pT
QXN5bmNGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKICAgICBy
dW50aW1lL0pTQ0pTVmFsdWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKQEAgLTEyOTgs
NiArMTMwMSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcwogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcworICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0RhdGVQcm90b3R5cGUuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDY2MzA1MzcyMDI0ZTFk
ZDkzYTRhYzcyZDAyOTA2YTMyMDMwNTQ2NjIuLjI4NTRkNWU3OTg2ZGIwOTFiMmI5ODRjYTBlM2Yw
ZjI0NzkwYzJiNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CkBAIC04OSw2ICs4OSw3IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAg
ICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAg
JChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcyBcCiAg
ICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMgXAorICAgICQo
SmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgXAogICAg
ICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0RhdGVQcm90b3R5cGUuanMgXAogICAgICQoSmF2
YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFT
Y3JpcHRDb3JlKS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA2ZjM2ODA0MjE0NWI4OGEyMGM5ZTJlZjBlYjdiZGY4MzJmMThl
MGQzLi45NmRhZTU4Mjk2MTBiOTVmMDlkMzA5YTEzMDJkYTc0ZWU3MGI2MzE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0NCw2ICsxMjQ0LDEyIEBACiAJCTUzRkQwNEQzMUQ3
QUIyNzcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGRDA0RDExRDdBQjE4NzAwMzI4N0Qz
IC8qIFdhc21DYWxsaW5nQ29udmVudGlvbi5jcHAgKi87IH07CiAJCTUzRkQwNEQ0MUQ3QUIyOTEw
MDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNt
Q2FsbGluZ0NvbnZlbnRpb24uaCAqLzsgfTsKIAkJNUM0RThFOTYxREJFQkU2MjAwMzZGMUZDIC8q
IEpTT05QYXJzZVRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUM0RThFOTQxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05QYXJzZVRlc3QuY3BwICov
OyB9OworCQk1QjcwQ0ZERTFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEODFEQjY5
RTVDMDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggKi87IH07CisJCTVCNzBDRkRGMURCNjlF
NjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI3MENGRDkxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5
bmNGdW5jdGlvbi5jcHAgKi87IH07CisJCTVCNzBDRkUwMURCNjlFNjYwMEVDMjNGOSAvKiBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5oICovOyB9OworCQk1QjcwQ0ZFMTFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlv
blByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QjcwQ0ZEQjFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5j
cHAgKi87IH07CisJCTVCNzBDRkUyMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAq
LzsgfTsKKwkJNUI3MENGRTMxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QjcwQ0ZERDFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAq
LzsgfTsKIAkJNUQ1RDhBRDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQw
RUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLzsgfTsKIAkJNURCQjE1MUIxMzFEMEIzMTAw
NTZBRDM2IC8qIHRlc3RhcGkuanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFw
aS5qcyAqLzsgfTsKIAkJNURCQjE1MjUxMzFEMEJENzAwNTZBRDM2IC8qIG1pbmlkb20uanMgaW4g
Q29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDEyMTEwRDBBNDg3ODg3MDA0ODAyNTUgLyogbWluaWRvbS5qcyAqLzsgfTsKQEAgLTM1NTYsNiAr
MzU2MiwxMyBAQAogCQk1M0ZEMDREMjFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252
ZW50aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DYWxsaW5nQ29u
dmVudGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzRFOEU5NDFEQkVCREEy
MDAzNkYxRkMgLyogSlNPTlBhcnNlVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBKU09OUGFyc2VUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9KU09OUGFyc2VU
ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0RThFOTUxREJFQkRBMjAw
MzZGMUZDIC8qIEpTT05QYXJzZVRlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gSlNPTlBhcnNlVGVzdC5oOyBwYXRoID0gQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpT
QXN5bmNGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FzeW5j
RnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGRDkxREI2OUU1
QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0FzeW5jRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QjcwQ0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkRCMURCNjlFNUMwMEVD
MjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QjcwQ0ZEQzFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZE
RDFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCODI0MzA0MURCN0FBNDkwMEVBNjM4
NCAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZh
c2NyaXB0OyBwYXRoID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmVkaXQuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9s
aWJlZGl0LmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk1REFGRDZDQjE0
NkI2ODYzMDBGQkVGQjQgLyogSlNDLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEpTQy54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUREREY0NDYxNEZFRTcyMjAwQjRGQjRE
IC8qIExMSW50RGVzaXJlZE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTExJbnREZXNpcmVkT2Zmc2V0cy5oOyBwYXRoID0gTExJbnRPZmZzZXRzL0xMSW50RGVzaXJl
ZE9mZnNldHMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTU5MzAs
NiArNTk0MywxMCBAQAogCQkJCUY2OTJBODREMDI1NTU5N0QwMUZGNjBGNyAvKiBBcnJheVByb3Rv
dHlwZS5jcHAgKi8sCiAJCQkJRjY5MkE4NEUwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90
eXBlLmggKi8sCiAJCQkJMEZCN0YzOEExNUVEOEUzODAwRjE2N0IyIC8qIEFycmF5U3RvcmFnZS5o
ICovLAorCQkJCTVCNzBDRkREMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwICovLAorCQkJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuaCAqLywKKwkJCQk1QjcwQ0ZEQjFEQjY5RTVDMDBFQzIzRjkgLyogQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8sCisJCQkJNUI3MENGREExREI2OUU1QzAwRUMyM0Y5
IC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQkwRjM4RDJBMDFENDQxOTY2MDA2
ODA0OTkgLyogQXV4aWxpYXJ5QmFycmllci5oICovLAogCQkJCTBGMzhEMkExMUQ0NDE5NjYwMDY4
MDQ5OSAvKiBBdXhpbGlhcnlCYXJyaWVySW5saW5lcy5oICovLAogCQkJCTUyNjc4RjhDMUEwMzEw
MDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwICovLApAQCAtNjExNSw2ICs2MTMy
LDggQEAKIAkJCQkwRjJCNjZCQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXcu
aCAqLywKIAkJCQkwRjJCNjZCQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXdJ
bmxpbmVzLmggKi8sCiAJCQkJNTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxp
bmVzLmggKi8sCisJCQkJNUI3MENGRDkxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlv
bi5jcHAgKi8sCisJCQkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlv
bi5oICovLAogCQkJCTg2RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24u
Y3BwICovLAogCQkJCTg2RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24u
aCAqLywKIAkJCQk2NTdDRjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuY3BwICovLApA
QCAtNzMwMyw2ICs3MzIyLDcgQEAKIAkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJy
YXlQcm90b3R5cGUuanMgKi8sCiAJCQkJN0NGOUJDNTgxQjY1RDlBMzAwOURCMUVGIC8qIEFycmF5
Q29uc3RydWN0b3IuanMgKi8sCiAJCQkJN0NGOUJDNTkxQjY1RDlBMzAwOURCMUVGIC8qIEFycmF5
SXRlcmF0b3JQcm90b3R5cGUuanMgKi8sCisJCQkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8q
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgKi8sCiAJCQkJREUyNkU5MDYxQ0I1REQ5NjAwRDJC
RTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5jcHAgKi8sCiAJCQkJREUyNkU5MDIxQ0I1
REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oICovLAogCQkJCUE3RDgw
MUExMTg4MEQ2NkUwMDI2QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovLApAQCAtNzc0
MSw2ICs3NzYxLDcgQEAKIAkJCQlEQzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMgLyogSGVhcENlbGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzNDQ0ZDMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9j
a01hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkQxOUFEQTQxMDAwNkFDNzJBIC8qIERG
R0Jsb2NrTWFwSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUI3MENGRTIxREI2OUU2NjAw
RUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZDM0NDRkUxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrU2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkJGMTU4RDE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkMzQ0QwMDE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tXb3Jr
bGlzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC04MzA5LDYgKzgzMzAsNyBAQAogCQkJCTdDMTg0RTFC
MTdCRURCRDMwMDdDQjYzQSAvKiBKU1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0
RTIzMTdCRUUyNDAwMDdDQjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTk2QjczMUUxQkRBMDhFRjAwMzMxQjg0IC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9y
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUI3MENGREUxREI2OUU2NjAwRUMyM0Y5IC8qIEpT
QXN5bmNGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDREIxODcxMjRCQjAwOTU1
QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzE4NEUxRjE3
QkVFMjJFMDA3Q0I2M0EgLyogSlNQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5OTZCNzMxRjFCREEwOEVGMDAzMzFCODQgLyogSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04NDUxLDYgKzg0NzMsNyBAQAogCQkJCUJDMThDNDNGMEUxNkY1Q0Qw
MEIzNDQ2MCAvKiBOb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNDVBMjgxOEExQjI1OTAw
MjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMx
OEM0NDEwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1QjcwQ0ZFMDFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDIwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJl
ckNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDMwRTE2RjVDRDAw
QjM0NDYwIC8qIE51bWJlck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDQwRTE2
RjVDRDAwQjM0NDYwIC8qIE51bWJlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MzE3
LDYgKzkzNDAsNyBAQAogCQkJCUE1NTcxNEJGMUNEODA0QTQwMDA0RDJDNiAvKiBDb25zb2xlT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTI1MUJEQUNEQUMwMDgwRkY3NCAvKiBC
M1BhdGNocG9pbnRTcGVjaWFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTI3MUJEQUNE
QUMwMDgwRkY3NCAvKiBCM1BhdGNocG9pbnRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
QjcwQ0ZFMzFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRUM4NTI5MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2Nv
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1MkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
UHJvY2VkdXJlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzNDIyQTYyMUMxNThFNkEwMEUyRUI5
OCAvKiBCM0NvbnN0RmxvYXRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk3MzAsNiArOTc1
NCw3IEBACiAJCQkJMEY1NTEzQTgxRDVBNjhDRDAwQzMyQkQ4IC8qIEZyZWVMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUZFOTlCMjRBMUMyNEMzRDcwMEM4MjE1OSAvKiBKSVROZWdHZW5lcmF0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZDQzg1QzQwRUU3QTg5NDAwMjg4NjgyIC8qIEpJ
VFByb3BlcnR5QWNjZXNzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCNzBDRkUxMURCNjlFNjYw
MEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3QzFFOEU0MTEyRTcyRUYwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGQjQxNTg0MUQ3OEZCNEMwMERGOEQwOSAvKiBBcnJheUNvbnZl
bnRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAv
KiBKSVRTdHViUm91dGluZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk5MDcsNiArOTkzMiw3IEBA
CiAJCQkJMTQ4RjIxQjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCURDNjlBQTY2MUNGN0ExRjIwMEM2MjcyRiAvKiBNYXRjaFJlc3VsdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9k
dWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCNzBDRkRGMURCNjlFNjYwMEVDMjNGOSAvKiBK
U0FzeW5jRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1RUIyOUIxMENFMjU4MTAw
MUE5OTBFIC8qIE5vZGVzQ29kZWdlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTQ2RjUyMTFB
MzJCMzEzMDA2RjA3RDUgLyogTnVsbEdldHRlckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUzMjJFNUEyMURBNjQ0MzkwMDZFNzcwOSAvKiBERkdET01KSVRQYXRjaHBvaW50UGFyYW1z
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjQ3ODgyYWZj
OGIwZTNlMTRhY2ZkYzdjN2ExMDcwNGFmMzEzNGMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2Fp
dHBAaWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK2Z1bmN0aW9uIGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJl
c3VtZU1vZGUpCit7CisgICAgInVzZSBzdHJpY3QiOworICAgIGxldCBzdGF0ZSA9IGdlbmVyYXRv
ci5AZ2VuZXJhdG9yU3RhdGU7CisgICAgbGV0IHZhbHVlID0gQHVuZGVmaW5lZDsKKworICAgIGlm
IChzdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkIHx8IChyZXN1bWVNb2RlICE9PSBA
R2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCAmJiByZXN1bWVNb2RlICE9PSBAR2VuZXJhdG9yUmVz
dW1lTW9kZVRocm93KSkKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJBc3luYyBmdW5jdGlvbiBp
bGxlZ2FsbHkgcmVzdW1lZCIpOworCisgICAgdHJ5IHsKKyAgICAgICAgZ2VuZXJhdG9yLkBnZW5l
cmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsKKyAgICAgICAgdmFsdWUgPSBn
ZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBn
ZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJh
dG9yRnJhbWUpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gQEdl
bmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRv
clN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOworICAgICAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLkByZXNvbHZlKHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0gY2F0Y2ggKGVycm9yKSB7
CisgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21w
bGV0ZWQ7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KGVycm9yKTsKKyAgICB9CisK
KyAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUodmFsdWUpLkB0aGVuKAorICAgICAgICBmdW5j
dGlvbih2YWx1ZSkgeyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCB2YWx1
ZSwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpOyB9LAorICAgICAgICBmdW5jdGlvbihlcnJv
cikgeyByZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBlcnJvciwgQEdlbmVy
YXRvclJlc3VtZU1vZGVUaHJvdyk7IH0pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDU3NmRlNDAwNjA0ZDEwMTQ3NTFjYzYz
YmVhY2VjNzdhNTVmZDRmZjcuLjg0YWUzYmRhMmYwMGI5MGQ4ZjFkMjMwZjYxYmFkMDkyOGM4MTEz
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KQEAgLTEwNSw2ICsxMDUsOCBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3
X2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX25ld19hc3luY19mdW5jIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXN5bmNfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3NldF9mdW5jdGlvbl9uYW1lIiwgImxlbmd0
aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsIiwgImxlbmd0aCIgOiA5
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90YWlsX2NhbGwiLCAibGVuZ3RoIiA6IDkg
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
aW5kZXggZDk3M2JjZmIxMzdjMzJjMGM2ZGVlZGYzZGUwZTFkZDk0MTY1NGM2Zi4uMTYyZGIyODJj
ZDU1MzkwNTAxODU1NzEwYzIxZWJiNDE3ZmE1MDVlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE2NCw2ICsxNjQsNyBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQg
b3Bjb2RlSUQsIEluc3RydWN0aQogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgog
ICAgIGNhc2Ugb3BfbmV3X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5j
X2V4cDoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4cDoKICAgICBjYXNlIG9wX3RvX2lu
ZGV4X3N0cmluZzoKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAg
IGNhc2Ugb3BfcmVzb2x2ZV9zY29wZToKQEAgLTE5Niw2ICsxOTcsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQs
IEluc3RydWN0aQogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoK
ICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICBjYXNlIG9wX25ld19hc3luY19m
dW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9z
Y29wZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CkBAIC0zODgsNiArMzkw
LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ss
IE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoK
ICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX25ld19nZW5lcmF0
b3JfZnVuY19leHA6CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuYzoKKyAgICBjYXNlIG9wX25l
d19hc3luY19mdW5jX2V4cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAgICBjYXNlIG9w
X3RhaWxfY2FsbF92YXJhcmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1l
bnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRl
eCA1Yjc0ODNjZmVmMzg3OGMyNzJlMDA4Y2JkZWI3NTBkZTA2MjdmODE1Li5mNzk5OTkwYjFjMzc1
ODYxMTljNDRmZGZlODFkOGVhNzU1ZmM4NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTQ2NCw2ICsxNDY0LDE0IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNf
ZnVuYzogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAibmV3X2FzeW5jX2Z1bmMiKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX25ld19mdW5jX2V4cDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE0ODAs
NiArMTQ4OCwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cisg
ICAgICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfYXN5bmNf
ZnVuY19leHAiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0
ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3NldF9mdW5jdGlvbl9uYW1l
OiB7CiAgICAgICAgICAgICBpbnQgZnVuY1JlZyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IG5hbWVSZWcgPSAoKytpdCktPnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMjVhMzU3YmY1
NjExNjQ1MGMxYjBlMjU1Yzk3NzBhMjNhZDNlMTllYy4uZTkxOGE5M2MyNGU2NzhkZTEyMmQ3NTUw
MTE4MTkyZGI1NzdmMzE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAg
IGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CiAgICAgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9Ci0gICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkp
OyB9CiAgICAgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5
cGUpOyB9CiAgICAgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEV2YWxDb250ZXh0VHlwZT4obV9ldmFsQ29udGV4dFR5cGUpOyB9CiAg
ICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93
RnVuY3Rpb25Db250ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGJhYzQwNTQxM2E2
YjJmZGQ5OTcyNzJjMjhmMGM3NGE3MjMwNmEzMzguLjZmNTU4Y2Y3YTk3NGM4NTMzM2JhODUyMzAw
MjE4ZmUyMzEyMmUxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0xMzIsNyArMTMyLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBjb25zdHJ1Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7IH0KICAg
ICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygpIGNv
bnN0IHsgcmV0dXJuICZtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9CiAgICAgCi0gICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpOyB9
CiAKICAgICBKU0M6OkRlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25z
dCB7cmV0dXJuIHN0YXRpY19jYXN0PEpTQzo6RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRD
b250ZXh0VHlwZSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBmN2UxMDMxN2EyMTRjNjQ4Mzkw
Yjk0YjE4YmNmZDczNzNkNWNlMTdmLi5kMTQ5NTUxODYzNGY3ZTFhNjg3NzU1Yjg5YWJlNzRmNjM3
OTU4MDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIFBhcnNlckVycm9y
IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgfQogICAgIAogCi0gICAgaWYgKG1f
Y29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlN
b2RlKQorICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUobV9j
b2RlQmxvY2stPnBhcnNlTW9kZSgpKSkKICAgICAgICAgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlv
bihtX2NvZGVCbG9jay5nZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOwogCiAgICAg
bV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9ucyhzdGQ6Om1ha2VfdW5pcXVlPFVubGlua2VkSW5z
dHJ1Y3Rpb25TdHJlYW0+KG1faW5zdHJ1Y3Rpb25zKSk7CkBAIC0yNjgsMTUgKzI2OCwxNSBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUq
IGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhp
bmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAg
ICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8
fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rp
b24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJ
bklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAgLy8gR2VuZXJhdG9yIG5ldmVy
IHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNv
bHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCisgICAgaWYgKGlzR2Vu
ZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKSB7CisgICAgICAg
IC8vIEdlbmVyYXRvciBhbmQgQXN5bmNGdW5jdGlvbiBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRz
Ii4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2Vu
ZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwog
Ci0gICAgICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVz
dW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50
aWF0ZWQuCisgICAgICAgIC8vIEdlbmVyYXRvciBhbmQgQXN5bmNGdW5jdGlvbiB1c2VzIHRoZSB2
YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2Fs
IHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCiAgICAgICAgIHNob3VsZENhcHR1cmVTb21l
T2ZUaGVUaGluZ3MgPSB0cnVlOwogICAgIH0KIAotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRz
KSB7CisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShw
YXJzZU1vZGUpICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVyYXRvciBkb2Vz
IG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5j
dGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFy
Z3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGlu
ZyBpdC4KICAgICAgICAgLy8gVG8gd29ya2Fyb3VuZCBpdCwgd2UgZXZhbHVhdGUgdGhlc2UgYXJn
dW1lbnRzIGFzIGFyZ3VtZW50cyBvZiBhIHdyYXBwaW5nIGdlbmVyYXRvciBmdW5jdGlvbiwgYW5k
IHJlZmVyZW5jZSBpdCBmcm9tIGEgZ2VuZXJhdG9yLgpAQCAtMzIwLDEzICszMjAsMTQgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBm
dW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIGVtaXRFbnRlcigpOwogCi0gICAgaWYgKHBhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgIGlmIChpc0dl
bmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkKICAgICAgICAg
bV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbMV07CiAKICAgICBhbGxvY2F0ZUFu
ZEVtaXRTY29wZSgpOwogCiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5v
ZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CiAgICAgICAgIEFT
U0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSk7Cisg
ICAgICAgIEFTU0VSVCghaXNBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKTsK
ICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWlj
KGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CiAgICAg
ICAgIGJvb2wgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+
aWRlbnQoKS5pbXBsKCkpOwogICAgICAgICBib29sIG1hcmtBc0NhcHR1cmVkID0gaXNEeW5hbWlj
U2NvcGUgfHwgaXNGdW5jdGlvbk5hbWVDYXB0dXJlZDsKQEAgLTUwNSw3ICs1MDYsOCBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAg
Ym9vbCBzaG91bGRDcmVhdGVBcmd1bWVuc1ZhcmlhYmxlID0gIWhhdmVQYXJhbWV0ZXJOYW1lZEFy
Z3VtZW50cyAmJiAhbV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpOworICAgICAgICBib29s
IHNob3VsZENyZWF0ZUFyZ3VtZW5zVmFyaWFibGUgPSAhaGF2ZVBhcmFtZXRlck5hbWVkQXJndW1l
bnRzCisgICAgICAgICAgICAmJiAhU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9k
ZSkuY29udGFpbnMobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpKTsKICAgICAgICAgc2hvdWxkQ3Jl
YXRlQXJndW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3BlID0gc2hvdWxkQ3JlYXRlQXJndW1l
bnNWYXJpYWJsZSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0OwogICAgICAgICAvLyBEbyBub3Qg
Y3JlYXRlIGFyZ3VtZW50cyB2YXJpYWJsZSBpbiBjYXNlIG9mIEFycm93IGZ1bmN0aW9uLiBWYWx1
ZSB3aWxsIGJlIGxvYWRlZCBmcm9tIHBhcmVudCBzY29wZQogICAgICAgICBpZiAoc2hvdWxkQ3Jl
YXRlQXJndW1lbnNWYXJpYWJsZSAmJiAhc2hvdWxkQ3JlYXRlQXJndW1lbnRzVmFyaWFibGVJblBh
cmFtZXRlclNjb3BlKSB7CkBAIC01NDksNiArNTUxLDI5IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxp
bmtlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpB
c3luY0Fycm93RnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01l
dGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOiB7
CisgICAgICAgIEFTU0VSVCghaXNDb25zdHJ1Y3RvcigpKTsKKyAgICAgICAgQVNTRVJUKGNvbnN0
cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSk7CisgICAgICAgIG1fZ2VuZXJh
dG9yUmVnaXN0ZXIgPSBhZGRWYXIoKTsKKworICAgICAgICBpZiAocGFyc2VNb2RlICE9IFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkgeworICAgICAgICAgICAgLy8gRklY
TUU6IEVtaXQgdG9fdGhpcyBvbmx5IHdoZW4gQXN5bmNGdW5jdGlvbkJvZHkgdXNlcyBpdC4KKyAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1
ODYKKyAgICAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
KGluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3Ro
aXMpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lz
dGVyKSk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgIH0KKworICAgICAgICBlbWl0TmV3
T2JqZWN0KG1fZ2VuZXJhdG9yUmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlOgorICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZToKICAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAgLy8gfHRoaXN8IGlz
IGFscmVhZHkgZmlsbGVkIGNvcnJlY3RseSBiZWZvcmUgaGVyZS4KICAgICAgICAgZW1pdExvYWQo
bV9uZXdUYXJnZXRSZWdpc3RlciwganNVbmRlZmluZWQoKSk7CkBAIC02MDgsNyArNjMzLDcgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2Rl
KiBmdW5jdGlvbk5vZGUsIFVubGlua2UKIAogICAgIC8vIFdlIG5lZWQgbG9hZCB8c3VwZXJ8ICYg
fHRoaXN8IGZvciBhcnJvdyBmdW5jdGlvbiBiZWZvcmUgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0
ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjawogICAgIC8vIGlmIHdlIGhhdmUgZGVm
YXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbi4gQmVjYXVzZSB8c3VwZXJ8ICYgfHRoaXN8IHZhbHVl
cyBjYW4gYmUgdXNlZCB0aGVyZQotICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlID09IHBhcnNlTW9kZSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgaWYg
KChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwg
U291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250YWlucyhwYXJzZU1v
ZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKSB7CiAgICAgICAgIGlmIChmdW5jdGlv
bk5vZGUtPnVzZXNUaGlzKCkgfHwgZnVuY3Rpb25Ob2RlLT51c2VzU3VwZXJQcm9wZXJ0eSgpKQog
ICAgICAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1l
bnQoKTsKIApAQCAtNjI3LDEyICs2NTIsNDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAg
ICAvLyBBbGwgImFkZFZhcigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURl
ZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxs
ZWQKICAgICAvLyBiZWNhdXNlIGEgZnVuY3Rpb24ncyBkZWZhdWx0IHBhcmFtZXRlciBFeHByZXNz
aW9uTm9kZXMgd2lsbCB1c2UgdGVtcG9yYXJ5IHJlZ2lzdGVycy4KICAgICBwdXNoVERaVmFyaWFi
bGVzKCpwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90
T3B0aW1pemUsIFREWlJlcXVpcmVtZW50OjpVbmRlclREWik7CisKKyAgICBUcnlEYXRhKiB0cnlG
b3JtYWxQYXJhbWV0ZXJzRGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGlzQXN5bmNGdW5jdGlvbldy
YXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB7Cisg
ICAgICAgIFJlZlB0cjxMYWJlbD4gdHJ5Rm9ybWFsUGFyYW1ldGVyc1N0YXJ0ID0gZW1pdExhYmVs
KG5ld0xhYmVsKCkuZ2V0KCkpOworICAgICAgICB0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSA9IHB1
c2hUcnkodHJ5Rm9ybWFsUGFyYW1ldGVyc1N0YXJ0LmdldCgpKTsKKyAgICB9CisKICAgICBpbml0
aWFsaXplRGVmYXVsdFBhcmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKHBh
cmFtZXRlcnMsIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCwgZnVuY3Rpb25Ob2RlLCBmdW5jdGlvblN5
bWJvbFRhYmxlLCBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXgsIGNhcHR1cmVzLCBzaG91bGRDcmVh
dGVBcmd1bWVudHNWYXJpYWJsZUluUGFyYW1ldGVyU2NvcGUpOwotICAgIAorCisgICAgaWYgKGlz
QXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKSAmJiAhaXNTaW1wbGVQYXJh
bWV0ZXJMaXN0KSB7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gZGlkTm90VGhyb3cgPSBuZXdMYWJl
bCgpOworICAgICAgICBlbWl0SnVtcChkaWROb3RUaHJvdy5nZXQoKSk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBleGNlcHRpb24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHRocm93blZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0
cjxMYWJlbD4gY2F0Y2hIZXJlID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAgICAg
ICBwb3BUcnlBbmRFbWl0Q2F0Y2godHJ5Rm9ybWFsUGFyYW1ldGVyc0RhdGEsIGV4Y2VwdGlvbi5n
ZXQoKSwgdGhyb3duVmFsdWUuZ2V0KCksIGNhdGNoSGVyZS5nZXQoKSwgSGFuZGxlclR5cGU6OkNh
dGNoKTsKKworICAgICAgICAvLyByZXR1cm4gQFByb21pc2UuQHJlamVjdCh0aHJvd25WYWx1ZSk7
CisgICAgICAgIFZhcmlhYmxlIHByb21pc2VWYXIgPSB2YXJpYWJsZShtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5Qcm9taXNlUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGVtaXRSZXNvbHZlU2NvcGUobmV3VGVtcG9yYXJ5KCksIHBy
b21pc2VWYXIpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvbWlzZUNvbnN0cnVjdG9y
ID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHByb21pc2VW
YXIsIFJlc29sdmVNb2RlOjpUaHJvd0lmTm90Rm91bmQpOworICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJvbWlzZVJlamVjdCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBwcm9taXNl
Q29uc3RydWN0b3IuZ2V0KCksIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJl
amVjdFByaXZhdGVOYW1lKCkpOworCisgICAgICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywg
bnVsbHB0ciwgMSk7CisKKyAgICAgICAgZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgcHJv
bWlzZUNvbnN0cnVjdG9yLmdldCgpKTsKKyAgICAgICAgZW1pdE1vdmUoYXJncy5hcmd1bWVudFJl
Z2lzdGVyKDApLCB0aHJvd25WYWx1ZS5nZXQoKSk7CisKKyAgICAgICAgSlNUZXh0UG9zaXRpb24g
ZGl2b3QoZnVuY3Rpb25Ob2RlLT5maXJzdExpbmUoKSwgZnVuY3Rpb25Ob2RlLT5zdGFydE9mZnNl
dCgpLCBmdW5jdGlvbk5vZGUtPmxpbmVTdGFydE9mZnNldCgpKTsKKworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZW1pdENhbGwobmV3VGVtcG9yYXJ5KCksIHByb21pc2VSZWpl
Y3QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgZGl2b3QsIGRpdm90LCBkaXZvdCwg
RGVidWdnYWJsZUNhbGw6Ok5vKTsKKyAgICAgICAgZW1pdFJldHVybihyZXN1bHQuZ2V0KCkpOwor
CisgICAgICAgIGVtaXRMYWJlbChkaWROb3RUaHJvdy5nZXQoKSk7CisgICAgfQorCiAgICAgLy8g
SWYgd2UgZG9uJ3QgaGF2ZSAgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbiwgdGhlbiBsb2Fk
aW5nIHx0aGlzfCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rpb24gbXVzdCBiZSBkb25lCiAgICAgLy8g
YWZ0ZXIgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2Nv
cGVTdGFjaygpIGJlY2F1c2UgdGhhdCBmdW5jdGlvbiBzZXRzIHVwIHRoZQogICAgIC8vIFN5bWJv
bFRhYmxlIHN0YWNrIGFuZCBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZp
cm9ubWVudCgpIGNvbnN1bHRzIHRoZSBTeW1ib2xUYWJsZSBzdGFjawotICAgIGlmIChTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlID09IHBhcnNlTW9kZSAmJiBpc1NpbXBsZVBhcmFt
ZXRlckxpc3QpIHsKKyAgICBpZiAoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9k
ZSkuY29udGFpbnMocGFyc2VNb2RlKSAmJiBpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKICAgICAg
ICAgaWYgKGZ1bmN0aW9uTm9kZS0+dXNlc1RoaXMoKSB8fCBmdW5jdGlvbk5vZGUtPnVzZXNTdXBl
clByb3BlcnR5KCkpCiAgICAgICAgICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxl
eGljYWxFbnZpcm9ubWVudCgpOwogICAgIApAQCAtNjQyLDcgKzcwMSw3IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlCiAgICAgCiAgICAgLy8gU2V0IHVwIHRoZSBsZXhpY2FsIGVudmlyb25tZW50
IHNjb3BlIGFzIHRoZSBnZW5lcmF0b3IgZnJhbWUuIFdlIHN0b3JlIHRoZSBzYXZlZCBhbmQgcmVz
dW1lZCBnZW5lcmF0b3IgcmVnaXN0ZXJzIGludG8gdGhpcyBzY29wZSB3aXRoIHRoZSBzeW1ib2wg
a2V5cy4KICAgICAvLyBTaW5jZSB0aGV5IGFyZSBzeW1ib2wga2V5ZWQsIHRoZXNlIHZhcmlhYmxl
cyBjYW5ub3QgYmUgcmVhY2hlZCBmcm9tIHRoZSB1c3VhbCBjb2RlLgotICAgIGlmIChTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlID09IHBhcnNlTW9kZSkgeworICAgIGlmIChpc0dl
bmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkgewogICAgICAg
ICBBU1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CiAgICAgICAgIG1fZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZS5zZXQoKm1fdm0sIGZ1bmN0aW9uU3ltYm9sVGFibGUpOwogICAg
ICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCA9IHN5bWJvbFRhYmxlQ29uc3Rh
bnRJbmRleDsKQEAgLTI2NDQsNiArMjcwMywyMSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0U2V0dGVyQnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydAog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzZXR0ZXItPmluZGV4KCkpOwogfQogCit2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0R2VuZXJhdG9yRmllbGRzKFJlZ2lzdGVySUQqIG5leHRG
dW5jdGlvbikKK3sKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBqdXN0IGNyZWF0ZSBhbiBv
YmplY3QgYW5kIHN0b3JlIGdlbmVyYXRvciByZWxhdGVkIGZpZWxkcyBhcyBpdHMgcHJvcGVydGll
cyBmb3IgZWFzZS4KKyAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdpbGwgaW50
cm9kdWNlIEpTR2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3IgYW5kIHVz
ZSBpdHMgQysrIGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGllcy4KKyAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisKKyAg
ICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZhdGVOYW1lKCksIG5leHRGdW5jdGlvbiwg
UHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dl
bmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
VGhpc1ByaXZhdGVOYW1lKCksICZtX3RoaXNSZWdpc3RlciwgUHJvcGVydHlOb2RlOjpLbm93bkRp
cmVjdCk7CisKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9w
ZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBl
bWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3Qp
OworCisgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlO
YW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZW1pdExv
YWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKK30KKwog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxldGVCeUlkKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAg
ICAgZW1pdE9wY29kZShvcF9kZWxfYnlfaWQpOwpAQCAtMjk4Niw2ICszMDYwLDExIEBAIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oUmVnaXN0
ZXJJRCogZHN0LCBGdW5jdGlvCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldy
YXBwZXJGdW5jdGlvbk1vZGU6CiAgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
RnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6CisgICAg
ICAgIG9wY29kZUlEID0gb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOworICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zMDA0LDcgKzMwODMsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihS
ZWdpc3RlcklEKiBkc3QsIEZ1bmNFeAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5j
RXhwck5vZGUqIGZ1bmMpCiB7Ci0gICAgQVNTRVJUKGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9k
ZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgZnVuYy0+bWV0YWRh
dGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25N
b2RlKTsKKyAgICBBU1NFUlQoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSku
Y29udGFpbnMoZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkpKTsKICAgICBlbWl0TmV3RnVu
Y3Rpb25FeHByZXNzaW9uQ29tbW9uKGRzdCwgZnVuYy0+bWV0YWRhdGEoKSk7CiAgICAgcmV0dXJu
IGRzdDsKIH0KQEAgLTMwMzgsNiArMzExNyw4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhCiAg
ICAgdW5zaWduZWQgaW5kZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5j
dGlvbihmdW5jdGlvbikpOwogICAgIGlmIChmdW5jdGlvbi0+cGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlKQogICAgICAgICBlbWl0T3Bj
b2RlKG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CisgICAgZWxzZSBpZiAoZnVuY3Rpb24tPnBhcnNl
TW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGUpCisgICAgICAgIGVt
aXRPcGNvZGUob3BfbmV3X2FzeW5jX2Z1bmMpOwogICAgIGVsc2UKICAgICAgICAgZW1pdE9wY29k
ZShvcF9uZXdfZnVuYyk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKaW5kZXggZDRjMWM4ZThlZWE4OGIxYzIwZjRhOTVlNDUzNjkyY2NkZTQ5YmZi
Zi4uN2MwMTcyOTE2MzUxY2ZhMGM0ZjM4NTM0Yjg2ZTRjZTVlZTcxYzYxMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aApAQCAtNTc2LDcgKzU3NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
UHV0R2V0dGVyU2V0dGVyKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBSZWdpc3RlcklEKiBnZXR0ZXIsIFJlZ2lzdGVySUQq
IHNldHRlcik7CiAgICAgICAgIHZvaWQgZW1pdFB1dEdldHRlckJ5VmFsKFJlZ2lzdGVySUQqIGJh
c2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCB1bnNpZ25lZCBwcm9wZXJ0eURlc2NyaXB0b3JPcHRp
b25zLCBSZWdpc3RlcklEKiBnZXR0ZXIpOwogICAgICAgICB2b2lkIGVtaXRQdXRTZXR0ZXJCeVZh
bChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgdW5zaWduZWQgcHJvcGVy
dHlEZXNjcmlwdG9yT3B0aW9ucywgUmVnaXN0ZXJJRCogc2V0dGVyKTsKLSAgICAgICAgCisKKyAg
ICAgICAgLy8gSW5pdGlhbGl6ZSBvYmplY3Qgd2l0aCBnZW5lcmF0b3IgZmllbGRzIChAZ2VuZXJh
dG9yVGhpcywgQGdlbmVyYXRvck5leHQsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvckZyYW1l
KQorICAgICAgICB2b2lkIGVtaXRQdXRHZW5lcmF0b3JGaWVsZHMoUmVnaXN0ZXJJRCogbmV4dEZ1
bmN0aW9uKTsKKwogICAgICAgICBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb25Gb3JJ
ZGVudGlmaWVyKGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENh
bGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBD
YWxsQXJndW1lbnRzJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1
Z2dhYmxlQ2FsbCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsSW5UYWlsUG9zaXRpb24o
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxs
QXJndW1lbnRzJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dh
YmxlQ2FsbCk7CkBAIC04NDIsNyArODQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsK
ICAgICAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBE
ZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmU7CiAKLSAgICAgICAgICAgIGlmIChtZXRhZGF0YS0+cGFy
c2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkgeworICAgICAg
ICAgICAgaWYgKFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rp
b25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpLmNvbnRhaW5z
KG1ldGFkYXRhLT5wYXJzZU1vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29uc3RydWN0
b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzIHx8IGlzRGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCgpKQogICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUg
PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7CiAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAobV9jb2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkgfHwgaXNEZXJp
dmVkQ2xhc3NDb250ZXh0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDM4N2NkZjgxNTAzODU0NDFhMzRlOTYzZDZi
OGEyODBhZjAzMjQwMi4uZWYyYzVlNjAyNGU0MTU0NDQxNjJiZGZkNWZlZWVhODUwNTg0Y2ZiMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMzQwMiwyNSArMzQwMiw2NCBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAg
ICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21lT2JqZWN0
LmdldCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIGp1
c3QgY3JlYXRlIGFuIG9iamVjdCBhbmQgc3RvcmUgZ2VuZXJhdG9yIHJlbGF0ZWQgZmllbGRzIGFz
IGl0cyBwcm9wZXJ0aWVzIGZvciBlYXNlLgotICAgICAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZp
Y2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpTR2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5l
d19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysrIGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZh
dGUgcHJvcGVydGllcy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MTU0NQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEdlbmVyYXRvckZpZWxk
cyhuZXh0LmdldCgpKTsKIAotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2Vu
ZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yTmV4dFByaXZhdGVOYW1lKCksIG5leHQuZ2V0KCksIFByb3Bl
cnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBs
aW5lU3RhcnRPZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxM
ZWF2ZUNhbGxGcmFtZSwgbGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0
KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVn
aXN0ZXIoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAotICAgICAgICBnZW5lcmF0b3IuZW1p
dERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lKCks
IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7Cisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6IHsKKyAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xl
U3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgICAgIEFTU0VSVChzaW5n
bGVTdGF0ZW1lbnQtPmlzRXhwclN0YXRlbWVudCgpKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5v
ZGUqIGV4cHJTdGF0ZW1lbnQgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KHNpbmds
ZVN0YXRlbWVudCk7CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByID0gZXhwclN0YXRlbWVu
dC0+ZXhwcigpOworICAgICAgICBBU1NFUlQoZXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAg
ICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihl
eHByKTsKIAotICAgICAgICBSZWdpc3RlcklEKiBpbml0aWFsU3RhdGUgPSBnZW5lcmF0b3IuZW1p
dExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVj
dFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBpbml0
aWFsU3RhdGUsIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKIAotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFt
ZSgpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6
Oktub3duRGlyZWN0KTsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5zdXBlckJpbmRpbmcoKSA9PSBT
dXBlckJpbmRpbmc6Ok5lZWRlZCB8fCBnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICAvLyBGSVhNRTog
RG9uJ3QgYWx3YXlzIGxvYWQgaG9tZSBvYmplY3QgZm9yIGFzeW5jIGFycm93cworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxl
ZShnZW5lcmF0b3IpOworICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBu
ZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGdlbmVy
YXRvci5lbWl0UHV0R2VuZXJhdG9yRmllbGRzKG5leHQuZ2V0KCkpOwogCiAgICAgICAgIEFTU0VS
VChzdGFydE9mZnNldCgpID49IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNl
dCgpLCBsaW5lU3RhcnRPZmZzZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdl
bmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKKworICAgICAgICAvLyBsb2FkIEBhc3luY0Z1
bmN0aW9uUmVzdW1lLCBhbmQgY2FsbC4KKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN0YXJ0
QXN5bmNGdW5jdGlvbiA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgYXV0byB2
YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGlu
TmFtZXMoKS5hc3luY0Z1bmN0aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSk7CisKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAg
ICBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChzY29wZS5nZXQoKSwgZ2VuZXJh
dG9yLmVtaXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOworICAgICAgICBnZW5lcmF0
b3IuZW1pdEdldEZyb21TY29wZShzdGFydEFzeW5jRnVuY3Rpb24uZ2V0KCksIHNjb3BlLmdldCgp
LCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisKKyAgICAgICAgLy8gcmV0dXJuIEBhc3luY0Z1bmN0
aW9uUmVzdW1lLkBjYWxsKHRoaXMsIEBnZW5lcmF0b3IsIEB1bmRlZmluZWQsIEdlbmVyYXRvclJl
c3VtZU1vZGU6Ok5vcm1hbE1vZGUpCisgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0
b3IsIG51bGxwdHIsIDMpOworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50ID0gMDsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVk
KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFy
Z3VtZW50Q291bnQrKyksIGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50Kysp
LCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1l
bnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkp
OworICAgICAgICAvLyBKU1RleHRQb3NpdGlvbihpbnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQg
X2xpbmVTdGFydE9mZnNldCkKKyAgICAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RMaW5l
KCksIHN0YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKKworICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXN1bHQuZ2V0KCksIHN0YXJ0QXN5bmNG
dW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCwgZGl2b3QsIGRp
dm90LCBEZWJ1Z2dhYmxlQ2FsbDo6Tm8pOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihy
ZXN1bHQuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAgUmVmUHRyPExhYmVsPiBnZW5lcmF0b3JCb2R5
TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCmluZGV4IDU0MmE0NzEzZjUyZDVhOWZhOWM2M2U1NmUwMTZlMjIzMDVhOGFkZjYu
LjQ5YjFhODZlZDE1YWY0MWFmYWE5ZTdkMTNiODhhNWM0NDc3ODliZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKQEAgLTI5OSw2ICsyOTksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHApCiAgICAgICAg
IERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FzeW5jX2Z1
bmMpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfYXN5bmNfZnVuY19leHApCiAgICAgICAgIERF
RklORV9PUChvcF9uZXdfb2JqZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X3JlZ2V4cCkK
ICAgICAgICAgREVGSU5FX09QKG9wX25vdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDA1
ZGUyOGNlMWVkNjcwYjUxZmViOGY1M2MzOWE0ZmY1NDQ5MjhlNGEuLjZkMjAyNDkzODdiMjkxYWJl
YmRmYTlmYmI3NDdkYTgyNzA1ZjZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTQ0
LDYgKzU0NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1
bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9y
X2Z1bmMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3Jf
ZnVuY19leHAoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19m
dW5jKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19l
eHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX25vdChJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYjkwMWJiNDYzMTA2MDAxMjBlMTFmODRlMWVj
YTljYjYyNjc0OWI4ZC4uOWY5OWFiYTljZjk5ZWNkMjlhMDI5ZDgxNDQyYmE4ZTJmZWVmNDA5MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC05NzEsOSArOTcx
LDExIEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwogICAgIGlmIChvcGNvZGVJ
RCA9PSBvcF9uZXdfZnVuYykKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5j
dGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQo
b3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlIGlmIChvcGNvZGVJ
RCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19hc3luY19mdW5jKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBm
dW5jRXhlYyk7CiAgICAgfQogfQogCkBAIC05ODcsNiArOTg5LDExIEBAIHZvaWQgSklUOjplbWl0
X29wX25ld19nZW5lcmF0b3JfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIGVtaXROZXdGdW5jQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKK3ZvaWQgSklU
OjplbWl0X29wX25ld19hc3luY19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgZW1pdE5ld0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9p
ZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewogICAgIEp1bXAgbm90VW5kZWZpbmVkU2NvcGU7CkBAIC0xMDA4LDkgKzEwMTUsMTEg
QEAgdm9pZCBKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jX2V4cCkKICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rp
b24pOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVy
YXRvcl9mdW5jX2V4cCk7CisgICAgZWxzZSBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cCkKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JG
dW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOworICAgIGVsc2UgeworICAgICAgICBBU1NF
UlQob3Bjb2RlSUQgPT0gb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CiAg
ICAgfQogCiAgICAgZG9uZS5saW5rKHRoaXMpOwpAQCAtMTAyNiw2ICsxMDM1LDExIEBAIHZvaWQg
SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9u
KTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJl
bnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0X29wX25ld19hcnJheShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKaW5kZXggOGY4ZDRhZDM0NTNmZDQ2YjAzMDQzMmIzMTljMDYzYjAzMjljMzk1NC4u
ZWJkNzdjZDAzODY4YmRjMWZiOGFhYmFlMGZiZjkzZDBlNzYxZGFiZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpJVFRv
REZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgpAQCAtMTE3MCw2
ICsxMTcxLDE2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2Vu
ZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jCiAgICAgcmV0dXJuIG9wZXJhdGlv
bk5ld0Z1bmN0aW9uQ29tbW9uPEpTR2VuZXJhdG9yRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5j
dGlvbkV4ZWN1dGFibGUsIHRydWUpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29w
ZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5l
d0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhl
Y3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRh
YmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jRnVu
Y3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOworfQorCiB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSogZXhlYywg
SlNDZWxsKiBmdW5jQ2VsbCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE5hbWUpCiB7CiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCmluZGV4IGFkZmVmNzhjNmYwMGM1MDNkMDZmYmY4Njc2NTY4N2U3ZGMxNDNjMjQuLmRiNWJh
ODk2NWE3YTUwMWJhMzUyN2FhNjU0ODg1ZTZjZjNkZDk1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0zNzUsNiArMzc1LDggQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3Bl
KiwgSlNDZWxsKikKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVu
Y3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpT
U2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBK
U0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hw
b2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uKEV4ZWNTdGF0
ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9j
YXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lKEV4ZWNTdGF0
ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9J
TlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhw
KEV4ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA4NzU4MjUxZmE0YTFkNDlmOTEwMGJl
YmVjMDg4NjViZDQxMmQ3ZGY1Li5mNThmNGY5NjZlYTc3NDNiZmM0ZWM4MDdjMTFlZjNhYjRkZDQy
OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNl
cHRpb25zLmgiCiAjaW5jbHVkZSAiSklUV29ya2xpc3QuaCIKKyNpbmNsdWRlICJKU0FzeW5jRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTExNDksNiArMTE1MCwxNyBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKQogICAg
IExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+
ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuYykKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNT
Y29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6
OnNjb3BlKCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nRigiQ3Jl
YXRpbmcgYXN5bmMgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5UX1JFVFVSTihKU0Fz
eW5jRnVuY3Rpb246OmNyZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbM10udS5v
cGVyYW5kKSwgc2NvcGUpKTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25l
d19mdW5jX2V4cCkKIHsKICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTE3MSw2ICsxMTgzLDE3IEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQog
ICAgIExMSU5UX1JFVFVSTihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFi
bGUsIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5
bmNfZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICAKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhl
Yy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBj
WzNdLnUub3BlcmFuZCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKEpTQXN5bmNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBleGVjdXRhYmxlLCBzY29wZSkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfc2V0X2Z1bmN0aW9uX25hbWUpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggOTg0ZTlj
YzQwMzAzMjc5YWE3MDJkZjhmZWI3ODhjM2I4Yjk2MDUwZS4uZDc2MTM4YzEyNDRmZjdhYWY0ODNk
MDgwM2FkNWJiODExN2VhNzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmgKQEAgLTEwMyw2ICsxMDMsOCBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25ld19mdW5jKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV3X2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25ld19hc3luY19mdW5jKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfc2V0X2Z1bmN0aW9uX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfY29uc3RydWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA1NjBkZjNlY2FiODJkYTgyYjI3ZjQ0MzYy
NGQwZmRlOGU1MDFjZTllLi42NDQ1YTQ3Y2VkYTlhNWNmNzU5YTE2ZTE3MmMzYmQ4NDZhYjlkYjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCkBAIC0xMzIxLDYgKzEzMjEsMTIgQEAgX2xsaW50X29wX25ld19nZW5lcmF0b3Jf
ZnVuYzoKICAgICBkaXNwYXRjaCg0KQogCiAKK19sbGludF9vcF9uZXdfYXN5bmNfZnVuYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3
X2FzeW5jX2Z1bmMpCisgICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3BfbmV3X2FycmF5Ogog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9uZXdfYXJyYXkpCkBAIC0xNTk5LDYgKzE2MDUsMTIgQEAgX2xsaW50X29wX25ld19nZW5l
cmF0b3JfZnVuY19leHA6CiAgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
bmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3BfbmV3
X2FzeW5jX2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9uZXdfYXN5bmNfZnVuY19leHApCisgICAgZGlzcGF0Y2goNCkKKwor
CiBfbGxpbnRfb3Bfc2V0X2Z1bmN0aW9uX25hbWU6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGNhbGxPcGNvZGVTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDg5NzRhZGJiMWRjZmQ2
M2IxODczNTk5OWQ2MTY3Yzk3MmVlNjU0NTMuLjhiMDkzNTk1MWNmZGFmMGMzNTBiOGQ4ODkwM2Zi
NzU4YjcyNjhmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTI2MSw3ICsyNjEsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29u
c3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpB
c3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSAmJiAhbWF0Y2goT1BFTkJSQUNFKTsKICAgICBpZiAo
bV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIGlmIChTb3VyY2VQYXJzZU1v
ZGVTZXQoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkuY29udGFpbnMocGFyc2VN
b2RlKSB8fCBpc0FzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpCisgICAgICAg
IGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkK
ICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29u
dGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbV9wYXJhbWV0ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFy
c2VNb2RlLCBmdW5jdGlvbkluZm8pOwpAQCAtNTY4LDExICs1NjgsMTggQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQXN5bmNGdW4KICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBhc3luY0Z1bmN0aW9u
Qm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAgICAgICAgYXN5bmNGdW5jdGlvbkJvZHlT
Y29wZS0+c2V0U291cmNlUGFyc2VNb2RlKGlubmVyUGFyc2VNb2RlKTsKLSAgICAgICAgU3ludGF4
Q2hlY2tlciBhc3luY0Z1bmN0aW9uQ29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4
ZXIuZ2V0KCkpOwotICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCi0g
ICAgICAgICAgICBmYWlsSWZGYWxzZShwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9u
Qm9keVNvdXJjZUVsZW1lbnRzKGFzeW5jRnVuY3Rpb25Db250ZXh0KSwgIkNhbm5vdCBwYXJzZSB0
aGUgYm9keSBvZiBhc3luYyBhcnJvdyBmdW5jdGlvbiIpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzKGFzeW5jRnVuY3Rpb25Db250ZXh0
LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBmdW5jdGlvbiIpOworICAg
ICAgICBTeW50YXhDaGVja2VyIHN5bnRheENoZWNrZXIoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBt
X2xleGVyLmdldCgpKTsKKyAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9u
KSB7CisgICAgICAgICAgICBpZiAobV9kZWJ1Z2dlclBhcnNlRGF0YSkKKyAgICAgICAgICAgICAg
ICBmYWlsSWZGYWxzZShwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJj
ZUVsZW1lbnRzKGNvbnRleHQpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGFzeW5jIGFycm93
IGZ1bmN0aW9uIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZmFpbElmRmFs
c2UocGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhz
eW50YXhDaGVja2VyKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBhcnJvdyBmdW5j
dGlvbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1fZGVidWdnZXJQYXJz
ZURhdGEpCisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhj
b250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBmdW5jdGlvbiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291
cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkg
b2YgYXN5bmMgZnVuY3Rpb24iKTsKKyAgICAgICAgfQogICAgICAgICBwb3BTY29wZShhc3luY0Z1
bmN0aW9uQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKICAg
ICB9CiAgICAgaW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0
TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBz
dHJpY3RNb2RlKCksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9zdXBlckJpbmRpbmcsIGluZm8u
cGFyYW1ldGVyQ291bnQsIGluZm8uZnVuY3Rpb25MZW5ndGgsIGlubmVyUGFyc2VNb2RlLCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CkBAIC0yMzQxLDcgKzIzNDgsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rp
b25JbmZvKFRyZWVCdWlsZAogICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4
dCwgc3ludGF4Q2hlY2tlciwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5
d29yZFN0YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3Rv
cktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbklu
Zm8ucGFyYW1ldGVyQ291bnQsIGZ1bmN0aW9uSW5mby5mdW5jdGlvbkxlbmd0aCwgbW9kZSk7CiAg
ICAgfTsKIAotICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBl
ckZ1bmN0aW9uTW9kZSB8fCBpc0FzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKG1vZGUpKSB7
CisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShtb2Rl
KSkgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1
c2hTY29wZSgpKTsKICAgICAgICAgU291cmNlUGFyc2VNb2RlIGlubmVyUGFyc2VNb2RlID0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTsKICAgICAgICAgaWYgKGlzQXN5bmNGdW5j
dGlvbldyYXBwZXJQYXJzZU1vZGUobW9kZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCmluZGV4IGFkNWQzNmFmYmFjZjNkZWRiYWUwNmNhODYyMjg4NzBmNjMwMzg1MzguLmE1
NDkzM2U3OGUwOWJlMTkxZDIyN2E4ZmVmZWQyODc2YTcxNTk1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjQ1LDcgKzI0NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9u
Qm9keU1vZGU6Ci0gICAgICAgICAgICBzZXRJc0FzeW5jQXJyb3dGdW5jdGlvbkJvZHkoKTsKKyAg
ICAgICAgICAgIHNldElzQXN5bmNGdW5jdGlvbkJvZHkoKTsKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZToKQEAgLTEw
OTgsNyArMTA5OCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICB1bnNpZ25lZCBpID0gbV9z
Y29wZVN0YWNrLnNpemUoKSAtIDE7CiAgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNp
emUoKSAmJiBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKLSAgICAgICAgd2hpbGUgKGkgJiYgKCFtX3Nj
b3BlU3RhY2tbaV0uaXNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlzR2Vu
ZXJhdG9yQm91bmRhcnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNBcnJvd0Z1bmN0aW9uQm91bmRh
cnkoKSkpCisgICAgICAgIHdoaWxlIChpICYmICghbV9zY29wZVN0YWNrW2ldLmlzRnVuY3Rpb25C
b3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFja1tpXS5pc0dlbmVyYXRvckJvdW5kYXJ5KCkgfHwgbV9z
Y29wZVN0YWNrW2ldLmlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ld
LmlzQXJyb3dGdW5jdGlvbkJvdW5kYXJ5KCkpKQogICAgICAgICAgICAgaS0tOwogICAgICAgICAv
LyBXaGVuIHJlYWNoaW5nIHRoZSB0b3AgbGV2ZWwgc2NvcGUgKGl0IGNhbiBiZSBub24gb3JkaW5h
cnkgZnVuY3Rpb24gc2NvcGUpLCB3ZSByZXR1cm4gaXQuCiAgICAgICAgIHJldHVybiBTY29wZVJl
ZigmbV9zY29wZVN0YWNrLCBpKTsKQEAgLTEyMjgsNiArMTIyOCwxMCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgaS0tOwogICAgICAgICAgICAgQVNTRVJUKGkgPCBtX3Njb3BlU3RhY2suc2l6ZSgp
KTsKICAgICAgICAgfQorICAgICAgICBpZiAoKG1fc2NvcGVTdGFja1tpXS5pc0FzeW5jRnVuY3Rp
b25Cb3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFja1tpXS5pc0dlbmVyYXRvckJvdW5kYXJ5KCkpICYm
IGkpIHsKKyAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0
YWNrLnNpemUoKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fc2NvcGVTdGFja1tpXS5o
YXNEZWNsYXJlZFBhcmFtZXRlcihpZGVudCk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IGEwZDc0MDQ5NDE1ZTRiODQ3MzU2MmUz
NmU2MjIwZDMwY2U1MWJhNmEuLjZkYTg4MzdhMzc5NDE3MmI0YzU1NmIzN2QyM2Y5OTc2ZWU2ZjBi
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTE0
OCw2ICsxNDgsMzIgQEAgQUxXQVlTX0lOTElORSBib29sIGlzTWV0aG9kUGFyc2VNb2RlKFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiAgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRo
b2RNb2RlKS5jb250YWlucyhwYXJzZU1vZGUpOwogfQogCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNH
ZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUpCit7CisgICAgcmV0dXJuIFNvdXJjZVBhcnNlTW9kZVNldCgKKyAgICAgICAgU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpB
c3luY0Z1bmN0aW9uQm9keU1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJv
d0Z1bmN0aW9uQm9keU1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7Cit9CisKK0FMV0FZU19JTkxJ
TkUgYm9vbCBpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUoU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKK3sKKyAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KAor
ICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUsCisg
ICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGUsCisgICAgICAgIFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VN
b2RlOjpBc3luY01ldGhvZE1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7Cit9CisKK0FMV0FZU19J
TkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSkKK3sKKyAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KAorICAgICAgICBTb3VyY2VQ
YXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jQXJyb3dGdW5jdGlvbk1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJv
d0Z1bmN0aW9uQm9keU1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7Cit9CisKKwogQUxXQVlTX0lO
TElORSBib29sIGlzTW9kdWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpIAog
eyAKICAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE3NjdjNTdiZjJlNjVmZDdlZDBiOTUyYWQxYmQyYjM5YjBkYTlhZWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCisKKyNp
bmNsdWRlICJBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShBc3luY0Z1bmN0aW9uQ29u
c3RydWN0b3IpOworCitjb25zdCBDbGFzc0luZm8gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJBc3luY0Z1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpIH07CisKK0FzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHZtLCBzdHJ1Y3R1cmUpCit7Cit9
CisKK3ZvaWQgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgIkFzeW5jRnVuY3Rpb24iKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIC8vIE51bWJlciBvZiBhcmd1bWVudHMg
Zm9yIGNvbnN0cnVjdG9yCisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwor
fQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0lu
dGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgRnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYykpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFzSW50ZXJuYWxGdW5jdGlvbihleGVj
LT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLCBhcmdzLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1v
ZGU6OkFzeW5jKSk7Cit9CisKK0NhbGxUeXBlIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0
Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNhbGxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I7CisgICAgcmV0dXJu
IENhbGxUeXBlOjpIb3N0OworfQorCitDb25zdHJ1Y3RUeXBlIEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3RE
YXRhKQoreworICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0QXN5
bmNGdW5jdGlvbkNvbnN0cnVjdG9yOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlOjpIb3N0Owor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM1YTJj
MWU0ZjkxNWNhYzBiNGIxNzczZTZkMDU4OWUyNzQ3NDdkNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCkBA
IC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIg
PGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGU7CisKK2NsYXNzIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rp
b24gQmFzZTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBBc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlz
aENyZWF0aW9uKHZtLCBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdG9yOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IoVk0m
LCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgQXN5bmNGdW5jdGlv
blByb3RvdHlwZSopOworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEo
SlNDZWxsKiwgQ29uc3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0
YShKU0NlbGwqLCBDYWxsRGF0YSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZiMWYwZTEwNmVlNjcxMzZlOTI3MDFkNjhjMzlkOTViMmZjNDg2
NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCIK
KworI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ1aWx0aW5OYW1l
cy5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlICJMZXhlci5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEFzeW5jRnVuY3Rpb25Qcm90b3R5
cGU6OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpIH07CisKK0FzeW5jRnVu
Y3Rpb25Qcm90b3R5cGU6OkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQor
eworfQorCit2b2lkIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRz
KGluZm8oKSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc1N0cmluZygmdm0sICJBc3luY0Z1bmN0aW9uIiksIERv
bnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhp
cyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyMDFl
NmI4ZmQ1ODk4YTIyMWUwNjJhNzhmM2VhNjBkZWE3OWE4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgKQEAg
LTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8
Y2FpdHBAaWdhbGlhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFzeW5jRnVuY3Rpb25Qcm90
b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMg
QXN5bmNGdW5jdGlvblByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgeworICAgICAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0Z1bmN0aW9uUHJvdG90eXBlPih2bS5oZWFw
KSkgQXN5bmNGdW5jdGlvblByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90
eXBlLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAg
fQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykKKyAgICB7CisgICAgICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90bywgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJvdGVjdGVk
OgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJpdmF0ZToKKyAgICBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAKaW5kZXggZDJmMzM1MmQ2MDY4YjExOWZlMDQ5MzEwYzkzODg2N2YyNzk4YjUx
Mi4uMGExYTM0YzY2Y2EyZGUzYWVhYzBhODRlMTVhNTEwMTFhOWNhYjIwNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAK
QEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNs
dWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTkzLDE4ICs5NCwzMyBAQCBKU09iamVj
dCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVkQ2hlY2soCiAgICAgVk0mIHZt
ID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKKyAgICBjb25zdCBjaGFyKiBwcmVmaXggPSBudWxscHRyOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbnVsbHB0cjsKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSkg
eworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbjoKKyAgICAgICAg
c3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpOworICAgICAgICBw
cmVmaXggPSAie2Z1bmN0aW9uICI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3I6CisgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9i
amVjdC0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgcHJlZml4ID0gIntm
dW5jdGlvbiAqIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlv
bk1vZGU6OkFzeW5jOgorICAgICAgICBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFzeW5jRnVu
Y3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgcHJlZml4ID0gInthc3luYyBmdW5jdGlvbiAiOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICAvLyBIb3cgd2Ugc3RyaW5naWZ5IGZ1bmN0aW9u
cyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MzUwLgogICAgIFN0
cmluZyBwcm9ncmFtOwogICAgIGlmIChhcmdzLmlzRW1wdHkoKSkKLSAgICAgICAgcHJvZ3JhbSA9
IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1l
LnN0cmluZygpLCAiKCkge1xuXG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZyhw
cmVmaXgsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxufX0iKTsKICAgICBlbHNlIGlm
IChhcmdzLnNpemUoKSA9PSAxKQotICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygie2Z1bmN0
aW9uICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1v
ZGU6OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4i
LCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAgICAg
ICAgcHJvZ3JhbSA9IG1ha2VTdHJpbmcocHJlZml4LCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIo
KSB7XG4iLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsK
ICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBidWls
ZGVyLmFwcGVuZExpdGVyYWwoIntmdW5jdGlvbiAiKTsKLSAgICAgICAgaWYgKGZ1bmN0aW9uQ29u
c3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkdlbmVyYXRvcikKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcqJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBy
ZWZpeCk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSk7CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcoJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFyZ3Mu
YXQoMCkudG9TdHJpbmcoZXhlYyktPnZpZXcoZXhlYykuZ2V0KCkpOwpAQCAtMTI2LDEyICsxNDIs
MjAgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNr
KAogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7
CiAgICAgfQogCi0gICAgU3RydWN0dXJlKiBzdWJjbGFzc1N0cnVjdHVyZSA9IEludGVybmFsRnVu
Y3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGV4ZWMsIG5ld1RhcmdldCwgZnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yID8g
Z2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDogZ2xvYmFsT2JqZWN0
LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN1YmNsYXNzU3RydWN0dXJl
ID0gSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZXhlYywgbmV3VGFy
Z2V0LCBzdHJ1Y3R1cmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIp
OwogCi0gICAgaWYgKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGU6OkdlbmVyYXRvcikKKyAgICBzd2l0Y2ggKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZSkgeworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpGdW5jdGlvbjoKKyAgICAg
ICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+
Z2xvYmFsU2NvcGUoKSwgc3ViY2xhc3NTdHJ1Y3R1cmUpOworICAgIGNhc2UgRnVuY3Rpb25Db25z
dHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3I6CiAgICAgICAgIHJldHVybiBKU0dlbmVyYXRvckZ1bmN0
aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIHN1
YmNsYXNzU3RydWN0dXJlKTsKLSAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5j
dGlvbiwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7Cisg
ICAgY2FzZSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jOgorICAgICAgICByZXR1cm4g
SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogLy8gRUNNQSAxNS4zLjIgVGhlIEZ1
bmN0aW9uIENvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKaW5kZXggMzFjMzNkNmFmNGZmMTJiYzI0YzFlMmI1YmY0
ZTU1NThkNzY1NjkwNi4uZGVlZTlhNTVkNmYyYzYxZTlmNzE0NDgzYjMxYWJkNTdmYjFjYWU1NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgogZW51bSBjbGFzcyBGdW5jdGlvbkNv
bnN0cnVjdGlvbk1vZGUgewogICAgIEZ1bmN0aW9uLAogICAgIEdlbmVyYXRvciwKKyAgICBBc3lu
YywKIH07CiAKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmLCBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYsIEZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSA9IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6RnVuY3Rpb24s
IEpTVmFsdWUgbmV3VGFyZ2V0ID0gSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCAzMzllNDFiOGNlNjEy
NGY5ZDMyMWI4NDA5M2NhOWUwZDJhZmQ2ZjgzLi42MWU3ZWVjMmE1OGQxMzFkYWY3MTkxOGRiOGY5
YjZjOWUyMDZkMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiRXJyb3Iu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5j
bHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKQEAg
LTEwNSw2ICsxMDYsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
b3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgY2xhc3NTb3VyY2UudG9TdHJpbmdXaXRob3V0Q29w
eWluZygpKSk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpT
QXN5bmNGdW5jdGlvbjo6aW5mbygpKSkgeworICAgICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uSGVh
ZGVyID0gZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkgPyAiYXN5bmMgIiA6ICJhc3luYyBm
dW5jdGlvbiAiOworCisgICAgICAgICAgICBTdHJpbmdWaWV3IHNvdXJjZSA9IGV4ZWN1dGFibGUt
PnNvdXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAorICAgICAgICAgICAgICAgIGV4ZWN1dGFi
bGUtPnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAorICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUt
PnBhcmFtZXRlcnNTdGFydE9mZnNldCgpICsgZXhlY3V0YWJsZS0+c291cmNlKCkubGVuZ3RoKCkp
OworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3Ry
aW5nKGV4ZWMsIGZ1bmN0aW9uSGVhZGVyLCBmdW5jdGlvbi0+bmFtZSh2bSksIHNvdXJjZSkpOwor
ICAgICAgICB9CisKICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uSGVhZGVyID0gZXhlY3V0YWJsZS0+
aXNBcnJvd0Z1bmN0aW9uKCkgPyAiIiA6ICJmdW5jdGlvbiAiOwogICAgICAgICAKICAgICAgICAg
U3RyaW5nVmlldyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRS
YW5nZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNG
dW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFiYTc0MzcyM2JkYzdmYWVlZmY2MjUxZTJmZjJhMmRkYzY0Mjhl
NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fz
eW5jRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCisKKyNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKKyNpbmNs
dWRlICJWTS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTQXN5bmNG
dW5jdGlvbjo6c19pbmZvID0geyAiQXN5bmNGdW5jdGlvbiIsICAmQmFzZTo6c19pbmZvLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQXN5bmNGdW5jdGlvbikgfTsKKworSlNBc3luY0Z1
bmN0aW9uOjpKU0FzeW5jRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uo
dm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzdHJ1Y3R1cmUpCit7Cit9CisKK0pTQXN5bmNGdW5jdGlv
biogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJbXBsKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7Cisg
ICAgSlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNBc3luY0Z1bmN0aW9uPih2bS5oZWFwKSkgSlNBc3luY0Z1bmN0aW9uKHZtLCBleGVj
dXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBBU1NFUlQoYXN5bmNGdW5jdGlvbi0+c3Ry
dWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsKKyAgICBhc3luY0Z1bmN0aW9uLT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcmV0dXJuIGFzeW5jRnVuY3Rpb247Cit9CisKK0pTQXN5bmNGdW5jdGlv
biogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5bmNG
dW5jdGlvbiA9IGNyZWF0ZUltcGwodm0sIGV4ZWN1dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFs
T2JqZWN0KCktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgZXhlY3V0YWJsZS0+c2lu
Z2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGFzeW5jRnVuY3Rpb24sICJBbGxvY2F0
aW5nIGFuIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgcmV0dXJuIGFzeW5jRnVuY3Rpb247Cit9CisK
K0pTQXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK3sKKyAgICBKU0FzeW5jRnVuY3Rpb24qIGFzeW5jRnVuY3Rpb24gPSBjcmVhdGVJbXBs
KHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKTsKKyAgICBleGVjdXRhYmxlLT5zaW5n
bGV0b25GdW5jdGlvbigpLT5ub3RpZnlXcml0ZSh2bSwgYXN5bmNGdW5jdGlvbiwgIkFsbG9jYXRp
bmcgYW4gYXN5bmMgZnVuY3Rpb24iKTsKKyAgICByZXR1cm4gYXN5bmNGdW5jdGlvbjsKK30KKwor
SlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJl
YWxsb2NhdGlvbldhdGNocG9pbnQoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUsIEpTU2NvcGUqIHNjb3BlKQoreworICAgIHJldHVybiBjcmVhdGVJbXBsKHZtLCBleGVjdXRh
YmxlLCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5hc3luY0Z1bmN0aW9uU3RydWN0dXJl
KCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FzeW5jRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXN5bmNG
dW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3ZGE4N2RiNmQzODVhNzlkNTU3NmMxYjcyYTEzNGNhM2Uy
MWJmMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FzeW5jRnVuY3Rpb24uaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU0FzeW5jRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CisgICAgZnJpZW5kIGNs
YXNzIEpJVDsKKyAgICBmcmllbmQgY2xhc3MgVk07CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0Z1
bmN0aW9uIEJhc2U7CisKKyAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAg
ICBzdGF0aWMgSlNBc3luY0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCBKU1Njb3BlKik7CisgICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBKU0Fz
eW5jRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQo
Vk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CisKKyAgICBzdGF0aWMgc2l6ZV90
IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKKyAgICB7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0eSk7CisgICAgICAgIHJl
dHVybiBzaXplb2YoSlNBc3luY0Z1bmN0aW9uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Qp
OworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU0FzeW5jRnVuY3Rpb24oVk0mLCBGdW5jdGlvbkV4
ZWN1dGFibGUqLCBKU1Njb3BlKiwgU3RydWN0dXJlKik7CisKKyAgICBzdGF0aWMgSlNBc3luY0Z1
bmN0aW9uKiBjcmVhdGVJbXBsKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0
cnVjdHVyZSopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMzg0MDgyZGJkMzk3ZTkw
YjhhMDQ2YzYzNWRkNWU3MzgyYjczMDUyZi4uY2IzYjMwMDBmYWE0YzgzOTM2MGQ3OTIyMzEwMzVh
MDNhNDQ4NWRhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQXJy
YXlQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNp
bmNsdWRlICJBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQm9vbGVhbkNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiQm9vbGVhblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkJ1aWx0
aW5OYW1lcy5oIgpAQCAtNjMsNiArNjUsNyBAQAogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIK
ICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNCb3VuZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oIgpAQCAtNTg1LDYgKzU4OCw4IEBAIG1fICMjIHByb3Bl
ck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoCiAgICAgbV90aHJvd1R5cGVFcnJvckZ1bmN0aW9uLnNldCh2bSwgdGhpcywg
dGhyb3dUeXBlRXJyb3JGdW5jdGlvbik7CiAKICAgICBKU0NlbGwqIGZ1bmN0aW9uQ29uc3RydWN0
b3IgPSBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEZ1bmN0aW9uQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOworICAgIG1fZnVuY3Rpb25Db25zdHJ1Y3Rvci5zZXQo
dm0sIHRoaXMsIChGdW5jdGlvbkNvbnN0cnVjdG9yKilmdW5jdGlvbkNvbnN0cnVjdG9yKTsKKwog
ICAgIEFycmF5Q29uc3RydWN0b3IqIGFycmF5Q29uc3RydWN0b3IgPSBBcnJheUNvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIHRoaXMsIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIG1fYXJyYXlQcm90b3R5cGUuZ2V0KCks
IG1fc3BlY2llc0dldHRlclNldHRlci5nZXQoKSk7CiAgICAgbV9hcnJheUNvbnN0cnVjdG9yLnNl
dCh2bSwgdGhpcywgYXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgCkBAIC02MzAsNyArNjM1LDE3IEBA
IG1fICMjIGxvd2VyTmFtZSAjIyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jCiAKICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS0+cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpLCBEb250RW51bSB8IFJlYWRPbmx5
KTsKICAgICBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBtX2dlbmVyYXRvclByb3Rv
dHlwZS5nZXQoKSwgRG9udEVudW0gfCBSZWFkT25seSk7Ci0gICAgCisKKyAgICBtX2FzeW5jRnVu
Y3Rpb25TdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBbXShMYXp5Q2xhc3NTdHJ1Y3R1cmU6
OkluaXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBl
KiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlID0gQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRl
KGluaXQudm0sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZt
LCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsK
KyAgICAgICAgICAgIGluaXQuc2V0UHJvdG90eXBlKGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOwor
ICAgICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQucHJvdG90eXBlKSk7CisgICAgICAgICAg
ICBpbml0LnNldENvbnN0cnVjdG9yKFByb3BlcnR5TmFtZShudWxscHRyKSwgQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0
aW9uQ29uc3RydWN0b3IuZ2V0KCkpLCBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKSk7CisKKyAgICAg
ICAgICAgIGluaXQuZ2xvYmFsLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihpbml0LnZtLCBp
bml0LnZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFzeW5jRnVuY3Rpb25SZXN1bWVQ
cml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24oaW5pdC52bSwg
YXN5bmNGdW5jdGlvblByb3RvdHlwZUFzeW5jRnVuY3Rpb25SZXN1bWVDb2RlR2VuZXJhdG9yKGlu
aXQudm0pLCBpbml0Lmdsb2JhbCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsK
KyAgICAgICAgfSk7CisKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBvYmplY3RDb25zdHJ1
Y3RvciwgRG9udEVudW0pOwogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgZnVuY3Rpb25D
b25zdHJ1Y3RvciwgRG9udEVudW0pOwogICAgIG1fYXJyYXlQcm90b3R5cGUtPnB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgYXJyYXlD
b25zdHJ1Y3RvciwgRG9udEVudW0pOwpAQCAtMTEwMiw2ICsxMTE3LDcgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIudmlzaXQodmlz
aXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JB
cmd1bWVudHNDYWxsZWVBbmRDYWxsZXJHZXR0ZXJTZXR0ZXIpOwogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRlcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZnVuY3Rpb25Db25zdHJ1Y3Rvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2Z1bmN0aW9uUHJvdG90eXBlKTsKQEAgLTExMTAsNiArMTEyNiw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvdHlw
ZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZ2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvclBy
b3RvdHlwZSk7CisgICAgdGhpc09iamVjdC0+bV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUxvYWRl
clByb3RvdHlwZSk7CiAKICAgICB0aGlzT2JqZWN0LT5tX2RlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAppbmRleCA0MDg0NmNlMjk3YjQ3YzI4NWVjNDA5MWNkNzM0MDI5NWMwNmRhNWYw
Li4yZGQ0NDE2OWQxZjFjYzA4YmFjNjE3ZWI3NWIyNDBmMDM2NTYzMmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTU2LDYgKzU2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEFycmF5Q29uc3RydWN0b3I7CiBjbGFzcyBBcnJh
eVByb3RvdHlwZTsKK2NsYXNzIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBCb29sZWFu
UHJvdG90eXBlOwogY2xhc3MgQ29uc29sZUNsaWVudDsKIGNsYXNzIERlYnVnZ2VyOwpAQCAtNjMs
NiArNjQsNyBAQCBjbGFzcyBFcnJvckNvbnN0cnVjdG9yOwogY2xhc3MgRXJyb3JQcm90b3R5cGU7
CiBjbGFzcyBFdmFsQ29kZUJsb2NrOwogY2xhc3MgRXZhbEV4ZWN1dGFibGU7CitjbGFzcyBGdW5j
dGlvbkNvbnN0cnVjdG9yOwogY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBHZW5lcmF0
b3JQcm90b3R5cGU7CiBjbGFzcyBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKQEAgLTIzMyw2
ICsyMzUsNyBAQCBwdWJsaWM6CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yPiBtX3N5bnRheEVycm9yQ29uc3RydWN0b3I7CiAgICAgV3JpdGVC
YXJyaWVyPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+IG1fdHlwZUVycm9yQ29uc3RydWN0b3I7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBt
X1VSSUVycm9yQ29uc3RydWN0b3I7CisgICAgV3JpdGVCYXJyaWVyPEZ1bmN0aW9uQ29uc3RydWN0
b3I+IG1fZnVuY3Rpb25Db25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0Q29uc3Ry
dWN0b3I+IG1fb2JqZWN0Q29uc3RydWN0b3I7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5Q29uc3Ry
dWN0b3I+IG1fYXJyYXlDb25zdHJ1Y3RvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlQ29u
c3RydWN0b3I+IG1fcHJvbWlzZUNvbnN0cnVjdG9yOwpAQCAtMzA2LDYgKzMwOSw3IEBAIHB1Ymxp
YzoKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOworICAgIExhenlDbGFzc1N0cnVjdHVyZSBt
X2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9n
ZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2RvbGxhclZNU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0
b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmU7CkBAIC01MjcsNiArNTMxLDE5IEBAIHB1YmxpYzoKICAg
ICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmdldCgpOyB9CiAg
ICAgR2VuZXJhdG9yUHJvdG90eXBlKiBnZW5lcmF0b3JQcm90b3R5cGUoKSBjb25zdCB7IHJldHVy
biBtX2dlbmVyYXRvclByb3RvdHlwZS5nZXQoKTsgfQogCisgICAgTGF6eUNsYXNzU3RydWN0dXJl
JiBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9h
c3luY0Z1bmN0aW9uU3RydWN0dXJlOworICAgIH0KKyAgICBjb25zdCBMYXp5Q2xhc3NTdHJ1Y3R1
cmUmIGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgfQorICAgIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqPihsYXp5QXN5bmNGdW5jdGlvblN0cnVj
dHVyZSgpLnByb3RvdHlwZSh0aGlzKSk7IH0KKyAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBh
c3luY0Z1bmN0aW9uUHJvdG90eXBlQ29uY3VycmVudGx5KCkgY29uc3QgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxBc3luY0Z1bmN0aW9uUHJvdG90eXBlKj4obGF6eUFzeW5jRnVuY3Rpb25TdHJ1
Y3R1cmUoKS5wcm90b3R5cGVDb25jdXJyZW50bHkoKSk7IH0KKyAgICBTdHJ1Y3R1cmUqIGFzeW5j
RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBsYXp5QXN5bmNGdW5jdGlvblN0cnVj
dHVyZSgpLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogYXN5bmNGdW5jdGlvblN0cnVjdHVy
ZUNvbmN1cnJlbnRseSgpIGNvbnN0IHsgcmV0dXJuIGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJl
KCkuZ2V0Q29uY3VycmVudGx5KCk7IH0KKwogICAgIFN0cnVjdHVyZSogZGVidWdnZXJTY29wZVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJTY29wZVN0cnVjdHVyZS5nZXQodGhp
cyk7IH0KICAgICBTdHJ1Y3R1cmUqIHdpdGhTY29wZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2l0aFNjb3BlU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogc3RyaWN0
RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cmljdEV2YWxBY3Rp
dmF0aW9uU3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI0YTM4OWY5NzkxNDRhNjc3NmJjOTdmNDA1Y2Y3OTFk
ZWI2ODI4MzIuLmZkZTY4ZmQ5NDljZDg1OWVhY2Y3OGEwYTBkMWMwZDQxZTI0NzQ3ZTIgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIwIEBACisyMDE2LTEwLTIwICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0pTQ10gaW1wbGVtZW50IHJ1bnRpbWUgZm9yIGFzeW5jIGZ1bmN0aW9ucwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNzYwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mv
YXN5bmMtYXdhaXQtYmFzaWMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91
bGRUaHJvd0FzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93U3ludGF4RXJyb3IpOgorICAgICAg
ICAobGV0LkFzeW5jRnVuY3Rpb24uYXN5bmMpOgorICAgICAgICAoYXN5bmMuYXN5bmNGdW5jdGlv
bkZvclByb3RvKToKKyAgICAgICAgKE9iamVjdC5nZXRQcm90b3R5cGVPZi5hc3luYyk6CisgICAg
ICAgIChPYmplY3QuZ2V0UHJvdG90eXBlT2YuYXN5bmMubWV0aG9kKToKKyAgICAgICAgKGFzeW5j
KToKKyAgICAgICAgKGFzeW5jLm1ldGhvZCk6CisgICAgICAgIChhc3luYy5hc3luY05vbkNvbnN0
cnVjdG9yRGVjbCk6CisgICAgICAgIChzaG91bGRUaHJvdy5uZXcuYXN5bmMpOgorICAgICAgICAo
c2hvdWxkVGhyb3cubmV3LmFzeW5jLm5vbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKGFzeW5jLmFz
eW5jRGVjbCk6CisgICAgICAgIChhc3luYy5mKToKKyAgICAgICAgKE15RXJyb3IpOgorICAgICAg
ICAoYXN5bmMuYXN5bmNEZWNsVGhyb3dlcik6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jLmFz
eW5jKToKKyAgICAgICAgKHJlc29sdmVMYXRlcik6CisgICAgICAgIChyZWplY3RMYXRlcik6Cisg
ICAgICAgIChhc3luYy5yZXN1bWVBZnRlck5vcm1hbCk6CisgICAgICAgIChPLmFzeW5jLnJlc3Vt
ZUFmdGVyTm9ybWFsKToKKyAgICAgICAgKHJlc3VtZUFmdGVyTm9ybWFsQXJyb3cuYXN5bmMpOgor
ICAgICAgICAoYXN5bmMucmVzdW1lQWZ0ZXJUaHJvdyk6CisgICAgICAgIChPLmFzeW5jLnJlc3Vt
ZUFmdGVyVGhyb3cpOgorICAgICAgICAocmVzdW1lQWZ0ZXJUaHJvd0Fycm93LmFzeW5jKToKKyAg
ICAgICAgKGNhdGNoKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJlc2Vy
dmVkLXdvcmQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoU3lu
dGF4RXJyb3IuQ2Fuc3RyaW5nX2FwcGVhcmVkX2hlcmVhd2FpdC5jaGVja01vZHVsZVN5bnRheEVy
cm9yLlN0cmluZy5yYXcuYXdhaXQpOgorICAgICAgICAoY2hlY2tNb2R1bGVTeW50YXhFcnJvci5T
dHJpbmcucmF3LmF3YWl0KToKKyAgICAgICAgKGNoZWNrTW9kdWxlU3ludGF4RXJyb3IuU3RyaW5n
LnJhdy5hc3luYy5hd2FpdCk6CisgICAgICAgIChTeW50YXhFcnJvci5DYW5ub3QuZGVjbGFyZS5u
YW1lZCk6CisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChz
aG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKToKKyAgICAgICAgKGFzc2Vy
dCk6CisgICAgICAgIChzaG91bGRUaHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKG1velNlbWFu
dGljcy5hc3luYy5lbXB0eSk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuc2ltcGxlUmV0
dXJuKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5zaW1wbGVBd2FpdCk6CisgICAgICAg
IChtb3pTZW1hbnRpY3MuYXN5bmMuc2ltcGxlQXdhaXRBc3luYyk6CisgICAgICAgIChtb3pTZW1h
bnRpY3MuYXN5bmMucmV0dXJuT3RoZXJBc3luYyk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5
bmMuc2ltcGxlVGhyb3dlcik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZGVsZWdhdGVk
VGhyb3dlcik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMudHJ5Q2F0Y2gpOgorICAgICAg
ICAobW96U2VtYW50aWNzLmFzeW5jLnRyeUNhdGNoVGhyb3cpOgorICAgICAgICAobW96U2VtYW50
aWNzLmFzeW5jLndlbGxGaW5hbGx5KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5maW5h
bGx5TWF5RmFpbCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZW1iZWRkZWQuYXN5bmMu
aW5uZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmVtYmVkZGVkKToKKyAgICAgICAg
KG1velNlbWFudGljcy5hc3luYy5maWIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmlz
T2RkLmFzeW5jLmlzRXZlbik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuaXNPZGQpOgor
ICAgICAgICAobW96U2VtYW50aWNzLmhhcmRjb3JlRmliLmFzeW5jLmZpYjIpOgorICAgICAgICAo
bW96U2VtYW50aWNzLm5hbWVkQXN5bmNFeHByLmFzeW5jLnNpbXBsZSk6CisgICAgICAgIChtb3pT
ZW1hbnRpY3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIuYXN5bmMuZmlyc3QpOgorICAgICAgICAobW96
U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFzeW5jLnNlY29uZCk6CisgICAgICAgICht
b3pTZW1hbnRpY3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIuYXN5bmMudGhpcmQpOgorICAgICAgICAo
bW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyKToKKyAgICAgICAgKG1velNlbWFudGlj
cy5hc3luYy5taXNjZWxsYW5lb3VzKToKKyAgICAgICAgKG1velNlbWFudGljcy50aHJvd2VyKToK
KyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5kZWZhdWx0QXJncyk6CisgICAgICAgIChtb3pT
ZW1hbnRpY3Muc2hvdWxkVGhyb3cpOgorICAgICAgICAobW96U2VtYW50aWNzKToKKyAgICAgICAg
KG1vek1ldGhvZHMuWCk6CisgICAgICAgIChtb3pNZXRob2RzLlgucHJvdG90eXBlLmFzeW5jLmdl
dFZhbHVlKToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuc2V0VmFsdWUpOgorICAg
ICAgICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5hc3luYy5pbmNyZW1lbnQpOgorICAgICAgICAo
bW96TWV0aG9kcy5YLnByb3RvdHlwZS5hc3luYy5nZXRCYXNlQ2xhc3NOYW1lKToKKyAgICAgICAg
KG1vek1ldGhvZHMuWC5hc3luYy5nZXRTdGF0aWNWYWx1ZSk6CisgICAgICAgIChtb3pNZXRob2Rz
LlkucHJvdG90eXBlLmFzeW5jLmdldEJhc2VDbGFzc05hbWUpOgorICAgICAgICAobW96TWV0aG9k
cy5ZKToKKyAgICAgICAgKG1vekZ1bmN0aW9uTmFtZUluZmVycmVuY2UuYXN5bmMudGVzdCk6Cisg
ICAgICAgIChtb3pTeW50YXhFcnJvcnMpOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1hd2FpdC1y
ZXNlcnZlZC13b3JkLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChzaG91
bGRUaHJvd1N5bnRheEVycm9yKToKKyAgICAgICAgKEFzeW5jRnVuY3Rpb24uYXN5bmMpOgorICAg
ICAgICAqIHN0cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9hcmd1bWVudHNfYmlu
ZGluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFz
eW5jKToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMpOgorICAgICAgICAobm9Bcmd1bWVudHNB
cnJvdzIuYXN5bmMpOgorICAgICAgICAqIHN0cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4
aWNhbF9uZXcudGFyZ2V0X2JpbmRpbmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKToKKyAg
ICAgICAgKEMxKToKKyAgICAgICAgKEMyKToKKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMuYXN5
bmMpOgorICAgICAgICAqIHN0cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9zdXBl
cl9iaW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3Vs
ZEJlQXN5bmMpOgorICAgICAgICAoQmFzZUNsYXNzLnByb3RvdHlwZS5iYXNlQ2xhc3NWYWx1ZSk6
CisgICAgICAgIChCYXNlQ2xhc3MucHJvdG90eXBlLmdldCBwcm9wZXJ0eSk6CisgICAgICAgIChC
YXNlQ2xhc3MpOgorICAgICAgICAoQ2hpbGRDbGFzcy5wcm90b3R5cGUuYXN5bmNTdXBlclByb3Ap
OgorICAgICAgICAoQ2hpbGRDbGFzcy5wcm90b3R5cGUuYXN5bmNTdXBlclByb3AyKToKKyAgICAg
ICAgKENoaWxkQ2xhc3MpOgorICAgICAgICAoQ2hpbGRDbGFzczIpOgorICAgICAgICAqIHN0cmVz
cy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF90aGlzX2JpbmRpbmcuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChk
LnkpOgorCiAyMDE2LTEwLTI2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldzo6c2V0KCkgc2hvdWxkIGNoZWNrIGZvciBleGNl
cHRpb25zLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9hc3luY0Z1bmN0aW9uVGVzdHMueWFtbCBiL0pT
VGVzdHMvYXN5bmNGdW5jdGlvblRlc3RzLnlhbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZiNzhiZWQ3NGJjNDgw
MjEyM2I2NjZjNzU2YjE1MjRmOGI1MjFhNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvYXN5
bmNGdW5jdGlvblRlc3RzLnlhbWwKQEAgLTAsMCArMSwzOTIgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgUHJvdmlkZWQgdG8gc2ltcGxpZnkgcnVubmluZyBh
c3luYyBmdW5jdGlvbiB0ZXN0cy4gVG8gYmUgcmVtb3ZlZCBvbmNlIGFzeW5jCisjIGZ1bmN0aW9u
cyBhcmUgbm8gbG9uZ2VyIGJlaGluZCBhIGZlYXR1cmUgZmxhZy4KKworLS0tCistIHBhdGg6IHN0
cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1zdXBlci1iaW5kaW5nLmpzCisgIGNt
ZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGlj
YWwtYXJndW1lbnRzLWJpbmRpbmcuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0cmVz
cy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC10aGlzLWJpbmRpbmcuanMKKyAgY21kOiBy
dW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1u
ZXcudGFyZ2V0LWJpbmRpbmcuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9h
c3luYy1hd2FpdC1iYXNpYy5qcworICBjbWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNzL2Fz
eW5jLWF3YWl0LW1vemlsbGEuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9h
c3luYy1hd2FpdC1zeW50YXguanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9h
c3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcworICBjbWQ6IHJ1bkRlZmF1bHQKKy0g
cGF0aDogc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdvcmQuanMKKyAgY21kOiBydW5EZWZh
dWx0CisKKyMgVGVzdDI2MgorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVu
Y3Rpb24vQXN5bmNGdW5jdGlvbi1jb25zdHJ1Y3QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9B
c3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24tY29uc3RydWN0LmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1pcy1leHRlbnNpYmxlLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLWlzLWV4
dGVuc2libGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
WzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9B
c3luY0Z1bmN0aW9uLWlzLXN1YmNsYXNzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
Tm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNG
dW5jdGlvbi9Bc3luY0Z1bmN0aW9uLWlzLXN1YmNsYXNzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
YnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1sZW5ndGguanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9wcm9w
ZXJ0eUhlbHBlci5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5j
RnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1sZW5ndGguanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJd
LCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9u
L0FzeW5jRnVuY3Rpb24tbmFtZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhj
ZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFtdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLW5h
bWUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4v
Li4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24tcHJvdG90eXBlLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hh
cm5lc3MvcHJvcGVydHlIZWxwZXIuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0
LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24tcHJvdG90eXBlLmpzCisgIGNtZDogcnVu
VGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVy
dHlIZWxwZXIuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMv
QXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5
bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
Tm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5z
L0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvblByb3RvdHlwZS1pcy1leHRlbnNpYmxlLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uUHJvdG90eXBl
LWlzLWV4dGVuc2libGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5j
dGlvbi9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLXByb3RvdHlwZS5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVp
bHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvblByb3RvdHlwZS1wcm90b3R5cGUuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9u
UHJvdG90eXBlLXRvLXN0cmluZy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhj
ZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFtdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uUHJv
dG90eXBlLXRvLXN0cmluZy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0
aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFs6c3RyaWN0XQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vaW5zdGFuY2UtY29u
c3RydWN0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtd
CistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9pbnN0YW5jZS1j
b25zdHJ1Y3QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
WzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9p
bnN0YW5jZS1oYXMtbmFtZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0
aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFtdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9pbnN0YW5jZS1oYXMtbmFtZS5q
cworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9o
YXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vaW5zdGFuY2UtbGVuZ3RoLmpzCisgIGNtZDogcnVu
VGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVy
dHlIZWxwZXIuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1
bmN0aW9uL2luc3RhbmNlLWxlbmd0aC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFs6c3Ry
aWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vaW5zdGFu
Y2UtcHJvdG90eXBlLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5l
c3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5j
dGlvbi9pbnN0YW5jZS1wcm90b3R5cGUtcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9i
dWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9pcy1ub3QtYS1nbG9iYWwuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1
aWx0LWlucy9Bc3luY0Z1bmN0aW9uL2lzLW5vdC1hLWdsb2JhbC5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKworIyBGSVhNRTogQ3JlYXRl
RHluYW1pY0Z1bmN0aW9uKCkgaXMgYnJva2VuIGluIEpTQywgbmVlZCB0byBwYXJzZSBmb3JtYWwg
cGFyYW1ldGVycyBhbmQgYm9keSBzZXBhcmF0ZWx5LgorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVp
bHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS90b1N0cmluZy9Bc3luY0Z1bmN0aW9uLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJu
ZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS90b1N0cmluZy9B
c3luY0Z1bmN0aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwg
WyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKworIyBGSVhNRTogVGhlc2UgdGVzdHMgcmVxdWlyZSBG
LnAudG9TdHJpbmcgcmV2aXNpb25zIChodHRwczovL3RjMzkuZ2l0aHViLmlvL0Z1bmN0aW9uLXBy
b3RvdHlwZS10b1N0cmluZy1yZXZpc2lvbi8pCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1p
bnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3RyaW5nL2FzeW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9u
LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS90
b1N0cmluZy9hc3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIg
OmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9idWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3RyaW5nL2FzeW5jLWZ1
bmN0aW9uLWV4cHJlc3Npb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvRnVu
Y3Rpb24vcHJvdG90eXBlL3RvU3RyaW5nL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24uanMKKyAg
Y21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3Ry
aWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS90
b1N0cmluZy9hc3luYy1tZXRob2QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNl
cHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMv
RnVuY3Rpb24vcHJvdG90eXBlL3RvU3RyaW5nL2FzeW5jLW1ldGhvZC5qcworICBjbWQ6IHJ1blRl
c3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCisKKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0
aW9uL2Fycm93LXJldHVybnMtcHJvbWlzZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
Ik5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRs
ZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lv
bnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vYXJyb3ctcmV0dXJucy1wcm9taXNlLmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtYXJyb3ctTlNQTC13aXRoLVVTRC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LU5T
UEwtd2l0aC1VU0QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIs
IFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNz
aW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctYXJndW1lbnRzLWlu
LWZvcm1hbC1wYXJhbWV0ZXJzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4
RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uv
ZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWF3YWl0
LWluLWZvcm1hbHMtZGVmYXVsdC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRh
eEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVz
c2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWF3YWl0LWluLWZv
cm1hbHMtZGVmYXVsdC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9y
IiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1hd2FpdC1pbi1m
b3JtYWxzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1h
cnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctYXdhaXQtaW4tZm9ybWFscy5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1
bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1ib2R5LWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAg
Y21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9u
L2Vhcmx5LWVycm9ycy1hcnJvdy1ib2R5LWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlv
bi9lYXJseS1lcnJvcnMtYXJyb3ctYm9keS1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24v
ZWFybHktZXJyb3JzLWFycm93LWJvZHktY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5j
dGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctZHVwbGljYXRlLXBhcmFtZXRlcnMuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlv
bi9lYXJseS1lcnJvcnMtYXJyb3ctZXZhbC1pbi1mb3JtYWwtcGFyYW1ldGVycy5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0
aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1mb3JtYWxzLWJvZHktZHVwbGljYXRlLmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtYXJyb3ctZm9ybWFscy1ib2R5LWR1cGxpY2F0ZS5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5
LWVycm9ycy1hcnJvdy1mb3JtYWxzLWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVy
cm9ycy1hcnJvdy1mb3JtYWxzLWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtYXJyb3ctZm9ybWFscy1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFy
bHktZXJyb3JzLWFycm93LWZvcm1hbHMtY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9l
YXJseS1lcnJvcnMtZXhwcmVzc2lvbi1OU1BMLXdpdGgtVVNELmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZXhwcmVz
c2lvbi1OU1BMLXdpdGgtVVNELmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4
RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uv
ZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tYmluZGlu
Zy1pZGVudGlmaWVyLWFyZ3VtZW50cy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5
bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLWJp
bmRpbmctaWRlbnRpZmllci1ldmFsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3lu
dGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tYm9k
eS1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3lu
dGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHBy
ZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZXhwcmVzc2lvbi1ib2R5LWNvbnRh
aW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJv
ciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHBy
ZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZXhwcmVzc2lvbi1ib2R5LWNvbnRh
aW5zLXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4
RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNz
aW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZXhwcmVzc2lvbi1ib2R5LWNvbnRhaW5z
LXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJy
b3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5l
c3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhw
cmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tZXZhbC1pbi1m
b3JtYWwtcGFyYW1ldGVycy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVy
cm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4
cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLWZvcm1hbHMt
Ym9keS1kdXBsaWNhdGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJv
ciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLWZvcm1hbHMtYm9keS1kdXBs
aWNhdGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9h
c3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZXhwcmVzc2lvbi1mb3JtYWxzLWNvbnRhaW5zLXN1
cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsi
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5j
LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLWZvcm1hbHMtY29udGFpbnMtc3VwZXIt
Y2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2Fz
eW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLWZvcm1hbHMtY29udGFpbnMtc3Vw
ZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIs
IFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2Fz
eW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLWZvcm1hbHMtY29udGFpbnMtc3Vw
ZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIs
IFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNz
aW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZXhwcmVzc2lvbi1ub3Qtc2ltcGxlLWFz
c2lnbm1lbnQtdGFyZ2V0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiUmVmZXJlbmNl
RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNz
aW9ucy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZXhwcmVzc2lvbi1ub3Qtc2ltcGxlLWFz
c2lnbm1lbnQtdGFyZ2V0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiUmVmZXJlbmNl
RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uv
ZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZXhwcmVzc2lvbi1yZXR1cm5zLXByb21pc2UuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2V4
cHJlc3Npb24tcmV0dXJucy1wcm9taXNlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
Tm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFu
Z3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vc3ludGF4LWV4cHJlc3Npb24taXMtUHJp
bWFyeUV4cHJlc3Npb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L2FzeW5jLWZ1bmN0aW9uL3N5bnRheC1leHByZXNzaW9uLWlzLVByaW1hcnlFeHByZXNzaW9uLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3Ry
aWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdh
aXQtQmluZGluZ0lkZW50aWZpZXItaW4tZ2xvYmFsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5n
dWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1CaW5kaW5nSWRlbnRpZmllci1pbi1nbG9iYWwu
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpz
dHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9h
d2FpdC1CaW5kaW5nSWRlbnRpZmllci1uZXN0ZWQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LUJpbmRpbmdJZGVudGlmaWVyLW5lc3RlZC5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmlj
dF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0
LWF3YWl0cy10aGVuYWJsZS1ub3QtY2FsbGFibGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRI
YW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL2F3YWl0L2F3YWl0LWF3YWl0cy10aGVuYWJsZS1ub3QtY2FsbGFibGUuanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDog
dGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWF3YWl0cy10aGVu
YWJsZXMtdGhhdC10aHJvdy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0
aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBb
OmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQv
YXdhaXQtYXdhaXRzLXRoZW5hYmxlcy10aGF0LXRocm93LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXBy
aW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1hd2FpdHMtdGhlbmFibGVzLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1hd2FpdHMtdGhlbmFibGVzLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1m
dW5jdGlvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQv
YXdhaXQtaW4tZnVuY3Rpb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2Vw
dGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFy
bmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9l
eHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1nZW5lcmF0b3IuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWluLWdlbmVyYXRvci5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWluLWds
b2JhbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdh
aXQtaW4tZ2xvYmFsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVz
c2lvbnMvYXdhaXQvYXdhaXQtaW4tbmVzdGVkLWZ1bmN0aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1uZXN0ZWQtZnVuY3Rpb24uanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJp
Y3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2Fp
dC1pbi1uZXN0ZWQtZ2VuZXJhdG9yLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHBy
ZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1uZXN0ZWQtZ2VuZXJhdG9yLmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtdGhyb3dzLXJlamVj
dGlvbnMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3
YWl0LXRocm93cy1yZWplY3Rpb25zLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorCisjRklYTUU6IEpTQyBhbHdheXMgdGhyb3dz
IHRoZXNlIFJlZmVyZW5jZUVycm9ycyBhdCBydW50aW1lIHJhdGhlciB0aGFuIGF0IHBhcnNlIHRp
bWUuCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9lYXJs
eS1lcnJvcnMtYXdhaXQtbm90LXNpbXBsZS1hc3NpZ25tZW50LXRhcmdldC5qcworICBjbWQ6IHJ1
blRlc3QyNjIgOmZhaWwsICJSZWZlcmVuY2VFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2Vhcmx5LWVycm9ycy1hd2FpdC1u
b3Qtc2ltcGxlLWFzc2lnbm1lbnQtdGFyZ2V0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwg
IlJlZmVyZW5jZUVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKworLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvbm8tb3BlcmFuZC5qcworICBjbWQ6IHJ1blRl
c3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2Vy
dC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvbm8tb3BlcmFuZC5qcworICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L3N5bnRheC1hd2FpdC1o
YXMtVW5hcnlFeHByZXNzaW9uLXdpdGgtTXVsdGlwbGljYXRpdmVFeHByZXNzaW9uLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9zeW50YXgtYXdhaXQtaGFzLVVuYXJ5RXhw
cmVzc2lvbi13aXRoLU11bHRpcGxpY2F0aXZlRXhwcmVzc2lvbi5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2Rv
bmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvc3ludGF4LWF3YWl0LWhhcy1VbmFyeUV4cHJl
c3Npb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L3N5bnRheC1hd2Fp
dC1oYXMtVW5hcnlFeHByZXNzaW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpz
Il0sIFs6c3RyaWN0LCA6YXN5bmNdCisKKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4
cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9hc3luYy1zdXBlci1jYWxsLWJvZHku
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
Li4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
LCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2Qt
ZGVmaW5pdGlvbi9hc3luYy1zdXBlci1jYWxsLWJvZHkuanMKKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVz
cy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5pdGlvbi9hc3lu
Yy1zdXBlci1jYWxsLXBhcmFtLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNl
cHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFu
ZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNz
aW9ucy9vYmplY3QvbWV0aG9kLWRlZmluaXRpb24vYXN5bmMtc3VwZXItY2FsbC1wYXJhbS5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8u
Li9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIu
Li8uLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFz
eW5jXQorCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1
bmN0aW9uL2RlY2xhcmF0aW9uLXJldHVybnMtcHJvbWlzZS5qcworICBjbWQ6IHJ1blRlc3QyNjIg
Om5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9kZWNsYXJhdGlvbi1yZXR1cm5zLXBy
b21pc2UuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2Fz
eW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1OU1BMLXdpdGgtVVNELmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5
LWVycm9ycy1kZWNsYXJhdGlvbi1OU1BMLXdpdGgtVVNELmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVj
bGFyYXRpb24tYXJndW1lbnRzLWluLWZvcm1hbC1wYXJhbWV0ZXJzLmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJv
cnMtZGVjbGFyYXRpb24tYXdhaXQtaW4tZm9ybWFscy1kZWZhdWx0LmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNs
YXJhdGlvbi1hd2FpdC1pbi1mb3JtYWxzLWRlZmF1bHQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNs
YXJhdGlvbi1hd2FpdC1pbi1mb3JtYWxzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
U3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9z
dGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1hd2FpdC1p
bi1mb3JtYWxzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBb
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50
cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tYmluZGluZy1pZGVudGlm
aWVyLWFyZ3VtZW50cy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9y
IiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRl
bWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWJpbmRpbmctaWRl
bnRpZmllci1ldmFsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3Ii
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVt
ZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tYm9keS1jb250YWlu
cy1zdXBlci1jYWxsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3Ii
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2Fz
eW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1ib2R5LWNvbnRhaW5zLXN1cGVy
LWNhbGwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2Fz
eW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1ib2R5LWNvbnRhaW5zLXN1cGVy
LXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBb
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5j
LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1ib2R5LWNvbnRhaW5zLXN1cGVyLXBy
b3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9h
c3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tZHVwbGljYXRlLXBhcmFtZXRl
cnMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4v
Li4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
WzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5j
LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1ldmFsLWluLWZvcm1hbC1wYXJhbWV0
ZXJzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0s
IFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3lu
Yy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tZm9ybWFscy1ib2R5LWR1cGxpY2F0
ZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlv
bi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24tZm9ybWFscy1ib2R5LWR1cGxpY2F0ZS5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24v
ZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWZvcm1hbHMtY29udGFpbnMtc3VwZXItY2FsbC5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtZGVjbGFyYXRpb24tZm9ybWFscy1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9l
YXJseS1lcnJvcnMtZGVjbGFyYXRpb24tZm9ybWFscy1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5q
cworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8u
Li9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9l
YXJseS1lcnJvcnMtZGVjbGFyYXRpb24tZm9ybWFscy1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5q
cworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8u
Li9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0
cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVu
Y3Rpb24vZWFybHktZXJyb3JzLW5vLWFzeW5jLWdlbmVyYXRvci5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtbm8tYXN5
bmMtZ2VuZXJhdG9yLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3Ii
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVt
ZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLWJvZHktdGhhdC1yZXR1cm5zLWFmdGVyLWF3
YWl0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1
YXRpb24tYm9keS10aGF0LXJldHVybnMtYWZ0ZXItYXdhaXQuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25l
cHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1ib2R5LXRoYXQt
cmV0dXJucy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9l
dmFsdWF0aW9uLWJvZHktdGhhdC1yZXR1cm5zLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFu
ZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tYm9keS10aGF0LXRocm93cy1h
ZnRlci1hd2FpdC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwg
WyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5j
XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlv
bi9ldmFsdWF0aW9uLWJvZHktdGhhdC10aHJvd3MtYWZ0ZXItYXdhaXQuanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1ib2R5
LXRoYXQtdGhyb3dzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5
bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0
aW9uL2V2YWx1YXRpb24tYm9keS10aGF0LXRocm93cy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmlu
dEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFu
Z3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLWJvZHkuanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDog
dGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlv
bi1ib2R5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9h
c3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLWRlZmF1bHQtdGhhdC10aHJvd3MuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFy
bmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1kZWZhdWx0LXRo
YXQtdGhyb3dzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBb
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0
LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5j
LWZ1bmN0aW9uL2V2YWx1YXRpb24tbWFwcGVkLWFyZ3VtZW50cy5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2Rv
bmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLXRoaXMtdmFsdWUtZ2xvYmFs
LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4u
Ly4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRp
b24tdGhpcy12YWx1ZS1wYXNzZWQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMi
XSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5
bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi10aGlzLXZhbHVlLXBhc3NlZC5qcworICBjbWQ6IHJ1blRl
c3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2Vy
dC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLXVubWFw
cGVkLWFyZ3VtZW50cy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFz
eW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5j
dGlvbi9ldmFsdWF0aW9uLXVubWFwcGVkLWFyZ3VtZW50cy5qcworICBjbWQ6IHJ1blRlc3QyNjIg
Om5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVw
cmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9zeW50YXgtZGVjbGFyYXRpb24tbGlu
ZS10ZXJtaW5hdG9ycy1hbGxvd2VkLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0
ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL3N5bnRheC1kZWNsYXJhdGlvbi1saW5lLXRlcm1pbmF0b3Jz
LWFsbG93ZWQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRz
L2FzeW5jLWZ1bmN0aW9uL3N5bnRheC1kZWNsYXJhdGlvbi1uby1saW5lLXRlcm1pbmF0b3IuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vc3lu
dGF4LWRlY2xhcmF0aW9uLW5vLWxpbmUtdGVybWluYXRvci5qcworICBjbWQ6IHJ1blRlc3QyNjIg
Om5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vc3ludGF4LWRlY2xhcmF0
aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL3N5bnRh
eC1kZWNsYXJhdGlvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0
cmljdCwgOmFzeW5jXQorCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRz
L2NsYXNzL2RlZmluaXRpb24vbWV0aG9kcy1hc3luYy1zdXBlci1jYWxsLWJvZHkuanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4v
Li4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDog
dGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvY2xhc3MvZGVmaW5pdGlvbi9tZXRob2Rz
LWFzeW5jLXN1cGVyLWNhbGwtYm9keS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmlu
dEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFu
Z3VhZ2Uvc3RhdGVtZW50cy9jbGFzcy9kZWZpbml0aW9uL21ldGhvZHMtYXN5bmMtc3VwZXItY2Fs
bC1wYXJhbS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBb
OmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9jbGFzcy9k
ZWZpbml0aW9uL21ldGhvZHMtYXN5bmMtc3VwZXItY2FsbC1wYXJhbS5qcworICBjbWQ6IHJ1blRl
c3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi8u
Li9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmljdCwgOmFzeW5jXQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtYXJndW1l
bnRzLWJpbmRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4
aWNhbC1hcmd1bWVudHMtYmluZGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNWUwMmEzODY5YTcxYTYyNDAz
ZTNmN2ExOGM0NDI1OWQ4MGZjZjNhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
YXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtYXJndW1lbnRzLWJpbmRpbmcuanMKQEAgLTAs
MCArMSw1MyBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5D
VElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVu
Y3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0g
dm9pZCAwKQorICAgICAgICBtc2cgPSAiIjsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9y
ICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4s
IG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAg
cnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7
IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAg
ICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOwor
fQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0FzeW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7
CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50
aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAg
ZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7Cisg
ICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlw
ZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3Rh
bmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsg
cnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiAr
IGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVz
c2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsg
cnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1
YWwubWVzc2FnZSArICInIik7Cit9CisKK3ZhciBub0FyZ3VtZW50c0Fycm93ID0gYXN5bmMgKCkg
PT4gYXdhaXQgWy4uLmFyZ3VtZW50c107CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IG5vQXJndW1l
bnRzQXJyb3coMSwgMiwgMyksIFJlZmVyZW5jZUVycm9yKTsKK3ZhciBub0FyZ3VtZW50c0Fycm93
MiA9IGFzeW5jICgpID0+IHsgcmV0dXJuIGF3YWl0IFsuLi5hcmd1bWVudHNdOyB9CitzaG91bGRU
aHJvd0FzeW5jKCgpID0+IG5vQXJndW1lbnRzQXJyb3cyKDEsIDIsIDMpLCBSZWZlcmVuY2VFcnJv
cik7CisKK3Nob3VsZEJlQXN5bmMoIlsxLDIsM10iLCAoKSA9PiAoZnVuY3Rpb24oKSB7IHJldHVy
biAoYXN5bmMgKCkgPT4gSlNPTi5zdHJpbmdpZnkoWy4uLmFyZ3VtZW50c10pKSgpOyB9KSgxLCAy
LCAzKSk7CitzaG91bGRCZUFzeW5jKCJbNCw1LDZdIiwgKCkgPT4gKGZ1bmN0aW9uKCkgeyByZXR1
cm4gKGFzeW5jICgpID0+IHsgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFsuLi5hd2FpdCBhcmd1bWVu
dHNdKSB9KSgpOyB9KSg0LCA1LCA2KSk7CisKKyhmdW5jdGlvbiB0ZXN0QXJndW1lbnRzQmluZGlu
ZygpIHsKKyAgICB2YXIgYXJnc0JpbmRpbmc7CisgICAgdmFyIHByb21pc2UgPSAoZnVuY3Rpb24o
KSB7IGFyZ3NCaW5kaW5nID0gYXJndW1lbnRzOyByZXR1cm4gKGFzeW5jKCkgPT4gYXJndW1lbnRz
KSgpIH0pKDEsIDIsIDMpOworICAgIHNob3VsZEJlQXN5bmMoYXJnc0JpbmRpbmcsICgpID0+IHBy
b21pc2UpOworfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1
bmN0aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQtYmluZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Fz
eW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQtYmluZGluZy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MjZhMzk4M2Y3YTkyNzQwZWU0NzhjM2ZmN2JiODMwYzc4NWFlNDA5Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtbmV3
LnRhcmdldC1iaW5kaW5nLmpzCkBAIC0wLDAgKzEsNTUgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJl
cyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVp
bGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWws
IG1zZykgeworICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNnID0gIiI7CisgICAg
ZWxzZQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAi
ICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hv
dWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZh
ciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0
dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJv
ciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKwor
ICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUo
ZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3luYyhy
dW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVy
cm9yID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2
YWx1ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1
ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYg
KCFoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsg
IigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIp
OworICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBl
Lm5hbWUgKyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdl
ICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2Ug
KyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5jdGlv
biBDMSgpIHsKKyAgICByZXR1cm4gYXN5bmMgKCkgPT4gYXdhaXQgbmV3LnRhcmdldDsKK30KKwor
ZnVuY3Rpb24gQzIoKSB7CisgICAgcmV0dXJuIGFzeW5jICgpID0+IHsgcmV0dXJuIGF3YWl0IG5l
dy50YXJnZXQgfTsKK30KKworc2hvdWxkQmVBc3luYyhDMSwgbmV3IEMxKCkpOworc2hvdWxkQmVB
c3luYyh1bmRlZmluZWQsIEMxKCkpOworc2hvdWxkQmVBc3luYyhDMiwgbmV3IEMyKCkpOworc2hv
dWxkQmVBc3luYyh1bmRlZmluZWQsIEMyKCkpOworCitzaG91bGRUaHJvd0FzeW5jKGFzeW5jICgp
ID0+IGF3YWl0IG5ldy50YXJnZXQsIFJlZmVyZW5jZUVycm9yKTsKK3Nob3VsZFRocm93QXN5bmMo
YXN5bmMgKCkgPT4geyByZXR1cm4gYXdhaXQgbmV3LnRhcmdldDsgfSwgUmVmZXJlbmNlRXJyb3Ip
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGlj
YWwtc3VwZXItYmluZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9u
cy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhiZjBmOWFjZTNjNzVmN2Q4
ZjdlYmNiMjAzZjczOGRiMzljOWZkYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcuanMKQEAgLTAsMCAr
MSw1NSBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElP
Tl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworCitmdW5j
dGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAobXNnID09PSB2
b2lkIDApCisgICAgICAgIG1zZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAgbXNnID0gIiBmb3Ig
IiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIg
KyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwg
bXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBy
dW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAg
ICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsg
fSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAg
IHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9
CisKK2NsYXNzIEJhc2VDbGFzcyB7CisgICAgYmFzZUNsYXNzVmFsdWUoKSB7CisgICAgICAgIHJl
dHVybiAiQmFzZUNsYXNzVmFsdWUiOworICAgIH0KKyAgICBnZXQgcHJvcGVydHkoKSB7CisgICAg
ICAgIHJldHVybiAidGVzdCEiOworICAgIH0KK30KKworY2xhc3MgQ2hpbGRDbGFzcyBleHRlbmRz
IEJhc2VDbGFzcyB7CisgICAgYXN5bmNTdXBlclByb3AoKSB7CisgICAgICAgIHJldHVybiBhc3lu
YyB4ID0+IHN1cGVyLmJhc2VDbGFzc1ZhbHVlKCk7CisgICAgfQorICAgIGFzeW5jU3VwZXJQcm9w
MigpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jIHggPT4geyByZXR1cm4gc3VwZXIuYmFzZUNsYXNz
VmFsdWUoKTsgfQorICAgIH0KK30KKworLy8gRklYTUU6IHN1cGVyIGJpbmRpbmdzIGluIGFzeW5j
IGFycm93IGZ1bmN0aW9ucyBhcmUgYnJva2VuCitzaG91bGRCZUFzeW5jKCJCYXNlQ2xhc3NWYWx1
ZSIsIG5ldyBDaGlsZENsYXNzKCkuYXN5bmNTdXBlclByb3AoKSk7CitzaG91bGRCZUFzeW5jKCJC
YXNlQ2xhc3NWYWx1ZSIsIG5ldyBDaGlsZENsYXNzKCkuYXN5bmNTdXBlclByb3AyKCkpOworCitj
bGFzcyBDaGlsZENsYXNzMiBleHRlbmRzIEJhc2VDbGFzcyB7CisgICAgY29uc3RydWN0b3IoKSB7
CisgICAgICAgIHJldHVybiBhc3luYyAoc2VsZiA9IHN1cGVyKCkpID0+IHNlbGYuYmFzZUNsYXNz
VmFsdWUoKSArICcgJyArIHN1cGVyLnByb3BlcnR5OworICAgIH0KK30KKworc2hvdWxkQmVBc3lu
YygiQmFzZUNsYXNzVmFsdWUgdGVzdCEiLCBuZXcgQ2hpbGRDbGFzczIoKSk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC10aGlzLWJpbmRp
bmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC10aGlz
LWJpbmRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzJhZmExMTNmYTkxMjZjM2UxNjdmYWU0MTFjM2EwNGU4
N2ExMWI1YQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFycm93LWZ1
bmN0aW9ucy1sZXhpY2FsLXRoaXMtYmluZGluZy5qcwpAQCAtMCwwICsxLDMwIEBACisvLyBUaGlz
IHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBl
bmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBl
Y3RlZCwgYWN0dWFsLCBtc2cpIHsKKyAgICBpZiAobXNnID09PSB2b2lkIDApCisgICAgICAgIG1z
ZyA9ICIiOworICAgIGVsc2UKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUi
ICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisK
K2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFj
dHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9u
KHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJy
b3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNy
b3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKwor
ICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK3ZhciBkID0gKHsgeCA6
ICJiYXIiLCB5IDogZnVuY3Rpb24oKSB7IHJldHVybiBhc3luYyB6ID0+IHRoaXMueCArIHo7IH19
KS55KCk7Cit2YXIgZSA9IHsgeCA6ICJiYXoiLCB5IDogZCB9OworCitzaG91bGRCZUFzeW5jKCJi
YXJsZXkiLCAoKSA9PiBkKCJsZXkiKSk7CitzaG91bGRCZUFzeW5jKCJiYXJsZXkiLCAoKSA9PiBl
LnkoImxleSIpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2lj
LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZThm
MjA2NTM2NTNlY2FjZDdmM2VkYjYzYmIzMmQxMWI3NGE5MmQzZgotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzCkBAIC0wLDAgKzEsMjk5IEBACisv
LyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0
byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRC
ZShleHBlY3RlZCwgYWN0dWFsLCBtc2cgPSAiIikgeworICAgIGlmIChtc2cpCisgICAgICAgIG1z
ZyA9ICIgZm9yICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVj
dGVkLCBydW4sIG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFs
c2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwK
KyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFs
ID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9y
KQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFs
LCBtc2cpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhydW4sIGVycm9yVHlwZSwgbWVzc2Fn
ZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisKKyAgICB0
cnkgeworICAgICAgICBhY3R1YWwgPSBydW4oKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGhhZEVycm9yID0gdHJ1ZTsKKyAgICAgICAgYWN0dWFsID0gZTsKKyAgICB9CisKKyAgICBpZiAo
IWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAi
KCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7
CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY2VkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5u
YW1lICsgIiAsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2Ug
IT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSAr
ICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9u
IHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0
dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24o
dmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJv
cikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3Jv
dGFza3MoKTsKKworICAgIGlmICghaGFkRXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBi
dXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5
cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8g
dGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIici
KTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNz
YWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8g
dGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsg
IiciKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dTeW50YXhFcnJvcihzdHIsIG1lc3NhZ2Up
IHsKKyAgICB0cnkgeworICAgICAgICBldmFsKHN0cik7CisgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgYCIgKyBzdHIgKyAiYCB0byB0aHJvdyBhIFN5bnRheEVycm9yLCBidXQgZGlk
IG5vdCB0aHJvdy4iKQorICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUuY29uc3RydWN0
b3IgIT09IFN5bnRheEVycm9yKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCBgIiArIHN0ciArICJgIHRvIHRocm93IGEgU3ludGF4RXJyb3IsIGJ1dCB0aHJldyAnIiArIGUg
KyAiJyIpOworICAgICAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGUubWVzc2FnZSAhPT0g
bWVzc2FnZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgYCIgKyBzdHIg
KyAiYCB0byB0aHJvdyBTeW50YXhFcnJvcjogJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAn
IiArIGUgKyAiJyIpOworICAgIH0KK30KKworLy8gRG8gbm90IGluc3RhbGwgYEFzeW5jRnVuY3Rp
b25gIGNvbnN0cnVjdG9yIG9uIGdsb2JhbCBvYmplY3QKK3Nob3VsZEJlKHVuZGVmaW5lZCwgdGhp
cy5Bc3luY0Z1bmN0aW9uKTsKK2xldCBBc3luY0Z1bmN0aW9uID0gKGFzeW5jIGZ1bmN0aW9uKCkg
e30pLmNvbnN0cnVjdG9yOworCisvLyBMZXQgZnVuY3Rpb25Qcm90b3R5cGUgYmUgdGhlIGludHJp
bnNpYyBvYmplY3QgJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlLgorYXN5bmMgZnVuY3Rpb24gYXN5
bmNGdW5jdGlvbkZvclByb3RvKCkge30KK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBl
LCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmNGdW5jdGlvbkZvclByb3RvKSk7CitzaG91bGRC
ZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKGFzeW5jIGZ1
bmN0aW9uKCkge30pKTsKK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3Qu
Z2V0UHJvdG90eXBlT2YoYXN5bmMgKCkgPT4ge30pKTsKK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24u
cHJvdG90eXBlLCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoeyBhc3luYyBtZXRob2QoKSB7fSB9Lm1l
dGhvZCkpOworCisvLyBGSVhNRTogQXN5bmNGdW5jdGlvbiBjb25zdHJ1Y3RvciBzaG91bGQgYnVp
bGQgZnVuY3Rpb25zIHdpdGggY29ycmVjdCBwcm90b3R5cGUuCisvLyBzaG91bGRCZShBc3luY0Z1
bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKEFzeW5jRnVuY3Rpb24oKSkp
OworCisvLyBBc3luY0Z1bmN0aW9uQ3JlYXRlIGRvZXMgbm90IHByb2R1Y2UgYW4gb2JqZWN0IHdp
dGggYSBQcm90b3R5cGUKK3Nob3VsZEJlKHVuZGVmaW5lZCwgYXN5bmNGdW5jdGlvbkZvclByb3Rv
LnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgYXN5bmNGdW5jdGlvbkZvclByb3RvLmhhc093
blByb3BlcnR5KCJwcm90b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQsIChhc3luYyBmdW5j
dGlvbigpIHt9KS5wcm90b3R5cGUpOworc2hvdWxkQmUoZmFsc2UsIChhc3luYyBmdW5jdGlvbigp
IHt9KS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOworc2hvdWxkQmUodW5kZWZpbmVkLCAo
YXN5bmMoKSA9PiB7fSkucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCAoYXN5bmMoKSA9PiB7
fSkuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKK3Nob3VsZEJlKHVuZGVmaW5lZCwgKHsg
YXN5bmMgbWV0aG9kKCkge30gfSkubWV0aG9kLnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwg
KHsgYXN5bmMgbWV0aG9kKCkge30gfSkubWV0aG9kLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUi
KSk7CitzaG91bGRCZSh1bmRlZmluZWQsIEFzeW5jRnVuY3Rpb24oKS5wcm90b3R5cGUpOworc2hv
dWxkQmUoZmFsc2UsIEFzeW5jRnVuY3Rpb24oKS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikp
OworCisvLyBBc3luY0Z1bmN0aW9uLnByb3RvdHlwZVsgQEB0b1N0cmluZ1RhZyBdCit2YXIgZGVz
Y3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQXN5bmNGdW5jdGlvbi5w
cm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZyk7CitzaG91bGRCZSgiQXN5bmNGdW5jdGlvbiIs
IGRlc2NyaXB0b3IudmFsdWUpOworc2hvdWxkQmUoZmFsc2UsIGRlc2NyaXB0b3IuZW51bWVyYWJs
ZSk7CitzaG91bGRCZShmYWxzZSwgZGVzY3JpcHRvci53cml0YWJsZSk7CitzaG91bGRCZSh0cnVl
LCBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSk7CisKK3Nob3VsZEJlKDEsIEFzeW5jRnVuY3Rpb24u
bGVuZ3RoKTsKKworLy8gTGV0IEYgYmUgISBGdW5jdGlvbkFsbG9jYXRlKGZ1bmN0aW9uUHJvdG90
eXBlLCBTdHJpY3QsICJub24tY29uc3RydWN0b3IiKQorYXN5bmMgZnVuY3Rpb24gYXN5bmNOb25D
b25zdHJ1Y3RvckRlY2woKSB7fQorc2hvdWxkVGhyb3coKCkgPT4gbmV3IGFzeW5jTm9uQ29uc3Ry
dWN0b3JEZWNsKCksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgKGFzeW5jIGZ1
bmN0aW9uKCkge30pLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3ICh7IGFzeW5j
IG5vbkNvbnN0cnVjdG9yKCkge30gfSkubm9uQ29uc3RydWN0b3IoKSwgVHlwZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IG5ldyAoKCkgPT4gIm5vdCBhIGNvbnN0cnVjdG9yISIpLCBUeXBlRXJy
b3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IChBc3luY0Z1bmN0aW9uKCkpLCBUeXBlRXJyb3Ip
OworCisvLyBOb3JtYWwgY29tcGxldGlvbgorYXN5bmMgZnVuY3Rpb24gYXN5bmNEZWNsKCkgeyBy
ZXR1cm4gInRlc3QiOyB9CitzaG91bGRCZUFzeW5jKCJ0ZXN0IiwgYXN5bmNEZWNsKTsKK3Nob3Vs
ZEJlQXN5bmMoInRlc3QyIiwgYXN5bmMgZnVuY3Rpb24oKSB7IHJldHVybiAidGVzdDIiOyB9KTsK
K3Nob3VsZEJlQXN5bmMoInRlc3QzIiwgYXN5bmMgKCkgPT4gInRlc3QzIik7CitzaG91bGRCZUFz
eW5jKCJ0ZXN0NCIsICgpID0+ICh7IGFzeW5jIGYoKSB7IHJldHVybiAidGVzdDQiOyB9IH0pLmYo
KSk7CisKK2NsYXNzIE15RXJyb3IgZXh0ZW5kcyBFcnJvciB7fTsKKworLy8gVGhyb3cgY29tcGxl
dGlvbgorYXN5bmMgZnVuY3Rpb24gYXN5bmNEZWNsVGhyb3dlcihlKSB7IHRocm93IG5ldyBNeUVy
cm9yKGUpOyB9CitzaG91bGRUaHJvd0FzeW5jKCgpID0+IGFzeW5jRGVjbFRocm93ZXIoImJvb20h
IiksIE15RXJyb3IsICJib29tISIpOworc2hvdWxkVGhyb3dBc3luYygoKSA9PiAoYXN5bmMgZnVu
Y3Rpb24oZSkgeyB0aHJvdyBuZXcgTXlFcnJvcihlKTsgfSkoImJvb20hISEiKSwgTXlFcnJvciwg
ImJvb20hISEiKTsKK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gKGFzeW5jIGUgPT4geyB0aHJvdyBu
ZXcgTXlFcnJvcihlKSB9KSgiYm9vbSEhIiksIE15RXJyb3IsICJib29tISEiKTsKK3Nob3VsZFRo
cm93QXN5bmMoKCkgPT4gKHsgYXN5bmMgdGhyb3dlcihlKSB7IHRocm93IG5ldyBNeUVycm9yKGUp
OyB9IH0pLnRocm93ZXIoImJvb20hISEhIiksIE15RXJyb3IsICJib29tISEhISIpOworCitmdW5j
dGlvbiByZXNvbHZlTGF0ZXIodmFsdWUpIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSk7
IH0KK2Z1bmN0aW9uIHJlamVjdExhdGVyKGVycm9yKSB7IHJldHVybiBQcm9taXNlLnJlamVjdChl
cnJvcik7IH0KKworLy8gUmVzdW1lIGFmdGVyIE5vcm1hbCBjb21wbGV0aW9uCit2YXIgbG9nID0g
W107Cithc3luYyBmdW5jdGlvbiByZXN1bWVBZnRlck5vcm1hbCh2YWx1ZSkgeworICAgIGxvZy5w
dXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZh
bHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHZhbHVlID0g
YXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsg
dmFsdWUpOworICAgIHJldHVybiB2YWx1ZSArIDE7Cit9CisKK3Nob3VsZEJlQXN5bmMoNCwgKCkg
PT4gcmVzdW1lQWZ0ZXJOb3JtYWwoMSkpOworc2hvdWxkQmUoInN0YXJ0OjEgcmVzdW1lOjIgcmVz
dW1lOjMiLCBsb2cuam9pbigiICIpKTsKKwordmFyIE8gPSB7CisgICAgYXN5bmMgcmVzdW1lQWZ0
ZXJOb3JtYWwodmFsdWUpIHsKKyAgICAgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7Cisg
ICAgICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgICAgIGxv
Zy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZl
TGF0ZXIodmFsdWUgKyAxKTsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOwor
ICAgICAgICByZXR1cm4gdmFsdWUgKyAxOworICAgIH0KK307Citsb2cgPSBbXTsKK3Nob3VsZEJl
QXN5bmMoNSwgKCkgPT4gTy5yZXN1bWVBZnRlck5vcm1hbCgyKSk7CitzaG91bGRCZSgic3RhcnQ6
MiByZXN1bWU6MyByZXN1bWU6NCIsIGxvZy5qb2luKCIgIikpOworCit2YXIgcmVzdW1lQWZ0ZXJO
b3JtYWxBcnJvdyA9IGFzeW5jICh2YWx1ZSkgPT4geworICAgIGxvZy5wdXNoKCJzdGFydDoiICsg
dmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAg
bG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxh
dGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHJl
dHVybiB2YWx1ZSArIDE7Cit9OworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDYsICgpID0+IHJl
c3VtZUFmdGVyTm9ybWFsQXJyb3coMykpOworc2hvdWxkQmUoInN0YXJ0OjMgcmVzdW1lOjQgcmVz
dW1lOjUiLCBsb2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyTm9ybWFsRXZhbCA9IEFz
eW5jRnVuY3Rpb24oInZhbHVlIiwgYAorICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOwor
ICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7CisgICAgbG9nLnB1c2go
InJlc3VtZToiICsgdmFsdWUpOworICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVl
ICsgMSk7CisgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUpOworICAgIHJldHVybiB2YWx1
ZSArIDE7CitgKTsKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg3LCAoKSA9PiByZXN1bWVBZnRl
ck5vcm1hbEV2YWwoNCkpOworc2hvdWxkQmUoInN0YXJ0OjQgcmVzdW1lOjUgcmVzdW1lOjYiLCBs
b2cuam9pbigiICIpKTsKKworLy8gUmVzdW1lIGFmdGVyIFRocm93IGNvbXBsZXRpb24KK2FzeW5j
IGZ1bmN0aW9uIHJlc3VtZUFmdGVyVGhyb3codmFsdWUpIHsKKyAgICBsb2cucHVzaCgic3RhcnQ6
IiArIHZhbHVlKTsKKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVy
KCJ0aHJvdzEiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6
IiArIGUpOworICAgIH0KKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExh
dGVyKCJ0aHJvdzIiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxvZy5wdXNoKCJyZXN1
bWU6IiArIGUpOworICAgIH0KKyAgICByZXR1cm4gdmFsdWUgKyAxOworfQorCitsb2cgPSBbXTsK
K3Nob3VsZEJlQXN5bmMoMiwgKCkgPT4gcmVzdW1lQWZ0ZXJUaHJvdygxKSk7CitzaG91bGRCZSgi
c3RhcnQ6MSByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJvdzIiLCBsb2cuam9pbigiICIpKTsKKwor
dmFyIE8gPSB7CisgICAgYXN5bmMgcmVzdW1lQWZ0ZXJUaHJvdyh2YWx1ZSkgeworICAgICAgICBs
b2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHZh
bHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICAgICAgfQorICAgICAg
ICB0cnkgeworICAgICAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cyIik7
CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiAr
IGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWx1ZSArIDE7CisgICAgfQorfQorbG9n
ID0gW107CitzaG91bGRCZUFzeW5jKDMsICgpID0+IE8ucmVzdW1lQWZ0ZXJUaHJvdygyKSk7Citz
aG91bGRCZSgic3RhcnQ6MiByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJvdzIiLCBsb2cuam9pbigi
ICIpKTsKKwordmFyIHJlc3VtZUFmdGVyVGhyb3dBcnJvdyA9IGFzeW5jICh2YWx1ZSkgPT4gewor
ICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHRyeSB7CisgICAgICAgIHZhbHVl
ID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIHZh
bHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHJldHVybiB2YWx1ZSAr
IDE7Cit9OworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDQsICgpID0+IHJlc3VtZUFmdGVyVGhy
b3dBcnJvdygzKSk7CitzaG91bGRCZSgic3RhcnQ6MyByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJv
dzIiLCBsb2cuam9pbigiICIpKTsKKwordmFyIHJlc3VtZUFmdGVyVGhyb3dFdmFsID0gQXN5bmNG
dW5jdGlvbigidmFsdWUiLCBgCisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAg
dHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cxIik7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9Cisg
ICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cyIik7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKKyAgICB9
CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK2ApOworbG9nID0gW107CitzaG91bGRCZUFzeW5jKDUs
ICgpID0+IHJlc3VtZUFmdGVyVGhyb3dFdmFsKDQpKTsKK3Nob3VsZEJlKCJzdGFydDo0IHJlc3Vt
ZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOworCisvLyBNZXRob29kRGVm
aW5pdGlvbiBTeW50YXhFcnJvcnMKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7
IGFzeW5jIGZvbyA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEg
cGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgb2JqID0geyBhc3luYyBmb28gPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0n
LiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgZm9vICwgYmFyIH07IiwgIlVuZXhwZWN0
ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgZm9vIH0iLCAiVW5l
eHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxp
c3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIDAgOiB0
cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZv
ciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsg
YXN5bmMgMCA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFy
ZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgb2JqID0geyBhc3luYyAwICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBl
Y3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgMCB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBF
eHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworCitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAnZm9vJyA6IHRydWUgfTsiLCAiVW5leHBl
Y3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3Qu
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAnZm9vJyA9IHRy
dWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9y
IGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBh
c3luYyAnZm9vJyAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBw
YXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBvYmogPSB7IGFzeW5jICdmb28nIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVj
dGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIFsnZm9vJ10gOiB0cnVlIH07IiwgIlVuZXhwZWN0
ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSA9IHRy
dWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9y
IGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBh
c3luYyBbJ2ZvbyddICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBh
IHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBF
eHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOworCitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgZm9vIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVk
IHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9k
J3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsg
YXN5bmMgZm9vID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4g
b3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgZm9vICwgYmFyIH07IiwgIlVu
ZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3lu
YyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNs
YXNzIEMgeyBhc3luYyBmb28gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYW4g
b3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CisK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAwIDogdHJ1ZSB9OyIsICJV
bmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5
bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJj
bGFzcyBDIHsgYXN5bmMgMCA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVj
dGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIDAgLCBiYXIgfTsi
LCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBh
IGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiY2xhc3MgQyB7IGFzeW5jIDAgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQg
YW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7
CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAnZm9vJyA6IHRydWUg
fTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9y
ZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2Vu
ICc9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFy
YW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMg
J2ZvbycgLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5p
bmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nIH0iLCAiVW5leHBlY3RlZCB0
b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdz
IHBhcmFtZXRlciBsaXN0LiIpOworCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsg
YXN5bmMgWydmb28nXSA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVk
IGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsnZm9vJ10gPSB0cnVl
IH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZv
cmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImNsYXNzIEMgeyBhc3luYyBbJ2ZvbyddICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9r
ZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBw
YXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3lu
YyBbJ2ZvbyddIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcg
JygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVkLXdvcmQuanMgYi9K
U1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wOGIyNGZlNzYwYjBhM2FiMmQ5ZmY1YjE1YzM0N2ZjZjcxYzJmODE5Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJlc2VydmVkLXdvcmQu
anMKQEAgLTAsMCArMSw3MiBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdf
QVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNr
aXAKKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFy
IGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9
IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhl
cnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJy
b3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rpb24gY2hlY2tNb2R1bGVTeW50YXhF
cnJvcihzb3VyY2UsIGVycm9yTWVzc2FnZSkgeworICAgIHNob3VsZFRocm93KCgpID0+IGNoZWNr
TW9kdWxlU3ludGF4KHNvdXJjZSksIGVycm9yTWVzc2FnZSk7Cit9CisKK2NoZWNrTW9kdWxlU3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AKK3ZhciBhd2FpdDsKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01v
ZHVsZVN5bnRheEVycm9yKGAKK2V4cG9ydCB2YXIgYXdhaXQ7CitgLCBgU3ludGF4RXJyb3I6IENh
bid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hl
Y2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorbGV0IGF3YWl0OworYCwgYFN5bnRheEVy
cm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhIG1v
ZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZXhwb3J0IGxl
dCBhd2FpdDsKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3Io
U3RyaW5nLnJhd2AKK2NvbnN0IGF3YWl0ID0gMQorYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOworY2hl
Y2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZXhwb3J0IGNvbnN0IGF3YWl0ID0gMQor
YCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhIG1vZHVsZS46MmApOworCitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5y
YXdgCitmdW5jdGlvbiBhd2FpdCgpIHt9CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJl
IGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AKK2Z1bmN0aW9uKiBhd2FpdCgpIHt9CitgLCBgU3ludGF4RXJy
b3I6IENhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYSBtb2R1bGUuOjJg
KTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2FzeW5jIGZ1bmN0aW9uIGF3
YWl0KCkge30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQg
J2F3YWl0JyBpbiBhIG1vZHVsZS46MmApOworCitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgCitpbXBvcnQge2F3YWl0fSBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01v
ZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQge2ZvbyBhcyBhd2FpdH0gZnJvbSAn
Zm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVk
IGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAor
aW1wb3J0ICogYXMgYXdhaXQgZnJvbSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVz
ZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVT
eW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IGF3YWl0LCB7eCwgeSwgen0gZnJvbSAnZm9v
JzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJp
bmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1w
b3J0IGF3YWl0LCB7eCwgeSwgeix9IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9k
dWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCBhd2FpdCBmcm9tICdmb28nOworYCwg
YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBu
YW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgYXdh
aXQsICogYXMgZm9vIGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3
YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1h
d2FpdC1tb3ppbGxhLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjNWQ2YjkyZDNlNjFlNDk4MzllMDZjZDFkNGUx
YjU4MDNlNzhhMGIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2Fp
dC1tb3ppbGxhLmpzCkBAIC0wLDAgKzEsMzA1IEBACisvKiBUaGlzIFNvdXJjZSBDb2RlIEZvcm0g
aXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCisgKiBMaWNlbnNl
LCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0
aGlzCisgKiBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vei5vcmcvTVBMLzIu
MC8uICovCisKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJ
T05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0
aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9ICIiKSB7CisgICAgaWYgKG1zZykK
KyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFj
dHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJl
QXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFk
RXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9
IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0
cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisgICAgaWYg
KGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisgICAgc2hvdWxkQmUoZXhwZWN0ZWQs
IGFjdHVhbCwgbXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3cocnVuLCBlcnJvclR5cGUs
IG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOwor
ICAgIHRyeSB7CisgICAgICAgIGFjdHVhbCA9IHJ1bigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICBhY3R1YWwgPSBlOworICAgIH0KKyAgICBp
ZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4g
KyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cu
Iik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY2VkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlw
ZS5uYW1lICsgIiAsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3Nh
Z2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2Fn
ZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQg
YWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rp
b24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihl
cnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1p
Y3JvdGFza3MoKTsKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwg
YnV0IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JU
eXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRv
IHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICIn
Iik7CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVz
c2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRv
IHRocm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSAr
ICInIik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydChjb25kLCBtc2cgPSAiIikgeworICAgIGlmICgh
Y29uZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3Vs
ZFRocm93U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7CisgICAgdmFyIGhhZEVycm9yID0gZmFs
c2U7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzdHIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikgeworICAgICAgICAgICAgaGFkRXJy
b3IgPSB0cnVlOworICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIikK
KyAgICAgICAgICAgICAgICBhc3NlcnQoZS5tZXNzYWdlID09PSBtZXNzYWdlLCAiRXhwZWN0ZWQg
JyIgKyBtZXNzYWdlICsgIicgYnV0IHRocmV3ICciICsgZS5tZXNzYWdlICsgIiciKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBhc3NlcnQoaGFkRXJyb3IsICJEaWQgbm90IHRocm93IHN5bnRheCBl
cnJvciIpOworfQorCisvLyBzZW1hbnRpY3MuanMKKyhmdW5jdGlvbiBtb3pTZW1hbnRpY3MoKSB7
CisKK2FzeW5jIGZ1bmN0aW9uIGVtcHR5KCkgeworfQorCithc3luYyBmdW5jdGlvbiBzaW1wbGVS
ZXR1cm4oKSB7CisgICAgcmV0dXJuIDE7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNpbXBsZUF3YWl0
KCkgeworICAgIHZhciByZXN1bHQgPSBhd2FpdCAyOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K2FzeW5jIGZ1bmN0aW9uIHNpbXBsZUF3YWl0QXN5bmMoKSB7CisgICAgdmFyIHJlc3VsdCA9IGF3
YWl0IHNpbXBsZVJldHVybigpOworICAgIHJldHVybiAyICsgcmVzdWx0OworfQorCithc3luYyBm
dW5jdGlvbiByZXR1cm5PdGhlckFzeW5jKCkgeworICAgIHJldHVybiAxICsgYXdhaXQgc2ltcGxl
QXdhaXRBc3luYygpOworfQorCithc3luYyBmdW5jdGlvbiBzaW1wbGVUaHJvd2VyKCkgeworICAg
IHRocm93IG5ldyBFcnJvcigpOworfQorCithc3luYyBmdW5jdGlvbiBkZWxlZ2F0ZWRUaHJvd2Vy
KCkgeworICAgIHZhciB2YWwgPSBhd2FpdCBzaW1wbGVUaHJvd2VyKCk7CisgICAgcmV0dXJuIHZh
bDsKK30KKworYXN5bmMgZnVuY3Rpb24gdHJ5Q2F0Y2goKSB7CisgICAgdHJ5IHsKKyAgICAgICAg
YXdhaXQgZGVsZWdhdGVkVGhyb3dlcigpOworICAgICAgICByZXR1cm4gJ0ZBSUxFRCc7CisgICAg
fSBjYXRjaCAoXykgeworICAgICAgICByZXR1cm4gNTsKKyAgICB9Cit9CisKK2FzeW5jIGZ1bmN0
aW9uIHRyeUNhdGNoVGhyb3coKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVk
VGhyb3dlcigpOworICAgICAgICByZXR1cm4gJ0ZBSUxFRCc7CisgICAgfSBjYXRjaCAoXykgewor
ICAgICAgICByZXR1cm4gZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0KK30KKworYXN5bmMgZnVu
Y3Rpb24gd2VsbEZpbmFsbHkoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdhdGVk
VGhyb3dlcigpOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0dXJuICdGQUlMRUQnOwor
ICAgIH0gZmluYWxseSB7CisgICAgICAgIHJldHVybiA2OworICAgIH0KK30KKworYXN5bmMgZnVu
Y3Rpb24gZmluYWxseU1heUZhaWwoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQgZGVsZWdh
dGVkVGhyb3dlcigpOworICAgIH0gY2F0Y2ggKF8pIHsKKyAgICAgICAgcmV0dXJuIDU7CisgICAg
fSBmaW5hbGx5IHsKKyAgICAgICAgcmV0dXJuIGRlbGVnYXRlZFRocm93ZXIoKTsKKyAgICB9Cit9
CisKK2FzeW5jIGZ1bmN0aW9uIGVtYmVkZGVkKCkgeworICAgIGFzeW5jIGZ1bmN0aW9uIGlubmVy
KCkgeworICAgICAgICByZXR1cm4gNzsKKyAgICB9CisgICAgcmV0dXJuIGF3YWl0IGlubmVyKCk7
Cit9CisKKy8vIHJlY3Vyc2lvbiwgaXQgd29ya3MhCithc3luYyBmdW5jdGlvbiBmaWIobikgewor
ICAgIHJldHVybiAobiA9PSAwIHx8IG4gPT0gMSkgPyBuIDogYXdhaXQgZmliKG4gLSAxKSArIGF3
YWl0IGZpYihuIC0gMik7Cit9CisKKy8vIG11dHVhbCByZWN1cnNpb24KK2FzeW5jIGZ1bmN0aW9u
IGlzT2RkKG4pIHsKKyAgICBhc3luYyBmdW5jdGlvbiBpc0V2ZW4obikgeworICAgICAgICByZXR1
cm4gbiA9PT0gMCB8fCBhd2FpdCBpc09kZChuIC0gMSk7CisgICAgfQorICAgIHJldHVybiBuICE9
PSAwICYmIGF3YWl0IGlzRXZlbihuIC0gMSk7Cit9CisKKy8vIHJlY3Vyc2lvbiwgdGFrZSB0aHJl
ZSEKK3ZhciBoYXJkY29yZUZpYiA9IGFzeW5jIGZ1bmN0aW9uIGZpYjIobikgeworICAgIHJldHVy
biAobiA9PSAwIHx8IG4gPT0gMSkgPyBuIDogYXdhaXQgZmliMihuIC0gMSkgKyBhd2FpdCBmaWIy
KG4gLSAyKTsKK30KKwordmFyIGFzeW5jRXhwciA9IGFzeW5jIGZ1bmN0aW9uKCkgeworICAgIHJl
dHVybiAxMDsKK30KKwordmFyIG5hbWVkQXN5bmNFeHByID0gYXN5bmMgZnVuY3Rpb24gc2ltcGxl
KCkgeworICAgIHJldHVybiAxMTsKK30KKworYXN5bmMgZnVuY3Rpb24gZXhlY3V0aW9uT3JkZXIo
KSB7CisgICAgdmFyIHZhbHVlID0gMDsKKyAgICBhc3luYyBmdW5jdGlvbiBmaXJzdCgpIHsKKyAg
ICAgICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAwID8gMSA6IHZhbHVlKTsKKyAgICB9Cisg
ICAgYXN5bmMgZnVuY3Rpb24gc2Vjb25kKCkgeworICAgICAgICByZXR1cm4gKHZhbHVlID0gdmFs
dWUgPT09IDAgPyAyIDogdmFsdWUpOworICAgIH0KKyAgICBhc3luYyBmdW5jdGlvbiB0aGlyZCgp
IHsKKyAgICAgICAgcmV0dXJuICh2YWx1ZSA9IHZhbHVlID09PSAwID8gMyA6IHZhbHVlKTsKKyAg
ICB9CisgICAgcmV0dXJuIGF3YWl0IGZpcnN0KCkgKyBhd2FpdCBzZWNvbmQoKSArIGF3YWl0IHRo
aXJkKCkgKyA2OworfQorCithc3luYyBmdW5jdGlvbiBtaXNjZWxsYW5lb3VzKCkgeworICAgIGlm
IChhcmd1bWVudHMubGVuZ3RoID09PSAzICYmCisgICAgICAgIGFyZ3VtZW50cy5jYWxsZWUubmFt
ZSA9PT0gIm1pc2NlbGxhbmVvdXMiKQorICAgICAgICByZXR1cm4gMTQ7Cit9CisKK2Z1bmN0aW9u
IHRocm93ZXIoKSB7CisgICAgdGhyb3cgMTU7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIGRlZmF1bHRB
cmdzKGFyZyA9IHRocm93ZXIoKSkgeworfQorCisvLyBBc3luYyBmdW5jdGlvbnMgYXJlIG5vdCBj
b25zdHJ1Y3RpYmxlCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgYXN5bmMgZnVuY3Rpb24gUGVy
c29uKCkgeworICAgIH0KKyAgICBuZXcgUGVyc29uKCk7Cit9LCBUeXBlRXJyb3IpOworCitzaG91
bGRCZUFzeW5jKHVuZGVmaW5lZCwgZW1wdHkpOworc2hvdWxkQmVBc3luYygxLCBzaW1wbGVSZXR1
cm4pOworc2hvdWxkQmVBc3luYygyLCBzaW1wbGVBd2FpdCk7CitzaG91bGRCZUFzeW5jKDMsIHNp
bXBsZUF3YWl0QXN5bmMpOworc2hvdWxkQmVBc3luYyg0LCByZXR1cm5PdGhlckFzeW5jKTsKK3No
b3VsZFRocm93QXN5bmMoc2ltcGxlVGhyb3dlciwgRXJyb3IpOworc2hvdWxkQmVBc3luYyg1LCB0
cnlDYXRjaCk7CitzaG91bGRCZUFzeW5jKDYsIHdlbGxGaW5hbGx5KTsKK3Nob3VsZFRocm93QXN5
bmMoZmluYWxseU1heUZhaWwsIEVycm9yKTsKK3Nob3VsZEJlQXN5bmMoNywgZW1iZWRkZWQpOwor
c2hvdWxkQmVBc3luYyg4LCAoKSA9PiBmaWIoNikpOworc2hvdWxkQmVBc3luYyg5LCBleGVjdXRp
b25PcmRlcik7CitzaG91bGRCZUFzeW5jKDEwLCBhc3luY0V4cHIpOworc2hvdWxkQmVBc3luYygx
MSwgbmFtZWRBc3luY0V4cHIpOworc2hvdWxkQmVBc3luYygxMiwgKCkgPT4gaXNPZGQoMTIpLnRo
ZW4odiA9PiB2ID8gIm9vcHMiIDogMTIpKTsKK3Nob3VsZEJlQXN5bmMoMTMsICgpID0+IGhhcmRj
b3JlRmliKDcpKTsKK3Nob3VsZEJlQXN5bmMoMTQsICgpID0+IG1pc2NlbGxhbmVvdXMoMSwgMiwg
MykpOworc2hvdWxkQmVBc3luYygxNSwgKCkgPT4gZGVmYXVsdEFyZ3MoKS5jYXRjaChlID0+IGUp
KTsKKworfSkoKTsKKworLy8gbWV0aG9kcy5qcworKGZ1bmN0aW9uIG1vek1ldGhvZHMoKSB7CisK
K2NsYXNzIFggeworICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICB0aGlzLnZhbHVlID0gNDI7
CisgICAgfQorICAgIGFzeW5jIGdldFZhbHVlKCkgeworICAgICAgICByZXR1cm4gdGhpcy52YWx1
ZTsKKyAgICB9CisgICAgc2V0VmFsdWUodmFsdWUpIHsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHZh
bHVlOworICAgIH0KKyAgICBhc3luYyBpbmNyZW1lbnQoKSB7CisgICAgICAgIHZhciB2YWx1ZSA9
IGF3YWl0IHRoaXMuZ2V0VmFsdWUoKTsKKyAgICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSArIDEp
OworICAgICAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpOworICAgIH0KKyAgICBhc3luYyBnZXRC
YXNlQ2xhc3NOYW1lKCkgeworICAgICAgICByZXR1cm4gJ1gnOworICAgIH0KKyAgICBzdGF0aWMg
YXN5bmMgZ2V0U3RhdGljVmFsdWUoKSB7CisgICAgICAgIHJldHVybiA0NDsKKyAgICB9Cit9CisK
K2NsYXNzIFkgZXh0ZW5kcyBYIHsKKyAgICBhc3luYyBnZXRCYXNlQ2xhc3NOYW1lKCkgeworICAg
ICAgICByZXR1cm4gc3VwZXIuZ2V0QmFzZUNsYXNzTmFtZSgpOworICAgIH0KK30KKwordmFyIG9i
akxpdGVyYWwgPSB7CisgICAgYXN5bmMgZ2V0KCkgeworICAgICAgICByZXR1cm4gNDU7CisgICAg
fSwKKyAgICBzb21lU3R1ZmY6IDUKK307CisKK3ZhciB4ID0gbmV3IFgoKTsKK3ZhciB5ID0gbmV3
IFkoKTsKKworc2hvdWxkQmVBc3luYyg0MiwgKCkgPT4geC5nZXRWYWx1ZSgpKTsKK3Nob3VsZEJl
QXN5bmMoNDMsICgpID0+IHguaW5jcmVtZW50KCkpOworc2hvdWxkQmVBc3luYyg0NCwgKCkgPT4g
WC5nZXRTdGF0aWNWYWx1ZSgpKTsKK3Nob3VsZEJlQXN5bmMoNDUsICgpID0+IG9iakxpdGVyYWwu
Z2V0KCkpOworc2hvdWxkQmVBc3luYygnWCcsICgpID0+IHkuZ2V0QmFzZUNsYXNzTmFtZSgpKTsK
KworfSkoKTsKKworKGZ1bmN0aW9uIG1vekZ1bmN0aW9uTmFtZUluZmVycmVuY2UoKSB7CisKK2Fz
eW5jIGZ1bmN0aW9uIHRlc3QoKSB7IH0KKwordmFyIGFub24gPSBhc3luYyBmdW5jdGlvbigpIHsg
fQorCitzaG91bGRCZSgidGVzdCIsIHRlc3QubmFtZSk7CitzaG91bGRCZSgiYW5vbiIsIGFub24u
bmFtZSk7CisKK30pKCk7CisKKyhmdW5jdGlvbiBtb3pTeW50YXhFcnJvcnMoKSB7CisKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIid1c2Ugc3RyaWN0JzsgYXN5bmMgZnVuY3Rpb24gZXZhbCgpIHt9
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIndXNlIHN0cmljdCc7IGFzeW5jIGZ1bmN0aW9u
IGFyZ3VtZW50cygpIHt9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlv
biBhKGsgPSBzdXBlci5wcm9wKSB7IH0iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGEoKSB7IHN1cGVyLnByb3AoKTsgfSIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiYXN5bmMgZnVuY3Rpb24gYSgpIHsgc3VwZXIoKTsgfSIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiYXN5bmMgZnVuY3Rpb24gYShrID0gYXdhaXQgMykge30iKTsKKworfSkoKTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1h
d2FpdC1yZXNlcnZlZC13b3JkLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2
ZWQtd29yZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGUxZDMzMjFjN2Y4MDA4N2JlZGYwZjE1NzIxYjI5NWI4
MWVlZmIzCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtcmVz
ZXJ2ZWQtd29yZC5qcwpAQCAtMCwwICsxLDE2NiBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVO
QUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0
aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gYXNzZXJ0KGNvbmQsIG1zZyA9ICIiKSB7CisgICAg
aWYgKCFjb25kKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKK30KK25vSW5saW5lKGFz
c2VydCk7CisKK2Z1bmN0aW9uIHNob3VsZFRocm93U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7
CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbChzdHIp
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJv
cikgeworICAgICAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAgICAgICAgaWYgKHR5cGVv
ZiBtZXNzYWdlID09PSAic3RyaW5nIikKKyAgICAgICAgICAgICAgICBhc3NlcnQoZS5tZXNzYWdl
ID09PSBtZXNzYWdlLCAiRXhwZWN0ZWQgJyIgKyBtZXNzYWdlICsgIicgYnV0IHRocmV3ICciICsg
ZS5tZXNzYWdlICsgIiciKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoaGFkRXJyb3Is
ICJEaWQgbm90IHRocm93IHN5bnRheCBlcnJvciIpOworfQorbm9JbmxpbmUoc2hvdWxkVGhyb3dT
eW50YXhFcnJvcik7CisKK3ZhciBBc3luY0Z1bmN0aW9uID0gKGFzeW5jIGZ1bmN0aW9uKCkge30p
LmNvbnN0cnVjdG9yOworCisvLyBBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbgorc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIgYXdhaXQ7IH0pIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIFthd2FpdF0gPSBb
XTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkg
eyB2YXIgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIHtpc0FzeW5jOiBhd2Fp
dH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0
aW9uKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCBhd2FpdDsgfSkiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCBb
YXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
KGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IHthd2Fp
dH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5
bmMgZnVuY3Rpb24oKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQge2lz
QXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3QgYXdhaXQ7IH0pIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCBbYXdh
aXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFz
eW5jIGZ1bmN0aW9uKCkgeyBjb25zdCBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25zdCB7YXdh
aXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFz
eW5jIGZ1bmN0aW9uKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBjb25z
dCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0pIiwg
IkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGFzeW5j
IGZ1bmN0aW9uIGF3YWl0KCkge30gfSkiLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQg
J2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
Iihhc3luYyBmdW5jdGlvbihhd2FpdCkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFy
YW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCIoYXN5bmMgZnVuY3Rpb24gZihbYXdhaXRdKSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKFsuLi5hd2FpdF0pIHt9KSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoLi4uYXdhaXQpIHt9KSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYoe2F3YWl0
fSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24g
Zih7aXNBc3luYzogYXdhaXR9KSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0
ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNGdW5jdGlvbkRlY2xh
cmF0aW9uCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIg
YXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24g
ZigpIHsgdmFyIFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwor
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIHthd2FpdH0g
PSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24g
ZigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7
fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigp
IHsgbGV0IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
YXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
K3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCBbLi4uYXdh
aXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3lu
YyBmdW5jdGlvbiBmKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IHtpc0FzeW5jOiBh
d2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFz
eW5jIGZ1bmN0aW9uIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25z
dCBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGYoKSB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IFsuLi5hd2Fp
dF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHtpc0FzeW5j
OiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
ImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7
IGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAn
YXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
YXN5bmMgZnVuY3Rpb24gZigpIHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5v
dCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKGF3YWl0KSB7fSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZihbYXdhaXRdKSB7
fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZihbLi4u
YXdhaXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rp
b24gZiguLi5hd2FpdCkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5j
IGZ1bmN0aW9uIGYoe2F3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0
ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
ImFzeW5jIGZ1bmN0aW9uIGYoe2lzQXN5bmM6IGF3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5
bmNBcnJvd0Z1bmN0aW9uCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgp
ID0+IHsgdmFyIGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBm
ID0gYXN5bmMgKCkgPT4geyB2YXIgW2F3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIFsuLi5hd2FpdF0gPSBbXTsg
fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7
IHZhciB7YXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBmID0gYXN5bmMgKCkgPT4geyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IGYgPSBhc3luYyAoKSA9PiB7IGxldCBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQgW2F3YWl0XSA9IFtdOyB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAo
KSA9PiB7IGxldCBbLi4uYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IHthd2FpdH0gPSB7fTsgfSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkg
PT4geyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCB7aXNBc3luYzogYXdh
aXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
ZiA9IGFzeW5jICgpID0+IHsgY29uc3QgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3QgW2F3YWl0XSA9IFtd
OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3lu
YyAoKSA9PiB7IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCB7YXdhaXR9ID0g
e307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFz
eW5jICgpID0+IHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IHtp
c0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fu
bm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBhc3luYyBm
dW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3
YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZh
ciBmID0gYXN5bmMgKGF3YWl0KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFt
ZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIGYgPSBhc3luYyAoW2F3YWl0XSkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBmID0gYXN5bmMgKFsuLi5hd2FpdF0pID0+IHt9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICguLi5hd2FpdCkgPT4ge30iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKHthd2FpdH0pID0+IHt9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICh7aXNBc3lu
YzogYXdhaXR9KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYg
PSBhc3luYyBhd2FpdCA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworCisvLyBBc3luY01ldGhvZAorc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciBhd2FpdDsgfSB9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIgW2F3
YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7
IGFzeW5jIGYoKSB7IHZhciBbLi4uYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIHthd2FpdH0gPSB7fTsgfSB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2
YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0g
fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsg
bGV0IGF3YWl0OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCBbLi4u
YXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBPID0geyBhc3luYyBmKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IHtp
c0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNh
bCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307
IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBh
c3luYyBmKCkgeyBjb25zdCBhd2FpdDsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSB9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5j
IGYoKSB7IGNvbnN0IFsuLi5hd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IHthd2FpdH0gPSB7
fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7
IGFzeW5jIGYoKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0
IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSIs
ICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGFz
eW5jIGZ1bmN0aW9uIGF3YWl0KCkge30gfSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5h
bWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgTyA9IHsgYXN5bmMgZihhd2FpdCkge30gfSAiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKFthd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZihbLi4uYXdhaXRdKSB7fSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoLi4uYXdhaXQp
IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZih7
YXdhaXR9KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFz
eW5jIGYoe2lzQXN5bmM6IGF3YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJh
bWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKKworLy8gQXN5bmNGdW5jdGlvbiBj
b25zdHJ1Y3Rvcgorc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIGF3
YWl0OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3Zh
ciBbYXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNG
dW5jdGlvbigndmFyIFsuLi5hd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIge2F3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciB7aXNBc3luYzogYXdhaXR9ID0g
e307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFy
IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJBc3luY0Z1bmN0aW9uKCdsZXQgYXdhaXQ7JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQgW2F3YWl0XSA9IFtdOycpIiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignbGV0IFsuLi5h
d2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFz
eW5jRnVuY3Rpb24oJ2xldCB7YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9
OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlv
bignbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IGF3YWl0OycpIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3QgW2F3YWl0
XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNG
dW5jdGlvbignY29uc3QgWy4uLmF3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qge2F3YWl0fSA9IHt9OycpIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29u
c3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9Oycp
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbign
ZnVuY3Rpb24gYXdhaXQoKSB7fScpIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdh
d2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJB
c3luY0Z1bmN0aW9uKCdhc3luYyBmdW5jdGlvbiBhd2FpdCgpIHt9JykiLCAiQ2Fubm90IGRlY2xh
cmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2F3YWl0JywgJycpIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdbYXdhaXRdJywgJycpIiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdbLi4uYXdhaXRdJywg
JycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCcuLi5h
d2FpdCcsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlv
bigne2F3YWl0fScsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNG
dW5jdGlvbigne2lzQXN5bmM6IGF3YWl0fScsICcnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293097</attachid>
            <date>2016-10-27 18:48:51 -0700</date>
            <delta_ts>2016-10-28 10:09:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163760-20161027214501.patch</filename>
            <type>text/plain</type>
            <size>188572</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OGU4YzNhNzU4MjQyMWFiNzhiYjJlYmQyNTkzZDk5MjA1NTEyMzVlLi42Zjk3NGU1MTg3NTQ1OGRh
ZjRjYTRlZWZmODE4NDhiNDFlMjI2ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjEgQEAKKzIwMTYtMTAtMjAgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNv
bT4KKworICAgICAgICBbSlNDXSBpbXBsZW1lbnQgcnVudGltZSBmb3IgYXN5bmMgZnVuY3Rpb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM3NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBc3luYyBm
dW5jdGlvbnMgZ2VuZXJhdGUgYnl0ZWNvZGUgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nLCB3
aGljaCBpcworICAgICAgICBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBHZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb246CisgICAgICAgIAorICAgICAgICBgYGAKKyAgICAgICAgLy8gQmVmb3JlIHRyYW5z
bGF0aW9uOgorICAgICAgICBhc3luYyBmdW5jdGlvbiBhc3luY2ZuKCkge30KKworICAgICAgICAv
LyBBZnRlciB0cmFuc2xhdGlvbjoKKyAgICAgICAgZnVuY3Rpb24gYXN5bmNmbigpIHsKKyAgICAg
ICAgICAgIGxldCBnZW5lcmF0b3IgPSB7CisgICAgICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lU3RhdGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gQm9keSBvZiBhc3luYyBmdW5jdGlvbgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgQGdlbmVyYXRvclN0YXRlOiAwLAorICAgICAgICAgICAgICAgIEBnZW5l
cmF0b3JUaGlzOiB0aGlzLAorICAgICAgICAgICAgICAgIEBnZW5lcmF0b3JGcmFtZVN0YXRlOiA8
ZnJhbWUgc3RhdGU+LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldHVybiBAYXN5bmNG
dW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHVuZGVmaW5lZCwgR2VuZXJhdG9yUmVzdW1lTW9kZTo6
Tm9ybWFsTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgYGBgCisKKyAgICAgICAgQXdhaXQgRXhw
cmVzc2lvbnMgYXJlIGVxdWl2YWxlbnQgdG8gbm9uLWRlbGVnYXRpbmcgWWllbGQgZXhwcmVzc2lv
bnMsIGFuZCBlbWl0IGlkZW50aWNhbCBieXRlY29kZS4KKworICAgICAgICBUaGVyZSBhcmUgc29t
ZSBjYXZlYXRzIHRvIGJlIGFkZHJlc3NlZCBsYXRlcjoKKyAgICAgICAgCisgICAgICAgIDEpIHRo
ZSBgb3BfdG9fdGhpc2AgaXMgYWx3YXlzIHBlcmZvcm1lZCwgd2hldGhlciBpdCdzIHVzZWQgb3Ig
bm90LCBsaWtlIG5vcm1hbCBnZW5lcmF0b3JzLgorICAgICAgICAKKyAgICAgICAgMikgZm9yIGFz
eW5jIGFycm93IGZ1bmN0aW9ucywgdGhlIGhvbWUgb2JqZWN0IGlzIGFsd2F5cyBzdG9yZWQgb24g
dGhlICJib2R5IiBmdW5jdGlvbiwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0J3MgbmVlZGVkIG9y
CisgICAgICAgIG5vdCwgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyAjMS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWls
dGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzeW5jRnVu
Y3Rpb25SZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQXJyb3dG
dW5jdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE5l
d0Z1bmNDb21tb24pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1bmMp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXROZXdGdW5jRXhwckNvbW1vbik6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHApOgorICAgICAgICAqIGppdC9KSVRP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzeW5jRnVuY3Rpb25Tb3VyY2VF
bGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
SW5mbyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6
c2V0U291cmNlUGFyc2VNb2RlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyTW9kZXMuaDoKKyAg
ICAgICAgKEpTQzo6aXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKToKKyAg
ICAgICAgKEpTQzo6aXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKToK
KyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OkFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKToK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKToKKyAgICAg
ICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YSk6CisgICAgICAg
IChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAg
ICAgICogcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpB
c3luY0Z1bmN0aW9uUHJvdG90eXBlOjpBc3luY0Z1bmN0aW9uUHJvdG90eXBlKToKKyAgICAgICAg
KEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QXN5bmNGdW5j
dGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBw
aW5nRXZhbEVuYWJsZWRDaGVjayk6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVj
dG9yLmg6CisgICAgICAgICogcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpKU0FzeW5jRnVuY3Rpb24pOgorICAgICAgICAo
SlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZUltcGwpOgorICAgICAgICAoSlNDOjpKU0FzeW5j
RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRl
V2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGlt
ZS9KU0FzeW5jRnVuY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlv
bjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpsYXp5QXN5bmNGdW5j
dGlvblN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0
aW9uUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rp
b25Qcm90b3R5cGVDb25jdXJyZW50bHkpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
YXN5bmNGdW5jdGlvblN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojph
c3luY0Z1bmN0aW9uU3RydWN0dXJlQ29uY3VycmVudGx5KToKKwogMjAxNi0xMC0yNyAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgSlNGdW5jdGlvbjo6cHV0KCkgc2hv
dWxkIG5vdCBhbGxvdyBjYWNoaW5nIG9mIGxhemlseSByZWlmaWVkIHByb3BlcnRpZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODE1NjBhMzZlMzhlYzk3YTQ2M2UzZTgx
YTRkY2U4ZjY2NzI4YzEwNS4uYzA5NTM0NmJiODYzOGI1OGViNjZiOGY3ZjFmMDYyMTM2NTdjOWNk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNjM4LDYgKzYzOCw4IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9BcnJheUNvbnZlbnRpb25z
LmNwcAogICAgIHJ1bnRpbWUvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAorICAgIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcAorICAgIHJ1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1l
L0Jhc2ljQmxvY2tMb2NhdGlvbi5jcHAKICAgICBydW50aW1lL0Jvb2xlYW5Db25zdHJ1Y3Rvci5j
cHAKICAgICBydW50aW1lL0Jvb2xlYW5PYmplY3QuY3BwCkBAIC03MTQsNiArNzE2LDcgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvci5jcHAKICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKKyAgICBydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5j
cHAKICAgICBydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKICAgICBydW50aW1lL0pTQ0pTVmFs
dWUuY3BwCiAgICAgcnVudGltZS9KU0NhbGxlZS5jcHAKQEAgLTEyOTgsNiArMTMwMSw3IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9CVUlMVElOU19TT1VSQ0VTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2J1aWx0aW5zL0FycmF5Q29uc3RydWN0b3IuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcworICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9idWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J1aWx0aW5zL0RhdGVQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvRnVuY3Rpb25Qcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDRjNTk3MzY2ODAxZmZlYzZhZTE1YjJhMjM1NzZl
ZmYxZjVjNzc1YmMuLjM0MzIwNWY0MzMzODQzNjA4NDIwMmMzOTg0NjU1OWViNWQ1ZmJhMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC04OSw2ICs4OSw3
IEBAIEphdmFTY3JpcHRDb3JlX0JVSUxUSU5TX1NPVVJDRVMgPSBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvQXJyYXlDb25zdHJ1Y3Rvci5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvYnVpbHRpbnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0
Q29yZSkvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMgXAorICAgICQoSmF2YVNjcmlwdENvcmUp
L2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENv
cmUpL2J1aWx0aW5zL0RhdGVQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1
aWx0aW5zL0Z1bmN0aW9uUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWls
dGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBlNWQxZTMxNWU2MGYzZGY1ZmI0NTRkZDVjMzIwODI0OTRkODUyNjg1Li4wY2FlYTIzMTVm
NTg4ZjM0M2EwZjEzZGYzZWVkZTU4MjI1NzMxNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTI0NCw2ICsxMjQ0LDEyIEBACiAJCTUzRkQwNEQzMUQ3QUIyNzcwMDMyODdEMyAv
KiBXYXNtQ2FsbGluZ0NvbnZlbnRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTNGRDA0RDExRDdBQjE4NzAwMzI4N0QzIC8qIFdhc21DYWxsaW5n
Q29udmVudGlvbi5jcHAgKi87IH07CiAJCTUzRkQwNEQ0MUQ3QUIyOTEwMDMyODdEMyAvKiBXYXNt
Q2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzRkQwNEQyMUQ3QUIxODcwMDMyODdEMyAvKiBXYXNtQ2FsbGluZ0NvbnZlbnRp
b24uaCAqLzsgfTsKIAkJNUM0RThFOTYxREJFQkU2MjAwMzZGMUZDIC8qIEpTT05QYXJzZVRlc3Qu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0RThF
OTQxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05QYXJzZVRlc3QuY3BwICovOyB9OworCQk1QjcwQ0ZE
RTFEQjY5RTY2MDBFQzIzRjkgLyogSlNBc3luY0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEODFEQjY5RTVDMDBFQzIzRjkgLyog
SlNBc3luY0Z1bmN0aW9uLmggKi87IH07CisJCTVCNzBDRkRGMURCNjlFNjYwMEVDMjNGOSAvKiBK
U0FzeW5jRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUI3MENGRDkxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAg
Ki87IH07CisJCTVCNzBDRkUwMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Qjcw
Q0ZEQTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oICovOyB9Owor
CQk1QjcwQ0ZFMTFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZEQjFE
QjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CisJCTVC
NzBDRkUyMURCNjlFNjYwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNzBDRkRDMURCNjlF
NUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgfTsKKwkJNUI3MENG
RTMxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjcwQ0ZERDFEQjY5RTVD
MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNUQ1RDhB
RDEwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyog
bGliZWRpdC5keWxpYiAqLzsgfTsKIAkJNURCQjE1MUIxMzFEMEIzMTAwNTZBRDM2IC8qIHRlc3Rh
cGkuanMgaW4gQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLzsgfTsKIAkJ
NURCQjE1MjUxMzFEMEJENzAwNTZBRDM2IC8qIG1pbmlkb20uanMgaW4gQ29weSBTdXBwb3J0IFNj
cmlwdCAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDEyMTEwRDBBNDg3ODg3
MDA0ODAyNTUgLyogbWluaWRvbS5qcyAqLzsgfTsKQEAgLTM1NTQsNiArMzU2MCwxMyBAQAogCQk1
M0ZEMDREMjFEN0FCMTg3MDAzMjg3RDMgLyogV2FzbUNhbGxpbmdDb252ZW50aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21DYWxsaW5nQ29udmVudGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzRFOEU5NDFEQkVCREEyMDAzNkYxRkMgLyogSlNP
TlBhcnNlVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU09O
UGFyc2VUZXN0LmNwcDsgcGF0aCA9IEFQSS90ZXN0cy9KU09OUGFyc2VUZXN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0RThFOTUxREJFQkRBMjAwMzZGMUZDIC8qIEpTT05Q
YXJzZVRlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNPTlBhcnNlVGVz
dC5oOyBwYXRoID0gQVBJL3Rlc3RzL0pTT05QYXJzZVRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FzeW5jRnVuY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUI3MENGRDkxREI2OUU1QzAwRUMyM0Y5IC8qIEpT
QXN5bmNGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0FzeW5jRnVuY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZE
QTFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNzBDRkRCMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QjcwQ0ZEQzFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjcwQ0ZERDFEQjY5RTVDMDBFQzIz
RjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVCODI0MzA0MURCN0FBNDkwMEVBNjM4NCAvKiBBc3luY0Z1bmN0
aW9uUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGli
IjsgbmFtZSA9IGxpYmVkaXQuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJlZGl0LmR5bGliOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQk1REFGRDZDQjE0NkI2ODYzMDBGQkVGQjQg
LyogSlNDLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEpTQy54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUREREY0NDYxNEZFRTcyMjAwQjRGQjREIC8qIExMSW50RGVzaXJl
ZE9mZnNldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnREZXNpcmVk
T2Zmc2V0cy5oOyBwYXRoID0gTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTU5MjQsNiArNTkzNywxMCBAQAog
CQkJCUY2OTJBODREMDI1NTU5N0QwMUZGNjBGNyAvKiBBcnJheVByb3RvdHlwZS5jcHAgKi8sCiAJ
CQkJRjY5MkE4NEUwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmggKi8sCiAJCQkJ
MEZCN0YzOEExNUVEOEUzODAwRjE2N0IyIC8qIEFycmF5U3RvcmFnZS5oICovLAorCQkJCTVCNzBD
RkREMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAor
CQkJCTVCNzBDRkRDMURCNjlFNUMwMEVDMjNGOSAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3Iu
aCAqLywKKwkJCQk1QjcwQ0ZEQjFEQjY5RTVDMDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5jcHAgKi8sCisJCQkJNUI3MENGREExREI2OUU1QzAwRUMyM0Y5IC8qIEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUuaCAqLywKIAkJCQkwRjM4RDJBMDFENDQxOTY2MDA2ODA0OTkgLyogQXV4aWxp
YXJ5QmFycmllci5oICovLAogCQkJCTBGMzhEMkExMUQ0NDE5NjYwMDY4MDQ5OSAvKiBBdXhpbGlh
cnlCYXJyaWVySW5saW5lcy5oICovLAogCQkJCTUyNjc4RjhDMUEwMzEwMDkwMDZBMzA2RCAvKiBC
YXNpY0Jsb2NrTG9jYXRpb24uY3BwICovLApAQCAtNjEwOSw2ICs2MTI2LDggQEAKIAkJCQkwRjJC
NjZCQjE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXcuaCAqLywKIAkJCQkwRjJC
NjZCQzE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggKi8sCiAJ
CQkJNTM5RkI4QjkxQzk5REE3QzAwOTQwRkExIC8qIEpTQXJyYXlJbmxpbmVzLmggKi8sCisJCQkJ
NUI3MENGRDkxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5jcHAgKi8sCisJCQkJ
NUI3MENGRDgxREI2OUU1QzAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5oICovLAogCQkJCTg2
RkE5RThGMTQyQkJCMkQwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uY3BwICovLAogCQkJCTg2
RkE5RTkwMTQyQkJCMkUwMDE3NzNCNyAvKiBKU0JvdW5kRnVuY3Rpb24uaCAqLywKIAkJCQk2NTdD
RjQ1NjE5QkY2NjYyMDA0QUNCRjIgLyogSlNDYWxsZWUuY3BwICovLApAQCAtNzI5Nyw2ICs3MzE2
LDcgQEAKIAkJCQlBN0Q4MDFBMDE4ODBENjZFMDAyNkMzOUIgLyogQXJyYXlQcm90b3R5cGUuanMg
Ki8sCiAJCQkJN0NGOUJDNTgxQjY1RDlBMzAwOURCMUVGIC8qIEFycmF5Q29uc3RydWN0b3IuanMg
Ki8sCiAJCQkJN0NGOUJDNTkxQjY1RDlBMzAwOURCMUVGIC8qIEFycmF5SXRlcmF0b3JQcm90b3R5
cGUuanMgKi8sCisJCQkJNUI4MjQzMDQxREI3QUE0OTAwRUE2Mzg0IC8qIEFzeW5jRnVuY3Rpb25Q
cm90b3R5cGUuanMgKi8sCiAJCQkJREUyNkU5MDYxQ0I1REQ5NjAwRDJCRTgyIC8qIEJ1aWx0aW5F
eGVjdXRhYmxlQ3JlYXRvci5jcHAgKi8sCiAJCQkJREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgyIC8q
IEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oICovLAogCQkJCUE3RDgwMUExMTg4MEQ2NkUwMDI2
QzM5QiAvKiBCdWlsdGluRXhlY3V0YWJsZXMuY3BwICovLApAQCAtNzczNSw2ICs3NzU1LDcgQEAK
IAkJCQlEQzNEMkIwQTFEMzQzMTYyMDBCQTkxOEMgLyogSGVhcENlbGwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzNDQ0ZDMTlBREE0MTAwMDZBQzcyQSAvKiBERkdCbG9ja01hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZDM0NDRkQxOUFEQTQxMDAwNkFDNzJBIC8qIERGR0Jsb2NrTWFwSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUI3MENGRTIxREI2OUU2NjAwRUMyM0Y5IC8qIEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDM0NDRkUxOUFEQTQx
MDAwNkFDNzJBIC8qIERGR0Jsb2NrU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkJGMTU4RDE5
QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXRJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkMzQ0QwMDE5QURBNDEwMDA2QUM3MkEgLyogREZHQmxvY2tXb3JrbGlzdC5oIGluIEhlYWRl
cnMgKi8sCkBAIC04MzAzLDYgKzgzMjQsNyBAQAogCQkJCTdDMTg0RTFCMTdCRURCRDMwMDdDQjYz
QSAvKiBKU1Byb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMTg0RTIzMTdCRUUyNDAwMDdD
QjYzQSAvKiBKU1Byb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk2Qjcz
MUUxQkRBMDhFRjAwMzMxQjg0IC8qIEpTUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNUI3MENGREUxREI2OUU2NjAwRUMyM0Y5IC8qIEpTQXN5bmNGdW5jdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0MwMDhDREIxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlz
ZURlZmVycmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzE4NEUxRjE3QkVFMjJFMDA3Q0I2M0Eg
LyogSlNQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTZCNzMxRjFCREEw
OEVGMDAzMzFCODQgLyogSlNQcm9taXNlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCkBA
IC04NDQ0LDYgKzg0NjYsNyBAQAogCQkJCUJDMThDNDNGMEUxNkY1Q0QwMEIzNDQ2MCAvKiBOb2Rl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNDVBMjgxOEExQjI1OTAwMjZEODhGIC8qIE5vbmRl
dGVybWluaXN0aWNJbnB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDEwRTE2RjVDRDAw
QjM0NDYwIC8qIE51bWJlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QjcwQ0ZF
MDFEQjY5RTY2MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0NDIwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlckNvbnN0cnVjdG9yLmx1
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDMwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJl
ck9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0NDQwRTE2RjVDRDAwQjM0NDYwIC8q
IE51bWJlclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC05MzEwLDYgKzkzMzMsNyBAQAog
CQkJCUE1NTcxNEJGMUNEODA0QTQwMDA0RDJDNiAvKiBDb25zb2xlT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRUM4NTI1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BhdGNocG9pbnRTcGVj
aWFsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUM4NTI3MUJEQUNEQUMwMDgwRkY3NCAvKiBC
M1BhdGNocG9pbnRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QjcwQ0ZFMzFEQjY5RTY2
MDBFQzIzRjkgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRUM4NTI5MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1BoYXNlU2NvcGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFQzg1MkIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQzNDIyQTYyMUMxNThFNkEwMEUyRUI5OCAvKiBCM0NvbnN0Rmxv
YXRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk3MjMsNiArOTc0Nyw3IEBACiAJCQkJMEY1
NTEzQTgxRDVBNjhDRDAwQzMyQkQ4IC8qIEZyZWVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZFOTlCMjRBMUMyNEMzRDcwMEM4MjE1OSAvKiBKSVROZWdHZW5lcmF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZDQzg1QzQwRUU3QTg5NDAwMjg4NjgyIC8qIEpJVFByb3BlcnR5QWNjZXNz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCNzBDRkUxMURCNjlFNjYwMEVDMjNGOSAvKiBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3QzFFOEU0MTEyRTcy
RUYwMEEzN0Y5OCAvKiBKSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGQjQxNTg0MUQ3OEZCNEMwMERGOEQwOSAvKiBBcnJheUNvbnZlbnRpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNzY2RDI4MTVBOENDMUUwMDhGMzYzRSAvKiBKSVRTdHViUm91dGlu
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk4OTksNiArOTkyNCw3IEBACiAJCQkJMTQ4RjIxQjcx
MDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURDNjlBQTY2
MUNGN0ExRjIwMEM2MjcyRiAvKiBNYXRjaFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
Mzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTVCNzBDRkRGMURCNjlFNjYwMEVDMjNGOSAvKiBKU0FzeW5jRnVuY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjU1RUIyOUIxMENFMjU4MTAwMUE5OTBFIC8qIE5vZGVz
Q29kZWdlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NTQ2RjUyMTFBMzJCMzEzMDA2RjA3RDUg
LyogTnVsbEdldHRlckZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMjJFNUEyMURB
NjQ0MzkwMDZFNzcwOSAvKiBERkdET01KSVRQYXRjaHBvaW50UGFyYW1zLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjQ3ODgyYWZjOGIwZTNlMTRhY2ZkYzdj
N2ExMDcwNGFmMzEzNGMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKQEAgLTAsMCArMSw1MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4u
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIGFz
eW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCit7Cisg
ICAgInVzZSBzdHJpY3QiOworICAgIGxldCBzdGF0ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yU3Rh
dGU7CisgICAgbGV0IHZhbHVlID0gQHVuZGVmaW5lZDsKKworICAgIGlmIChzdGF0ZSA9PT0gQEdl
bmVyYXRvclN0YXRlQ29tcGxldGVkIHx8IChyZXN1bWVNb2RlICE9PSBAR2VuZXJhdG9yUmVzdW1l
TW9kZU5vcm1hbCAmJiByZXN1bWVNb2RlICE9PSBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KSkK
KyAgICAgICAgQHRocm93VHlwZUVycm9yKCJBc3luYyBmdW5jdGlvbiBpbGxlZ2FsbHkgcmVzdW1l
ZCIpOworCisgICAgdHJ5IHsKKyAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBH
ZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVy
YXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRl
LCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOworICAg
ICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhl
Y3V0aW5nKSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVy
YXRvclN0YXRlQ29tcGxldGVkOworICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZl
KHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGdlbmVy
YXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CisgICAgICAg
IHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KGVycm9yKTsKKyAgICB9CisKKyAgICByZXR1cm4gQFBy
b21pc2UuQHJlc29sdmUodmFsdWUpLkB0aGVuKAorICAgICAgICBmdW5jdGlvbih2YWx1ZSkgeyBy
ZXR1cm4gQGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCB2YWx1ZSwgQEdlbmVyYXRvclJl
c3VtZU1vZGVOb3JtYWwpOyB9LAorICAgICAgICBmdW5jdGlvbihlcnJvcikgeyByZXR1cm4gQGFz
eW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBlcnJvciwgQEdlbmVyYXRvclJlc3VtZU1vZGVU
aHJvdyk7IH0pOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uCmluZGV4IDU3NmRlNDAwNjA0ZDEwMTQ3NTFjYzYzYmVhY2VjNzdhNTVmZDRm
ZjcuLjg0YWUzYmRhMmYwMGI5MGQ4ZjFkMjMwZjYxYmFkMDkyOGM4MTEzMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTEwNSw2
ICsxMDUsOCBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Z1bmNfZXhwIiwgImxl
bmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmMiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5l
cmF0b3JfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX25ld19hc3luY19mdW5jIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9uZXdfYXN5bmNfZnVuY19leHAiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX3NldF9mdW5jdGlvbl9uYW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF90YWlsX2NhbGwiLCAibGVuZ3RoIiA6IDkgfSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggZDk3M2JjZmIx
MzdjMzJjMGM2ZGVlZGYzZGUwZTFkZDk0MTY1NGM2Zi4uMTYyZGIyODJjZDU1MzkwNTAxODU1NzEw
YzIxZWJiNDE3ZmE1MDVlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKQEAgLTE2NCw2ICsxNjQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3Ry
dWN0aQogICAgIGNhc2Ugb3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOgogICAgIGNhc2Ugb3BfbmV3
X2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDoKKyAgICBjYXNl
IG9wX25ld19hc3luY19mdW5jX2V4cDoKICAgICBjYXNlIG9wX3RvX2luZGV4X3N0cmluZzoKICAg
ICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIGNhc2Ugb3BfcmVzb2x2
ZV9zY29wZToKQEAgLTE5Niw2ICsxOTcsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aQogICAg
IGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKICAgICBjYXNlIG9wX25l
d19nZW5lcmF0b3JfZnVuYzoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jOgogICAgIGNhc2Ug
b3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRz
OgogICAgIGNhc2Ugb3BfY3JlYXRlX3Jlc3Q6CkBAIC0zODgsNiArMzkwLDggQEAgdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29k
ZUlELCBJbnN0cnVjdGkKICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDoKICAgICBjYXNlIG9wX25l
d19nZW5lcmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6Cisg
ICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuYzoKKyAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4
cDoKICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczoKICAgICBjYXNlIG9wX3RhaWxfY2FsbF92YXJh
cmdzOgogICAgIGNhc2Ugb3BfdGFpbF9jYWxsX2ZvcndhcmRfYXJndW1lbnRzOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA1Yjc0ODNjZmVmMzg3
OGMyNzJlMDA4Y2JkZWI3NTBkZTA2MjdmODE1Li5mNzk5OTkwYjFjMzc1ODYxMTljNDRmZGZlODFk
OGVhNzU1ZmM4NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcApAQCAtMTQ2NCw2ICsxNDY0LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNv
ZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuYzogeworICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAibmV3X2FzeW5jX2Z1bmMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVk
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25ld19mdW5j
X2V4cDogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE0ODAsNiArMTQ4OCwxNCBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRh
KCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
bmV3X2FzeW5jX2Z1bmNfZXhwOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfYXN5bmNfZnVuY19leHAiKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3NldF9mdW5jdGlvbl9uYW1lOiB7CiAgICAgICAgICAg
ICBpbnQgZnVuY1JlZyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IG5hbWVS
ZWcgPSAoKytpdCktPnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggMjVhMzU3YmY1NjExNjQ1MGMxYjBlMjU1
Yzk3NzBhMjNhZDNlMTllYy4uZTkxOGE5M2MyNGU2NzhkZTEyMmQ3NTUwMTE4MTkyZGI1NzdmMzE1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N0cmljdE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwo
KSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFy
cm93RnVuY3Rpb25Nb2RlOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpOyB9CiAgICAgRGVyaXZl
ZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PERlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAgICAgRXZh
bENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEV2YWxDb250ZXh0VHlwZT4obV9ldmFsQ29udGV4dFR5cGUpOyB9CiAgICAgYm9vbCBpc0Fycm93
RnVuY3Rpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCmluZGV4IGJhYzQwNTQxM2E2YjJmZGQ5OTcyNzJjMjhm
MGM3NGE3MjMwNmEzMzguLjZmNTU4Y2Y3YTk3NGM4NTMzM2JhODUyMzAwMjE4ZmUyMzEyMmUxNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBjb25zdHJ1
Y3RvcktpbmQoKSAhPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmU7IH0KICAgICBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50KiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuICZt
X3BhcmVudFNjb3BlVERaVmFyaWFibGVzOyB9CiAgICAgCi0gICAgYm9vbCBpc0Fycm93RnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlOyB9CisgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpOyB9CiAKICAgICBKU0M6OkRl
cml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7cmV0dXJuIHN0YXRp
Y19jYXN0PEpTQzo6RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAppbmRleCBmN2UxMDMxN2EyMTRjNjQ4MzkwYjk0YjE4YmNmZDczNzNk
NWNlMTdmLi5kMTQ5NTUxODYzNGY3ZTFhNjg3NzU1Yjg5YWJlNzRmNjM3OTU4MDZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSgpCiAgICAgfQogICAgIAogCi0gICAgaWYgKG1fY29kZUJsb2NrLT5wYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgIGlmIChp
c0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUobV9jb2RlQmxvY2stPnBhcnNl
TW9kZSgpKSkKICAgICAgICAgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihtX2NvZGVCbG9jay5n
ZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5nZXQoKSwg
bV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOwogCiAgICAgbV9jb2RlQmxvY2stPnNl
dEluc3RydWN0aW9ucyhzdGQ6Om1ha2VfdW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+
KG1faW5zdHJ1Y3Rpb25zKSk7CkBAIC0yNjgsMTUgKzI2OCwxNSBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwg
VW5saW5rZQogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRF
bWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0Fy
Z3VtZW50cyA9IChmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVz
ZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJs
b2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5j
dGlvbigpKSk7CiAKLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yQm9keU1vZGUpIHsKLSAgICAgICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1
bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBl
ciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCisgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3luY0Z1
bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBh
bmQgQXN5bmNGdW5jdGlvbiBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIg
cmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9u
IHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwogCi0gICAgICAgIC8vIEdl
bmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJs
ZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCisgICAgICAg
IC8vIEdlbmVyYXRvciBhbmQgQXN5bmNGdW5jdGlvbiB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2
ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5
cyBpbnN0YW50aWF0ZWQuCiAgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0
cnVlOwogICAgIH0KIAotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CisgICAgaWYgKGlz
R2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUpICYmIG5l
ZWRzQXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92aWRlICJh
cmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92aWRlcyAi
YXJndW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdl
bmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBpdC4KICAgICAgICAg
Ly8gVG8gd29ya2Fyb3VuZCBpdCwgd2UgZXZhbHVhdGUgdGhlc2UgYXJndW1lbnRzIGFzIGFyZ3Vt
ZW50cyBvZiBhIHdyYXBwaW5nIGdlbmVyYXRvciBmdW5jdGlvbiwgYW5kIHJlZmVyZW5jZSBpdCBm
cm9tIGEgZ2VuZXJhdG9yLgpAQCAtMzIwLDEzICszMjAsMTQgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2UKIAogICAgIGVtaXRFbnRlcigpOwogCi0gICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNG
dW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkKICAgICAgICAgbV9nZW5lcmF0b3JSZWdp
c3RlciA9ICZtX3BhcmFtZXRlcnNbMV07CiAKICAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwog
CiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1
bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUg
IT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSk7CisgICAgICAgIEFTU0VSVCgh
aXNBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKTsKICAgICAgICAgYm9vbCBp
c0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNl
c0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgICAgIGJvb2wgaXNGdW5j
dGlvbk5hbWVDYXB0dXJlZCA9IGNhcHR1cmVzKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKS5pbXBsKCkp
OwogICAgICAgICBib29sIG1hcmtBc0NhcHR1cmVkID0gaXNEeW5hbWljU2NvcGUgfHwgaXNGdW5j
dGlvbk5hbWVDYXB0dXJlZDsKQEAgLTUwNSw3ICs1MDYsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5s
aW5rZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBzaG91bGRDcmVh
dGVBcmd1bWVuc1ZhcmlhYmxlID0gIWhhdmVQYXJhbWV0ZXJOYW1lZEFyZ3VtZW50cyAmJiAhbV9j
b2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpOworICAgICAgICBib29sIHNob3VsZENyZWF0ZUFy
Z3VtZW5zVmFyaWFibGUgPSAhaGF2ZVBhcmFtZXRlck5hbWVkQXJndW1lbnRzCisgICAgICAgICAg
ICAmJiAhU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMobV9j
b2RlQmxvY2stPnBhcnNlTW9kZSgpKTsKICAgICAgICAgc2hvdWxkQ3JlYXRlQXJndW1lbnRzVmFy
aWFibGVJblBhcmFtZXRlclNjb3BlID0gc2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJpYWJsZSAmJiAh
aXNTaW1wbGVQYXJhbWV0ZXJMaXN0OwogICAgICAgICAvLyBEbyBub3QgY3JlYXRlIGFyZ3VtZW50
cyB2YXJpYWJsZSBpbiBjYXNlIG9mIEFycm93IGZ1bmN0aW9uLiBWYWx1ZSB3aWxsIGJlIGxvYWRl
ZCBmcm9tIHBhcmVudCBzY29wZQogICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlQXJndW1lbnNWYXJp
YWJsZSAmJiAhc2hvdWxkQ3JlYXRlQXJndW1lbnRzVmFyaWFibGVJblBhcmFtZXRlclNjb3BlKSB7
CkBAIC01NDksNiArNTUxLDI5IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIAorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rp
b25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOiB7CisgICAgICAgIEFTU0VS
VCghaXNDb25zdHJ1Y3RvcigpKTsKKyAgICAgICAgQVNTRVJUKGNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSk7CisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSBh
ZGRWYXIoKTsKKworICAgICAgICBpZiAocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uTW9kZSkgeworICAgICAgICAgICAgLy8gRklYTUU6IEVtaXQgdG9fdGhp
cyBvbmx5IHdoZW4gQXN5bmNGdW5jdGlvbkJvZHkgdXNlcyBpdC4KKyAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1ODYKKyAgICAgICAgICAg
IG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygp
LnNpemUoKSk7CisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX3RvX3RoaXMpOworICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoJm1fdGhpc1JlZ2lzdGVyKSk7CisgICAgICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CisgICAgICAgIH0KKworICAgICAgICBlbWl0TmV3T2JqZWN0KG1fZ2VuZXJh
dG9yUmVnaXN0ZXIpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVk
IGNvcnJlY3RseSBiZWZvcmUgaGVyZS4KICAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdp
c3RlciwganNVbmRlZmluZWQoKSk7CkBAIC02MDgsNyArNjMzLDcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUs
IFVubGlua2UKIAogICAgIC8vIFdlIG5lZWQgbG9hZCB8c3VwZXJ8ICYgfHRoaXN8IGZvciBhcnJv
dyBmdW5jdGlvbiBiZWZvcmUgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1
cEZ1bmN0aW9uU2NvcGVTdGFjawogICAgIC8vIGlmIHdlIGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIg
ZXhwcmVzc2lvbi4gQmVjYXVzZSB8c3VwZXJ8ICYgfHRoaXN8IHZhbHVlcyBjYW4gYmUgdXNlZCB0
aGVyZQotICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlID09IHBhcnNl
TW9kZSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgaWYgKChTb3VyY2VQYXJzZU1v
ZGVTZXQoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgU291cmNlUGFyc2VNb2Rl
OjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKS5jb250YWlucyhwYXJzZU1vZGUpICYmICFpc1NpbXBs
ZVBhcmFtZXRlckxpc3QpIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJy
b3dGdW5jdGlvbkJvZHlNb2RlKSB7CiAgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlz
KCkgfHwgZnVuY3Rpb25Ob2RlLT51c2VzU3VwZXJQcm9wZXJ0eSgpKQogICAgICAgICAgICAgZW1p
dExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKIApAQCAtNjI3
LDEyICs2NTIsNDYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAvLyBBbGwgImFkZFZh
cigpInMgbmVlZHMgdG8gaGFwcGVuIGJlZm9yZSAiaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJW
YWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIiBpcyBjYWxsZWQKICAgICAvLyBiZWNh
dXNlIGEgZnVuY3Rpb24ncyBkZWZhdWx0IHBhcmFtZXRlciBFeHByZXNzaW9uTm9kZXMgd2lsbCB1
c2UgdGVtcG9yYXJ5IHJlZ2lzdGVycy4KICAgICBwdXNoVERaVmFyaWFibGVzKCpwYXJlbnRTY29w
ZVREWlZhcmlhYmxlcywgVERaQ2hlY2tPcHRpbWl6YXRpb246OkRvTm90T3B0aW1pemUsIFREWlJl
cXVpcmVtZW50OjpVbmRlclREWik7CisKKyAgICBUcnlEYXRhKiB0cnlGb3JtYWxQYXJhbWV0ZXJz
RGF0YSA9IG51bGxwdHI7CisgICAgaWYgKGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUo
cGFyc2VNb2RlKSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB7CisgICAgICAgIFJlZlB0cjxM
YWJlbD4gdHJ5Rm9ybWFsUGFyYW1ldGVyc1N0YXJ0ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0
KCkpOworICAgICAgICB0cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSA9IHB1c2hUcnkodHJ5Rm9ybWFs
UGFyYW1ldGVyc1N0YXJ0LmdldCgpKTsKKyAgICB9CisKICAgICBpbml0aWFsaXplRGVmYXVsdFBh
cmFtZXRlclZhbHVlc0FuZFNldHVwRnVuY3Rpb25TY29wZVN0YWNrKHBhcmFtZXRlcnMsIGlzU2lt
cGxlUGFyYW1ldGVyTGlzdCwgZnVuY3Rpb25Ob2RlLCBmdW5jdGlvblN5bWJvbFRhYmxlLCBzeW1i
b2xUYWJsZUNvbnN0YW50SW5kZXgsIGNhcHR1cmVzLCBzaG91bGRDcmVhdGVBcmd1bWVudHNWYXJp
YWJsZUluUGFyYW1ldGVyU2NvcGUpOwotICAgIAorCisgICAgaWYgKGlzQXN5bmNGdW5jdGlvbldy
YXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKSAmJiAhaXNTaW1wbGVQYXJhbWV0ZXJMaXN0KSB7Cisg
ICAgICAgIFJlZlB0cjxMYWJlbD4gZGlkTm90VGhyb3cgPSBuZXdMYWJlbCgpOworICAgICAgICBl
bWl0SnVtcChkaWROb3RUaHJvdy5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBl
eGNlcHRpb24gPSBuZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRo
cm93blZhbHVlID0gbmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxMYWJlbD4gY2F0Y2hI
ZXJlID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAgICAgICBwb3BUcnlBbmRFbWl0
Q2F0Y2godHJ5Rm9ybWFsUGFyYW1ldGVyc0RhdGEsIGV4Y2VwdGlvbi5nZXQoKSwgdGhyb3duVmFs
dWUuZ2V0KCksIGNhdGNoSGVyZS5nZXQoKSwgSGFuZGxlclR5cGU6OkNhdGNoKTsKKworICAgICAg
ICAvLyByZXR1cm4gQFByb21pc2UuQHJlamVjdCh0aHJvd25WYWx1ZSk7CisgICAgICAgIFZhcmlh
YmxlIHByb21pc2VWYXIgPSB2YXJpYWJsZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5Qcm9taXNlUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
Y29wZSA9IGVtaXRSZXNvbHZlU2NvcGUobmV3VGVtcG9yYXJ5KCksIHByb21pc2VWYXIpOworICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvbWlzZUNvbnN0cnVjdG9yID0gZW1pdEdldEZyb21T
Y29wZShuZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHByb21pc2VWYXIsIFJlc29sdmVNb2Rl
OjpUaHJvd0lmTm90Rm91bmQpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvbWlzZVJl
amVjdCA9IGVtaXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCBwcm9taXNlQ29uc3RydWN0b3IuZ2V0
KCksIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlamVjdFByaXZhdGVOYW1l
KCkpOworCisgICAgICAgIENhbGxBcmd1bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMSk7CisK
KyAgICAgICAgZW1pdE1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgcHJvbWlzZUNvbnN0cnVjdG9y
LmdldCgpKTsKKyAgICAgICAgZW1pdE1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKDApLCB0aHJv
d25WYWx1ZS5nZXQoKSk7CisKKyAgICAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZnVuY3Rpb25O
b2RlLT5maXJzdExpbmUoKSwgZnVuY3Rpb25Ob2RlLT5zdGFydE9mZnNldCgpLCBmdW5jdGlvbk5v
ZGUtPmxpbmVTdGFydE9mZnNldCgpKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVz
dWx0ID0gZW1pdENhbGwobmV3VGVtcG9yYXJ5KCksIHByb21pc2VSZWplY3QuZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgYXJncywgZGl2b3QsIGRpdm90LCBkaXZvdCwgRGVidWdnYWJsZUNhbGw6
Ok5vKTsKKyAgICAgICAgZW1pdFJldHVybihyZXN1bHQuZ2V0KCkpOworCisgICAgICAgIGVtaXRM
YWJlbChkaWROb3RUaHJvdy5nZXQoKSk7CisgICAgfQorCiAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2
ZSAgZGVmYXVsdCBwYXJhbWV0ZXIgZXhwcmVzc2lvbiwgdGhlbiBsb2FkaW5nIHx0aGlzfCBpbnNp
ZGUgYW4gYXJyb3cgZnVuY3Rpb24gbXVzdCBiZSBkb25lCiAgICAgLy8gYWZ0ZXIgaW5pdGlhbGl6
ZURlZmF1bHRQYXJhbWV0ZXJWYWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpIGJlY2F1
c2UgdGhhdCBmdW5jdGlvbiBzZXRzIHVwIHRoZQogICAgIC8vIFN5bWJvbFRhYmxlIHN0YWNrIGFu
ZCBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpIGNvbnN1
bHRzIHRoZSBTeW1ib2xUYWJsZSBzdGFjawotICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlID09IHBhcnNlTW9kZSAmJiBpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKKyAg
ICBpZiAoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMocGFy
c2VNb2RlKSAmJiBpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKICAgICAgICAgaWYgKGZ1bmN0aW9u
Tm9kZS0+dXNlc1RoaXMoKSB8fCBmdW5jdGlvbk5vZGUtPnVzZXNTdXBlclByb3BlcnR5KCkpCiAg
ICAgICAgICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCgpOwogICAgIApAQCAtNjQyLDcgKzcwMSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAg
ICAgCiAgICAgLy8gU2V0IHVwIHRoZSBsZXhpY2FsIGVudmlyb25tZW50IHNjb3BlIGFzIHRoZSBn
ZW5lcmF0b3IgZnJhbWUuIFdlIHN0b3JlIHRoZSBzYXZlZCBhbmQgcmVzdW1lZCBnZW5lcmF0b3Ig
cmVnaXN0ZXJzIGludG8gdGhpcyBzY29wZSB3aXRoIHRoZSBzeW1ib2wga2V5cy4KICAgICAvLyBT
aW5jZSB0aGV5IGFyZSBzeW1ib2wga2V5ZWQsIHRoZXNlIHZhcmlhYmxlcyBjYW5ub3QgYmUgcmVh
Y2hlZCBmcm9tIHRoZSB1c3VhbCBjb2RlLgotICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckJvZHlNb2RlID09IHBhcnNlTW9kZSkgeworICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNG
dW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkgewogICAgICAgICBBU1NFUlQobV9sZXhp
Y2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CiAgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZS5zZXQoKm1fdm0sIGZ1bmN0aW9uU3ltYm9sVGFibGUpOwogICAgICAgICBtX2dlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGVJbmRleCA9IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsKQEAgLTI2
NDQsNiArMjcwMywyMSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0U2V0dGVyQnlW
YWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydAogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChzZXR0ZXItPmluZGV4KCkpOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0R2VuZXJhdG9yRmllbGRzKFJlZ2lzdGVySUQqIG5leHRGdW5jdGlvbikKK3sKKyAg
ICAvLyBGSVhNRTogQ3VycmVudGx5LCB3ZSBqdXN0IGNyZWF0ZSBhbiBvYmplY3QgYW5kIHN0b3Jl
IGdlbmVyYXRvciByZWxhdGVkIGZpZWxkcyBhcyBpdHMgcHJvcGVydGllcyBmb3IgZWFzZS4KKyAg
ICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdpbGwgaW50cm9kdWNlIEpTR2VuZXJh
dG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3IgYW5kIHVzZSBpdHMgQysrIGZpZWxk
cyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGllcy4KKyAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1CisKKyAgICBlbWl0RGlyZWN0UHV0
QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yTmV4dFByaXZhdGVOYW1lKCksIG5leHRGdW5jdGlvbiwgUHJvcGVydHlOb2RlOjpL
bm93bkRpcmVjdCk7CisKKyAgICBlbWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVy
LCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1l
KCksICZtX3RoaXNSZWdpc3RlciwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisKKyAgICBl
bWl0RGlyZWN0UHV0QnlJZChtX2dlbmVyYXRvclJlZ2lzdGVyLCBwcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBlbWl0TG9hZChudWxscHRy
LCBqc051bWJlcigwKSksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgZW1pdERp
cmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVsbHB0ciwganNO
dWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKK30KKwogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxldGVCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAgICAgZW1pdE9wY29kZShv
cF9kZWxfYnlfaWQpOwpAQCAtMjk4Niw2ICszMDYwLDExIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdGdW5jdGlvbkV4cHJlc3Npb25Db21tb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5j
dGlvCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1v
ZGU6CiAgICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cDsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgor
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6CisgICAgICAgIG9wY29kZUlEID0g
b3BfbmV3X2FzeW5jX2Z1bmNfZXhwOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0zMDA0LDcgKzMwODMsNyBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiBkc3Qs
IEZ1bmNFeAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Fycm93RnVu
Y3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgQXJyb3dGdW5jRXhwck5vZGUqIGZ1bmMp
CiB7Ci0gICAgQVNTRVJUKGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgfHwgZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlKTsKKyAgICBBU1NF
UlQoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUs
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMoZnVuYy0+
bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkpKTsKICAgICBlbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9u
Q29tbW9uKGRzdCwgZnVuYy0+bWV0YWRhdGEoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KQEAgLTMw
MzgsNiArMzExNyw4IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVu
Y3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhCiAgICAgdW5zaWduZWQgaW5k
ZXggPSBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikp
OwogICAgIGlmIChmdW5jdGlvbi0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlKQogICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5l
cmF0b3JfZnVuYyk7CisgICAgZWxzZSBpZiAoZnVuY3Rpb24tPnBhcnNlTW9kZSgpID09IFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGUpCisgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3
X2FzeW5jX2Z1bmMpOwogICAgIGVsc2UKICAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZnVuYyk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggZDRjMWM4ZThlZWE4OGIxYzIwZjRhOTVlNDUzNjkyY2NkZTQ5YmZiZi4uN2MwMTcyOTE2MzUx
Y2ZhMGM0ZjM4NTM0Yjg2ZTRjZTVlZTcxYzYxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTc2LDcgKzU3
NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UHV0R2V0dGVyU2V0dGVy
KFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCB1bnNpZ25lZCBh
dHRyaWJ1dGVzLCBSZWdpc3RlcklEKiBnZXR0ZXIsIFJlZ2lzdGVySUQqIHNldHRlcik7CiAgICAg
ICAgIHZvaWQgZW1pdFB1dEdldHRlckJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCB1bnNpZ25lZCBwcm9wZXJ0eURlc2NyaXB0b3JPcHRpb25zLCBSZWdpc3RlcklE
KiBnZXR0ZXIpOwogICAgICAgICB2b2lkIGVtaXRQdXRTZXR0ZXJCeVZhbChSZWdpc3RlcklEKiBi
YXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgdW5zaWduZWQgcHJvcGVydHlEZXNjcmlwdG9yT3B0
aW9ucywgUmVnaXN0ZXJJRCogc2V0dGVyKTsKLSAgICAgICAgCisKKyAgICAgICAgLy8gSW5pdGlh
bGl6ZSBvYmplY3Qgd2l0aCBnZW5lcmF0b3IgZmllbGRzIChAZ2VuZXJhdG9yVGhpcywgQGdlbmVy
YXRvck5leHQsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvckZyYW1lKQorICAgICAgICB2b2lk
IGVtaXRQdXRHZW5lcmF0b3JGaWVsZHMoUmVnaXN0ZXJJRCogbmV4dEZ1bmN0aW9uKTsKKwogICAg
ICAgICBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb25Gb3JJZGVudGlmaWVyKGNvbnN0
IElkZW50aWZpZXImKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdENhbGwoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDYWxsSW5UYWlsUG9zaXRpb24oUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kLCBEZWJ1Z2dhYmxlQ2FsbCk7CkBAIC04
NDIsNyArODQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIERl
cml2ZWRDb250ZXh0VHlwZSBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5
cGU6Ok5vbmU7CiAKLSAgICAgICAgICAgIGlmIChtZXRhZGF0YS0+cGFyc2VNb2RlKCkgPT0gU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkgeworICAgICAgICAgICAgaWYgKFNvdXJj
ZVBhcnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpLmNvbnRhaW5zKG1ldGFkYXRhLT5wYXJz
ZU1vZGUoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29u
c3RydWN0b3JLaW5kOjpFeHRlbmRzIHx8IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQog
ICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4
dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAobV9jb2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkgfHwgaXNEZXJpdmVkQ2xhc3NDb250ZXh0
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKaW5kZXggZDM4N2NkZjgxNTAzODU0NDFhMzRlOTYzZDZiOGEyODBhZjAzMjQwMi4u
ZWYyYzVlNjAyNGU0MTU0NDQxNjJiZGZkNWZlZWVhODUwNTg0Y2ZiMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzQw
MiwyNSArMzQwMiw2NCBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICAgICAgZW1pdFB1dEhv
bWVPYmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21lT2JqZWN0LmdldCgpKTsKICAgICAg
ICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIHdlIGp1c3QgY3JlYXRlIGFuIG9i
amVjdCBhbmQgc3RvcmUgZ2VuZXJhdG9yIHJlbGF0ZWQgZmllbGRzIGFzIGl0cyBwcm9wZXJ0aWVz
IGZvciBlYXNlLgotICAgICAgICAvLyBCdXQgdG8gbWFrZSBpdCBlZmZpY2llbnQsIHdlIHdpbGwg
aW50cm9kdWNlIEpTR2VuZXJhdG9yIGNsYXNzLCBhZGQgb3Bjb2RlIG5ld19nZW5lcmF0b3IgYW5k
IHVzZSBpdHMgQysrIGZpZWxkcyBpbnN0ZWFkIG9mIHRoZXNlIHByaXZhdGUgcHJvcGVydGllcy4K
LSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0
NQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhuZXh0LmdldCgpKTsK
IAotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRv
clJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2Vu
ZXJhdG9yTmV4dFByaXZhdGVOYW1lKCksIG5leHQuZ2V0KCksIFByb3BlcnR5Tm9kZTo6S25vd25E
aXJlY3QpOworICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3RhcnRPZmZzZXQo
KSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwg
bGFzdExpbmUoKSwgc3RhcnRPZmZzZXQoKSwgbGluZVN0YXJ0T2Zmc2V0KCkpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZ2VuZXJhdG9yUmVnaXN0ZXIoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KIAotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQo
Z2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVGhpc1ByaXZhdGVOYW1lKCksIGdlbmVyYXRvci50aGlz
UmVnaXN0ZXIoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpB
c3luY01ldGhvZE1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5j
dGlvbk1vZGU6IHsKKyAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhp
cy0+c2luZ2xlU3RhdGVtZW50KCk7CisgICAgICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlz
RXhwclN0YXRlbWVudCgpKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1l
bnQgPSBzdGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7Cisg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOworICAg
ICAgICBBU1NFUlQoZXhwci0+aXNGdW5jRXhwck5vZGUoKSk7CisgICAgICAgIEZ1bmNFeHByTm9k
ZSogZnVuY0V4cHIgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKTsKIAotICAgICAg
ICBSZWdpc3RlcklEKiBpbml0aWFsU3RhdGUgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwg
anNOdW1iZXIoMCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2VuZXJh
dG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBpbml0aWFsU3RhdGUsIFByb3Bl
cnR5Tm9kZTo6S25vd25EaXJlY3QpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV4dCA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG5l
eHQuZ2V0KCksIGZ1bmNFeHByKTsKIAotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5
SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3Iu
ZW1pdExvYWQobnVsbHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsK
KyAgICAgICAgaWYgKGdlbmVyYXRvci5zdXBlckJpbmRpbmcoKSA9PSBTdXBlckJpbmRpbmc6Ok5l
ZWRlZCB8fCBnZW5lcmF0b3IucGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fy
cm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogRG9uJ3QgYWx3YXlzIGxv
YWQgaG9tZSBvYmplY3QgZm9yIGFzeW5jIGFycm93cworICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGhvbWVPYmplY3QgPSBlbWl0SG9tZU9iamVjdEZvckNhbGxlZShnZW5lcmF0b3IpOwor
ICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCBuZXh0LmdldCgpLCBob21l
T2JqZWN0LmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0R2Vu
ZXJhdG9yRmllbGRzKG5leHQuZ2V0KCkpOwogCiAgICAgICAgIEFTU0VSVChzdGFydE9mZnNldCgp
ID49IGxpbmVTdGFydE9mZnNldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
V2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGluZSgpLCBzdGFydE9mZnNldCgpLCBsaW5lU3RhcnRP
ZmZzZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5nZW5lcmF0
b3JSZWdpc3RlcigpKTsKKworICAgICAgICAvLyBsb2FkIEBhc3luY0Z1bmN0aW9uUmVzdW1lLCBh
bmQgY2FsbC4KKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN0YXJ0QXN5bmNGdW5jdGlvbiA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgYXV0byB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hc3luY0Z1
bmN0aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSk7CisKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IubW92
ZVRvRGVzdGluYXRpb25JZk5lZWRlZChzY29wZS5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOworICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21T
Y29wZShzdGFydEFzeW5jRnVuY3Rpb24uZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZO
b3RGb3VuZCk7CisKKyAgICAgICAgLy8gcmV0dXJuIEBhc3luY0Z1bmN0aW9uUmVzdW1lLkBjYWxs
KHRoaXMsIEBnZW5lcmF0b3IsIEB1bmRlZmluZWQsIEdlbmVyYXRvclJlc3VtZU1vZGU6Ok5vcm1h
bE1vZGUpCisgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDMp
OworICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50ID0gMDsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdE1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50Q291bnQrKyks
IGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc1VuZGVmaW5lZCgp
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1
bWVudENvdW50KyspLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOworICAgICAgICAvLyBK
U1RleHRQb3NpdGlvbihpbnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQgX2xpbmVTdGFydE9mZnNl
dCkKKyAgICAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RMaW5lKCksIHN0YXJ0T2Zmc2V0
KCksIGxpbmVTdGFydE9mZnNldCgpKTsKKworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVz
dWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICBnZW5lcmF0b3IuZW1pdENh
bGxJblRhaWxQb3NpdGlvbihyZXN1bHQuZ2V0KCksIHN0YXJ0QXN5bmNGdW5jdGlvbi5nZXQoKSwg
Tm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBkaXZvdCwgZGl2b3QsIGRpdm90LCBEZWJ1Z2dhYmxl
Q2FsbDo6Tm8pOworICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyZXN1bHQuZ2V0KCkpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNB
cnJvd0Z1bmN0aW9uQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVu
Y3Rpb25Cb2R5TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1v
ZGU6IHsKICAgICAgICAgUmVmUHRyPExhYmVsPiBnZW5lcmF0b3JCb2R5TGFiZWwgPSBnZW5lcmF0
b3IubmV3TGFiZWwoKTsKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4
IDU0MmE0NzEzZjUyZDVhOWZhOWM2M2U1NmUwMTZlMjIzMDVhOGFkZjYuLjQ5YjFhODZlZDE1YWY0
MWFmYWE5ZTdkMTNiODhhNWM0NDc3ODliZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
QEAgLTI5OSw2ICsyOTksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF9uZXdfZnVuY19leHApCiAgICAgICAgIERFRklORV9PUChvcF9u
ZXdfZ2VuZXJhdG9yX2Z1bmMpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Z1
bmNfZXhwKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FzeW5jX2Z1bmMpCisgICAgICAgIERF
RklORV9PUChvcF9uZXdfYXN5bmNfZnVuY19leHApCiAgICAgICAgIERFRklORV9PUChvcF9uZXdf
b2JqZWN0KQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X3JlZ2V4cCkKICAgICAgICAgREVGSU5F
X09QKG9wX25vdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDA1ZGUyOGNlMWVkNjcwYjUx
ZmViOGY1M2MzOWE0ZmY1NDQ5MjhlNGEuLjZkMjAyNDkzODdiMjkxYWJlYmRmYTlmYmI3NDdkYTgy
NzA1ZjZmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTQ0LDYgKzU0NCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Z1bmNfZXhwKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmMoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19hc3luY19mdW5jKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHAoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX25ld19vYmplY3QoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19yZWdleHAoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX25vdChJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKaW5kZXggYjkwMWJiNDYzMTA2MDAxMjBlMTFmODRlMWVjYTljYjYyNjc0OWI4ZC4u
OWY5OWFiYTljZjk5ZWNkMjlhMDI5ZDgxNDQyYmE4ZTJmZWVmNDA5MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC05NzEsOSArOTcxLDExIEBAIHZvaWQgSklU
OjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJl
bnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVu
YykKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdU
MCwgZnVuY0V4ZWMpOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3Bf
bmV3X2dlbmVyYXRvcl9mdW5jKTsKKyAgICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZ2Vu
ZXJhdG9yX2Z1bmMpCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNT
RVJUKG9wY29kZUlEID09IG9wX25ld19hc3luY19mdW5jKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jRXhlYyk7CiAgICAg
fQogfQogCkBAIC05ODcsNiArOTg5LDExIEBAIHZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0
b3JfZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXROZXdGdW5j
Q29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX25ld19h
c3luY19mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgZW1pdE5l
d0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKK30KKwogdm9pZCBKSVQ6OmVtaXROZXdG
dW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEp1
bXAgbm90VW5kZWZpbmVkU2NvcGU7CkBAIC0xMDA4LDkgKzEwMTUsMTEgQEAgdm9pZCBKSVQ6OmVt
aXROZXdGdW5jRXhwckNvbW1vbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAg
ICAgaWYgKG9wY29kZUlEID09IG9wX25ld19mdW5jX2V4cCkKICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24pOwotICAgIGVsc2Ug
ewotICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7
CisgICAgZWxzZSBpZiAob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgZHN0LCBy
ZWdUMCwgZnVuY3Rpb24pOworICAgIGVsc2UgeworICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0g
b3BfbmV3X2FzeW5jX2Z1bmNfZXhwKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdBc3luY0Z1bmN0aW9uLCBkc3QsIHJlZ1QwLCBmdW5jdGlvbik7CiAgICAgfQogCiAgICAgZG9u
ZS5saW5rKHRoaXMpOwpAQCAtMTAyNiw2ICsxMDM1LDExIEBAIHZvaWQgSklUOjplbWl0X29wX25l
d19nZW5lcmF0b3JfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7
Cit9CisKIHZvaWQgSklUOjplbWl0X29wX25ld19hcnJheShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewogICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXgg
MmMwNDVmOGVlMDNiMWViMTk2ZGE0ZDc1MjdmMjczOGYwZTQ5MzRjZC4uNzQ0ZTkwNTM3NDYxODQ0
NzM5OWIwNWJlYTIyNTkxOGY3ODJlNzdhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAj
aW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgogI2luY2x1ZGUgIkpJVFRvREZHRGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgpAQCAtMTE3OCw2ICsxMTc5LDE2IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb25X
aXRoSW52YWxpZGF0ZWRSZWFsbG9jCiAgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29t
bW9uPEpTR2VuZXJhdG9yRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUs
IHRydWUpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Fz
eW5jRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5j
dGlvbkV4ZWN1dGFibGUpCit7CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9u
PEpTQXN5bmNGdW5jdGlvbj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2Up
OworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVu
Y3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhl
YywgSlNTY29wZSogc2NvcGUsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJl
dHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jRnVuY3Rpb24+KGV4ZWMsIHNj
b3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBmdW5jQ2Vs
bCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE5hbWUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGFkZmVm
NzhjNmYwMGM1MDNkMDZmYmY4Njc2NTY4N2U3ZGMxNDNjMjQuLmRiNWJhODk2NWE3YTUwMWJhMzUy
N2FhNjU0ODg1ZTZjZjNkZDk1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCkBAIC0zNzUsNiArMzc1LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwq
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRv
ckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBK
U0NlbGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVu
Y29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3UmVnZXhwKEV4ZWNTdGF0ZSosIHZv
aWQqKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAppbmRleCA4NzU4MjUxZmE0YTFkNDlmOTEwMGJlYmVjMDg4NjViZDQxMmQ3
ZGY1Li5mNThmNGY5NjZlYTc3NDNiZmM0ZWM4MDdjMTFlZjNhYjRkZDQyOWJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTQxLDYgKzQx
LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCiAjaW5j
bHVkZSAiSklUV29ya2xpc3QuaCIKKyNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpT
R2VuZXJhdG9yRnVuY3Rpb24uaCIKQEAgLTExNDksNiArMTE1MCwxNyBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jKQogICAgIExMSU5UX1JFVFVSTihK
U0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBj
WzNdLnUub3BlcmFuZCksIHNjb3BlKSk7CiB9CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9uZXdfYXN5bmNfZnVuYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNTY29wZSogc2NvcGUgPSBl
eGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6OnNjb3BlKCk7CisjaWYg
TExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nRigiQ3JlYXRpbmcgYXN5bmMgZnVu
Y3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5UX1JFVFVSTihKU0FzeW5jRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbM10udS5vcGVyYW5kKSwgc2NvcGUp
KTsKK30KKwogTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKIHsK
ICAgICBMTElOVF9CRUdJTigpOwpAQCAtMTE3MSw2ICsxMTgzLDE3IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKQogICAgIExMSU5UX1JFVFVS
TihKU0dlbmVyYXRvckZ1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7CiB9
CiAKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXN5bmNfZnVuY19leHApCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihw
Y1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzNdLnUub3BlcmFuZCk7
CisgICAgCisgICAgTExJTlRfUkVUVVJOKEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVj
dXRhYmxlLCBzY29wZSkpOworfQorCiBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2V0
X2Z1bmN0aW9uX25hbWUpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKaW5kZXggOTg0ZTljYzQwMzAzMjc5YWE3MDJk
ZjhmZWI3ODhjM2I4Yjk2MDUwZS4uZDc2MTM4YzEyNDRmZjdhYWY0ODNkMDgwM2FkNWJiODExN2Vh
NzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgK
QEAgLTEwMyw2ICsxMDMsOCBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X25ld19mdW5jKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2Z1
bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVy
YXRvcl9mdW5jKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dl
bmVyYXRvcl9mdW5jX2V4cCk7CitMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X25ld19hc3luY19mdW5jKTsKK0xMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bmV3X2FzeW5jX2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfc2V0X2Z1bmN0aW9uX25hbWUpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jYWxsKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29uc3Ry
dWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQppbmRleCA1NjBkZjNlY2FiODJkYTgyYjI3ZjQ0MzYyNGQwZmRlOGU1MDFjZTll
Li42NDQ1YTQ3Y2VkYTlhNWNmNzU5YTE2ZTE3MmMzYmQ4NDZhYjlkYjdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0x
MzIxLDYgKzEzMjEsMTIgQEAgX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBkaXNw
YXRjaCg0KQogCiAKK19sbGludF9vcF9uZXdfYXN5bmNfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpCisg
ICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3BfbmV3X2FycmF5OgogICAgIHRyYWNlRXhlY3V0
aW9uKCkKICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyYXkp
CkBAIC0xNTk5LDYgKzE2MDUsMTIgQEAgX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnVuY19leHA6
CiAgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9m
dW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhw
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9uZXdfYXN5bmNfZnVuY19leHApCisgICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3Bfc2V0
X2Z1bmN0aW9uX25hbWU6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxPcGNvZGVTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGQ5MTAzN2NkMjNhYTRlYjE0NmQyZWNmM2U1NDE4
YjhhYzZjOWEwNWYuLmNlNmJmYTdhMWY4MzEyNDMyNjg5Y2E3YzVmMDM3NmE4N2JhMTA3YmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI2MSw3ICsyNjEsNyBA
QCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYg
Y2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4
cHJlc3Npb24gPSBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rp
b25Cb2R5TW9kZSAmJiAhbWF0Y2goT1BFTkJSQUNFKTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBh
cnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVy
PiBmdW5jdGlvbkluZm87Ci0gICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKSB8fCBpc0FzeW5j
RnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpCisgICAgICAgIGlmIChpc0dlbmVyYXRv
ck9yQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkKICAgICAgICAgICAgIG1f
cGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25J
bmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0
ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlv
bkluZm8pOwpAQCAtNTY4LDExICs1NjgsMTggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW4KICAg
ICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBhc3luY0Z1bmN0aW9uQm9keVNjb3BlKHRoaXMs
IHB1c2hTY29wZSgpKTsKICAgICAgICAgYXN5bmNGdW5jdGlvbkJvZHlTY29wZS0+c2V0U291cmNl
UGFyc2VNb2RlKGlubmVyUGFyc2VNb2RlKTsKLSAgICAgICAgU3ludGF4Q2hlY2tlciBhc3luY0Z1
bmN0aW9uQ29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOwotICAg
ICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCi0gICAgICAgICAgICBmYWls
SWZGYWxzZShwYXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1l
bnRzKGFzeW5jRnVuY3Rpb25Db250ZXh0KSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3lu
YyBhcnJvdyBmdW5jdGlvbiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmYWlsSWZGYWxz
ZShwYXJzZVNvdXJjZUVsZW1lbnRzKGFzeW5jRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5v
dCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBmdW5jdGlvbiIpOworICAgICAgICBTeW50YXhDaGVj
a2VyIHN5bnRheENoZWNrZXIoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsK
KyAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKSB7CisgICAgICAgICAg
ICBpZiAobV9kZWJ1Z2dlclBhcnNlRGF0YSkKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShw
YXJzZUFycm93RnVuY3Rpb25TaW5nbGVFeHByZXNzaW9uQm9keVNvdXJjZUVsZW1lbnRzKGNvbnRl
eHQpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGFzeW5jIGFycm93IGZ1bmN0aW9uIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VBcnJvd0Z1
bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhzeW50YXhDaGVja2VyKSwg
IkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBhcnJvdyBmdW5jdGlvbiIpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1fZGVidWdnZXJQYXJzZURhdGEpCisgICAgICAg
ICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBtb2RlKSwg
IkNhbm5vdCBwYXJzZSB0aGUgYm9keSBvZiBhc3luYyBmdW5jdGlvbiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHMoc3lu
dGF4Q2hlY2tlciwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgZnVuY3Rp
b24iKTsKKyAgICAgICAgfQogICAgICAgICBwb3BTY29wZShhc3luY0Z1bmN0aW9uQm9keVNjb3Bl
LCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKICAgICB9CiAgICAgaW5mby5i
b2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2Vu
TG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIHRva2VuQ29sdW1uKCksIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIENv
bnN0cnVjdG9yS2luZDo6Tm9uZSwgbV9zdXBlckJpbmRpbmcsIGluZm8ucGFyYW1ldGVyQ291bnQs
IGluZm8uZnVuY3Rpb25MZW5ndGgsIGlubmVyUGFyc2VNb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbik7CkBAIC0yMzQxLDcgKzIzNDgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWls
ZAogICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkJvZHkoY29udGV4dCwgc3ludGF4Q2hlY2tl
ciwgc3RhcnRMb2NhdGlvbiwgc3RhcnRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5j
dGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBjb25zdHJ1Y3RvcktpbmQsIGV4cGVjdGVk
U3VwZXJCaW5kaW5nLCBmdW5jdGlvbkJvZHlUeXBlLCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291
bnQsIGZ1bmN0aW9uSW5mby5mdW5jdGlvbkxlbmd0aCwgbW9kZSk7CiAgICAgfTsKIAotICAgIGlm
IChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSB8
fCBpc0FzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2RlKG1vZGUpKSB7CisgICAgaWYgKGlzR2Vu
ZXJhdG9yT3JBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShtb2RlKSkgewogICAgICAgICBB
dXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKICAg
ICAgICAgU291cmNlUGFyc2VNb2RlIGlubmVyUGFyc2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZTsKICAgICAgICAgaWYgKGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJz
ZU1vZGUobW9kZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDE1
YThmMTI0ZmMxZGY5NjVjNDY1YjA2MjU0NmMzOTQwY2U3Y2UyNGIuLjBjYTRhYjM2OTAxZmM3OWNk
ZjE4ZWM4NDA4MDg1OTljMzcyOGUwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaApAQCAtMjQ1LDcgKzI0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6Ci0gICAg
ICAgICAgICBzZXRJc0FzeW5jQXJyb3dGdW5jdGlvbkJvZHkoKTsKKyAgICAgICAgICAgIHNldElz
QXN5bmNGdW5jdGlvbkJvZHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZToKQEAgLTEwOTgsNyArMTA5OCw3IEBA
IHByaXZhdGU6CiAgICAgewogICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0YWNrLnNpemUo
KSAtIDE7CiAgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNpemUoKSAmJiBtX3Njb3Bl
U3RhY2suc2l6ZSgpKTsKLSAgICAgICAgd2hpbGUgKGkgJiYgKCFtX3Njb3BlU3RhY2tbaV0uaXNG
dW5jdGlvbkJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlzR2VuZXJhdG9yQm91bmRhcnko
KSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNBcnJvd0Z1bmN0aW9uQm91bmRhcnkoKSkpCisgICAgICAg
IHdoaWxlIChpICYmICghbV9zY29wZVN0YWNrW2ldLmlzRnVuY3Rpb25Cb3VuZGFyeSgpIHx8IG1f
c2NvcGVTdGFja1tpXS5pc0dlbmVyYXRvckJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlz
QXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlzQXJyb3dGdW5jdGlv
bkJvdW5kYXJ5KCkpKQogICAgICAgICAgICAgaS0tOwogICAgICAgICAvLyBXaGVuIHJlYWNoaW5n
IHRoZSB0b3AgbGV2ZWwgc2NvcGUgKGl0IGNhbiBiZSBub24gb3JkaW5hcnkgZnVuY3Rpb24gc2Nv
cGUpLCB3ZSByZXR1cm4gaXQuCiAgICAgICAgIHJldHVybiBTY29wZVJlZigmbV9zY29wZVN0YWNr
LCBpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9k
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCBh
MGQ3NDA0OTQxNWU0Yjg0NzM1NjJlMzZlNjIyMGQzMGNlNTFiYTZhLi42ZGE4ODM3YTM3OTQxNzJi
NGM1NTZiMzdkMjNmOTk3NmVlNmYwYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJNb2Rlcy5oCkBAIC0xNDgsNiArMTQ4LDMyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBp
c01ldGhvZFBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogICAgICAgICBTb3Vy
Y2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKIH0KIAor
QUxXQVlTX0lOTElORSBib29sIGlzR2VuZXJhdG9yT3JBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9k
ZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHJldHVybiBTb3VyY2VQYXJzZU1v
ZGVTZXQoCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUsCisgICAg
ICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlLAorICAgICAgICBTb3Vy
Y2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5jb250YWlucyhwYXJzZU1v
ZGUpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25X
cmFwcGVyUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCit7CisgICAgcmV0dXJu
IFNvdXJjZVBhcnNlTW9kZVNldCgKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JX
cmFwcGVyRnVuY3Rpb25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rp
b25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUs
CisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlKS5jb250YWlucyhwYXJz
ZU1vZGUpOworfQorCitBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFyc2VNb2Rl
KFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCit7CisgICAgcmV0dXJuIFNvdXJjZVBhcnNlTW9k
ZVNldCgKKyAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwKKyAgICAg
ICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICBTb3Vy
Y2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5jb250YWlucyhwYXJzZU1v
ZGUpOworfQorCisKIEFMV0FZU19JTkxJTkUgYm9vbCBpc01vZHVsZVBhcnNlTW9kZShTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKSAKIHsgCiAgICAgcmV0dXJuIFNvdXJjZVBhcnNlTW9kZVNldCgg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzY3YzU3YmYyZTY1ZmQ3ZWQwYjk1MmFk
MWJkMmIzOWIwZGE5YWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29t
Pi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIgor
I2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVD
VElCTEUoQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKTsKKworY29uc3QgQ2xhc3NJbmZvIEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXN5bmNGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQXN5bmNGdW5jdGlvbkNvbnN0cnVj
dG9yKSB9OworCitBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OkFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogSW50ZXJuYWxGdW5jdGlv
bih2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUp
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sICJBc3luY0Z1bmN0aW9uIik7CisgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgcHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CisKKyAgICAv
LyBOdW1iZXIgb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgorICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgQXJnTGlzdCBhcmdzKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3Ry
dWN0RnVuY3Rpb24oZXhlYywgYXNJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xv
YmFsT2JqZWN0KCksIGFyZ3MsIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKK30K
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBcmdMaXN0IGFyZ3MoZXhl
Yyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBh
c0ludGVybmFsRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywg
RnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYykpOworfQorCitDYWxsVHlwZSBBc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0
YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBjYWxsQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yOworICAgIHJldHVybiBDYWxsVHlwZTo6SG9zdDsKK30KKworQ29uc3RydWN0VHlw
ZSBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29u
c3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5m
dW5jdGlvbiA9IGNvbnN0cnVjdEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcjsKKyAgICByZXR1cm4g
Q29uc3RydWN0VHlwZTo6SG9zdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAzNWEyYzFlNGY5MTVjYWMwYjRiMTc3M2U2ZDA1ODllMjc0NzQ3ZDQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1
bmN0aW9uQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOworCitjbGFzcyBBc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAg
dHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAg
ICBzdGF0aWMgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I+
KHZtLmhlYXApKSBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAg
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgYXN5bmNGdW5jdGlvblByb3RvdHlw
ZSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKKyAgICB9CisKKyAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgQ29uc3RydWN0
VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0
aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjFmMGUxMDZlZTY3MTM2
ZTkyNzAxZDY4YzM5ZDk1YjJmYzQ4NjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdh
bGlhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUg
IkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdCdWlsZGVyLmgi
CisjaW5jbHVkZSAiTGV4ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5m
byBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJBc3luY0Z1bmN0aW9uIiwgJkJh
c2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShBc3luY0Z1bmN0aW9uUHJv
dG90eXBlKSB9OworCitBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpBc3luY0Z1bmN0aW9uUHJvdG90
eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBKU0M6OkpTTm9uRmluYWxP
YmplY3Qodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBBc3luY0Z1bmN0aW9uUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNTdHJpbmcoJnZt
LCAiQXN5bmNGdW5jdGlvbiIpLCBEb250RW51bSB8IFJlYWRPbmx5KTsKKyAgICB2bS5wcm90b3R5
cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMjAxZTZiOGZkNTg5OGEyMjFlMDYyYTc4ZjNlYTYwZGVhNzlhODIy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNG
dW5jdGlvblByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5jb20+LgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBBc3luY0Z1bmN0aW9uUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
cHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgREVDTEFS
RV9JTkZPOworCisgICAgc3RhdGljIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgQXN5bmNGdW5jdGlvblBy
b3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNGdW5j
dGlvblByb3RvdHlwZT4odm0uaGVhcCkpIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICBy
ZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJv
dG8pCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisK
K3ByaXZhdGU6CisgICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IGQyZjMzNTJkNjA2OGIxMTlm
ZTA0OTMxMGM5Mzg4NjdmMjc5OGI1MTIuLjBhMWEzNGM2NmNhMmRlM2FlYWMwYTg0ZTE1YTUxMDEx
YTljYWIyMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJFeGNl
cHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJKU0FzeW5jRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC05
MywxOCArOTQsMzMgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5h
YmxlZENoZWNrKAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCisgICAgY29uc3QgY2hhciogcHJlZml4ID0gbnVsbHB0
cjsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG51bGxwdHI7CisgICAgc3dpdGNoIChmdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGUpIHsKKyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9k
ZTo6RnVuY3Rpb246CisgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25T
dHJ1Y3R1cmUoKTsKKyAgICAgICAgcHJlZml4ID0gIntmdW5jdGlvbiAiOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yOgorICAgICAg
ICBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCk7
CisgICAgICAgIHByZWZpeCA9ICJ7ZnVuY3Rpb24gKiI7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYzoKKyAgICAgICAgc3RydWN0dXJlID0g
Z2xvYmFsT2JqZWN0LT5hc3luY0Z1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIHByZWZpeCA9
ICJ7YXN5bmMgZnVuY3Rpb24gIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgLy8gSG93
IHdlIHN0cmluZ2lmeSBmdW5jdGlvbnMgaXMgc29tZXRpbWVzIGltcG9ydGFudCBmb3Igd2ViIGNv
bXBhdGliaWxpdHkuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNDM1MC4KICAgICBTdHJpbmcgcHJvZ3JhbTsKICAgICBpZiAoYXJncy5pc0VtcHR5
KCkpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7ZnVuY3Rpb24gIiwgZnVuY3Rpb25D
b25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yID8g
IioiIDogIiIsIGZ1bmN0aW9uTmFtZS5zdHJpbmcoKSwgIigpIHtcblxufX0iKTsKKyAgICAgICAg
cHJvZ3JhbSA9IG1ha2VTdHJpbmcocHJlZml4LCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7
XG5cbn19Iik7CiAgICAgZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKLSAgICAgICAgcHJvZ3Jh
bSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0g
RnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIgOiAiIiwgZnVuY3Rpb25O
YW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyksICJcbn19Iik7CisgICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKHByZWZpeCwgZnVu
Y3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyksICJcbn19Iik7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7ZnVuY3Rpb24gIik7Ci0g
ICAgICAgIGlmIChmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rp
b25Nb2RlOjpHZW5lcmF0b3IpCi0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKicpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChwcmVmaXgpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChmdW5j
dGlvbk5hbWUuc3RyaW5nKCkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKCcpOwogICAgICAg
ICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52aWV3KGV4ZWMpLmdl
dCgpKTsKQEAgLTEyNiwxMiArMTQyLDIwIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNr
aXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4
ZWMsIHNjb3BlLCBleGNlcHRpb24pOwogICAgIH0KIAotICAgIFN0cnVjdHVyZSogc3ViY2xhc3NT
dHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVj
LCBuZXdUYXJnZXQsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGU6OkdlbmVyYXRvciA/IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1
Y3R1cmUoKSA6IGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CisgICAgU3RydWN0
dXJlKiBzdWJjbGFzc1N0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNz
U3RydWN0dXJlKGV4ZWMsIG5ld1RhcmdldCwgc3RydWN0dXJlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAotICAgIGlmIChmdW5jdGlvbkNvbnN0cnVjdGlvbk1v
ZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IpCisgICAgc3dpdGNoIChm
dW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUpIHsKKyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9u
TW9kZTo6RnVuY3Rpb246CisgICAgICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1
bmN0aW9uLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIHN1YmNsYXNzU3RydWN0dXJlKTsK
KyAgICBjYXNlIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9yOgogICAgICAgICBy
ZXR1cm4gSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlvbiwgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7Ci0gICAgcmV0dXJuIEpTRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZnVuY3Rpb24sIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwg
c3ViY2xhc3NTdHJ1Y3R1cmUpOworICAgIGNhc2UgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpB
c3luYzoKKyAgICAgICAgcmV0dXJuIEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBmdW5jdGlv
biwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBzdWJjbGFzc1N0cnVjdHVyZSk7CisgICAg
fQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmluZGV4IDMxYzMz
ZDZhZjRmZjEyYmMyNGMxZTJiNWJmNGU1NTU4ZDc2NTY5MDYuLmRlZWU5YTU1ZDZmMmM2MWU5Zjcx
NDQ4M2IzMWFiZDU3ZmIxY2FlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHJpdmF0ZToK
IGVudW0gY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlIHsKICAgICBGdW5jdGlvbiwKICAg
ICBHZW5lcmF0b3IsCisgICAgQXN5bmMsCiB9OwogCiBKU09iamVjdCogY29uc3RydWN0RnVuY3Rp
b24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3QgSWRl
bnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3QgV1RG
OjpUZXh0UG9zaXRpb24mLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPSBGdW5jdGlvbkNvbnN0
cnVjdGlvbk1vZGU6OkZ1bmN0aW9uLCBKU1ZhbHVlIG5ld1RhcmdldCA9IEpTVmFsdWUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5j
cHAKaW5kZXggMzM5ZTQxYjhjZTYxMjRmOWQzMjFiODQwOTNjYTllMGQyYWZkNmY4My4uNjFlN2Vl
YzJhNThkMTMxZGFmNzE5MThkYjhmOWI2YzllMjA2ZDIzNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCkBAIC0xMDUsNiArMTA2LDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIGNsYXNzU291
cmNlLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYg
KHRoaXNWYWx1ZS5pbmhlcml0cyhKU0FzeW5jRnVuY3Rpb246OmluZm8oKSkpIHsKKyAgICAgICAg
ICAgIFN0cmluZyBmdW5jdGlvbkhlYWRlciA9IGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigp
ID8gImFzeW5jICIgOiAiYXN5bmMgZnVuY3Rpb24gIjsKKworICAgICAgICAgICAgU3RyaW5nVmll
dyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRSYW5nZSgKKyAg
ICAgICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSwKKyAgICAg
ICAgICAgICAgICBleGVjdXRhYmxlLT5wYXJhbWV0ZXJzU3RhcnRPZmZzZXQoKSArIGV4ZWN1dGFi
bGUtPnNvdXJjZSgpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCBmdW5jdGlvbkhlYWRlciwgZnVuY3Rpb24t
Pm5hbWUodm0pLCBzb3VyY2UpKTsKKyAgICAgICAgfQorCiAgICAgICAgIFN0cmluZyBmdW5jdGlv
bkhlYWRlciA9IGV4ZWN1dGFibGUtPmlzQXJyb3dGdW5jdGlvbigpID8gIiIgOiAiZnVuY3Rpb24g
IjsKICAgICAgICAgCiAgICAgICAgIFN0cmluZ1ZpZXcgc291cmNlID0gZXhlY3V0YWJsZS0+c291
cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYmE3NDM3MjNiZGM3ZmFl
ZWZmNjI1MWUyZmYyYTJkZGM2NDI4ZTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmNwcApAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29t
Pi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5j
dGlvbi5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRl
ICJKU0Z1bmN0aW9uSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAi
UHJvcGVydHlTbG90LmgiCisjaW5jbHVkZSAiVk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Nv
bnN0IENsYXNzSW5mbyBKU0FzeW5jRnVuY3Rpb246OnNfaW5mbyA9IHsgIkFzeW5jRnVuY3Rpb24i
LCAgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0FzeW5jRnVu
Y3Rpb24pIH07CisKK0pTQXN5bmNGdW5jdGlvbjo6SlNBc3luY0Z1bmN0aW9uKFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBleGVjdXRhYmxlLCBzY29wZSwgc3RydWN0dXJlKQor
eworfQorCitKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlSW1wbChWTSYg
dm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQoreworICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5bmNGdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXN5bmNGdW5jdGlvbj4odm0uaGVhcCkpIEpT
QXN5bmNGdW5jdGlvbih2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7CisgICAgQVNT
RVJUKGFzeW5jRnVuY3Rpb24tPnN0cnVjdHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7CisgICAgYXN5
bmNGdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBhc3luY0Z1bmN0aW9u
OworfQorCitKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICBK
U0FzeW5jRnVuY3Rpb24qIGFzeW5jRnVuY3Rpb24gPSBjcmVhdGVJbXBsKHZtLCBleGVjdXRhYmxl
LCBzY29wZSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5hc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkp
OworICAgIGV4ZWN1dGFibGUtPnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBh
c3luY0Z1bmN0aW9uLCAiQWxsb2NhdGluZyBhbiBhc3luYyBmdW5jdGlvbiIpOworICAgIHJldHVy
biBhc3luY0Z1bmN0aW9uOworfQorCitKU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6
Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBz
Y29wZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSlNBc3luY0Z1bmN0aW9uKiBhc3lu
Y0Z1bmN0aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHN0cnVjdHVyZSk7
CisgICAgZXhlY3V0YWJsZS0+c2luZ2xldG9uRnVuY3Rpb24oKS0+bm90aWZ5V3JpdGUodm0sIGFz
eW5jRnVuY3Rpb24sICJBbGxvY2F0aW5nIGFuIGFzeW5jIGZ1bmN0aW9uIik7CisgICAgcmV0dXJu
IGFzeW5jRnVuY3Rpb247Cit9CisKK0pTQXN5bmNGdW5jdGlvbiogSlNBc3luY0Z1bmN0aW9uOjpj
cmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiB2bSwgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKK3sKKyAgICByZXR1cm4g
Y3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUsIHNjb3BlLT5nbG9iYWxPYmplY3QoKS0+
YXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kN2RhODdkYjZkMzg1
YTc5ZDU1NzZjMWI3MmExMzRjYTNlMjFiZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmgKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNBc3luY0Z1bmN0aW9uIDogcHVibGljIEpTRnVu
Y3Rpb24geworICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgZnJpZW5kIGNsYXNzIFZNOworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOworCisgICAgY29uc3Qgc3RhdGljIHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBERUNM
QVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlKFZN
JiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIHN0YXRpYyBKU0FzeW5jRnVu
Y3Rpb24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1
cmUqKTsKKyAgICBzdGF0aWMgSlNBc3luY0Z1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRS
ZWFsbG9jYXRpb25XYXRjaHBvaW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSop
OworCisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgaW5saW5lQ2FwYWNp
dHkpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCAhaW5saW5l
Q2FwYWNpdHkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKEpTQXN5bmNGdW5jdGlvbik7CisgICAg
fQorCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAg
ICBBU1NFUlQoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGdW5jdGlvblR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNBc3luY0Z1
bmN0aW9uKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSosIFN0cnVjdHVyZSopOwor
CisgICAgc3RhdGljIEpTQXN5bmNGdW5jdGlvbiogY3JlYXRlSW1wbChWTSYsIEZ1bmN0aW9uRXhl
Y3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CmluZGV4IDM4NDA4MmRiZDM5N2U5MGI4YTA0NmM2MzVkZDVlNzM4MmI3MzA1MmYuLmNiM2IzMDAw
ZmFhNGM4MzkzNjBkNzkyMjMxMDM1YTAzYTQ0ODVkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNp
bmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQXJyYXlJdGVyYXRvclByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiQXN5bmNGdW5j
dGlvbkNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5
cGUuaCIKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKQEAgLTYzLDYgKzY1LDcgQEAKICNpbmNs
dWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQXN5
bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NhbGxiYWNrQ29uc3RydWN0b3IuaCIKQEAgLTU4NSw2
ICs1ODgsOCBAQCBtXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGlu
c3RhbmNlVHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aAogICAgIG1fdGhyb3dUeXBlRXJyb3JG
dW5jdGlvbi5zZXQodm0sIHRoaXMsIHRocm93VHlwZUVycm9yRnVuY3Rpb24pOwogCiAgICAgSlND
ZWxsKiBmdW5jdGlvbkNvbnN0cnVjdG9yID0gRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCBGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rp
b25Qcm90b3R5cGUuZ2V0KCkpLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2Z1
bmN0aW9uQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCAoRnVuY3Rpb25Db25zdHJ1Y3RvciopZnVu
Y3Rpb25Db25zdHJ1Y3Rvcik7CisKICAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVj
dG9yID0gQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCB0aGlzLCBBcnJheUNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X2FycmF5UHJvdG90eXBlLmdldCgpLCBtX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0KCkpOwogICAg
IG1fYXJyYXlDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIGFycmF5Q29uc3RydWN0b3IpOwogICAg
IApAQCAtNjMwLDcgKzYzNSwxNyBAQCBtXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlLT5wdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YwogCiAgICAgbV9n
ZW5lcmF0b3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5nZXQo
KSwgRG9udEVudW0gfCBSZWFkT25seSk7CiAgICAgbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCksIERvbnRFbnVtIHwgUmVhZE9ubHkpOwot
ICAgIAorCisgICAgbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAg
W10oTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkgeworICAgICAgICAgICAg
QXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3RvdHlwZSA9IEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0
aW9uUHJvdG90eXBlLmdldCgpKSk7CisgICAgICAgICAgICBpbml0LnNldFByb3RvdHlwZShhc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlKTsKKyAgICAgICAgICAgIGluaXQuc2V0U3RydWN0dXJlKEpTQXN5
bmNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0LnBy
b3RvdHlwZSkpOworICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihQcm9wZXJ0eU5hbWUo
bnVsbHB0ciksIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFs
LCBpbml0Lmdsb2JhbC0+bV9mdW5jdGlvbkNvbnN0cnVjdG9yLmdldCgpKSwgYXN5bmNGdW5jdGlv
blByb3RvdHlwZSkpOworCisgICAgICAgICAgICBpbml0Lmdsb2JhbC0+cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24oaW5pdC52bSwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5hc3luY0Z1bmN0aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlQnVp
bHRpbkZ1bmN0aW9uKGluaXQudm0sIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGVBc3luY0Z1bmN0aW9u
UmVzdW1lQ29kZUdlbmVyYXRvcihpbml0LnZtKSwgaW5pdC5nbG9iYWwpLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSk7CisgICAgICAgIH0pOworCiAgICAgbV9vYmplY3RQcm90b3R5
cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25z
dHJ1Y3Rvciwgb2JqZWN0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJv
dG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IsIGZ1bmN0aW9uQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICAgICBtX2FycmF5
UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+Y29uc3RydWN0b3IsIGFycmF5Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKQEAgLTExMDIsNiAr
MTExNyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX3Rocm93VHlwZUVycm9y
R2V0dGVyU2V0dGVyLnZpc2l0KHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3Rocm93VHlwZUVycm9yQXJndW1lbnRzQ2FsbGVlQW5kQ2FsbGVyR2V0dGVyU2V0dGVy
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVMb2FkZXIpOworICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Z1bmN0aW9uQ29uc3RydWN0b3IpOwogCiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG90eXBlKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvdHlwZSk7CkBAIC0xMTEw
LDYgKzExMjYsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCog
Y2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1faXRlcmF0b3JQcm90b3R5cGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9nZW5lcmF0b3JQcm90b3R5cGUpOworICAgIHRoaXNPYmplY3QtPm1fYXN5bmNG
dW5jdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9tb2R1bGVMb2FkZXJQcm90b3R5cGUpOwogCiAgICAgdGhpc09iamVjdC0+bV9k
ZWJ1Z2dlclNjb3BlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNDA4NDZjZTI5N2I0N2MyODVl
YzQwOTFjZDczNDAyOTVjMDZkYTVmMC4uMmRkNDQxNjlkMWYxY2MwOGJhYzYxN2ViNzViMjQwZjAz
NjU2MzJjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBBcnJheUNv
bnN0cnVjdG9yOwogY2xhc3MgQXJyYXlQcm90b3R5cGU7CitjbGFzcyBBc3luY0Z1bmN0aW9uUHJv
dG90eXBlOwogY2xhc3MgQm9vbGVhblByb3RvdHlwZTsKIGNsYXNzIENvbnNvbGVDbGllbnQ7CiBj
bGFzcyBEZWJ1Z2dlcjsKQEAgLTYzLDYgKzY0LDcgQEAgY2xhc3MgRXJyb3JDb25zdHJ1Y3RvcjsK
IGNsYXNzIEVycm9yUHJvdG90eXBlOwogY2xhc3MgRXZhbENvZGVCbG9jazsKIGNsYXNzIEV2YWxF
eGVjdXRhYmxlOworY2xhc3MgRnVuY3Rpb25Db25zdHJ1Y3RvcjsKIGNsYXNzIEZ1bmN0aW9uUHJv
dG90eXBlOwogY2xhc3MgR2VuZXJhdG9yUHJvdG90eXBlOwogY2xhc3MgR2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGU7CkBAIC0yMzMsNiArMjM1LDcgQEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9zeW50YXhFcnJvckNv
bnN0cnVjdG9yOwogICAgIFdyaXRlQmFycmllcjxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPiBtX3R5
cGVFcnJvckNvbnN0cnVjdG9yOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcj4gbV9VUklFcnJvckNvbnN0cnVjdG9yOworICAgIFdyaXRlQmFy
cmllcjxGdW5jdGlvbkNvbnN0cnVjdG9yPiBtX2Z1bmN0aW9uQ29uc3RydWN0b3I7CiAgICAgV3Jp
dGVCYXJyaWVyPE9iamVjdENvbnN0cnVjdG9yPiBtX29iamVjdENvbnN0cnVjdG9yOwogICAgIFdy
aXRlQmFycmllcjxBcnJheUNvbnN0cnVjdG9yPiBtX2FycmF5Q29uc3RydWN0b3I7CiAgICAgV3Jp
dGVCYXJyaWVyPEpTUHJvbWlzZUNvbnN0cnVjdG9yPiBtX3Byb21pc2VDb25zdHJ1Y3RvcjsKQEAg
LTMwNiw2ICszMDksNyBAQCBwdWJsaWM6CiAgICAgUHJvcGVydHlPZmZzZXQgbV9mdW5jdGlvbk5h
bWVPZmZzZXQ7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcml2YXRlTmFtZVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cFN0cnVjdHVyZTsKKyAg
ICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kb2xsYXJWTVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2l0ZXJhdG9yUmVzdWx0T2JqZWN0U3RydWN0dXJlOwpAQCAtNTI3LDYg
KzUzMSwxOSBAQCBwdWJsaWM6CiAgICAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUqIGdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5nZXQoKTsgfQogICAgIEdlbmVyYXRvclByb3RvdHlwZSogZ2VuZXJhdG9yUHJv
dG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JQcm90b3R5cGUuZ2V0KCk7IH0KIAor
ICAgIExhenlDbGFzc1N0cnVjdHVyZSYgbGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZTsKKyAgICB9CisgICAg
Y29uc3QgTGF6eUNsYXNzU3RydWN0dXJlJiBsYXp5QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlOworICAg
IH0KKyAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJvdG90eXBlKCkg
Y29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBc3luY0Z1bmN0aW9uUHJvdG90eXBlKj4o
bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5wcm90b3R5cGUodGhpcykpOyB9CisgICAgQXN5
bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3RvdHlwZUNvbmN1cnJlbnRseSgp
IGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXN5bmNGdW5jdGlvblByb3RvdHlwZSo+
KGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkucHJvdG90eXBlQ29uY3VycmVudGx5KCkpOyB9
CisgICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUq
IGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25jdXJyZW50bHkoKSBjb25zdCB7IHJldHVybiBsYXp5
QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLmdldENvbmN1cnJlbnRseSgpOyB9CisKICAgICBTdHJ1
Y3R1cmUqIGRlYnVnZ2VyU2NvcGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2Vy
U2NvcGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiB3aXRoU2NvcGVTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3dpdGhTY29wZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0K
ICAgICBTdHJ1Y3R1cmUqIHN0cmljdEV2YWxBY3RpdmF0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZS5nZXQoKTsgfQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA1ZGI4YTc0MTg4
M2QzYWUxNGQ4NWRlMjQxOThkNzk4N2VhMjcxNGQwLi4wNDc0Y2JlZWE1MzI2ZTBhZDgyNmQ2MjE4
NDBjOTU4MjBmNmFkYWIzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAxNi0xMC0yMCAgQ2FpdGxpbiBQb3R0
ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIGltcGxlbWVudCBydW50aW1l
IGZvciBhc3luYyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2Mzc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoc2hvdWxk
VGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJv
d1N5bnRheEVycm9yKToKKyAgICAgICAgKGxldC5Bc3luY0Z1bmN0aW9uLmFzeW5jKToKKyAgICAg
ICAgKGFzeW5jLmFzeW5jRnVuY3Rpb25Gb3JQcm90byk6CisgICAgICAgIChPYmplY3QuZ2V0UHJv
dG90eXBlT2YuYXN5bmMpOgorICAgICAgICAoT2JqZWN0LmdldFByb3RvdHlwZU9mLmFzeW5jLm1l
dGhvZCk6CisgICAgICAgIChhc3luYyk6CisgICAgICAgIChhc3luYy5tZXRob2QpOgorICAgICAg
ICAoYXN5bmMuYXN5bmNOb25Db25zdHJ1Y3RvckRlY2wpOgorICAgICAgICAoc2hvdWxkVGhyb3cu
bmV3LmFzeW5jKToKKyAgICAgICAgKHNob3VsZFRocm93Lm5ldy5hc3luYy5ub25Db25zdHJ1Y3Rv
cik6CisgICAgICAgIChhc3luYy5hc3luY0RlY2wpOgorICAgICAgICAoYXN5bmMuZik6CisgICAg
ICAgIChNeUVycm9yKToKKyAgICAgICAgKGFzeW5jLmFzeW5jRGVjbFRocm93ZXIpOgorICAgICAg
ICAoc2hvdWxkVGhyb3dBc3luYy5hc3luYyk6CisgICAgICAgIChyZXNvbHZlTGF0ZXIpOgorICAg
ICAgICAocmVqZWN0TGF0ZXIpOgorICAgICAgICAoYXN5bmMucmVzdW1lQWZ0ZXJOb3JtYWwpOgor
ICAgICAgICAoTy5hc3luYy5yZXN1bWVBZnRlck5vcm1hbCk6CisgICAgICAgIChyZXN1bWVBZnRl
ck5vcm1hbEFycm93LmFzeW5jKToKKyAgICAgICAgKGFzeW5jLnJlc3VtZUFmdGVyVGhyb3cpOgor
ICAgICAgICAoTy5hc3luYy5yZXN1bWVBZnRlclRocm93KToKKyAgICAgICAgKHJlc3VtZUFmdGVy
VGhyb3dBcnJvdy5hc3luYyk6CisgICAgICAgIChjYXRjaCk6CisgICAgICAgICogc3RyZXNzL2Fz
eW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZFRocm93KToKKyAgICAgICAgKFN5bnRheEVycm9yLkNhbnN0cmluZ19hcHBlYXJlZF9oZXJlYXdh
aXQuY2hlY2tNb2R1bGVTeW50YXhFcnJvci5TdHJpbmcucmF3LmF3YWl0KToKKyAgICAgICAgKGNo
ZWNrTW9kdWxlU3ludGF4RXJyb3IuU3RyaW5nLnJhdy5hd2FpdCk6CisgICAgICAgIChjaGVja01v
ZHVsZVN5bnRheEVycm9yLlN0cmluZy5yYXcuYXN5bmMuYXdhaXQpOgorICAgICAgICAoU3ludGF4
RXJyb3IuQ2Fubm90LmRlY2xhcmUubmFtZWQpOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1hd2Fp
dC1tb3ppbGxhLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3Vs
ZEJlQXN5bmMpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3dB
c3luYyk6CisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAoc2hvdWxkVGhyb3dTeW50YXhFcnJv
cik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZW1wdHkpOgorICAgICAgICAobW96U2Vt
YW50aWNzLmFzeW5jLnNpbXBsZVJldHVybik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMu
c2ltcGxlQXdhaXQpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZUF3YWl0QXN5
bmMpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnJldHVybk90aGVyQXN5bmMpOgorICAg
ICAgICAobW96U2VtYW50aWNzLmFzeW5jLnNpbXBsZVRocm93ZXIpOgorICAgICAgICAobW96U2Vt
YW50aWNzLmFzeW5jLmRlbGVnYXRlZFRocm93ZXIpOgorICAgICAgICAobW96U2VtYW50aWNzLmFz
eW5jLnRyeUNhdGNoKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy50cnlDYXRjaFRocm93
KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy53ZWxsRmluYWxseSk6CisgICAgICAgICht
b3pTZW1hbnRpY3MuYXN5bmMuZmluYWxseU1heUZhaWwpOgorICAgICAgICAobW96U2VtYW50aWNz
LmFzeW5jLmVtYmVkZGVkLmFzeW5jLmlubmVyKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3lu
Yy5lbWJlZGRlZCk6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZmliKToKKyAgICAgICAg
KG1velNlbWFudGljcy5hc3luYy5pc09kZC5hc3luYy5pc0V2ZW4pOgorICAgICAgICAobW96U2Vt
YW50aWNzLmFzeW5jLmlzT2RkKToKKyAgICAgICAgKG1velNlbWFudGljcy5oYXJkY29yZUZpYi5h
c3luYy5maWIyKToKKyAgICAgICAgKG1velNlbWFudGljcy5uYW1lZEFzeW5jRXhwci5hc3luYy5z
aW1wbGUpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFzeW5j
LmZpcnN0KToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5leGVjdXRpb25PcmRlci5hc3lu
Yy5zZWNvbmQpOgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFz
eW5jLnRoaXJkKToKKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5leGVjdXRpb25PcmRlcik6
CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMubWlzY2VsbGFuZW91cyk6CisgICAgICAgICht
b3pTZW1hbnRpY3MudGhyb3dlcik6CisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZGVmYXVs
dEFyZ3MpOgorICAgICAgICAobW96U2VtYW50aWNzLnNob3VsZFRocm93KToKKyAgICAgICAgKG1v
elNlbWFudGljcyk6CisgICAgICAgIChtb3pNZXRob2RzLlgpOgorICAgICAgICAobW96TWV0aG9k
cy5YLnByb3RvdHlwZS5hc3luYy5nZXRWYWx1ZSk6CisgICAgICAgIChtb3pNZXRob2RzLlgucHJv
dG90eXBlLnNldFZhbHVlKToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuYXN5bmMu
aW5jcmVtZW50KToKKyAgICAgICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuYXN5bmMuZ2V0QmFz
ZUNsYXNzTmFtZSk6CisgICAgICAgIChtb3pNZXRob2RzLlguYXN5bmMuZ2V0U3RhdGljVmFsdWUp
OgorICAgICAgICAobW96TWV0aG9kcy5ZLnByb3RvdHlwZS5hc3luYy5nZXRCYXNlQ2xhc3NOYW1l
KToKKyAgICAgICAgKG1vek1ldGhvZHMuWSk6CisgICAgICAgIChtb3pGdW5jdGlvbk5hbWVJbmZl
cnJlbmNlLmFzeW5jLnRlc3QpOgorICAgICAgICAobW96U3ludGF4RXJyb3JzKToKKyAgICAgICAg
KiBzdHJlc3MvYXN5bmMtYXdhaXQtcmVzZXJ2ZWQtd29yZC5qczogQWRkZWQuCisgICAgICAgIChh
c3NlcnQpOgorICAgICAgICAoc2hvdWxkVGhyb3dTeW50YXhFcnJvcik6CisgICAgICAgIChBc3lu
Y0Z1bmN0aW9uLmFzeW5jKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25z
X2xleGljYWxfYXJndW1lbnRzX2JpbmRpbmcuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKToK
KyAgICAgICAgKG5vQXJndW1lbnRzQXJyb3cyLmFzeW5jKToKKyAgICAgICAgKiBzdHJlc3MvYXN5
bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfbmV3LnRhcmdldF9iaW5kaW5nLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAo
c2hvdWxkVGhyb3dBc3luYyk6CisgICAgICAgIChDMSk6CisgICAgICAgIChDMik6CisgICAgICAg
IChzaG91bGRUaHJvd0FzeW5jLmFzeW5jKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3df
ZnVuY3Rpb25zX2xleGljYWxfc3VwZXJfYmluZGluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKEJhc2VDbGFzcy5wcm90
b3R5cGUuYmFzZUNsYXNzVmFsdWUpOgorICAgICAgICAoQmFzZUNsYXNzLnByb3RvdHlwZS5nZXQg
cHJvcGVydHkpOgorICAgICAgICAoQmFzZUNsYXNzKToKKyAgICAgICAgKENoaWxkQ2xhc3MucHJv
dG90eXBlLmFzeW5jU3VwZXJQcm9wKToKKyAgICAgICAgKENoaWxkQ2xhc3MucHJvdG90eXBlLmFz
eW5jU3VwZXJQcm9wMik6CisgICAgICAgIChDaGlsZENsYXNzKToKKyAgICAgICAgKENoaWxkQ2xh
c3MyKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfdGhp
c19iaW5kaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3Vs
ZEJlQXN5bmMpOgorICAgICAgICAoZC55KToKKwogMjAxNi0xMC0yNyAgQ2FpdGxpbiBQb3R0ZXIg
IDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIGZvcmJpZCBsZXhpY2FsIHJlZGVj
bGFyYXRpb24gb2YgZ2VuZXJhdG9yIGZvcm1hbCBwYXJhbWV0ZXJzCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL2FzeW5jRnVuY3Rpb25UZXN0cy55YW1sIGIvSlNUZXN0cy9hc3luY0Z1bmN0aW9uVGVzdHMu
eWFtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41ZmI3OGJlZDc0YmM0ODAyMTIzYjY2NmM3NTZiMTUyNGY4YjUyMWE2
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9hc3luY0Z1bmN0aW9uVGVzdHMueWFtbApAQCAt
MCwwICsxLDM5MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRw
QGlnYWxpYS5jb20+LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
IyBQcm92aWRlZCB0byBzaW1wbGlmeSBydW5uaW5nIGFzeW5jIGZ1bmN0aW9uIHRlc3RzLiBUbyBi
ZSByZW1vdmVkIG9uY2UgYXN5bmMKKyMgZnVuY3Rpb25zIGFyZSBubyBsb25nZXIgYmVoaW5kIGEg
ZmVhdHVyZSBmbGFnLgorCistLS0KKy0gcGF0aDogc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9u
cy1sZXhpY2FsLXN1cGVyLWJpbmRpbmcuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0
cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1hcmd1bWVudHMtYmluZGluZy5qcwor
ICBjbWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1s
ZXhpY2FsLXRoaXMtYmluZGluZy5qcworICBjbWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNz
L2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLW5ldy50YXJnZXQtYmluZGluZy5qcworICBj
bWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2ljLmpzCisgIGNt
ZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5bmMtYXdhaXQtbW96aWxsYS5qcworICBj
bWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWF3YWl0LXN5bnRheC5qcworICBj
bWQ6IHJ1bkRlZmF1bHQKKy0gcGF0aDogc3RyZXNzL2FzeW5jLWF3YWl0LW1vZHVsZS1yZXNlcnZl
ZC13b3JkLmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5bmMtYXdhaXQt
cmVzZXJ2ZWQtd29yZC5qcworICBjbWQ6IHJ1bkRlZmF1bHQKKworIyBUZXN0MjYyCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLWNvbnN0
cnVjdC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlv
bi1jb25zdHJ1Y3QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIs
IFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlv
bi9Bc3luY0Z1bmN0aW9uLWlzLWV4dGVuc2libGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9B
c3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24taXMtZXh0ZW5zaWJsZS5qcworICBjbWQ6IHJ1blRl
c3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24taXMtc3ViY2xhc3Mu
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24taXMt
c3ViY2xhc3MuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
WzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9B
c3luY0Z1bmN0aW9uLWxlbmd0aC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhj
ZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFtdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0aW9uLWxl
bmd0aC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8u
Li8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVyLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0
MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1uYW1lLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5l
c3MvcHJvcGVydHlIZWxwZXIuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlu
cy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24tbmFtZS5qcworICBjbWQ6IHJ1blRlc3QyNjIg
Om5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3Byb3BlcnR5SGVscGVy
LmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVu
Y3Rpb24vQXN5bmNGdW5jdGlvbi1wcm90b3R5cGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJd
LCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNG
dW5jdGlvbi1wcm90b3R5cGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2Vw
dGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbOnN0cmljdF0K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rp
b24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb24u
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3Rd
CistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3luY0Z1bmN0
aW9uUHJvdG90eXBlLWlzLWV4dGVuc2libGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3lu
Y0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUtaXMtZXh0ZW5zaWJsZS5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDog
dGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUtcHJvdG90eXBlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9Bc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLXByb3RvdHlwZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0
LWlucy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUtdG8tc3RyaW5nLmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5l
c3MvcHJvcGVydHlIZWxwZXIuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlu
cy9Bc3luY0Z1bmN0aW9uL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUtdG8tc3RyaW5nLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mv
cHJvcGVydHlIZWxwZXIuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWls
dC1pbnMvQXN5bmNGdW5jdGlvbi9pbnN0YW5jZS1jb25zdHJ1Y3QuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1
aWx0LWlucy9Bc3luY0Z1bmN0aW9uL2luc3RhbmNlLWNvbnN0cnVjdC5qcworICBjbWQ6IHJ1blRl
c3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL2luc3RhbmNlLWhhcy1uYW1lLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mv
cHJvcGVydHlIZWxwZXIuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9B
c3luY0Z1bmN0aW9uL2luc3RhbmNlLWhhcy1uYW1lLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hhcm5lc3MvcHJvcGVydHlIZWxwZXIuanMi
XSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvQXN5bmNGdW5jdGlv
bi9pbnN0YW5jZS1sZW5ndGguanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2Vw
dGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9wcm9wZXJ0eUhlbHBlci5qcyJdLCBbXQorLSBwYXRo
OiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vaW5zdGFuY2UtbGVuZ3RoLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uL2hh
cm5lc3MvcHJvcGVydHlIZWxwZXIuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9idWlsdC1pbnMvQXN5bmNGdW5jdGlvbi9pbnN0YW5jZS1wcm90b3R5cGUtcHJvcGVydHkuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDog
dGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL2luc3RhbmNlLXByb3RvdHlwZS1w
cm9wZXJ0eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBb
OnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9Bc3luY0Z1bmN0aW9uL2lz
LW5vdC1hLWdsb2JhbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQtaW5zL0FzeW5jRnVuY3Rpb24vaXMt
bm90LWEtZ2xvYmFsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
Il0sIFs6c3RyaWN0XQorCisjIEZJWE1FOiBDcmVhdGVEeW5hbWljRnVuY3Rpb24oKSBpcyBicm9r
ZW4gaW4gSlNDLCBuZWVkIHRvIHBhcnNlIGZvcm1hbCBwYXJhbWV0ZXJzIGFuZCBib2R5IHNlcGFy
YXRlbHkuCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBl
L3RvU3RyaW5nL0FzeW5jRnVuY3Rpb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9idWlsdC1p
bnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3RyaW5nL0FzeW5jRnVuY3Rpb24uanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpmYWlsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQor
CisjIEZJWE1FOiBUaGVzZSB0ZXN0cyByZXF1aXJlIEYucC50b1N0cmluZyByZXZpc2lvbnMgKGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vRnVuY3Rpb24tcHJvdG90eXBlLXRvU3RyaW5nLXJldmlzaW9u
LykKKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUvdG9T
dHJpbmcvYXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpm
YWlsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9idWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3RyaW5nL2FzeW5jLWZ1bmN0aW9uLWRl
Y2xhcmF0aW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9GdW5j
dGlvbi9wcm90b3R5cGUvdG9TdHJpbmcvYXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUvdG9TdHJpbmcv
YXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJO
b0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9idWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3RyaW5nL2FzeW5jLW1ldGhvZC5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUvdG9TdHJp
bmcvYXN5bmMtbWV0aG9kLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIk5vRXhjZXB0aW9u
IiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKworLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vYXJyb3ctcmV0dXJucy1wcm9taXNl
LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4u
Ly4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9h
cnJvdy1yZXR1cm5zLXByb21pc2UuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4
Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMi
XSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1OU1BMLXdpdGgt
VVNELmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0s
IFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJv
dy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctTlNQTC13aXRoLVVTRC5qcworICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9u
L2Vhcmx5LWVycm9ycy1hcnJvdy1hcmd1bWVudHMtaW4tZm9ybWFsLXBhcmFtZXRlcnMuanMKKyAg
Y21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3Rd
CistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1m
dW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctYXdhaXQtaW4tZm9ybWFscy1kZWZhdWx0LmpzCisg
IGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hh
cm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlv
bi9lYXJseS1lcnJvcnMtYXJyb3ctYXdhaXQtaW4tZm9ybWFscy1kZWZhdWx0LmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rp
b24vZWFybHktZXJyb3JzLWFycm93LWF3YWl0LWluLWZvcm1hbHMuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9y
cy1hcnJvdy1hd2FpdC1pbi1mb3JtYWxzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
U3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFu
Z3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93
LWJvZHktY29udGFpbnMtc3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwg
IlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uv
ZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWJvZHkt
Y29udGFpbnMtc3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRh
eEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1ib2R5
LWNvbnRhaW5zLXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
U3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9l
eHByZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctYm9keS1j
b250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5
bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1k
dXBsaWNhdGUtcGFyYW1ldGVycy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRh
eEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L2V4cHJlc3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1ldmFs
LWluLWZvcm1hbC1wYXJhbWV0ZXJzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3lu
dGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWZv
cm1hbHMtYm9keS1kdXBsaWNhdGUuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50
YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4v
aGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1mb3JtYWxzLWJv
ZHktZHVwbGljYXRlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3Ii
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVz
c2lvbnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWZvcm1hbHMtY29u
dGFpbnMtc3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVy
cm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lv
bnMvYXN5bmMtYXJyb3ctZnVuY3Rpb24vZWFybHktZXJyb3JzLWFycm93LWZvcm1hbHMtY29udGFp
bnMtc3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9y
IiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJl
c3Npb25zL2FzeW5jLWFycm93LWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1hcnJvdy1mb3JtYWxzLWNv
bnRhaW5zLXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3lu
dGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHBy
ZXNzaW9ucy9hc3luYy1hcnJvdy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtYXJyb3ctZm9ybWFscy1j
b250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5
bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLU5T
UEwtd2l0aC1VU0QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIs
IFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2Fz
eW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1leHByZXNzaW9uLU5TUEwtd2l0aC1VU0QuanMKKyAg
Y21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3Rd
CistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlv
bi9lYXJseS1lcnJvcnMtZXhwcmVzc2lvbi1iaW5kaW5nLWlkZW50aWZpZXItYXJndW1lbnRzLmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4u
L2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3Ry
aWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVu
Y3Rpb24vZWFybHktZXJyb3JzLWV4cHJlc3Npb24tYmluZGluZy1pZGVudGlmaWVyLWV2YWwuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJp
Y3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5j
dGlvbi9lYXJseS1lcnJvcnMtZXhwcmVzc2lvbi1ib2R5LWNvbnRhaW5zLXN1cGVyLWNhbGwuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vh
cmx5LWVycm9ycy1leHByZXNzaW9uLWJvZHktY29udGFpbnMtc3VwZXItY2FsbC5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vh
cmx5LWVycm9ycy1leHByZXNzaW9uLWJvZHktY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAg
Y21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5
LWVycm9ycy1leHByZXNzaW9uLWJvZHktY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVz
cy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCist
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlvbi9l
YXJseS1lcnJvcnMtZXhwcmVzc2lvbi1ldmFsLWluLWZvcm1hbC1wYXJhbWV0ZXJzLmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24v
ZWFybHktZXJyb3JzLWV4cHJlc3Npb24tZm9ybWFscy1ib2R5LWR1cGxpY2F0ZS5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJy
b3JzLWV4cHJlc3Npb24tZm9ybWFscy1ib2R5LWR1cGxpY2F0ZS5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9y
cy1leHByZXNzaW9uLWZvcm1hbHMtY29udGFpbnMtc3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRl
c3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2Vy
dC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYy
L3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWV4
cHJlc3Npb24tZm9ybWFscy1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0
MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3Jz
LWV4cHJlc3Npb24tZm9ybWFscy1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0
MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3Jz
LWV4cHJlc3Npb24tZm9ybWFscy1jb250YWlucy1zdXBlci1wcm9wZXJ0eS5qcworICBjbWQ6IHJ1
blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fz
c2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5
LWVycm9ycy1leHByZXNzaW9uLW5vdC1zaW1wbGUtYXNzaWdubWVudC10YXJnZXQuanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJSZWZlcmVuY2VFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5
LWVycm9ycy1leHByZXNzaW9uLW5vdC1zaW1wbGUtYXNzaWdubWVudC10YXJnZXQuanMKKyAgY21k
OiBydW5UZXN0MjYyIDpub3JtYWwsICJSZWZlcmVuY2VFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFy
bmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3Rd
CistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1mdW5jdGlv
bi9leHByZXNzaW9uLXJldHVybnMtcHJvbWlzZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vZXhwcmVzc2lvbi1yZXR1cm5zLXByb21pc2Uu
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpz
dHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hc3luYy1m
dW5jdGlvbi9zeW50YXgtZXhwcmVzc2lvbi1pcy1QcmltYXJ5RXhwcmVzc2lvbi5qcworICBjbWQ6
IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNz
L2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0
ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXN5bmMtZnVuY3Rpb24vc3ludGF4LWV4
cHJlc3Npb24taXMtUHJpbWFyeUV4cHJlc3Npb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1CaW5kaW5nSWRlbnRpZmllci1pbi1n
bG9iYWwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4v
Li4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMi
XSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3
YWl0LUJpbmRpbmdJZGVudGlmaWVyLWluLWdsb2JhbC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LUJpbmRpbmdJZGVudGlmaWVyLW5l
c3RlZC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJd
LCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdh
aXQtQmluZGluZ0lkZW50aWZpZXItbmVzdGVkLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3Qv
bGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtYXdhaXRzLXRoZW5hYmxlLW5vdC1jYWxs
YWJsZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8u
Li8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtYXdhaXRz
LXRoZW5hYmxlLW5vdC1jYWxsYWJsZS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5q
cyJdLCBbOnN0cmljdCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhw
cmVzc2lvbnMvYXdhaXQvYXdhaXQtYXdhaXRzLXRoZW5hYmxlcy10aGF0LXRocm93LmpzCisgIGNt
ZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1hd2FpdHMtdGhlbmFibGVzLXRo
YXQtdGhyb3cuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsi
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3Qs
IDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0
L2F3YWl0LWF3YWl0cy10aGVuYWJsZXMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJO
b0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUu
anMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L2F3YWl0L2F3YWl0LWF3YWl0cy10aGVuYWJsZXMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3Jt
YWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4v
Li4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRI
YW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1
YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWluLWZ1bmN0aW9uLmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1mdW5jdGlvbi5qcworICBj
bWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJu
ZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWlu
LWdlbmVyYXRvci5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwg
WyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdh
aXQvYXdhaXQtaW4tZ2VuZXJhdG9yLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9F
eGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtaW4tZ2xvYmFsLmpzCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1nbG9iYWwuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hd2FpdC9hd2FpdC1pbi1uZXN0
ZWQtZnVuY3Rpb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIs
IFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3
YWl0L2F3YWl0LWluLW5lc3RlZC1mdW5jdGlvbi5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWluLW5lc3RlZC1nZW5lcmF0b3IuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2F3YWl0LWluLW5l
c3RlZC1nZW5lcmF0b3IuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlv
biIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHBy
ZXNzaW9ucy9hd2FpdC9hd2FpdC10aHJvd3MtcmVqZWN0aW9ucy5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvYXdhaXQvYXdhaXQtdGhyb3dzLXJlamVjdGlvbnMuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJp
Y3RdCisKKyNGSVhNRTogSlNDIGFsd2F5cyB0aHJvd3MgdGhlc2UgUmVmZXJlbmNlRXJyb3JzIGF0
IHJ1bnRpbWUgcmF0aGVyIHRoYW4gYXQgcGFyc2UgdGltZS4KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL2V4cHJlc3Npb25zL2F3YWl0L2Vhcmx5LWVycm9ycy1hd2FpdC1ub3Qtc2ltcGxl
LWFzc2lnbm1lbnQtdGFyZ2V0LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwgIlJlZmVyZW5j
ZUVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVz
c2lvbnMvYXdhaXQvZWFybHktZXJyb3JzLWF3YWl0LW5vdC1zaW1wbGUtYXNzaWdubWVudC10YXJn
ZXQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpmYWlsLCAiUmVmZXJlbmNlRXJyb3IiLCBbIi4uLy4u
Ly4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0s
IFs6c3RyaWN0XQorCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9h
d2FpdC9uby1vcGVyYW5kLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJy
b3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5l
c3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9u
cy9hd2FpdC9uby1vcGVyYW5kLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4
RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uv
ZXhwcmVzc2lvbnMvYXdhaXQvc3ludGF4LWF3YWl0LWhhcy1VbmFyeUV4cHJlc3Npb24td2l0aC1N
dWx0aXBsaWNhdGl2ZUV4cHJlc3Npb24uanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJO
b0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUu
anMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25z
L2F3YWl0L3N5bnRheC1hd2FpdC1oYXMtVW5hcnlFeHByZXNzaW9uLXdpdGgtTXVsdGlwbGljYXRp
dmVFeHByZXNzaW9uLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3Ry
aWN0LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9h
d2FpdC9zeW50YXgtYXdhaXQtaGFzLVVuYXJ5RXhwcmVzc2lvbi5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2Rv
bmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2UvZXhwcmVzc2lvbnMvYXdhaXQvc3ludGF4LWF3YWl0LWhhcy1VbmFyeUV4cHJlc3Npb24uanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4v
Li4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKwor
LSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L21ldGhvZC1k
ZWZpbml0aW9uL2FzeW5jLXN1cGVyLWNhbGwtYm9keS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5v
cm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNz
L2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFu
Z3VhZ2UvZXhwcmVzc2lvbnMvb2JqZWN0L21ldGhvZC1kZWZpbml0aW9uL2FzeW5jLXN1cGVyLWNh
bGwtYm9keS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIu
Li8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNz
L3N0YS5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBb
OnN0cmljdCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lv
bnMvb2JqZWN0L21ldGhvZC1kZWZpbml0aW9uL2FzeW5jLXN1cGVyLWNhbGwtcGFyYW0uanMKKyAg
Y21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4v
Li4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0
aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL29iamVjdC9tZXRob2QtZGVmaW5p
dGlvbi9hc3luYy1zdXBlci1jYWxsLXBhcmFtLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvZG9u
ZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCisKKy0gcGF0aDogdGVzdDI2Mi90
ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZGVjbGFyYXRpb24tcmV0dXJu
cy1wcm9taXNlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBb
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5j
LWZ1bmN0aW9uL2RlY2xhcmF0aW9uLXJldHVybnMtcHJvbWlzZS5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3Jz
LWRlY2xhcmF0aW9uLU5TUEwtd2l0aC1VU0QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWws
ICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4v
Li4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLU5TUEwt
d2l0aC1VU0QuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsi
Li4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEu
anMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRz
L2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1hcmd1bWVudHMtaW4tZm9y
bWFsLXBhcmFtZXRlcnMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJv
ciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0
ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1hd2FpdC1pbi1m
b3JtYWxzLWRlZmF1bHQuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJv
ciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMv
YXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWF3YWl0LWluLWZvcm1hbHMt
ZGVmYXVsdC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIu
Li8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5q
cyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMv
YXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWF3YWl0LWluLWZvcm1hbHMu
anMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4v
Li4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10K
Ky0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24v
ZWFybHktZXJyb3JzLWRlY2xhcmF0aW9uLWF3YWl0LWluLWZvcm1hbHMuanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVy
cm9ycy1kZWNsYXJhdGlvbi1iaW5kaW5nLWlkZW50aWZpZXItYXJndW1lbnRzLmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJs
eS1lcnJvcnMtZGVjbGFyYXRpb24tYmluZGluZy1pZGVudGlmaWVyLWV2YWwuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5
LWVycm9ycy1kZWNsYXJhdGlvbi1ib2R5LWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3Jz
LWRlY2xhcmF0aW9uLWJvZHktY29udGFpbnMtc3VwZXItY2FsbC5qcworICBjbWQ6IHJ1blRlc3Qy
NjIgOm5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5q
cyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3Jz
LWRlY2xhcmF0aW9uLWJvZHktY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRl
Y2xhcmF0aW9uLWJvZHktY29udGFpbnMtc3VwZXItcHJvcGVydHkuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9y
cy1kZWNsYXJhdGlvbi1kdXBsaWNhdGUtcGFyYW1ldGVycy5qcworICBjbWQ6IHJ1blRlc3QyNjIg
Om5vcm1hbCwgIlN5bnRheEVycm9yIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZWFybHktZXJyb3JzLWRl
Y2xhcmF0aW9uLWV2YWwtaW4tZm9ybWFsLXBhcmFtZXRlcnMuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3Qy
NjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1k
ZWNsYXJhdGlvbi1mb3JtYWxzLWJvZHktZHVwbGljYXRlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6
bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwg
Ii4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlv
bi1mb3JtYWxzLWJvZHktZHVwbGljYXRlLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAi
U3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4u
Ly4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFu
Z3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtZGVjbGFyYXRpb24t
Zm9ybWFscy1jb250YWlucy1zdXBlci1jYWxsLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFs
LCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4u
Ly4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFn
ZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1mb3Jt
YWxzLWNvbnRhaW5zLXN1cGVyLWNhbGwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJT
eW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4v
Li4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5n
dWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1m
b3JtYWxzLWNvbnRhaW5zLXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5n
dWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1kZWNsYXJhdGlvbi1m
b3JtYWxzLWNvbnRhaW5zLXN1cGVyLXByb3BlcnR5LmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9y
bWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4u
Ly4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rl
c3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9lYXJseS1lcnJvcnMtbm8tYXN5
bmMtZ2VuZXJhdG9yLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiU3ludGF4RXJyb3Ii
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIl0sIFtdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2Fz
eW5jLWZ1bmN0aW9uL2Vhcmx5LWVycm9ycy1uby1hc3luYy1nZW5lcmF0b3IuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1
YXRpb24tYm9keS10aGF0LXJldHVybnMtYWZ0ZXItYXdhaXQuanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25l
cHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1ib2R5LXRoYXQtcmV0dXJucy1h
ZnRlci1hd2FpdC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwg
WyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0
YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOnN0cmlj
dCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3lu
Yy1mdW5jdGlvbi9ldmFsdWF0aW9uLWJvZHktdGhhdC1yZXR1cm5zLmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
ZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5n
dWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tYm9keS10aGF0LXJldHVy
bnMuanMKKyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4v
Li4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAi
Li4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3lu
Y10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rp
b24vZXZhbHVhdGlvbi1ib2R5LXRoYXQtdGhyb3dzLWFmdGVyLWF3YWl0LmpzCisgIGNtZDogcnVu
VGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5l
c3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9s
YW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tYm9keS10aGF0LXRo
cm93cy1hZnRlci1hd2FpdC5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0
aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJu
ZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBb
OnN0cmljdCwgOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50
cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLWJvZHktdGhhdC10aHJvd3MuanMKKyAgY21kOiBy
dW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFy
bmVzcy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0
L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1ib2R5LXRoYXQt
dGhyb3dzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4u
Ly4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6
YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1
bmN0aW9uL2V2YWx1YXRpb24tYm9keS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8u
Li9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3Rh
dGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLWJvZHkuanMKKyAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzpzdHJpY3RdCistIHBhdGg6IHRl
c3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24t
ZGVmYXVsdC10aGF0LXRocm93cy5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhj
ZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9o
YXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJd
LCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3lu
Yy1mdW5jdGlvbi9ldmFsdWF0aW9uLWRlZmF1bHQtdGhhdC10aHJvd3MuanMKKyAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVz
cy9kb25lcHJpbnRIYW5kbGUuanMiXSwgWzpzdHJpY3QsIDphc3luY10KKy0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi1tYXBw
ZWQtYXJndW1lbnRzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24i
LCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
c3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5
bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0
aW9uL2V2YWx1YXRpb24tdGhpcy12YWx1ZS1nbG9iYWwuanMKKyAgY21kOiBydW5UZXN0MjYyIDpu
b3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAi
Li4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25lcHJp
bnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0
YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vZXZhbHVhdGlvbi10aGlzLXZhbHVlLXBhc3NlZC5qcwor
ICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9o
YXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8u
Li8uLi9oYXJuZXNzL2RvbmVwcmludEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0
MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9ldmFsdWF0aW9uLXRo
aXMtdmFsdWUtcGFzc2VkLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5l
c3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6
c3RyaWN0LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRz
L2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tdW5tYXBwZWQtYXJndW1lbnRzLmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5jLWZ1bmN0aW9uL2V2YWx1YXRpb24tdW5tYXBwZWQt
YXJndW1lbnRzLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBb
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0
LCA6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2FzeW5j
LWZ1bmN0aW9uL3N5bnRheC1kZWNsYXJhdGlvbi1saW5lLXRlcm1pbmF0b3JzLWFsbG93ZWQuanMK
KyAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4v
aGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KKy0g
cGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vc3lu
dGF4LWRlY2xhcmF0aW9uLWxpbmUtdGVybWluYXRvcnMtYWxsb3dlZC5qcworICBjbWQ6IHJ1blRl
c3QyNjIgOm5vcm1hbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2Vy
dC5qcyIsICIuLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOnN0cmljdF0KKy0gcGF0aDog
dGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vc3ludGF4LWRl
Y2xhcmF0aW9uLW5vLWxpbmUtdGVybWluYXRvci5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3Vh
Z2Uvc3RhdGVtZW50cy9hc3luYy1mdW5jdGlvbi9zeW50YXgtZGVjbGFyYXRpb24tbm8tbGluZS10
ZXJtaW5hdG9yLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBb
Ii4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3Rh
LmpzIl0sIFs6c3RyaWN0XQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50
cy9hc3luYy1mdW5jdGlvbi9zeW50YXgtZGVjbGFyYXRpb24uanMKKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMi
LCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9kb25l
cHJpbnRIYW5kbGUuanMiXSwgWzphc3luY10KKy0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdl
L3N0YXRlbWVudHMvYXN5bmMtZnVuY3Rpb24vc3ludGF4LWRlY2xhcmF0aW9uLmpzCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3Mv
YXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uL2hh
cm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCisKKy0gcGF0aDog
dGVzdDI2Mi90ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvY2xhc3MvZGVmaW5pdGlvbi9tZXRob2Rz
LWFzeW5jLXN1cGVyLWNhbGwtYm9keS5qcworICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1hbCwgIk5v
RXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8uLi8u
Li8uLi8uLi9oYXJuZXNzL3N0YS5qcyIsICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2RvbmVwcmlu
dEhhbmRsZS5qcyJdLCBbOmFzeW5jXQorLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2Uvc3Rh
dGVtZW50cy9jbGFzcy9kZWZpbml0aW9uL21ldGhvZHMtYXN5bmMtc3VwZXItY2FsbC1ib2R5Lmpz
CisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4u
Ly4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwg
Ii4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6c3RyaWN0LCA6
YXN5bmNdCistIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2NsYXNzL2Rl
ZmluaXRpb24vbWV0aG9kcy1hc3luYy1zdXBlci1jYWxsLXBhcmFtLmpzCisgIGNtZDogcnVuVGVz
dDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNz
ZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uLy4u
L2hhcm5lc3MvZG9uZXByaW50SGFuZGxlLmpzIl0sIFs6YXN5bmNdCistIHBhdGg6IHRlc3QyNjIv
dGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2NsYXNzL2RlZmluaXRpb24vbWV0aG9kcy1hc3luYy1z
dXBlci1jYWxsLXBhcmFtLmpzCisgIGNtZDogcnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRp
b24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4u
L2hhcm5lc3Mvc3RhLmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3MvZG9uZXByaW50SGFuZGxl
LmpzIl0sIFs6c3RyaWN0LCA6YXN5bmNdCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3lu
Yy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1hcmd1bWVudHMtYmluZGluZy5qcyBiL0pTVGVzdHMv
c3RyZXNzL2FzeW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLWFyZ3VtZW50cy1iaW5kaW5nLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE1ZTAyYTM4NjlhNzFhNjI0MDNlM2Y3YTE4YzQ0MjU5ZDgwZmNmM2EKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4
aWNhbC1hcmd1bWVudHMtYmluZGluZy5qcwpAQCAtMCwwICsxLDUzIEBACisvLyBUaGlzIHRlc3Qg
cmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVk
IGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwg
YWN0dWFsLCBtc2cpIHsKKyAgICBpZiAobXNnID09PSB2b2lkIDApCisgICAgICAgIG1zZyA9ICIi
OworICAgIGVsc2UKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNn
ICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsK
KyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVl
KSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsg
aGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tz
KCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNo
b3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93
QXN5bmMocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZh
ciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0
dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJv
ciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKwor
ICAgIGlmICghaGFkRXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiAr
IHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0
aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVy
cm9yVHlwZS5uYW1lICsgIiwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAo
bWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBt
ZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKwor
dmFyIG5vQXJndW1lbnRzQXJyb3cgPSBhc3luYyAoKSA9PiBhd2FpdCBbLi4uYXJndW1lbnRzXTsK
K3Nob3VsZFRocm93QXN5bmMoKCkgPT4gbm9Bcmd1bWVudHNBcnJvdygxLCAyLCAzKSwgUmVmZXJl
bmNlRXJyb3IpOwordmFyIG5vQXJndW1lbnRzQXJyb3cyID0gYXN5bmMgKCkgPT4geyByZXR1cm4g
YXdhaXQgWy4uLmFyZ3VtZW50c107IH0KK3Nob3VsZFRocm93QXN5bmMoKCkgPT4gbm9Bcmd1bWVu
dHNBcnJvdzIoMSwgMiwgMyksIFJlZmVyZW5jZUVycm9yKTsKKworc2hvdWxkQmVBc3luYygiWzEs
MiwzXSIsICgpID0+IChmdW5jdGlvbigpIHsgcmV0dXJuIChhc3luYyAoKSA9PiBKU09OLnN0cmlu
Z2lmeShbLi4uYXJndW1lbnRzXSkpKCk7IH0pKDEsIDIsIDMpKTsKK3Nob3VsZEJlQXN5bmMoIls0
LDUsNl0iLCAoKSA9PiAoZnVuY3Rpb24oKSB7IHJldHVybiAoYXN5bmMgKCkgPT4geyByZXR1cm4g
SlNPTi5zdHJpbmdpZnkoWy4uLmF3YWl0IGFyZ3VtZW50c10pIH0pKCk7IH0pKDQsIDUsIDYpKTsK
KworKGZ1bmN0aW9uIHRlc3RBcmd1bWVudHNCaW5kaW5nKCkgeworICAgIHZhciBhcmdzQmluZGlu
ZzsKKyAgICB2YXIgcHJvbWlzZSA9IChmdW5jdGlvbigpIHsgYXJnc0JpbmRpbmcgPSBhcmd1bWVu
dHM7IHJldHVybiAoYXN5bmMoKSA9PiBhcmd1bWVudHMpKCkgfSkoMSwgMiwgMyk7CisgICAgc2hv
dWxkQmVBc3luYyhhcmdzQmluZGluZywgKCkgPT4gcHJvbWlzZSk7Cit9KSgpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtbmV3LnRhcmdl
dC1iaW5kaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGlj
YWwtbmV3LnRhcmdldC1iaW5kaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyNmEzOTgzZjdhOTI3NDBlZTQ3
OGMzZmY3YmI4MzBjNzg1YWU0MDkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9h
c3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1uZXcudGFyZ2V0LWJpbmRpbmcuanMKQEAgLTAs
MCArMSw1NSBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5D
VElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVu
Y3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKSB7CisgICAgaWYgKG1zZyA9PT0g
dm9pZCAwKQorICAgICAgICBtc2cgPSAiIjsKKyAgICBlbHNlCisgICAgICAgIG1zZyA9ICIgZm9y
ICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4s
IG1zZykgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAg
cnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7
IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAg
ICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOwor
fQorCitmdW5jdGlvbiBzaG91bGRUaHJvd0FzeW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7
CisgICAgbGV0IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50
aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAg
ZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7Cisg
ICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoIWhhZEVycm9yKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlw
ZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7CisgICAgaWYgKCEoYWN0dWFsIGluc3Rh
bmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsg
cnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCB0aHJldyAnIiAr
IGFjdHVhbCArICInIik7CisgICAgaWYgKG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBhY3R1YWwubWVz
c2FnZSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsg
cnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBhY3R1
YWwubWVzc2FnZSArICInIik7Cit9CisKK2Z1bmN0aW9uIEMxKCkgeworICAgIHJldHVybiBhc3lu
YyAoKSA9PiBhd2FpdCBuZXcudGFyZ2V0OworfQorCitmdW5jdGlvbiBDMigpIHsKKyAgICByZXR1
cm4gYXN5bmMgKCkgPT4geyByZXR1cm4gYXdhaXQgbmV3LnRhcmdldCB9OworfQorCitzaG91bGRC
ZUFzeW5jKEMxLCBuZXcgQzEoKSk7CitzaG91bGRCZUFzeW5jKHVuZGVmaW5lZCwgQzEoKSk7Citz
aG91bGRCZUFzeW5jKEMyLCBuZXcgQzIoKSk7CitzaG91bGRCZUFzeW5jKHVuZGVmaW5lZCwgQzIo
KSk7CisKK3Nob3VsZFRocm93QXN5bmMoYXN5bmMgKCkgPT4gYXdhaXQgbmV3LnRhcmdldCwgUmVm
ZXJlbmNlRXJyb3IpOworc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiB7IHJldHVybiBhd2Fp
dCBuZXcudGFyZ2V0OyB9LCBSZWZlcmVuY2VFcnJvcik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9hc3luYy1hcnJvdy1mdW5jdGlvbnMtbGV4aWNhbC1zdXBlci1iaW5kaW5nLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtc3VwZXItYmluZGluZy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wOGJmMGY5YWNlM2M3NWY3ZDhmN2ViY2IyMDNmNzM4ZGIzOWM5ZmRiCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxl
eGljYWwtc3VwZXItYmluZGluZy5qcwpAQCAtMCwwICsxLDU1IEBACisvLyBUaGlzIHRlc3QgcmVx
dWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0
IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBh
Y3R1YWwsIG1zZykgeworICAgIGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNnID0gIiI7
CisgICAgZWxzZQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cg
KyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rp
b24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOwor
ICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUp
IHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBo
YWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3Mo
KTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hv
dWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKworY2xhc3MgQmFzZUNsYXNzIHsKKyAg
ICBiYXNlQ2xhc3NWYWx1ZSgpIHsKKyAgICAgICAgcmV0dXJuICJCYXNlQ2xhc3NWYWx1ZSI7Cisg
ICAgfQorICAgIGdldCBwcm9wZXJ0eSgpIHsKKyAgICAgICAgcmV0dXJuICJ0ZXN0ISI7CisgICAg
fQorfQorCitjbGFzcyBDaGlsZENsYXNzIGV4dGVuZHMgQmFzZUNsYXNzIHsKKyAgICBhc3luY1N1
cGVyUHJvcCgpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jIHggPT4gc3VwZXIuYmFzZUNsYXNzVmFs
dWUoKTsKKyAgICB9CisgICAgYXN5bmNTdXBlclByb3AyKCkgeworICAgICAgICByZXR1cm4gYXN5
bmMgeCA9PiB7IHJldHVybiBzdXBlci5iYXNlQ2xhc3NWYWx1ZSgpOyB9CisgICAgfQorfQorCisv
LyBGSVhNRTogc3VwZXIgYmluZGluZ3MgaW4gYXN5bmMgYXJyb3cgZnVuY3Rpb25zIGFyZSBicm9r
ZW4KK3Nob3VsZEJlQXN5bmMoIkJhc2VDbGFzc1ZhbHVlIiwgbmV3IENoaWxkQ2xhc3MoKS5hc3lu
Y1N1cGVyUHJvcCgpKTsKK3Nob3VsZEJlQXN5bmMoIkJhc2VDbGFzc1ZhbHVlIiwgbmV3IENoaWxk
Q2xhc3MoKS5hc3luY1N1cGVyUHJvcDIoKSk7CisKK2NsYXNzIENoaWxkQ2xhc3MyIGV4dGVuZHMg
QmFzZUNsYXNzIHsKKyAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jIChz
ZWxmID0gc3VwZXIoKSkgPT4gc2VsZi5iYXNlQ2xhc3NWYWx1ZSgpICsgJyAnICsgc3VwZXIucHJv
cGVydHk7CisgICAgfQorfQorCitzaG91bGRCZUFzeW5jKCJCYXNlQ2xhc3NWYWx1ZSB0ZXN0ISIs
IG5ldyBDaGlsZENsYXNzMigpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWFy
cm93LWZ1bmN0aW9ucy1sZXhpY2FsLXRoaXMtYmluZGluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2Fz
eW5jLWFycm93LWZ1bmN0aW9ucy1sZXhpY2FsLXRoaXMtYmluZGluZy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MmFmYTExM2ZhOTEyNmMzZTE2N2ZhZTQxMWMzYTA0ZTg3YTExYjVhCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXJyb3ctZnVuY3Rpb25zLWxleGljYWwtdGhpcy1iaW5k
aW5nLmpzCkBAIC0wLDAgKzEsMzAgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMy
MDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8v
QCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZykgeworICAg
IGlmIChtc2cgPT09IHZvaWQgMCkKKyAgICAgICAgbXNnID0gIiI7CisgICAgZWxzZQorICAgICAg
ICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsg
Ii4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhl
eHBlY3RlZCwgcnVuLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9
IGZhbHNlOworICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7
IH0sCisgICAgICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFj
dHVhbCA9IGVycm9yOyB9KTsKKyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmIChoYWRF
cnJvcikKKyAgICAgICAgdGhyb3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFj
dHVhbCwgbXNnKTsKK30KKwordmFyIGQgPSAoeyB4IDogImJhciIsIHkgOiBmdW5jdGlvbigpIHsg
cmV0dXJuIGFzeW5jIHogPT4gdGhpcy54ICsgejsgfX0pLnkoKTsKK3ZhciBlID0geyB4IDogImJh
eiIsIHkgOiBkIH07CisKK3Nob3VsZEJlQXN5bmMoImJhcmxleSIsICgpID0+IGQoImxleSIpKTsK
K3Nob3VsZEJlQXN5bmMoImJhcmxleSIsICgpID0+IGUueSgibGV5IikpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtYmFzaWMuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3lu
Yy1hd2FpdC1iYXNpYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGYyMDY1MzY1M2VjYWNkN2YzZWRiNjNiYjMy
ZDExYjc0YTkyZDNmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdh
aXQtYmFzaWMuanMKQEAgLTAsMCArMSwyOTkgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFC
TEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGlt
ZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9
ICIiKSB7CisgICAgaWYgKG1zZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFs
dWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHJ1biwgbXNnKSB7CisgICAgbGV0
IGFjdHVhbDsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBydW4oKS50aGVuKGZ1bmN0
aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAgZnVuY3Rpb24o
ZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5N
aWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsK
KworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZFRocm93KHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGFjdHVhbDsKKyAg
ICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKworICAgIHRyeSB7CisgICAgICAgIGFjdHVhbCA9IHJ1
bigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgaGFkRXJyb3IgPSB0cnVlOworICAgICAg
ICBhY3R1YWwgPSBlOworICAgIH0KKworICAgIGlmICghaGFkRXJyb3IpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBl
Lm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5zdGFu
Y2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjZWQgIiArIHJ1
biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiICwgYnV0IHRocmV3ICciICsg
YWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5tZXNz
YWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBy
dW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFjdHVh
bC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3luYyhydW4sIGVy
cm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0g
ZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsg
fSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsgYWN0
dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworCisgICAgaWYgKCFoYWRF
cnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRv
IHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOworICAg
IGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUg
KyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOworICAgIGlmIChtZXNzYWdlICE9PSB2
b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywg
YnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOworfQorCitmdW5jdGlvbiBzaG91
bGRUaHJvd1N5bnRheEVycm9yKHN0ciwgbWVzc2FnZSkgeworICAgIHRyeSB7CisgICAgICAgIGV2
YWwoc3RyKTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBgIiArIHN0ciArICJg
IHRvIHRocm93IGEgU3ludGF4RXJyb3IsIGJ1dCBkaWQgbm90IHRocm93LiIpCisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBpZiAoZS5jb25zdHJ1Y3RvciAhPT0gU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGAiICsgc3RyICsgImAgdG8gdGhyb3cg
YSBTeW50YXhFcnJvciwgYnV0IHRocmV3ICciICsgZSArICInIik7CisgICAgICAgIGlmIChtZXNz
YWdlICE9PSB2b2lkIDAgJiYgZS5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZCBgIiArIHN0ciArICJgIHRvIHRocm93IFN5bnRheEVycm9y
OiAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgZSArICInIik7CisgICAgfQorfQor
CisvLyBEbyBub3QgaW5zdGFsbCBgQXN5bmNGdW5jdGlvbmAgY29uc3RydWN0b3Igb24gZ2xvYmFs
IG9iamVjdAorc2hvdWxkQmUodW5kZWZpbmVkLCB0aGlzLkFzeW5jRnVuY3Rpb24pOworbGV0IEFz
eW5jRnVuY3Rpb24gPSAoYXN5bmMgZnVuY3Rpb24oKSB7fSkuY29uc3RydWN0b3I7CisKKy8vIExl
dCBmdW5jdGlvblByb3RvdHlwZSBiZSB0aGUgaW50cmluc2ljIG9iamVjdCAlQXN5bmNGdW5jdGlv
blByb3RvdHlwZSUuCithc3luYyBmdW5jdGlvbiBhc3luY0Z1bmN0aW9uRm9yUHJvdG8oKSB7fQor
c2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZihh
c3luY0Z1bmN0aW9uRm9yUHJvdG8pKTsKK3Nob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBl
LCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYXN5bmMgZnVuY3Rpb24oKSB7fSkpOworc2hvdWxkQmUo
QXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZihhc3luYyAoKSA9
PiB7fSkpOworc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9iamVjdC5nZXRQcm90
b3R5cGVPZih7IGFzeW5jIG1ldGhvZCgpIHt9IH0ubWV0aG9kKSk7CisKKy8vIEZJWE1FOiBBc3lu
Y0Z1bmN0aW9uIGNvbnN0cnVjdG9yIHNob3VsZCBidWlsZCBmdW5jdGlvbnMgd2l0aCBjb3JyZWN0
IHByb3RvdHlwZS4KKy8vIHNob3VsZEJlKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBPYmplY3Qu
Z2V0UHJvdG90eXBlT2YoQXN5bmNGdW5jdGlvbigpKSk7CisKKy8vIEFzeW5jRnVuY3Rpb25DcmVh
dGUgZG9lcyBub3QgcHJvZHVjZSBhbiBvYmplY3Qgd2l0aCBhIFByb3RvdHlwZQorc2hvdWxkQmUo
dW5kZWZpbmVkLCBhc3luY0Z1bmN0aW9uRm9yUHJvdG8ucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZh
bHNlLCBhc3luY0Z1bmN0aW9uRm9yUHJvdG8uaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsK
K3Nob3VsZEJlKHVuZGVmaW5lZCwgKGFzeW5jIGZ1bmN0aW9uKCkge30pLnByb3RvdHlwZSk7Citz
aG91bGRCZShmYWxzZSwgKGFzeW5jIGZ1bmN0aW9uKCkge30pLmhhc093blByb3BlcnR5KCJwcm90
b3R5cGUiKSk7CitzaG91bGRCZSh1bmRlZmluZWQsIChhc3luYygpID0+IHt9KS5wcm90b3R5cGUp
Oworc2hvdWxkQmUoZmFsc2UsIChhc3luYygpID0+IHt9KS5oYXNPd25Qcm9wZXJ0eSgicHJvdG90
eXBlIikpOworc2hvdWxkQmUodW5kZWZpbmVkLCAoeyBhc3luYyBtZXRob2QoKSB7fSB9KS5tZXRo
b2QucHJvdG90eXBlKTsKK3Nob3VsZEJlKGZhbHNlLCAoeyBhc3luYyBtZXRob2QoKSB7fSB9KS5t
ZXRob2QuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKK3Nob3VsZEJlKHVuZGVmaW5lZCwg
QXN5bmNGdW5jdGlvbigpLnByb3RvdHlwZSk7CitzaG91bGRCZShmYWxzZSwgQXN5bmNGdW5jdGlv
bigpLmhhc093blByb3BlcnR5KCJwcm90b3R5cGUiKSk7CisKKy8vIEFzeW5jRnVuY3Rpb24ucHJv
dG90eXBlWyBAQHRvU3RyaW5nVGFnIF0KK3ZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5n
VGFnKTsKK3Nob3VsZEJlKCJBc3luY0Z1bmN0aW9uIiwgZGVzY3JpcHRvci52YWx1ZSk7CitzaG91
bGRCZShmYWxzZSwgZGVzY3JpcHRvci5lbnVtZXJhYmxlKTsKK3Nob3VsZEJlKGZhbHNlLCBkZXNj
cmlwdG9yLndyaXRhYmxlKTsKK3Nob3VsZEJlKHRydWUsIGRlc2NyaXB0b3IuY29uZmlndXJhYmxl
KTsKKworc2hvdWxkQmUoMSwgQXN5bmNGdW5jdGlvbi5sZW5ndGgpOworCisvLyBMZXQgRiBiZSAh
IEZ1bmN0aW9uQWxsb2NhdGUoZnVuY3Rpb25Qcm90b3R5cGUsIFN0cmljdCwgIm5vbi1jb25zdHJ1
Y3RvciIpCithc3luYyBmdW5jdGlvbiBhc3luY05vbkNvbnN0cnVjdG9yRGVjbCgpIHt9CitzaG91
bGRUaHJvdygoKSA9PiBuZXcgYXN5bmNOb25Db25zdHJ1Y3RvckRlY2woKSwgVHlwZUVycm9yKTsK
K3Nob3VsZFRocm93KCgpID0+IG5ldyAoYXN5bmMgZnVuY3Rpb24oKSB7fSksIFR5cGVFcnJvcik7
CitzaG91bGRUaHJvdygoKSA9PiBuZXcgKHsgYXN5bmMgbm9uQ29uc3RydWN0b3IoKSB7fSB9KS5u
b25Db25zdHJ1Y3RvcigpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3ICgoKSA9
PiAibm90IGEgY29uc3RydWN0b3IhIiksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBu
ZXcgKEFzeW5jRnVuY3Rpb24oKSksIFR5cGVFcnJvcik7CisKKy8vIE5vcm1hbCBjb21wbGV0aW9u
Cithc3luYyBmdW5jdGlvbiBhc3luY0RlY2woKSB7IHJldHVybiAidGVzdCI7IH0KK3Nob3VsZEJl
QXN5bmMoInRlc3QiLCBhc3luY0RlY2wpOworc2hvdWxkQmVBc3luYygidGVzdDIiLCBhc3luYyBm
dW5jdGlvbigpIHsgcmV0dXJuICJ0ZXN0MiI7IH0pOworc2hvdWxkQmVBc3luYygidGVzdDMiLCBh
c3luYyAoKSA9PiAidGVzdDMiKTsKK3Nob3VsZEJlQXN5bmMoInRlc3Q0IiwgKCkgPT4gKHsgYXN5
bmMgZigpIHsgcmV0dXJuICJ0ZXN0NCI7IH0gfSkuZigpKTsKKworY2xhc3MgTXlFcnJvciBleHRl
bmRzIEVycm9yIHt9OworCisvLyBUaHJvdyBjb21wbGV0aW9uCithc3luYyBmdW5jdGlvbiBhc3lu
Y0RlY2xUaHJvd2VyKGUpIHsgdGhyb3cgbmV3IE15RXJyb3IoZSk7IH0KK3Nob3VsZFRocm93QXN5
bmMoKCkgPT4gYXN5bmNEZWNsVGhyb3dlcigiYm9vbSEiKSwgTXlFcnJvciwgImJvb20hIik7Citz
aG91bGRUaHJvd0FzeW5jKCgpID0+IChhc3luYyBmdW5jdGlvbihlKSB7IHRocm93IG5ldyBNeUVy
cm9yKGUpOyB9KSgiYm9vbSEhISIpLCBNeUVycm9yLCAiYm9vbSEhISIpOworc2hvdWxkVGhyb3dB
c3luYygoKSA9PiAoYXN5bmMgZSA9PiB7IHRocm93IG5ldyBNeUVycm9yKGUpIH0pKCJib29tISEi
KSwgTXlFcnJvciwgImJvb20hISIpOworc2hvdWxkVGhyb3dBc3luYygoKSA9PiAoeyBhc3luYyB0
aHJvd2VyKGUpIHsgdGhyb3cgbmV3IE15RXJyb3IoZSk7IH0gfSkudGhyb3dlcigiYm9vbSEhISEi
KSwgTXlFcnJvciwgImJvb20hISEhIik7CisKK2Z1bmN0aW9uIHJlc29sdmVMYXRlcih2YWx1ZSkg
eyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKTsgfQorZnVuY3Rpb24gcmVqZWN0TGF0ZXIo
ZXJyb3IpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTsgfQorCisvLyBSZXN1bWUgYWZ0
ZXIgTm9ybWFsIGNvbXBsZXRpb24KK3ZhciBsb2cgPSBbXTsKK2FzeW5jIGZ1bmN0aW9uIHJlc3Vt
ZUFmdGVyTm9ybWFsKHZhbHVlKSB7CisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7Cisg
ICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgi
cmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUg
KyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVl
ICsgMTsKK30KKworc2hvdWxkQmVBc3luYyg0LCAoKSA9PiByZXN1bWVBZnRlck5vcm1hbCgxKSk7
CitzaG91bGRCZSgic3RhcnQ6MSByZXN1bWU6MiByZXN1bWU6MyIsIGxvZy5qb2luKCIgIikpOwor
Cit2YXIgTyA9IHsKKyAgICBhc3luYyByZXN1bWVBZnRlck5vcm1hbCh2YWx1ZSkgeworICAgICAg
ICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZXNv
bHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgdmFsdWUp
OworICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOworICAgICAg
ICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgICAgIHJldHVybiB2YWx1ZSArIDE7
CisgICAgfQorfTsKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYyg1LCAoKSA9PiBPLnJlc3VtZUFm
dGVyTm9ybWFsKDIpKTsKK3Nob3VsZEJlKCJzdGFydDoyIHJlc3VtZTozIHJlc3VtZTo0IiwgbG9n
LmpvaW4oIiAiKSk7CisKK3ZhciByZXN1bWVBZnRlck5vcm1hbEFycm93ID0gYXN5bmMgKHZhbHVl
KSA9PiB7CisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2Fp
dCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1
ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cu
cHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK307Citsb2cg
PSBbXTsKK3Nob3VsZEJlQXN5bmMoNiwgKCkgPT4gcmVzdW1lQWZ0ZXJOb3JtYWxBcnJvdygzKSk7
CitzaG91bGRCZSgic3RhcnQ6MyByZXN1bWU6NCByZXN1bWU6NSIsIGxvZy5qb2luKCIgIikpOwor
Cit2YXIgcmVzdW1lQWZ0ZXJOb3JtYWxFdmFsID0gQXN5bmNGdW5jdGlvbigidmFsdWUiLCBgCisg
ICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7CisgICAgdmFsdWUgPSBhd2FpdCByZXNvbHZl
TGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2YWx1ZSk7CisgICAg
dmFsdWUgPSBhd2FpdCByZXNvbHZlTGF0ZXIodmFsdWUgKyAxKTsKKyAgICBsb2cucHVzaCgicmVz
dW1lOiIgKyB2YWx1ZSk7CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK2ApOworbG9nID0gW107Citz
aG91bGRCZUFzeW5jKDcsICgpID0+IHJlc3VtZUFmdGVyTm9ybWFsRXZhbCg0KSk7CitzaG91bGRC
ZSgic3RhcnQ6NCByZXN1bWU6NSByZXN1bWU6NiIsIGxvZy5qb2luKCIgIikpOworCisvLyBSZXN1
bWUgYWZ0ZXIgVGhyb3cgY29tcGxldGlvbgorYXN5bmMgZnVuY3Rpb24gcmVzdW1lQWZ0ZXJUaHJv
dyh2YWx1ZSkgeworICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOworICAgIHRyeSB7Cisg
ICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHRyeSB7
CisgICAgICAgIHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgfQorICAgIHJl
dHVybiB2YWx1ZSArIDE7Cit9CisKK2xvZyA9IFtdOworc2hvdWxkQmVBc3luYygyLCAoKSA9PiBy
ZXN1bWVBZnRlclRocm93KDEpKTsKK3Nob3VsZEJlKCJzdGFydDoxIHJlc3VtZTp0aHJvdzEgcmVz
dW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOworCit2YXIgTyA9IHsKKyAgICBhc3luYyByZXN1
bWVBZnRlclRocm93KHZhbHVlKSB7CisgICAgICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUp
OworICAgICAgICB0cnkgeworICAgICAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigi
dGhyb3cxIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGxvZy5wdXNoKCJy
ZXN1bWU6IiArIGUpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB2YWx1
ZSA9IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzIiKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHZhbHVlICsgMTsKKyAgICB9Cit9Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoMywg
KCkgPT4gTy5yZXN1bWVBZnRlclRocm93KDIpKTsKK3Nob3VsZEJlKCJzdGFydDoyIHJlc3VtZTp0
aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOworCit2YXIgcmVzdW1lQWZ0ZXJU
aHJvd0Fycm93ID0gYXN5bmMgKHZhbHVlKSA9PiB7CisgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2
YWx1ZSk7CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhy
b3cxIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBl
KTsKKyAgICB9CisgICAgdHJ5IHsKKyAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigi
dGhyb3cyIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIg
KyBlKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlICsgMTsKK307Citsb2cgPSBbXTsKK3Nob3Vs
ZEJlQXN5bmMoNCwgKCkgPT4gcmVzdW1lQWZ0ZXJUaHJvd0Fycm93KDMpKTsKK3Nob3VsZEJlKCJz
dGFydDozIHJlc3VtZTp0aHJvdzEgcmVzdW1lOnRocm93MiIsIGxvZy5qb2luKCIgIikpOworCit2
YXIgcmVzdW1lQWZ0ZXJUaHJvd0V2YWwgPSBBc3luY0Z1bmN0aW9uKCJ2YWx1ZSIsIGAKKyAgICBs
b2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9IGF3
YWl0IHJlamVjdExhdGVyKCJ0aHJvdzEiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGxv
Zy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICB0cnkgeworICAgICAgICB2YWx1ZSA9
IGF3YWl0IHJlamVjdExhdGVyKCJ0aHJvdzIiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGxvZy5wdXNoKCJyZXN1bWU6IiArIGUpOworICAgIH0KKyAgICByZXR1cm4gdmFsdWUgKyAxOwor
YCk7Citsb2cgPSBbXTsKK3Nob3VsZEJlQXN5bmMoNSwgKCkgPT4gcmVzdW1lQWZ0ZXJUaHJvd0V2
YWwoNCkpOworc2hvdWxkQmUoInN0YXJ0OjQgcmVzdW1lOnRocm93MSByZXN1bWU6dGhyb3cyIiwg
bG9nLmpvaW4oIiAiKSk7CisKKy8vIE1ldGhvb2REZWZpbml0aW9uIFN5bnRheEVycm9ycworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgZm9vIDogdHJ1ZSB9OyIsICJV
bmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQg
bGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIGZvbyA9
IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMg
Zm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0g
eyBhc3luYyBmb28gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEg
cGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgb2JqID0geyBhc3luYyBmb28gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0
ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgMCA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tl
biAnOicuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAwID0gdHJ1ZSB9OyIsICJVbmV4
cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlz
dC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIDAgLCBiYXIg
fTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFy
Z3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3lu
YyAwIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9y
IGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7
IGFzeW5jICdmb28nIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQg
YSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2Vu
ICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jICdmb28nICwgYmFyIH07IiwgIlVu
ZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBs
aXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgJ2Zvbycg
fSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJn
dW1lbnQgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5
bmMgWydmb28nXSA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVkIGEg
cGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgb2JqID0geyBhc3luYyBbJ2ZvbyddID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2Vu
ICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIFsnZm9vJ10gLCBiYXIgfTsiLCAi
VW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50
IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBbJ2Zv
byddIH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9y
IGFyZ3VtZW50IGxpc3QuIik7CisKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBh
c3luYyBmb28gOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhbiBv
cGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBmb28gPSB0cnVlIH07IiwgIlVu
ZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3lu
YyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNs
YXNzIEMgeyBhc3luYyBmb28gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVj
dGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIGZvbyB9IiwgIlVu
ZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3lu
YyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
Y2xhc3MgQyB7IGFzeW5jIDAgOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBl
Y3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlz
dC4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAwID0gdHJ1ZSB9
OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3Jl
IGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJjbGFzcyBDIHsgYXN5bmMgMCAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4g
RXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVy
IGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgMCB9Iiwg
IlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBh
c3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiY2xhc3MgQyB7IGFzeW5jICdmb28nIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6
Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1l
dGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgJ2Zv
bycgPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5n
ICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAnZm9vJyAsIGJhciB9OyIsICJVbmV4cGVj
dGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0
aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBD
IHsgYXN5bmMgJ2ZvbycgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYW4gb3Bl
bmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CisKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyBbJ2ZvbyddIDogdHJ1ZSB9OyIs
ICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEg
YXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJjbGFzcyBDIHsgYXN5bmMgWydmb28nXSA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAn
PScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFt
ZXRlciBsaXN0LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsn
Zm9vJ10gLCBiYXIgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIG9wZW5p
bmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOworc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsnZm9vJ10gfSIsICJVbmV4cGVjdGVk
IHRva2VuICd9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9k
J3MgcGFyYW1ldGVyIGxpc3QuIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1h
d2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0
LW1vZHVsZS1yZXNlcnZlZC13b3JkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4YjI0ZmU3NjBiMGEzYWIyZDlm
ZjViMTVjMzQ3ZmNmNzFjMmY4MTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9h
c3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcwpAQCAtMCwwICsxLDcyIEBACisvLyBU
aGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBi
ZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRUaHJv
dyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAg
ICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBl
OworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOwor
fQorCitmdW5jdGlvbiBjaGVja01vZHVsZVN5bnRheEVycm9yKHNvdXJjZSwgZXJyb3JNZXNzYWdl
KSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4gY2hlY2tNb2R1bGVTeW50YXgoc291cmNlKSwgZXJy
b3JNZXNzYWdlKTsKK30KKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAordmFy
IGF3YWl0OworYCwgYFN5bnRheEVycm9yOiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxl
IG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoYAorZXhwb3J0
IHZhciBhd2FpdDsKK2AsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJp
YWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgCitsZXQgYXdhaXQ7CitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFz
IGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5
bnRheEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQgbGV0IGF3YWl0OworYCwgYFN5bnRheEVycm9y
OiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVs
ZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorY29uc3QgYXdhaXQg
PSAxCitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgCitleHBvcnQgY29uc3QgYXdhaXQgPSAxCitgLCBgU3ludGF4RXJyb3I6IENhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7CisK
K2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2Z1bmN0aW9uIGF3YWl0KCkge30K
K2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBp
biBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZnVu
Y3Rpb24qIGF3YWl0KCkge30KK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgZnVuY3Rp
b24gbmFtZWQgJ2F3YWl0JyBpbiBhIG1vZHVsZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJv
cihTdHJpbmcucmF3YAorYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fQorYCwgYFN5bnRheEVycm9y
OiBDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGEgbW9kdWxlLjoyYCk7
CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCB7YXdhaXR9IGZy
b20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBv
cnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJh
d2AKK2ltcG9ydCB7Zm9vIGFzIGF3YWl0fSBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBD
YW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVj
a01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgKiBhcyBhd2FpdCBmcm9tICdm
b28nOworYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQg
YmluZGluZyBuYW1lLjoyYCk7CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitp
bXBvcnQgYXdhaXQsIHt4LCB5LCB6fSBmcm9tICdmb28nOworYCwgYFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CitjaGVja01v
ZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgYXdhaXQsIHt4LCB5LCB6LH0gZnJv
bSAnZm9vJzsKK2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9y
dGVkIGJpbmRpbmcgbmFtZS46MmApOworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3
YAoraW1wb3J0IGF3YWl0IGZyb20gJ2Zvbyc7CitgLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2Ug
J2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKK2NoZWNrTW9kdWxlU3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCBhd2FpdCwgKiBhcyBmb28gZnJvbSAnZm9vJzsK
K2AsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRp
bmcgbmFtZS46MmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW96
aWxsYS5qcyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGM1ZDZiOTJkM2U2MWU0OTgzOWUwNmNkMWQ0ZTFiNTgwM2U3OGEwYgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanMKQEAgLTAsMCArMSwz
MDUgQEAKKy8qIFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBv
ZiB0aGUgTW96aWxsYSBQdWJsaWMKKyAqIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRo
ZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAqIGZpbGUsIFlvdSBjYW4gb2J0
YWluIG9uZSBhdCBodHRwOi8vbW96Lm9yZy9NUEwvMi4wLy4gKi8KKworLy8gVGhpcyB0ZXN0IHJl
cXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5DVElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBh
dCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFj
dHVhbCwgbXNnID0gIiIpIHsKKyAgICBpZiAobXNnKQorICAgICAgICBtc2cgPSAiIGZvciAiICsg
bXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4
cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cp
IHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHJ1bigp
LnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAg
ICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsK
KyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93
IGFjdHVhbDsKKyAgICBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCitmdW5j
dGlvbiBzaG91bGRUaHJvdyhydW4sIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1
YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgYWN0dWFs
ID0gcnVuKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBoYWRFcnJvciA9IHRydWU7Cisg
ICAgICAgIGFjdHVhbCA9IGU7CisgICAgfQorICAgIGlmICghaGFkRXJyb3IpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JU
eXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAgICBpZiAoIShhY3R1YWwgaW5z
dGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjZWQgIiAr
IHJ1biArICIoKSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiICwgYnV0IHRocmV3ICci
ICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYmIGFjdHVhbC5t
ZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIg
KyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJldyAnIiArIGFj
dHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dBc3luYyhydW4s
IGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9y
ID0gZmFsc2U7CisgICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1
ZTsgfSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9yID0gdHJ1ZTsg
YWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygpOworICAgIGlmICghaGFk
RXJyb3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0
byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKKyAg
ICBpZiAoIShhY3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1l
ICsgIiwgYnV0IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsKKyAgICBpZiAobWVzc2FnZSAhPT0g
dm9pZCAwICYmIGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIics
IGJ1dCB0aHJldyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKK30KKworZnVuY3Rpb24gYXNz
ZXJ0KGNvbmQsIG1zZyA9ICIiKSB7CisgICAgaWYgKCFjb25kKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IobXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dTeW50YXhFcnJvcihzdHIsIG1l
c3NhZ2UpIHsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBl
dmFsKHN0cik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN5
bnRheEVycm9yKSB7CisgICAgICAgICAgICBoYWRFcnJvciA9IHRydWU7CisgICAgICAgICAgICBp
ZiAodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgICAgIGFzc2VydChl
Lm1lc3NhZ2UgPT09IG1lc3NhZ2UsICJFeHBlY3RlZCAnIiArIG1lc3NhZ2UgKyAiJyBidXQgdGhy
ZXcgJyIgKyBlLm1lc3NhZ2UgKyAiJyIpOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydCho
YWRFcnJvciwgIkRpZCBub3QgdGhyb3cgc3ludGF4IGVycm9yIik7Cit9CisKKy8vIHNlbWFudGlj
cy5qcworKGZ1bmN0aW9uIG1velNlbWFudGljcygpIHsKKworYXN5bmMgZnVuY3Rpb24gZW1wdHko
KSB7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHNpbXBsZVJldHVybigpIHsKKyAgICByZXR1cm4gMTsK
K30KKworYXN5bmMgZnVuY3Rpb24gc2ltcGxlQXdhaXQoKSB7CisgICAgdmFyIHJlc3VsdCA9IGF3
YWl0IDI7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYXN5bmMgZnVuY3Rpb24gc2ltcGxlQXdh
aXRBc3luYygpIHsKKyAgICB2YXIgcmVzdWx0ID0gYXdhaXQgc2ltcGxlUmV0dXJuKCk7CisgICAg
cmV0dXJuIDIgKyByZXN1bHQ7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJldHVybk90aGVyQXN5bmMo
KSB7CisgICAgcmV0dXJuIDEgKyBhd2FpdCBzaW1wbGVBd2FpdEFzeW5jKCk7Cit9CisKK2FzeW5j
IGZ1bmN0aW9uIHNpbXBsZVRocm93ZXIoKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCk7Cit9CisK
K2FzeW5jIGZ1bmN0aW9uIGRlbGVnYXRlZFRocm93ZXIoKSB7CisgICAgdmFyIHZhbCA9IGF3YWl0
IHNpbXBsZVRocm93ZXIoKTsKKyAgICByZXR1cm4gdmFsOworfQorCithc3luYyBmdW5jdGlvbiB0
cnlDYXRjaCgpIHsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBkZWxlZ2F0ZWRUaHJvd2VyKCk7
CisgICAgICAgIHJldHVybiAnRkFJTEVEJzsKKyAgICB9IGNhdGNoIChfKSB7CisgICAgICAgIHJl
dHVybiA1OworICAgIH0KK30KKworYXN5bmMgZnVuY3Rpb24gdHJ5Q2F0Y2hUaHJvdygpIHsKKyAg
ICB0cnkgeworICAgICAgICBhd2FpdCBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgICAgIHJldHVy
biAnRkFJTEVEJzsKKyAgICB9IGNhdGNoIChfKSB7CisgICAgICAgIHJldHVybiBkZWxlZ2F0ZWRU
aHJvd2VyKCk7CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiB3ZWxsRmluYWxseSgpIHsKKyAg
ICB0cnkgeworICAgICAgICBhd2FpdCBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgfSBjYXRjaCAo
XykgeworICAgICAgICByZXR1cm4gJ0ZBSUxFRCc7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAg
cmV0dXJuIDY7CisgICAgfQorfQorCithc3luYyBmdW5jdGlvbiBmaW5hbGx5TWF5RmFpbCgpIHsK
KyAgICB0cnkgeworICAgICAgICBhd2FpdCBkZWxlZ2F0ZWRUaHJvd2VyKCk7CisgICAgfSBjYXRj
aCAoXykgeworICAgICAgICByZXR1cm4gNTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICByZXR1
cm4gZGVsZWdhdGVkVGhyb3dlcigpOworICAgIH0KK30KKworYXN5bmMgZnVuY3Rpb24gZW1iZWRk
ZWQoKSB7CisgICAgYXN5bmMgZnVuY3Rpb24gaW5uZXIoKSB7CisgICAgICAgIHJldHVybiA3Owor
ICAgIH0KKyAgICByZXR1cm4gYXdhaXQgaW5uZXIoKTsKK30KKworLy8gcmVjdXJzaW9uLCBpdCB3
b3JrcyEKK2FzeW5jIGZ1bmN0aW9uIGZpYihuKSB7CisgICAgcmV0dXJuIChuID09IDAgfHwgbiA9
PSAxKSA/IG4gOiBhd2FpdCBmaWIobiAtIDEpICsgYXdhaXQgZmliKG4gLSAyKTsKK30KKworLy8g
bXV0dWFsIHJlY3Vyc2lvbgorYXN5bmMgZnVuY3Rpb24gaXNPZGQobikgeworICAgIGFzeW5jIGZ1
bmN0aW9uIGlzRXZlbihuKSB7CisgICAgICAgIHJldHVybiBuID09PSAwIHx8IGF3YWl0IGlzT2Rk
KG4gLSAxKTsKKyAgICB9CisgICAgcmV0dXJuIG4gIT09IDAgJiYgYXdhaXQgaXNFdmVuKG4gLSAx
KTsKK30KKworLy8gcmVjdXJzaW9uLCB0YWtlIHRocmVlIQordmFyIGhhcmRjb3JlRmliID0gYXN5
bmMgZnVuY3Rpb24gZmliMihuKSB7CisgICAgcmV0dXJuIChuID09IDAgfHwgbiA9PSAxKSA/IG4g
OiBhd2FpdCBmaWIyKG4gLSAxKSArIGF3YWl0IGZpYjIobiAtIDIpOworfQorCit2YXIgYXN5bmNF
eHByID0gYXN5bmMgZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIDEwOworfQorCit2YXIgbmFtZWRB
c3luY0V4cHIgPSBhc3luYyBmdW5jdGlvbiBzaW1wbGUoKSB7CisgICAgcmV0dXJuIDExOworfQor
Cithc3luYyBmdW5jdGlvbiBleGVjdXRpb25PcmRlcigpIHsKKyAgICB2YXIgdmFsdWUgPSAwOwor
ICAgIGFzeW5jIGZ1bmN0aW9uIGZpcnN0KCkgeworICAgICAgICByZXR1cm4gKHZhbHVlID0gdmFs
dWUgPT09IDAgPyAxIDogdmFsdWUpOworICAgIH0KKyAgICBhc3luYyBmdW5jdGlvbiBzZWNvbmQo
KSB7CisgICAgICAgIHJldHVybiAodmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDIgOiB2YWx1ZSk7Cisg
ICAgfQorICAgIGFzeW5jIGZ1bmN0aW9uIHRoaXJkKCkgeworICAgICAgICByZXR1cm4gKHZhbHVl
ID0gdmFsdWUgPT09IDAgPyAzIDogdmFsdWUpOworICAgIH0KKyAgICByZXR1cm4gYXdhaXQgZmly
c3QoKSArIGF3YWl0IHNlY29uZCgpICsgYXdhaXQgdGhpcmQoKSArIDY7Cit9CisKK2FzeW5jIGZ1
bmN0aW9uIG1pc2NlbGxhbmVvdXMoKSB7CisgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMg
JiYKKyAgICAgICAgYXJndW1lbnRzLmNhbGxlZS5uYW1lID09PSAibWlzY2VsbGFuZW91cyIpCisg
ICAgICAgIHJldHVybiAxNDsKK30KKworZnVuY3Rpb24gdGhyb3dlcigpIHsKKyAgICB0aHJvdyAx
NTsKK30KKworYXN5bmMgZnVuY3Rpb24gZGVmYXVsdEFyZ3MoYXJnID0gdGhyb3dlcigpKSB7Cit9
CisKKy8vIEFzeW5jIGZ1bmN0aW9ucyBhcmUgbm90IGNvbnN0cnVjdGlibGUKK3Nob3VsZFRocm93
KCgpID0+IHsKKyAgICBhc3luYyBmdW5jdGlvbiBQZXJzb24oKSB7CisgICAgfQorICAgIG5ldyBQ
ZXJzb24oKTsKK30sIFR5cGVFcnJvcik7CisKK3Nob3VsZEJlQXN5bmModW5kZWZpbmVkLCBlbXB0
eSk7CitzaG91bGRCZUFzeW5jKDEsIHNpbXBsZVJldHVybik7CitzaG91bGRCZUFzeW5jKDIsIHNp
bXBsZUF3YWl0KTsKK3Nob3VsZEJlQXN5bmMoMywgc2ltcGxlQXdhaXRBc3luYyk7CitzaG91bGRC
ZUFzeW5jKDQsIHJldHVybk90aGVyQXN5bmMpOworc2hvdWxkVGhyb3dBc3luYyhzaW1wbGVUaHJv
d2VyLCBFcnJvcik7CitzaG91bGRCZUFzeW5jKDUsIHRyeUNhdGNoKTsKK3Nob3VsZEJlQXN5bmMo
Niwgd2VsbEZpbmFsbHkpOworc2hvdWxkVGhyb3dBc3luYyhmaW5hbGx5TWF5RmFpbCwgRXJyb3Ip
Oworc2hvdWxkQmVBc3luYyg3LCBlbWJlZGRlZCk7CitzaG91bGRCZUFzeW5jKDgsICgpID0+IGZp
Yig2KSk7CitzaG91bGRCZUFzeW5jKDksIGV4ZWN1dGlvbk9yZGVyKTsKK3Nob3VsZEJlQXN5bmMo
MTAsIGFzeW5jRXhwcik7CitzaG91bGRCZUFzeW5jKDExLCBuYW1lZEFzeW5jRXhwcik7CitzaG91
bGRCZUFzeW5jKDEyLCAoKSA9PiBpc09kZCgxMikudGhlbih2ID0+IHYgPyAib29wcyIgOiAxMikp
Oworc2hvdWxkQmVBc3luYygxMywgKCkgPT4gaGFyZGNvcmVGaWIoNykpOworc2hvdWxkQmVBc3lu
YygxNCwgKCkgPT4gbWlzY2VsbGFuZW91cygxLCAyLCAzKSk7CitzaG91bGRCZUFzeW5jKDE1LCAo
KSA9PiBkZWZhdWx0QXJncygpLmNhdGNoKGUgPT4gZSkpOworCit9KSgpOworCisvLyBtZXRob2Rz
LmpzCisoZnVuY3Rpb24gbW96TWV0aG9kcygpIHsKKworY2xhc3MgWCB7CisgICAgY29uc3RydWN0
b3IoKSB7CisgICAgICAgIHRoaXMudmFsdWUgPSA0MjsKKyAgICB9CisgICAgYXN5bmMgZ2V0VmFs
dWUoKSB7CisgICAgICAgIHJldHVybiB0aGlzLnZhbHVlOworICAgIH0KKyAgICBzZXRWYWx1ZSh2
YWx1ZSkgeworICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CisgICAgfQorICAgIGFzeW5jIGlu
Y3JlbWVudCgpIHsKKyAgICAgICAgdmFyIHZhbHVlID0gYXdhaXQgdGhpcy5nZXRWYWx1ZSgpOwor
ICAgICAgICB0aGlzLnNldFZhbHVlKHZhbHVlICsgMSk7CisgICAgICAgIHJldHVybiB0aGlzLmdl
dFZhbHVlKCk7CisgICAgfQorICAgIGFzeW5jIGdldEJhc2VDbGFzc05hbWUoKSB7CisgICAgICAg
IHJldHVybiAnWCc7CisgICAgfQorICAgIHN0YXRpYyBhc3luYyBnZXRTdGF0aWNWYWx1ZSgpIHsK
KyAgICAgICAgcmV0dXJuIDQ0OworICAgIH0KK30KKworY2xhc3MgWSBleHRlbmRzIFggeworICAg
IGFzeW5jIGdldEJhc2VDbGFzc05hbWUoKSB7CisgICAgICAgIHJldHVybiBzdXBlci5nZXRCYXNl
Q2xhc3NOYW1lKCk7CisgICAgfQorfQorCit2YXIgb2JqTGl0ZXJhbCA9IHsKKyAgICBhc3luYyBn
ZXQoKSB7CisgICAgICAgIHJldHVybiA0NTsKKyAgICB9LAorICAgIHNvbWVTdHVmZjogNQorfTsK
KwordmFyIHggPSBuZXcgWCgpOwordmFyIHkgPSBuZXcgWSgpOworCitzaG91bGRCZUFzeW5jKDQy
LCAoKSA9PiB4LmdldFZhbHVlKCkpOworc2hvdWxkQmVBc3luYyg0MywgKCkgPT4geC5pbmNyZW1l
bnQoKSk7CitzaG91bGRCZUFzeW5jKDQ0LCAoKSA9PiBYLmdldFN0YXRpY1ZhbHVlKCkpOworc2hv
dWxkQmVBc3luYyg0NSwgKCkgPT4gb2JqTGl0ZXJhbC5nZXQoKSk7CitzaG91bGRCZUFzeW5jKCdY
JywgKCkgPT4geS5nZXRCYXNlQ2xhc3NOYW1lKCkpOworCit9KSgpOworCisoZnVuY3Rpb24gbW96
RnVuY3Rpb25OYW1lSW5mZXJyZW5jZSgpIHsKKworYXN5bmMgZnVuY3Rpb24gdGVzdCgpIHsgfQor
Cit2YXIgYW5vbiA9IGFzeW5jIGZ1bmN0aW9uKCkgeyB9CisKK3Nob3VsZEJlKCJ0ZXN0IiwgdGVz
dC5uYW1lKTsKK3Nob3VsZEJlKCJhbm9uIiwgYW5vbi5uYW1lKTsKKworfSkoKTsKKworKGZ1bmN0
aW9uIG1velN5bnRheEVycm9ycygpIHsKKworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiJ3VzZSBz
dHJpY3QnOyBhc3luYyBmdW5jdGlvbiBldmFsKCkge30iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoIid1c2Ugc3RyaWN0JzsgYXN5bmMgZnVuY3Rpb24gYXJndW1lbnRzKCkge30iKTsKK3Nob3Vs
ZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGEoayA9IHN1cGVyLnByb3ApIHsgfSIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gYSgpIHsgc3VwZXIucHJv
cCgpOyB9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBhKCkgeyBz
dXBlcigpOyB9Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBhKGsg
PSBhd2FpdCAzKSB7fSIpOworCit9KSgpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdvcmQuanMgYi9K
U1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4
ZTFkMzMyMWM3ZjgwMDg3YmVkZjBmMTU3MjFiMjk1YjgxZWVmYjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzCkBAIC0wLDAgKzEs
MTY2IEBACisvLyBUaGlzIHRlc3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9O
X1NZTlRBWCB0byBiZSBlbmFibGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlv
biBhc3NlcnQoY29uZCwgbXNnID0gIiIpIHsKKyAgICBpZiAoIWNvbmQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihtc2cpOworfQorbm9JbmxpbmUoYXNzZXJ0KTsKKworZnVuY3Rpb24gc2hvdWxk
VGhyb3dTeW50YXhFcnJvcihzdHIsIG1lc3NhZ2UpIHsKKyAgICB2YXIgaGFkRXJyb3IgPSBmYWxz
ZTsKKyAgICB0cnkgeworICAgICAgICBldmFsKHN0cik7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBpZiAoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7CisgICAgICAgICAgICBoYWRFcnJv
ciA9IHRydWU7CisgICAgICAgICAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICJzdHJpbmciKQor
ICAgICAgICAgICAgICAgIGFzc2VydChlLm1lc3NhZ2UgPT09IG1lc3NhZ2UsICJFeHBlY3RlZCAn
IiArIG1lc3NhZ2UgKyAiJyBidXQgdGhyZXcgJyIgKyBlLm1lc3NhZ2UgKyAiJyIpOworICAgICAg
ICB9CisgICAgfQorICAgIGFzc2VydChoYWRFcnJvciwgIkRpZCBub3QgdGhyb3cgc3ludGF4IGVy
cm9yIik7Cit9Citub0lubGluZShzaG91bGRUaHJvd1N5bnRheEVycm9yKTsKKwordmFyIEFzeW5j
RnVuY3Rpb24gPSAoYXN5bmMgZnVuY3Rpb24oKSB7fSkuY29uc3RydWN0b3I7CisKKy8vIEFzeW5j
RnVuY3Rpb25FeHByZXNzaW9uCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rp
b24oKSB7IHZhciBhd2FpdDsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFz
eW5jIGZ1bmN0aW9uKCkgeyB2YXIgW2F3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciBbLi4uYXdhaXRdID0gW107IH0p
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFy
IHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5j
IGZ1bmN0aW9uKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciB7aXNBc3luYzogYXdh
aXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5j
dGlvbigpIHsgbGV0IGF3YWl0OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCBb
Li4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQge2F3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkg
eyBjb25zdCBhd2FpdDsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IFsu
Li5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IHthd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IHtp
c0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsg
fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rp
b24oKSB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSkiLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24g
bmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fSB9KSIs
ICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKGF3YWl0KSB7
fSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKFth
d2FpdF0pIHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0
aW9uIGYoWy4uLmF3YWl0XSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVy
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCIo
YXN5bmMgZnVuY3Rpb24gZiguLi5hd2FpdCkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
cGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCIoYXN5bmMgZnVuY3Rpb24gZih7YXdhaXR9KSB7fSkiLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKHtpc0FzeW5jOiBhd2FpdH0pIHt9KSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworCisvLyBBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24KK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIgW2F3YWl0XSA9IFtdOyB9
KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2
YXIgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJh
c3luYyBmdW5jdGlvbiBmKCkgeyB2YXIge2F3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0
fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlv
biBmKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQgYXdhaXQ7IH0iLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQg
W2F3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
YXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IFsuLi5hd2FpdF0gPSBbXTsgfSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCB7YXdh
aXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3lu
YyBmdW5jdGlvbiBmKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgbGV0IHtp
c0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4
RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGNvbnN0IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3QgW2F3
YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZigpIHsgY29uc3QgWy4uLmF3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3Qge2F3
YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5
bmMgZnVuY3Rpb24gZigpIHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29u
c3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9Iiwg
IkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBhc3lu
YyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQg
J2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
ImFzeW5jIGZ1bmN0aW9uIGYoYXdhaXQpIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFy
YW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJhc3luYyBmdW5jdGlvbiBmKFthd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKFsuLi5hd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKC4uLmF3YWl0KSB7fSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZih7YXdhaXR9KSB7fSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZih7aXNBc3lu
YzogYXdhaXR9KSB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworCisvLyBBc3luY0Fycm93RnVuY3Rpb24KK3Nob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIgYXdhaXQ7IH0iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Oworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciBbYXdh
aXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5
bmMgKCkgPT4geyB2YXIgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgdmFyIHthd2FpdH0gPSB7fTsgfSkiLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciB7
aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBmID0gYXN5bmMgKCkgPT4geyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IGF3
YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBh
c3luYyAoKSA9PiB7IGxldCBbYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IFsuLi5hd2FpdF0gPSBb
XTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5
bmMgKCkgPT4geyBsZXQge2F3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCB7aXNBc3luYzogYXdhaXR9
ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9
IGFzeW5jICgpID0+IHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCBh
d2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0g
YXN5bmMgKCkgPT4geyBjb25zdCBbYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3QgWy4uLmF3YWl0
XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYg
PSBhc3luYyAoKSA9PiB7IGNvbnN0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3No
b3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCB7aXNBc3lu
YzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9Iiwg
IkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9
PiB7IGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1l
ZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGFzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJD
YW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoYXdhaXQpID0+IHt9
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jIChbYXdhaXRd
KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFz
eW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAo
Wy4uLmF3YWl0XSkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBm
ID0gYXN5bmMgKC4uLmF3YWl0KSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFt
ZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIGYgPSBhc3luYyAoe2F3YWl0fSkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBmID0gYXN5bmMgKHtpc0FzeW5jOiBhd2FpdH0pID0+IHt9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jIGF3YWl0ID0+IHt9IiwgIkNh
bid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24u
Iik7CisKKy8vIEFzeW5jTWV0aG9kCitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsg
YXN5bmMgZigpIHsgdmFyIGF3YWl0OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJp
YWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciBbYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIFsuLi5hd2Fp
dF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBh
c3luYyBmKCkgeyB2YXIge2F3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307
IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigp
IHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQgYXdhaXQ7IH0gfSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQg
W2F3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9y
KCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IFsuLi5hd2FpdF0gPSBbXTsgfSB9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxl
dCB7YXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0i
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMg
ZigpIHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGNvbnN0IGF3YWl0OyB9
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5
bmMgZigpIHsgY29uc3QgW2F3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3QgWy4uLmF3YWl0XSA9
IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9
IHsgYXN5bmMgZigpIHsgY29uc3Qge2F3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Citz
aG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3Qge2lzQXN5
bmM6IGF3YWl0fSA9IHt9OyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5
bmMgZigpIHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9u
IG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fSB9
IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKGF3
YWl0KSB7fSB9ICIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFz
eW5jIGYoW2F3YWl0XSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBP
ID0geyBhc3luYyBmKFsuLi5hd2FpdF0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFy
YW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgTyA9IHsgYXN5bmMgZiguLi5hd2FpdCkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKHthd2FpdH0pIHt9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZih7aXNBc3luYzogYXdhaXR9KSB7
fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOworCisvLyBBc3luY0Z1bmN0aW9uIGNvbnN0cnVjdG9yCitzaG91bGRUaHJvd1N5
bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIgYXdhaXQ7JykiLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbigndmFyIFthd2FpdF0gPSBbXTsnKSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIgWy4uLmF3YWl0XSA9
IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3Zh
ciB7YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNG
dW5jdGlvbigndmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9Oycp
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCBhd2Fp
dDsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rp
b24oJ2xldCBbYXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2Fs
IHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQgWy4uLmF3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignbGV0IHthd2FpdH0g
PSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVu
Y3Rpb24oJ2xldCB7aXNBc3luYzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdsZXQge2lzQXN5bmM6IGF3YWl0fSA9
IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGlu
IGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5j
dGlvbignY29uc3QgYXdhaXQ7JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCBbYXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCBbLi4uYXdhaXRd
ID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1
bmN0aW9uKCdjb25zdCB7YXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJv
d1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307
JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9u
KCdjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91bGRU
aHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdmdW5jdGlvbiBhd2FpdCgpIHt9JykiLCAi
Q2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2FzeW5jIGZ1bmN0
aW9uIGF3YWl0KCkge30nKSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQn
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOworc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNG
dW5jdGlvbignYXdhaXQnLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJyb3IoIkFz
eW5jRnVuY3Rpb24oJ1thd2FpdF0nLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJh
bWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93U3ludGF4RXJy
b3IoIkFzeW5jRnVuY3Rpb24oJ1suLi5hd2FpdF0nLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKK3Nob3VsZFRocm93
U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJy4uLmF3YWl0JywgJycpIiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7CitzaG91
bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd7YXdhaXR9JywgJycpIiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
CitzaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd7aXNBc3luYzogYXdhaXR9
JywgJycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5
bmMgZnVuY3Rpb24uIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>293170</attachid>
            <date>2016-10-28 10:09:30 -0700</date>
            <delta_ts>2016-10-28 10:27:25 -0700</delta_ts>
            <desc>broken patch meant for https://bugs.webkit.org/show_bug.cgi?id=164037</desc>
            <filename>bug-163760-20161028130539.patch</filename>
            <type>text/plain</type>
            <size>63504</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4MDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTdiYmVkMGY1NTUyNGE3NjQ4OGViYzc3YjA4MGNjMDJjMWM2OTUzLi4xMDgyYmU5YWFkNjczODMy
MmFiZmE5NzJjNDA5YjUwZDVjNzc0NGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAxNi0xMC0yOCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtKU0NdIEhhbmRsZSBuZXdfYXN5bmNfZnVuYyAvIG5ld19hc3luY19mdW5j
X2V4cCBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2NDAzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBuZXdfYXN5bmNfZnVuYyAvIG5ld19hc3lu
Y19mdW5jX2V4cCBpbnRvIERGRyBhbmQgRlRMLAorICAgICAgICBpbiBtdWNoIHRoZSBzYW1lIGNh
cGFjaXR5IHRoYXQgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE5NDIxNiBhZGRl
ZAorICAgICAgICBERkcgLyBGVEwgc3VwcG9ydCBmb3IgZ2VuZXJhdG9yczogYnkgYWRkaW5nIG5l
dyBERkcgbm9kZXMgKE5ld0FzeW5jRnVuY3Rpb24gYW5kCisgICAgICAgIFBoYW50b21OZXdBc3lu
Y0Z1bmN0aW9uKSwgcmF0aGVyIHRoYW4gZXh0ZW5kaW5nIHRoZSBleGlzdGluZyBOZXdGdW5jdGlv
biBub2RlIHR5cGUuCisKKyAgICAgICAgTGlrZSBOZXdGdW5jdGlvbiBhbmQgUGhhbnRvbU5ld0Z1
bmN0aW9uLCBhbmQgdGhlIEdlbmVyYXRvciB2YXJpYW50cywgYWxsb2NhdGlvbiBvZgorICAgICAg
ICBhc3luYyB3cmFwcGVyIGZ1bmN0aW9ucyBtYXkgYmUgZGVmZXJyZWQgb3IgZWxpbWluYXRlZCBk
dXJpbmcgdGhlIGFsbG9jYXRpb24gc2lua2luZworICAgICAgICBwaGFzZS4KKworICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEdlbmVyYXRvckZpZWxkcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNz
aW9uQ29tbW9uKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFi
aWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBk
ZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpm
aXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcv
REZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1BoYW50b21OZXdG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvUGhhbnRvbU5ld0Fz
eW5jRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0NlbGxPcGVyYW5kKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppc0Z1bmN0aW9uQWxsb2NhdGlvbik6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aXNQaGFudG9tRnVuY3Rpb25BbGxvY2F0aW9uKToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjppc1BoYW50b21BbGxvY2F0aW9uKToKKyAgICAgICAgKiBkZmcvREZH
Tm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZH
VmFsaWRhdGUuY3BwOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdGdW5jdGlv
bik6CisgICAgICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
Om9wZXJhdGlvblBvcHVsYXRlT2JqZWN0SW5PU1IpOgorICAgICAgICAoSlNDOjpGVEw6Om9wZXJh
dGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19hc3luY19mdW5jKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX25ld19hc3luY19mdW5jX2V4cCk6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjo6aGFzRGVjbGFyZWRQYXJhbWV0ZXIpOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAoSlNDOjppc0dlbmVyYXRvck9yQXN5bmNGdW5j
dGlvbkJvZHlQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc0dlbmVyYXRvck9yQXN5bmNGdW5j
dGlvbldyYXBwZXJQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc0Fycm93RnVuY3Rpb25QYXJz
ZU1vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpmdW5jdGlvblByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0
aW9uU3RydWN0dXJlQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6YXN5bmNGdW5jdGlvblByb3RvdHlwZUNvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0Ojphc3luY0Z1bmN0aW9uU3RydWN0dXJlKToKKwogMjAxNi0xMC0yMCAgQ2Fp
dGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIGltcGxlbWVu
dCBydW50aW1lIGZvciBhc3luYyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZjc5OTk5MGIxYzM3NTg2MTE5YzQ0ZmRmZTgxZDhl
YTc1NWZjODVkOS4uN2QwMmE0MzVmZDEzYjUyNDBjNmY5MDIwZmY1ODNlYjVhNTNjODAwNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE0NzIs
NiArMTQ3MiwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICVzLCBmJWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKHIxKS5kYXRhKCksIGYwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cisg
ICAgICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgZjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19hc3luY19mdW5j
Iik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShy
MCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6IHsKICAgICAgICAg
ICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIxID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CkBAIC0xNDk2LDYgKzE1MDQsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0
ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19hc3luY19mdW5jX2V4
cDogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAibmV3X2FzeW5jX2Z1bmNfZXhwIik7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJXMsIGYlZCIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUo
cjEpLmRhdGEoKSwgZjApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9zZXRfZnVuY3Rpb25fbmFtZTogewogICAgICAgICAgICAgaW50IGZ1bmNSZWcgPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBuYW1lUmVnID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGQxNDk1NTE4NjM0ZjdlMWE2ODc3NTViODlhYmU3
NGY2Mzc5NTgwNmEuLmZlOWM0N2ViNjI0Y2MzYzExODM4MjBmYWJmYWUyY2Q4Y2NjNjJmMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC0yNzE4LDYgKzI3MTgsMjEgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0RnVuY3Rpb24pCiAg
ICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygp
LmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZW1pdExvYWQobnVs
bHB0ciwganNOdWxsKCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0KTsKIH0KIAordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEdlbmVyYXRvckZpZWxkcyhSZWdpc3RlcklEKiBuZXh0
RnVuY3Rpb24pCit7CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBjcmVhdGUgYW4g
b2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRzIHByb3BlcnRp
ZXMgZm9yIGVhc2UuCisgICAgLy8gQnV0IHRvIG1ha2UgaXQgZWZmaWNpZW50LCB3ZSB3aWxsIGlu
dHJvZHVjZSBKU0dlbmVyYXRvciBjbGFzcywgYWRkIG9wY29kZSBuZXdfZ2VuZXJhdG9yIGFuZCB1
c2UgaXRzIEMrKyBmaWVsZHMgaW5zdGVhZCBvZiB0aGVzZSBwcml2YXRlIHByb3BlcnRpZXMuCisg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQorCisg
ICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygp
LmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvck5leHRQcml2YXRlTmFtZSgpLCBuZXh0RnVuY3Rpb24s
IFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QpOworCisgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9n
ZW5lcmF0b3JSZWdpc3RlciwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clRoaXNQcml2YXRlTmFtZSgpLCAmbV90aGlzUmVnaXN0ZXIsIFByb3BlcnR5Tm9kZTo6S25vd25E
aXJlY3QpOworCisgICAgZW1pdERpcmVjdFB1dEJ5SWQobV9nZW5lcmF0b3JSZWdpc3RlciwgcHJv
cGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwg
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGlyZWN0
KTsKKworICAgIGVtaXREaXJlY3RQdXRCeUlkKG1fZ2VuZXJhdG9yUmVnaXN0ZXIsIHByb3BlcnR5
TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGVtaXRM
b2FkKG51bGxwdHIsIGpzTnVsbCgpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7Cit9CisK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZXRlQnlJZChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewog
ICAgIGVtaXRPcGNvZGUob3BfZGVsX2J5X2lkKTsKQEAgLTMwNjUsNiArMzA4MCwxMSBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9uKFJlZ2lz
dGVySUQqIGRzdCwgRnVuY3RpbwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93
RnVuY3Rpb25Nb2RlOgogICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19hc3luY19mdW5jX2V4cDsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25N
b2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGU6CisgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6CisgICAgICAgIG9wY29k
ZUlEID0gb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNWQyYzgxMTQy
NzcxYTQ5ZDlhYWY1M2Y3MTMxZDQyYjhlMmIzNTUxNC4uN2U2YjdjMThlOTljMDk3ZDBjM2UyZDcy
MTRiMmY5YzUzOTgwNTYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTk0Nyw2ICsxOTQ3LDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAg
ICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9y
RnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBo
YW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoK
ICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CkBAIC0xOTg2LDYgKzE5ODcsMTEgQEAg
Ym9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgICAgIG1fZ3JhcGgsIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnVuY3Rp
b25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBOZXdBc3luY0Z1bmN0
aW9uOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKKyAgICAgICAgICAgIG1fZ3JhcGgsIG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXN5bmNG
dW5jdGlvblN0cnVjdHVyZUNvbmN1cnJlbnRseSgpKTsKKyAgICAgICAgYnJlYWs7CisKICAgICBj
YXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCgKICAgICAgICAgICAg
IG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDA2MDMxNjhkOTIxNGMzNGIxNGNjYjcxMGM5
MzBkZTRkMjhjMjgxNjkuLjUzZjhiNTMwMjQ5MzQ3YTg0NjFjZmMzNWE4ZTY4MjEzYmM4MDM1ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CkBAIC01MjQzLDIzICs1MjQzLDMxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9w
X25ld19mdW5jOgotICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzogeworICAgICAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKKyAgICAgICAgY2FzZSBvcF9uZXdfYXN5bmNf
ZnVuYzogewogICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBkZWNsID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5mdW5jdGlvbkRlY2woY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBGcm96ZW5WYWx1ZSogZnJvemVuID0gbV9ncmFw
aC5mcmVlemVTdHJvbmcoZGVjbCk7Ci0gICAgICAgICAgICBOb2RlVHlwZSBvcCA9IChvcGNvZGVJ
RCA9PSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpID8gTmV3R2VuZXJhdG9yRnVuY3Rpb24gOiBOZXdG
dW5jdGlvbjsKKyAgICAgICAgICAgIE5vZGVUeXBlIG9wID0gKG9wY29kZUlEID09IG9wX25ld19n
ZW5lcmF0b3JfZnVuYykgPyBOZXdHZW5lcmF0b3JGdW5jdGlvbiA6CisgICAgICAgICAgICAgICAg
KG9wY29kZUlEID09IG9wX25ld19hc3luY19mdW5jKSA/IE5ld0FzeW5jRnVuY3Rpb24gOgorICAg
ICAgICAgICAgICAgIE5ld0Z1bmN0aW9uOwogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChvcCwgT3BJbmZv
KGZyb3plbiksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCkpKSk7CiAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KE9QQ09ERV9MRU5HVEgob3BfbmV3
X2Z1bmMpID09IE9QQ09ERV9MRU5HVEgob3BfbmV3X2dlbmVyYXRvcl9mdW5jKSwgIlRoZSBsZW5n
dGggb2Ygb3BfbmV3X2Z1bmMgc2hvdWxkIGVxYXVhbCB0byBvbmUgb2Ygb3BfbmV3X2dlbmVyYXRv
cl9mdW5jIik7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KE9QQ09ERV9MRU5HVEgob3BfbmV3
X2Z1bmMpID09IE9QQ09ERV9MRU5HVEgob3BfbmV3X2FzeW5jX2Z1bmMpLCAiVGhlIGxlbmd0aCBv
ZiBvcF9uZXdfZnVuYyBzaG91bGQgZXFhdWFsIHRvIG9uZSBvZiBvcF9uZXdfYXN5bmNfZnVuYyIp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2Z1bmMpOwogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6Ci0gICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cDogeworICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuY19leHA6Cisg
ICAgICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOiB7CiAgICAgICAgICAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4cHIgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmZ1
bmN0aW9uRXhwcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAg
IEZyb3plblZhbHVlKiBmcm96ZW4gPSBtX2dyYXBoLmZyZWV6ZVN0cm9uZyhleHByKTsKLSAgICAg
ICAgICAgIE5vZGVUeXBlIG9wID0gKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuY19l
eHApID8gTmV3R2VuZXJhdG9yRnVuY3Rpb24gOiBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgIE5v
ZGVUeXBlIG9wID0gKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHApID8gTmV3
R2VuZXJhdG9yRnVuY3Rpb24gOgorICAgICAgICAgICAgICAgIChvcGNvZGVJRCA9PSBvcF9uZXdf
YXN5bmNfZnVuY19leHApID8gTmV3QXN5bmNGdW5jdGlvbiA6CisgICAgICAgICAgICAgICAgTmV3
RnVuY3Rpb247CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oZnJvemVuKSwgZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSkpKTsKLSAgICAg
ICAgICAgIAorICAgIAogICAgICAgICAgICAgc3RhdGljX2Fzc2VydChPUENPREVfTEVOR1RIKG9w
X25ld19mdW5jX2V4cCkgPT0gT1BDT0RFX0xFTkdUSChvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhw
KSwgIlRoZSBsZW5ndGggb2Ygb3BfbmV3X2Z1bmNfZXhwIHNob3VsZCBlcWF1YWwgdG8gb25lIG9m
IG9wX25ld19nZW5lcmF0b3JfZnVuY19leHAiKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQo
T1BDT0RFX0xFTkdUSChvcF9uZXdfZnVuY19leHApID09IE9QQ09ERV9MRU5HVEgob3BfbmV3X2Fz
eW5jX2Z1bmNfZXhwKSwgIlRoZSBsZW5ndGggb2Ygb3BfbmV3X2Z1bmNfZXhwIHNob3VsZCBlcWF1
YWwgdG8gb25lIG9mIG9wX25ld19hc3luY19mdW5jX2V4cCIpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfbmV3X2Z1bmNfZXhwKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggYzMyM2Q0NmZiYzNjZjVjMTA0OWZh
MjZmYzBlMTkwZjIyNzFhNDcxOC4uMWJhNjhhMDQyMWJjYjRhYmM4YTUwODg3N2NlMTJjOTEyYjVh
NWMxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cApAQCAtMjM2LDYgKzIzNiw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bj
b2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBv
cF9uZXdfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CiAgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwOgorICAgIGNhc2Ugb3BfbmV3X2FzeW5jX2Z1bmM6
CisgICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6CiAgICAgY2FzZSBvcF9zZXRfZnVuY3Rp
b25fbmFtZToKICAgICBjYXNlIG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgogICAgIGNh
c2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKaW5kZXggMGJlODFhZWJhMjMzOTQyMWQyNTk2ZDc4NmI0MTE0NjQ4NjM1NzBmZS4u
NzQ2ZmRmMjE4NWQ4OTA2MWM1OTY2NTdhYmQxOTYzMjM2YjRjMWU4NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEyMTIsNiArMTIxMiw3IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBj
YXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5j
dGlvbjoKKyAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRv
bUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246
CiAgICAgICAgIHJlYWQoSGVhcE9iamVjdENvdW50KTsKQEAgLTEyMjAsNiArMTIyMSw3IEBAIHZv
aWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9y
JiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2Ug
TmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgogICAgICAg
ICBpZiAobm9kZS0+Y2FzdE9wZXJhbmQ8RnVuY3Rpb25FeGVjdXRhYmxlKj4oKS0+c2luZ2xldG9u
RnVuY3Rpb24oKS0+aXNTdGlsbFZhbGlkKCkpCiAgICAgICAgICAgICB3cml0ZShXYXRjaHBvaW50
X2ZpcmUpOwogICAgICAgICByZWFkKEhlYXBPYmplY3RDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4IGJkMzM5Yjg5
YTUxMjRiM2Y3NDczYWExMmE3ZDQwODk2MGIwY2VmZjMuLjkxZmIyNzExZWY5MWU5ZjVjMTMwYmRh
Yzk2NTMxYjcyMmE5NjE2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC02Miw2ICs2Miw3IEBAIGJvb2wgY2xvYmJlcnNF
eGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTWF0ZXJpYWxpemVO
ZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9t
TmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoK
ICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgTWF0ZXJpYWxpemVD
cmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246CkBAIC04MCw2ICs4MSw3
IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogCiAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAg
IGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoKICAgICAgICAgLy8gTGlrZSBhYm92ZSwgYnV0IHdpdGgg
dGhlIEpTRnVuY3Rpb24gYWxsb2NhdGlvbiBjYXZlYXQuCiAgICAgICAgIHJldHVybiBub2RlLT5j
YXN0T3BlcmFuZDxGdW5jdGlvbkV4ZWN1dGFibGUqPigpLT5zaW5nbGV0b25GdW5jdGlvbigpLT5p
c1N0aWxsVmFsaWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmlu
ZGV4IGYzNWI2NmNlMTdlNDAzOTgyZDAyOGFmMzgyYjkxYmQ2MDg1N2VhZTQuLjdlY2ZjZGQzN2Q5
Y2Q3OGFkMGM1N2I2YmZkOTJlNzJmZGNlOTM1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKQEAgLTI0NCw2ICsyNDQsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgUGhh
bnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgor
ICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRl
QWN0aXZhdGlvbjoKICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgY2FzZSBQ
aGFudG9tQ2xvbmVkQXJndW1lbnRzOgpAQCAtMjg0LDYgKzI4NSw3IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgTmV3
RnVuY3Rpb246CiAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0Fz
eW5jRnVuY3Rpb246CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgVGhyb3dTdGF0
aWNFcnJvcjoKICAgICBjYXNlIEdldFByb3BlcnR5RW51bWVyYXRvcjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGRiYzEwMTc1MjI2NDVlMDlmZTlh
YzQ0MTYzOGI2YzFmZTViM2M3MWEuLjgzYmE1YzAzNjU4YzIzOWI1YWE2MWFhZGUzNWY2NTZjYTUz
ZTBkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApA
QCAtMTM5Niw2ICsxMzk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQaGFudG9tTmV3T2Jq
ZWN0OgogICAgICAgICBjYXNlIFBoYW50b21OZXdGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQaGFu
dG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVu
Y3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgIGNh
c2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBQaGFudG9tQ2xvbmVkQXJn
dW1lbnRzOgpAQCAtMTU1MSw3ICsxNTUyLDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDcmVh
dGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAg
ICAgY2FzZSBOZXdGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjog
eworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICBjYXNlIE5ld0Fz
eW5jRnVuY3Rpb246IHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IDgwYjMzNzRiM2VkOWUzNDAwMTZjMmMyNmY1YTU4MGM4
M2M2MDQyNzguLmZiYmIxYjk5ZmUwOWIwZWU0ZTQzNzRhZDM2OWYxNzNmM2U2YzUxOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTA2LDYgKzEwNiw3IEBA
IEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3RhdGVUeXBl
JiBzdGF0ZSkKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3RnVu
Y3Rpb246CiAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0FzeW5j
RnVuY3Rpb246CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBUb051bWJlcjoK
ICAgICAgICAgcmVzdWx0ID0gRXhpdHNGb3JFeGNlcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAppbmRleCAwZDFhNGI1NTgxNDM3MjlhYThjMzIyZjI4NDYxODNkMWQ0MzY0ZDNi
Li4wNjM3N2QyYWViZDA4ZmJmOGJlZTJmZmViNWYzNDU5NjIyMGY0NDQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaApAQCAtNTg0LDcgKzU4NCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY29udmVydFRvUGhhbnRvbU5ld0Z1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVCht
X29wID09IE5ld0Z1bmN0aW9uIHx8IG1fb3AgPT0gTmV3R2VuZXJhdG9yRnVuY3Rpb24pOworICAg
ICAgICBBU1NFUlQobV9vcCA9PSBOZXdGdW5jdGlvbiB8fCBtX29wID09IE5ld0dlbmVyYXRvckZ1
bmN0aW9uIHx8IG1fb3AgPT0gTmV3QXN5bmNGdW5jdGlvbik7CiAgICAgICAgIG1fb3AgPSBQaGFu
dG9tTmV3RnVuY3Rpb247CiAgICAgICAgIG1fZmxhZ3MgfD0gTm9kZU11c3RHZW5lcmF0ZTsKICAg
ICAgICAgbV9vcEluZm8gPSBPcEluZm9XcmFwcGVyKCk7CkBAIC02MDIsNiArNjAyLDE2IEBAIHB1
YmxpYzoKICAgICAgICAgY2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KCk7CiAgICAgfQogCisgICAg
dm9pZCBjb252ZXJ0VG9QaGFudG9tTmV3QXN5bmNGdW5jdGlvbigpCisgICAgeworICAgICAgICBB
U1NFUlQobV9vcCA9PSBOZXdBc3luY0Z1bmN0aW9uKTsKKyAgICAgICAgbV9vcCA9IFBoYW50b21O
ZXdBc3luY0Z1bmN0aW9uOworICAgICAgICBtX2ZsYWdzIHw9IE5vZGVNdXN0R2VuZXJhdGU7Cisg
ICAgICAgIG1fb3BJbmZvID0gT3BJbmZvV3JhcHBlcigpOworICAgICAgICBtX29wSW5mbzIgPSBP
cEluZm9XcmFwcGVyKCk7CisgICAgICAgIGNoaWxkcmVuID0gQWRqYWNlbmN5TGlzdCgpOworICAg
IH0KKwogICAgIHZvaWQgY29udmVydFRvUGhhbnRvbUNyZWF0ZUFjdGl2YXRpb24oKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fb3AgPT0gQ3JlYXRlQWN0aXZhdGlvbiB8fCBtX29wID09IE1hdGVy
aWFsaXplQ3JlYXRlQWN0aXZhdGlvbik7CkBAIC0xNDg1LDYgKzE0OTUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGNhc2UgT3ZlcnJpZGVzSGFzSW5zdGFuY2U6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rp
b246CiAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgIGNhc2UgTmV3
QXN5bmNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBj
YXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6
CkBAIC0xNzIwLDYgKzE3MzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewog
ICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0
aW9uOgorICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3
MzEsNiArMTc0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAg
IGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0
b3JGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTc0NSw2ICsxNzU4LDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIFBoYW50
b21DbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAg
ICAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICAgICAgY2FzZSBQaGFu
dG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlv
bjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IDc1YWE2MmUxMjU2NzBhMzVjYzA4ZjIx
N2QzYzE3NDdjYjA0ZjA5MzQuLmE0ODNmMTFkMTY1MzcwODhmMjczMzc5ODUyMTA1NjRjMGY5ODQ4
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTMwNSw2ICsz
MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTWF0ZXJp
YWxpemVOZXdPYmplY3QsIE5vZGVSZXN1bHRKUyB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFj
cm8oUGhhbnRvbU5ld0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uLCBOb2RlUmVzdWx0SlMgfCBO
b2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb24sIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tQ3JlYXRl
QWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbiwgTm9kZVJlc3VsdEpTIHwgTm9kZUhhc1ZhckFy
Z3MpIFwKICAgICBcCkBAIC0zNTEsNiArMzUyLDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogICAgIFwKICAgICBtYWNybyhOZXdHZW5lcmF0b3JGdW5jdGlvbiwgTm9kZVJlc3Vs
dEpTKSBcCiAgICAgXAorICAgIG1hY3JvKE5ld0FzeW5jRnVuY3Rpb24sIE5vZGVSZXN1bHRKUykg
XAorICAgIFwKICAgICAvKiBUaGVzZSBhcmVuJ3QgdGVybWluYWxzIGJ1dCBhbHdheXMgZXhpdCAq
LyBcCiAgICAgbWFjcm8oVGhyb3csIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhUaHJv
d1N0YXRpY0Vycm9yLCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAppbmRleCA4MWMzMDYxNjkxN2E1ODFiMTEwZmI2NjU1YTlmYjI4NjkxN2I3MTY3Li4yYmU0M2Y5
M2Q0ODg0YWU3NGVmZjI4NmZlYjc5MDdmN2VlOTZlNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgLy8gb25jZSBpdCBpcyBlc2Nh
cGVkIGlmIGl0IHN0aWxsIGhhcyBwb2ludGVycyB0byBpdCBpbiBvcmRlciB0bwogICAgIC8vIHJl
cGxhY2UgYW55IHVzZSBvZiB0aG9zZSBwb2ludGVycyBieSB0aGUgY29ycmVzcG9uZGluZwogICAg
IC8vIG1hdGVyaWFsaXphdGlvbgotICAgIGVudW0gY2xhc3MgS2luZCB7IEVzY2FwZWQsIE9iamVj
dCwgQWN0aXZhdGlvbiwgRnVuY3Rpb24sIEdlbmVyYXRvckZ1bmN0aW9uIH07CisgICAgZW51bSBj
bGFzcyBLaW5kIHsgRXNjYXBlZCwgT2JqZWN0LCBBY3RpdmF0aW9uLCBGdW5jdGlvbiwgR2VuZXJh
dG9yRnVuY3Rpb24sIEFzeW5jRnVuY3Rpb24gfTsKIAogICAgIGV4cGxpY2l0IEFsbG9jYXRpb24o
Tm9kZSogaWRlbnRpZmllciA9IG51bGxwdHIsIEtpbmQga2luZCA9IEtpbmQ6OkVzY2FwZWQpCiAg
ICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCkBAIC0yMzMsNyArMjMzLDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBpc0Z1bmN0aW9uQWxsb2NhdGlvbigpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gbV9raW5kID09IEtpbmQ6OkZ1bmN0aW9uIHx8IG1fa2luZCA9PSBLaW5kOjpH
ZW5lcmF0b3JGdW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGdW5jdGlv
biB8fCBtX2tpbmQgPT0gS2luZDo6R2VuZXJhdG9yRnVuY3Rpb24gfHwgbV9raW5kID09IEtpbmQ6
OkFzeW5jRnVuY3Rpb247CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFsbG9j
YXRpb24mIG90aGVyKSBjb25zdApAQCAtMjczLDYgKzI3MywxMCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBvdXQucHJpbnQoIkdlbmVyYXRvckZ1bmN0aW9uIik7CiAgICAgICAgICAgICBicmVhazsK
IAorICAgICAgICBjYXNlIEtpbmQ6OkFzeW5jRnVuY3Rpb246CisgICAgICAgICAgICBvdXQucHJp
bnQoIkFzeW5jRnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2Ug
S2luZDo6QWN0aXZhdGlvbjoKICAgICAgICAgICAgIG91dC5wcmludCgiQWN0aXZhdGlvbiIpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC04MzIsMTYgKzgzNiwyMCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKLSAgICAgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGdW5jdGlvbjogeworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9u
OgorICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246IHsKICAgICAgICAgICAgIGlmIChpc1N0
aWxsVmFsaWQobm9kZS0+Y2FzdE9wZXJhbmQ8RnVuY3Rpb25FeGVjdXRhYmxlKj4oKS0+c2luZ2xl
dG9uRnVuY3Rpb24oKSkpIHsKICAgICAgICAgICAgICAgICBtX2hlYXAuZXNjYXBlKG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gTmV3R2VuZXJhdG9y
RnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9u
KG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkdlbmVyYXRvckZ1bmN0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gTmV3QXN5bmNGdW5jdGlvbikKKyAgICAgICAgICAgICAg
ICB0YXJnZXQgPSAmbV9oZWFwLm5ld0FsbG9jYXRpb24obm9kZSwgQWxsb2NhdGlvbjo6S2luZDo6
QXN5bmNGdW5jdGlvbik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdGFyZ2V0
ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIEFsbG9jYXRpb246OktpbmQ6OkZ1bmN0aW9u
KTsKKwogICAgICAgICAgICAgd3JpdGVzLmFkZChGdW5jdGlvbkV4ZWN1dGFibGVQTG9jLCBMYXp5
Tm9kZShub2RlLT5jZWxsT3BlcmFuZCgpKSk7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKEZ1bmN0
aW9uQWN0aXZhdGlvblBMb2MsIExhenlOb2RlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNDQ0LDEyICsxNDUyLDI1IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgT3BJbmZvKHNldCksIE9wSW5mbyhkYXRhKSwgMCwgMCk7CiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIEFsbG9jYXRpb246OktpbmQ6OkFzeW5jRnVuY3Rpb246CiAgICAgICAgIGNh
c2UgQWxsb2NhdGlvbjo6S2luZDo6R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgIGNhc2UgQWxs
b2NhdGlvbjo6S2luZDo6RnVuY3Rpb246IHsKICAgICAgICAgICAgIEZyb3plblZhbHVlKiBleGVj
dXRhYmxlID0gYWxsb2NhdGlvbi5pZGVudGlmaWVyKCktPmNlbGxPcGVyYW5kKCk7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIE5vZGVUeXBlIG5vZGVUeXBlID0KLSAgICAgICAgICAgICAgICBh
bGxvY2F0aW9uLmtpbmQoKSA9PSBBbGxvY2F0aW9uOjpLaW5kOjpHZW5lcmF0b3JGdW5jdGlvbiA/
IE5ld0dlbmVyYXRvckZ1bmN0aW9uIDogTmV3RnVuY3Rpb247CisgICAgICAgICAgICBOb2RlVHlw
ZSBub2RlVHlwZTsKKyAgICAgICAgICAgIHN3aXRjaCAoYWxsb2NhdGlvbi5raW5kKCkpIHsKKyAg
ICAgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6RnVuY3Rpb246CisgICAgICAgICAgICAg
ICAgbm9kZVR5cGUgPSBOZXdGdW5jdGlvbjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAg
ICAgICAgICAgbm9kZVR5cGUgPSBOZXdHZW5lcmF0b3JGdW5jdGlvbjsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6QXN5bmNGdW5jdGlv
bjoKKyAgICAgICAgICAgICAgICBub2RlVHlwZSA9IE5ld0FzeW5jRnVuY3Rpb247CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICByZXR1cm4gbV9ncmFwaC5hZGROb2RlKAogICAgICAgICAgICAgICAgIGFsbG9jYXRpb24u
aWRlbnRpZmllcigpLT5wcmVkaWN0aW9uKCksIG5vZGVUeXBlLApAQCAtMTc5MSw2ICsxODEyLDEw
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFu
dG9tTmV3R2VuZXJhdG9yRnVuY3Rpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b21OZXdBc3luY0Z1bmN0aW9uKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgICAgICBj
YXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jb252
ZXJ0VG9QaGFudG9tQ3JlYXRlQWN0aXZhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0yMDQ3LDcgKzIwNzIsOCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1
bmN0aW9uOiB7CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgIGNh
c2UgTmV3QXN5bmNGdW5jdGlvbjogewogICAgICAgICAgICAgVmVjdG9yPFByb21vdGVkSGVhcExv
Y2F0aW9uPiBsb2NhdGlvbnMgPSBtX2xvY2F0aW9uc0ZvckFsbG9jYXRpb24uZ2V0KGVzY2FwZWUp
OwogICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9ucy5zaXplKCkgPT0gMik7CiAgICAgICAgICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGUxMTQyOGM3OTA1M2E5NzRiNjUxYjRh
M2VkYmEyNWY5ZWE2OGU3NGQuLmVhZjNjZDI1OTUzNzA1NWRmOWQwNzcwZGQ4MDdlZjg3OTNiZDJj
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC03MjksNyArNzI5LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgICAg
ICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOiB7
CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgIGNhc2UgTmV3QXN5
bmNGdW5jdGlvbjogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjRnVuY3Rpb24pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwMDEsNiArMTAwMiw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICAgICAgY2FzZSBQaGFudG9t
TmV3RnVuY3Rpb246CiAgICAgICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgor
ICAgICAgICBjYXNlIFBoYW50b21OZXdBc3luY0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50
b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6
CiAgICAgICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggNjliYmUxMWU1ZGFlNjdhNzE1ODcy
MjFlYTE1Njk4MWFjM2MzZjUyZC4uYWI0YzcwYzliMWM0MTEyMjIzZWE4N2Q4MDUwYWIyNjQwNzI1
ODU3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
QEAgLTI5OSw2ICsyOTksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUm
IHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50
czoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246
CisgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgogICAgIGNhc2UgSnVtcDoKICAgICBjYXNlIEJy
YW5jaDoKICAgICBjYXNlIFN3aXRjaDoKQEAgLTM0Nyw2ICszNDgsNyBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9u
OgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRv
bU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNmNj
ZmZiNWRmN2ZjYmE3NzIzYTZjZDZkNjljNGY1ZTJkMDBlYjNkYy4uMzk0N2Q1OWM0MjQ4ODcxZGU4
OWEyMWY1Y2IzNmYzNzU3NDEyNWI5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJKSVRN
dWxHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRSaWdodFNoaWZ0R2VuZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSklUU3ViR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIK
ICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCkBAIC02MzYzLDcgKzYzNjQsNyBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TmV3RnVuY3Rpb25Db21tb24oR1BSUgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1
bmN0aW9uKE5vZGUqIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUgbm9kZVR5cGUgPSBub2RlLT5vcCgp
OwotICAgIEFTU0VSVChub2RlVHlwZSA9PSBOZXdGdW5jdGlvbiB8fCBub2RlVHlwZSA9PSBOZXdH
ZW5lcmF0b3JGdW5jdGlvbik7CisgICAgQVNTRVJUKG5vZGVUeXBlID09IE5ld0Z1bmN0aW9uIHx8
IG5vZGVUeXBlID09IE5ld0dlbmVyYXRvckZ1bmN0aW9uIHx8IG5vZGVUeXBlID09IE5ld0FzeW5j
RnVuY3Rpb24pOwogICAgIAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNjb3BlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcgc2NvcGVHUFIgPSBzY29wZS5ncHIoKTsKQEAgLTYz
NzgsNiArNjM3OSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbihO
b2RlKiBub2RlKQogCiAgICAgICAgIGlmIChub2RlVHlwZSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlv
bikKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rp
b24sIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUpOworICAgICAgICBlbHNlIGlmIChu
b2RlVHlwZSA9PSBOZXdBc3luY0Z1bmN0aW9uKQorICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25OZXdBc3luY0Z1bmN0aW9uLCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxl
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdG
dW5jdGlvbiwgcmVzdWx0R1BSLCBzY29wZUdQUiwgZXhlY3V0YWJsZSk7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC02Mzg3LDYgKzYzOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3RnVuY3Rpb24oTm9kZSogbm9kZSkKIAogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0KICAgICAgICAgbm9kZVR5cGUgPT0gTmV3R2VuZXJhdG9yRnVuY3Rpb24gPyBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZSgpIDoKKyAgICAgICAgbm9kZVR5cGUgPT0gTmV3QXN5bmNGdW5j
dGlvbiA/IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25jdXJyZW50bHkoKSA6CiAgICAgICAgIG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9u
U3RydWN0dXJlKCk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTY0
MTEsNiArNjQxNSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb24o
Tm9kZSogbm9kZSkKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQsIHJlc3VsdEdQUiwgc2NvcGVHUFIsIGV4ZWN1dGFibGUp
KTsKICAgICB9CiAKKyAgICBpZiAobm9kZVR5cGUgPT0gTmV3QXN5bmNGdW5jdGlvbikgeworICAg
ICAgICBjb21waWxlTmV3RnVuY3Rpb25Db21tb248SlNBc3luY0Z1bmN0aW9uPihyZXN1bHRHUFIs
IHN0cnVjdHVyZSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzY29wZUdQUiwgc2xvd1BhdGgs
IEpTQXN5bmNGdW5jdGlvbjo6YWxsb2NhdGlvblNpemUoMCksIGV4ZWN1dGFibGUsIEpTQXN5bmNG
dW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCksIEpTQXN5bmNGdW5jdGlvbjo6b2Zmc2V0T2ZF
eGVjdXRhYmxlKCksIEpTQXN5bmNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKTsKKworICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50LCByZXN1bHRHUFIsIHNjb3BlR1BSLCBleGVjdXRhYmxlKSk7CisgICAgfQorCiAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA0NThhMjkyOWY1OWE2
NmQ0YmFkYjFhNGJhMmM1Zjc4Yjg3NTgzMTRjLi5lODk2NzcxZmE3ZTAxMmE5ZjkyM2YzNTNjMjBh
MTM5MTZjNTkwZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTQ5OTksNiArNDk5OSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAg
ICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKKyAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246
CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbihub2RlKTsKICAgICAgICAgYnJlYWs7CiAKQEAg
LTU1ODUsNiArNTU4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rp
b246CiAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBQaGFu
dG9tTmV3QXN5bmNGdW5jdGlvbjoKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgog
ICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5k
ZXggZDE4NWI5ZDYwMjdjMWVjYTEyZjExNTFmOTM0MjMxYWM3N2E5YTk2MS4uNmUzMjBmN2Y2MjU4
ZWU2ZDNlNjNjZGNkYTE5MzUzM2YxMDNhYWQxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01MTY0LDYgKzUxNjQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICBjYXNlIE5ld0Z1
bmN0aW9uOgogICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBOZXdBc3lu
Y0Z1bmN0aW9uOgogICAgICAgICBjb21waWxlTmV3RnVuY3Rpb24obm9kZSk7CiAgICAgICAgIGJy
ZWFrOwogCkBAIC01ODAxLDYgKzU4MDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRv
bU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAg
IGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0
aXZhdGlvbjoKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIEdldE15QXJn
dW1lbnRCeVZhbE91dE9mQm91bmRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCBmNDA3Yjdm
MWRlNzBlN2M1MGE3ODVlODU4MGNiOTg1MGI3OTU0MGZiLi5jMjc0NTBjZGExZjM3ZjcyNDQ1MmZh
OGZiODYxNDg2NjhhNjc5YTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMzEzLDYgKzMx
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoK
ICAgICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgICAgICAgICBjYXNlIE5ld0dlbmVy
YXRvckZ1bmN0aW9uOgorICAgICAgICAgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9uOgogICAgICAg
ICAgICAgICAgIC8vIE5vZGVzIHRoYXQgYWxsb2NhdGUgZ2V0IHRvIHNldCB0aGVpciBlcG9jaCBi
ZWNhdXNlIGZvciB0aG9zZSBub2RlcyB3ZSBrbm93CiAgICAgICAgICAgICAgICAgLy8gdGhhdCB0
aGV5IHdpbGwgYmUgdGhlIG5ld2VzdCBvYmplY3QgaW4gdGhlIGhlYXAuCiAgICAgICAgICAgICAg
ICAgbV9ub2RlLT5zZXRFcG9jaChtX2N1cnJlbnRFcG9jaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3Bw
CmluZGV4IDUxY2Y0ODk2MGE4YjFmZjU3MmE4NjllYWUxOGJmMGE5ZjVhMjc5ZGQuLmQxNGYwYmEy
NmFhMmYwY2E0ZjMwMzYzN2Q1YTZlNmZlMTBiZDMyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3Bw
CkBAIC0xNTMsNiArMTUzLDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNhc2UgTmV3R2Vu
ZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1
bmN0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246CisgICAgICAgICAgICAgICAgICAgIHJlZ2lz
dGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25jdXJyZW50bHkoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCmlu
ZGV4IDkxOGQ4YWQ0NTlmNjQxMTgyNGFiNmFlYmZjNzYyY2FmMTNiOTQ3ZmYuLmNmN2JlM2JkZWIw
ZGVhNTljMjk4N2U4OTE0NGE3MjdlYTg3MmJhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwCkBAIC01MjksNiArNTI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFu
dG9tTmV3RnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3R2VuZXJhdG9y
RnVuY3Rpb246CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNGdW5jdGlvbjoK
ICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAg
ICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgICAgICAgICAgICAgIGNhc2UgR2V0
TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6CkBAIC02NjgsNiArNjY5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgICAgICAgICAgICAg
Y2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3
R2VuZXJhdG9yRnVuY3Rpb246CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tTmV3QXN5bmNG
dW5jdGlvbjoKICAgICAgICAgICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgog
ICAgICAgICAgICAgICAgIGNhc2UgUGhhbnRvbURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgICAg
ICAgICBjYXNlIFBoYW50b21DbG9uZWRBcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZWY1ZjNmMWFmMDFmZWI1ZjA5Y2U1NGMx
NDAwMGI1YTVhZjZjNDg5Zi4uNzYyMjA1MDQwNmE2MWQ1YTRhYjM2ZmI0NzczNmFkYmJjMzEwYmNl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApA
QCAtMTE3LDYgKzExNyw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIE5ld0Z1bmN0aW9u
OgogICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CisgICAgY2FzZSBOZXdBc3luY0Z1bmN0
aW9uOgogICAgIGNhc2UgR2V0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAg
ICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CkBAIC0yMjMsNiArMjI0LDcgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQaGFudG9t
TmV3T2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRv
bU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246
CiAgICAgY2FzZSBQaGFudG9tQ3JlYXRlQWN0aXZhdGlvbjoKICAgICBjYXNlIFB1dEhpbnQ6CiAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZUltbWVkaWF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA4Y2E0NGY4NTE2MmEyNTJkOWFhMmU4YmVl
MGQyNWU4Nzk1OWQ2YWU5Li42NGNjZmY4YWJiZTUyMjQzZWM3MjY3ZWU2YTljZjA1ZmU3MzA2Mjk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC03MTAsNiArNzEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIE5ld0Z1bmN0aW9uOgogICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAg
ICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246CiAgICAgICAgICAgICBjb21waWxlTmV3RnVuY3Rp
b24oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3Vt
ZW50czoKQEAgLTEwNjksNiArMTA3MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUGhhbnRv
bU5ld09iamVjdDoKICAgICAgICAgY2FzZSBQaGFudG9tTmV3RnVuY3Rpb246CiAgICAgICAgIGNh
c2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgICAgICBjYXNlIFBoYW50b21OZXdB
c3luY0Z1bmN0aW9uOgogICAgICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9uOgogICAg
ICAgICBjYXNlIFBoYW50b21EaXJlY3RBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgUGhhbnRvbUNs
b25lZEFyZ3VtZW50czoKQEAgLTM5NTYsOCArMzk1OCw5IEBAIHByaXZhdGU6CiAgICAgCiAgICAg
dm9pZCBjb21waWxlTmV3RnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fbm9kZS0+
b3AoKSA9PSBOZXdGdW5jdGlvbiB8fCBtX25vZGUtPm9wKCkgPT0gTmV3R2VuZXJhdG9yRnVuY3Rp
b24pOworICAgICAgICBBU1NFUlQobV9ub2RlLT5vcCgpID09IE5ld0Z1bmN0aW9uIHx8IG1fbm9k
ZS0+b3AoKSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbiB8fCBtX25vZGUtPm9wKCkgPT0gTmV3QXN5
bmNGdW5jdGlvbik7CiAgICAgICAgIGJvb2wgaXNHZW5lcmF0b3JGdW5jdGlvbiA9IG1fbm9kZS0+
b3AoKSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbjsKKyAgICAgICAgYm9vbCBpc0FzeW5jRnVuY3Rp
b24gPSBtX25vZGUtPm9wKCkgPT0gTmV3QXN5bmNGdW5jdGlvbjsKICAgICAgICAgCiAgICAgICAg
IExWYWx1ZSBzY29wZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIApAQCAt
Mzk2NSw2ICszOTY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPnNpbmds
ZXRvbkZ1bmN0aW9uKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICBMVmFsdWUgY2Fs
bFJlc3VsdCA9CiAgICAgICAgICAgICAgICAgaXNHZW5lcmF0b3JGdW5jdGlvbiA/IHZtQ2FsbChJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uKSwgbV9j
YWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSkgOgorICAgICAgICAgICAg
ICAgIGlzQXN5bmNGdW5jdGlvbiA/IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0FzeW5jRnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4
ZWN1dGFibGUpKSA6CiAgICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uTmV3RnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVy
KGV4ZWN1dGFibGUpKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUoY2FsbFJlc3VsdCk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zOTcyLDYgKzM5NzYsNyBAQCBwcml2YXRlOgogICAgICAgICAK
ICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQogICAgICAgICAgICAgaXNHZW5lcmF0b3JG
dW5jdGlvbiA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSA6CisgICAgICAgICAgICBpc0FzeW5jRnVu
Y3Rpb24gPyBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25jdXJyZW50bHkoKSA6CiAgICAgICAgICAgICBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3Ry
dWN0dXJlKCk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CkBAIC00MDA1LDYgKzQwMTAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgbG9jYXRpb25zWzFdLmRpcmVj
dEdQUigpLAogICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKGV4ZWN1dGFibGUpKTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KGlzQXN5bmNGdW5jdGlvbikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6
eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdBc3lu
Y0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgbG9jYXRpb25zWzFdLmRp
cmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKGV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICBvcGVy
YXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNocG9pbnQsCiAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgbG9jYXRpb25zWzFd
LmRpcmVjdEdQUigpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5j
cHAKaW5kZXggYmVlZWJjMDNlZTNlNTY0MDJjZTFlNzdlMzNhMjgwZjI1ZDBkODBlZi4uNjk3ZjJk
ZGY1N2YyNjM4MWYwNWE5MDJkMTBlYTQ5OTQ0ZmIyYmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTE9wZXJhdGlvbnMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
RlRMSklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTExhenlTbG93UGF0aC5oIgogI2luY2x1ZGUgIklu
bGluZUNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTgxLDYgKzgyLDcgQEAgZXh0ZXJuICJDIiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUG9wdWxhdGVPYmplY3RJbk9TUigKIAogICAgIGNh
c2UgUGhhbnRvbU5ld0Z1bmN0aW9uOgogICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0
aW9uOgorICAgIGNhc2UgUGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBQaGFudG9t
RGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgUGhhbnRvbUNsb25lZEFyZ3VtZW50czoKICAgICAg
ICAgLy8gVGhvc2UgYXJlIGNvbXBsZXRlbHkgaGFuZGxlZCBieSBvcGVyYXRpb25NYXRlcmlhbGl6
ZU9iamVjdEluT1NSCkBAIC0xNTAsNyArMTUyLDggQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKICAgICB9CiAKICAgICBj
YXNlIFBoYW50b21OZXdGdW5jdGlvbjoKLSAgICBjYXNlIFBoYW50b21OZXdHZW5lcmF0b3JGdW5j
dGlvbjogeworICAgIGNhc2UgUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uOgorICAgIGNhc2Ug
UGhhbnRvbU5ld0FzeW5jRnVuY3Rpb246IHsKICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IHRo
ZSBleGVjdXRhYmxlIGFuZCBhY3RpdmF0aW9uIGFyZQogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgICAgICBKU1Njb3BlKiBhY3RpdmF0aW9uID0g
bnVsbHB0cjsKQEAgLTE2NSw4ICsxNjgsMTAgQEAgZXh0ZXJuICJDIiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTWF0ZXJpYWxpemVPYmplY3RJbk9TUigKIAogICAgICAgICBpZiAobWF0
ZXJpYWxpemF0aW9uLT50eXBlKCkgPT0gUGhhbnRvbU5ld0Z1bmN0aW9uKQogICAgICAgICAgICAg
cmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldhdGNo
cG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOwotICAgICAgICBBU1NFUlQobWF0ZXJp
YWxpemF0aW9uLT50eXBlKCkgPT0gUGhhbnRvbU5ld0dlbmVyYXRvckZ1bmN0aW9uKTsKLSAgICAg
ICAgcmV0dXJuIEpTR2VuZXJhdG9yRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQodm0sIGV4ZWN1dGFibGUsIGFjdGl2YXRpb24pOworICAgICAgICBl
bHNlIGlmIChtYXRlcmlhbGl6YXRpb24tPnR5cGUoKSA9PSBQaGFudG9tTmV3R2VuZXJhdG9yRnVu
Y3Rpb24pCisgICAgICAgICAgICByZXR1cm4gSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlV2l0
aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCh2bSwgZXhlY3V0YWJsZSwgYWN0aXZh
dGlvbik7ICAgIAorICAgICAgICBBU1NFUlQobWF0ZXJpYWxpemF0aW9uLT50eXBlKCkgPT0gUGhh
bnRvbU5ld0FzeW5jRnVuY3Rpb24pOworICAgICAgICByZXR1cm4gSlNBc3luY0Z1bmN0aW9uOjpj
cmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KHZtLCBleGVjdXRhYmxl
LCBhY3RpdmF0aW9uKTsKICAgICB9CiAKICAgICBjYXNlIFBoYW50b21DcmVhdGVBY3RpdmF0aW9u
OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA5Zjk5YWJh
OWNmOTllY2QyOWEwMjlkODE0NDJiYThlMmZlZWY0MDkwLi5jOTBhMGRkMTlkMmVmNTg3YWVhMjA4
Yzc0MTI0NTEwMTQ5NjRiYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKQEAgLTk5NCw2ICs5OTQsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FzeW5jX2Z1
bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0TmV3RnVuY0NvbW1v
bihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNf
ZnVuYyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGVtaXROZXdGdW5j
Q29tbW9uKGN1cnJlbnRJbnN0cnVjdGlvbik7Cit9CisKIHZvaWQgSklUOjplbWl0TmV3RnVuY0V4
cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKdW1wIG5v
dFVuZGVmaW5lZFNjb3BlOwpAQCAtMTA0MCw2ICsxMDQ1LDExIEBAIHZvaWQgSklUOjplbWl0X29w
X25ld19hc3luY19mdW5jX2V4cChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGVtaXROZXdGdW5jRXhwckNvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuY19leHAoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBlbWl0TmV3RnVuY0V4cHJDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsK
K30KKwogdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2FycmF5KEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA3
NDRlOTA1Mzc0NjE4NDQ3Mzk5YjA1YmVhMjI1OTE4Zjc4MmU3N2E3Li5hYzMyMjBhNmNmZTUxNGM0
M2E4ZGMxZDc2M2I4N2UyMmM0YmVlYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTExODksNiArMTE4OSwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFs
bG9jYXRpbwogICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0FzeW5jRnVu
Y3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFibGUsIHRydWUpOwogfQogCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb24oRXhlY1N0
YXRlKiBleGVjLCBKU1Njb3BlKiBzY29wZSwgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCit7
CisgICAgcmV0dXJuIG9wZXJhdGlvbk5ld0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlvbj4o
ZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0
ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUs
IEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQoreworICAgIHJldHVybiBvcGVyYXRpb25OZXdG
dW5jdGlvbkNvbW1vbjxKU0FzeW5jRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1
dGFibGUsIHRydWUpOworfQorCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0RnVuY3Rp
b25OYW1lKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBmdW5jQ2VsbCwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZE5hbWUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCBmNThmNGY5NjZlYTc3
NDNiZmM0ZWM4MDdjMTFlZjNhYjRkZDQyOWJiLi42NGQ3YjZiNzE4ZTc0ZWM5YjQ0NzBmNWM0NzEy
OGIyMDAxYjNhY2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTExNjEsNiArMTE2MSwxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpCiAgICAgTExJTlRfUkVUVVJOKEpTQXN5bmNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1szXS51Lm9wZXJhbmQpLCBz
Y29wZSkpOwogfQogCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1
bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIEpTU2NvcGUqIHNjb3BlID0gZXhlYy0+dW5jaGVja2VkUihw
Y1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgpOworI2lmIExMSU5UX1NMT1dfUEFUSF9U
UkFDSU5HCisgICAgZGF0YUxvZ0YoIkNyZWF0aW5nIGFzeW5jIGZ1bmN0aW9uIVxuIik7CisjZW5k
aWYKKyAgICBMTElOVF9SRVRVUk4oSlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9j
ay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCksIHNjb3BlKSk7Cit9CisKIExMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuY19leHApCiB7CiAgICAgTExJTlRfQkVHSU4o
KTsKQEAgLTExOTQsNiArMTIwNSwxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bmV3X2FzeW5jX2Z1bmNfZXhwKQogICAgIExMSU5UX1JFVFVSTihKU0FzeW5jRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKIH0KIAorTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX25ld19hc3luY19mdW5jX2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IAorICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNT
Y29wZSogc2NvcGUgPSBleGVjLT51bmNoZWNrZWRSKHBjWzJdLnUub3BlcmFuZCkuUmVnaXN0ZXI6
OnNjb3BlKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2Nr
LT5mdW5jdGlvbkV4cHIocGNbM10udS5vcGVyYW5kKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4o
SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUodm0sIGV4ZWN1dGFibGUsIHNjb3BlKSk7Cit9CisKIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zZXRfZnVuY3Rpb25fbmFtZSkKIHsKICAgICBM
TElOVF9CRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDY0NDVhNDdjZWRhOWE1Y2Y3NTlhMTZlMTcyYzNiZDg0
NmFiOWRiN2UuLmNiMjBjNzYwNWFiNmRiYmQ3YTA1YjQ0M2ExOGQzNTM2NTE5ZjVkMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KQEAgLTEzMjcsNiArMTMyNywxMiBAQCBfbGxpbnRfb3BfbmV3X2FzeW5jX2Z1bmM6CiAgICAg
ZGlzcGF0Y2goNCkKIAogCitfbGxpbnRfb3BfbmV3X2FzeW5jX2Z1bmM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hc3luY19mdW5j
KQorICAgIGRpc3BhdGNoKDQpCisKKwogX2xsaW50X29wX25ld19hcnJheToKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgY2FsbE9wY29kZVNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2Fy
cmF5KQpAQCAtMTYxMSw2ICsxNjE3LDEyIEBAIF9sbGludF9vcF9uZXdfYXN5bmNfZnVuY19leHA6
CiAgICAgZGlzcGF0Y2goNCkKIAogCitfbGxpbnRfb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdf
YXN5bmNfZnVuY19leHApCisgICAgZGlzcGF0Y2goNCkKKworCiBfbGxpbnRfb3Bfc2V0X2Z1bmN0
aW9uX25hbWU6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxPcGNvZGVTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKaW5kZXggMGNhNGFiMzY5MDFmYzc5Y2RmMThlYzg0MDgwODU5OWMzNzI4ZTBm
Ni4uMzFmNjg4ZTJmNDViMmM4NzM3YjQ1NjYyYzFiZTAxYzZlYWIxZDU0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xMjQxLDYgKzEyNDEsMTAgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNp
emUoKSk7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKChtX3Njb3BlU3RhY2tbaV0uaXNBc3luY0Z1
bmN0aW9uQm91bmRhcnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNHZW5lcmF0b3JCb3VuZGFyeSgp
KSAmJiBpKSB7CisgICAgICAgICAgICBpLS07CisgICAgICAgICAgICBBU1NFUlQoaSA8IG1fc2Nv
cGVTdGFjay5zaXplKCkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX3Njb3BlU3RhY2tb
aV0uaGFzRGVjbGFyZWRQYXJhbWV0ZXIoaWRlbnQpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA2ZGE4ODM3YTM3OTQxNzJiNGM1
NTZiMzdkMjNmOTk3NmVlNmYwYjMzLi5mM2IwYWU1NmI1YTE1ZDYyOWZmZjE2MWFjYTNjNjY0NWI0
ODIzOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1v
ZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBA
IC0xNzQsNiArMTc0LDMyIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJz
ZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIH0KIAogCitBTFdBWVNfSU5MSU5FIGJv
b2wgaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUpCit7CisgICAgcmV0dXJuIFNvdXJjZVBhcnNlTW9kZVNldCgKKyAgICAgICAg
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSwKKyAgICAgICAgU291cmNlUGFyc2VN
b2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgYm9vbCBpc0dlbmVyYXRvck9yQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUo
U291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKK3sKKyAgICByZXR1cm4gU291cmNlUGFyc2VNb2Rl
U2V0KAorICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1v
ZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGUsCisgICAgICAg
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSwKKyAgICAgICAgU291cmNl
UGFyc2VNb2RlOjpBc3luY01ldGhvZE1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7Cit9CisKK0FM
V0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJzZU1vZGUoU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSkKK3sKKyAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KAorICAgICAgICBT
b3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLAorICAgICAgICBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7Cit9CisKKwogQUxX
QVlTX0lOTElORSBib29sIGlzTW9kdWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUpIAogeyAKICAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KCAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCA2MWU3
ZWVjMmE1OGQxMzFkYWY3MTkxOGRiOGY5YjZjOWUyMDZkMjM1Li4xMDllMTcxM2U5M2JhYzBlYjhk
ODhlZDZiZjE4NjljN2VhZDY0NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCkBAIC0xMTUsNiArMTE1LDE1IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRy
aXZpYWxTdHJpbmcoZXhlYywgZnVuY3Rpb25IZWFkZXIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgc291
cmNlKSk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKEpTQXN5
bmNGdW5jdGlvbjo6aW5mbygpKSkgeworICAgICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uSGVhZGVy
ID0gZXhlY3V0YWJsZS0+aXNBcnJvd0Z1bmN0aW9uKCkgPyAiYXN5bmMgIiA6ICJhc3luYyBmdW5j
dGlvbiAiOworCisgICAgICAgICAgICBTdHJpbmdWaWV3IHNvdXJjZSA9IGV4ZWN1dGFibGUtPnNv
dXJjZSgpLnByb3ZpZGVyKCktPmdldFJhbmdlKAorICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUt
PnBhcmFtZXRlcnNTdGFydE9mZnNldCgpLAorICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUtPnBh
cmFtZXRlcnNTdGFydE9mZnNldCgpICsgZXhlY3V0YWJsZS0+c291cmNlKCkubGVuZ3RoKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5n
KGV4ZWMsIGZ1bmN0aW9uSGVhZGVyLCBmdW5jdGlvbi0+bmFtZSh2bSksIHNvdXJjZSkpOworICAg
ICAgICB9CisKICAgICAgICAgU3RyaW5nIGZ1bmN0aW9uSGVhZGVyID0gZXhlY3V0YWJsZS0+aXNB
cnJvd0Z1bmN0aW9uKCkgPyAiIiA6ICJmdW5jdGlvbiAiOwogICAgICAgICAKICAgICAgICAgU3Ry
aW5nVmlldyBzb3VyY2UgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLT5nZXRSYW5n
ZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IDJkZDQ0MTY5ZDFmMWNjMDhiYWM2MTdlYjc1YjI0MGYwMzY1NjMyYzkuLjBlNTRkY2RiYjli
YWVkOWRkYjAxN2FiODYyMTQyN2QxNWZlMDIyNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNTQ0LDYgKzU0NCwxOSBAQCBwdWJsaWM6
CiAgICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUq
IGFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmVDb25jdXJyZW50bHkoKSBjb25zdCB7IHJldHVybiBsYXp5
QXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpLmdldENvbmN1cnJlbnRseSgpOyB9CiAKKyAgICBMYXp5
Q2xhc3NTdHJ1Y3R1cmUmIGxhenlBc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX2FzeW5jRnVuY3Rpb25TdHJ1Y3R1cmU7CisgICAgfQorICAgIGNvbnN0IExh
enlDbGFzc1N0cnVjdHVyZSYgbGF6eUFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZTsKKyAgICB9CisgICAg
QXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblByb3RvdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXN5bmNGdW5jdGlvblByb3RvdHlwZSo+KGxhenlBc3lu
Y0Z1bmN0aW9uU3RydWN0dXJlKCkucHJvdG90eXBlKHRoaXMpKTsgfQorICAgIEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUqIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGVDb25jdXJyZW50bHkoKSBjb25zdCB7
IHJldHVybiByZWludGVycHJldF9jYXN0PEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqPihsYXp5QXN5
bmNGdW5jdGlvblN0cnVjdHVyZSgpLnByb3RvdHlwZUNvbmN1cnJlbnRseSgpKTsgfQorICAgIFN0
cnVjdHVyZSogYXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIGxhenlBc3lu
Y0Z1bmN0aW9uU3RydWN0dXJlKCkuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBhc3luY0Z1
bmN0aW9uU3RydWN0dXJlQ29uY3VycmVudGx5KCkgY29uc3QgeyByZXR1cm4gbGF6eUFzeW5jRnVu
Y3Rpb25TdHJ1Y3R1cmUoKS5nZXRDb25jdXJyZW50bHkoKTsgfQorCiAgICAgU3RydWN0dXJlKiBk
ZWJ1Z2dlclNjb3BlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlclNjb3BlU3Ry
dWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogd2l0aFNjb3BlU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV93aXRoU2NvcGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3Ry
dWN0dXJlKiBzdHJpY3RFdmFsQWN0aXZhdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaWN0RXZhbEFjdGl2YXRpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjdkNWNjZWQ3YjEwYjYyNDZi
MzAzODdlYjYyODc2NTU4MDVjOTk1Yy4uY2NmOTMzMWE0NWU2M2FlNWM1ZDdlMmI2OGU5NWZiYzMy
MDdjNmEwNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxNi0xMC0yOCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0
cEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtKU0NdIGltcGxlbWVudCBydW50aW1lIGZvciBhc3lu
YyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2Mzc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCB0ZXN0cyBiYXNlZCBvbiB0ZXN0cyBmcm9tIGh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xOTQyMTYuCisKKyAgICAgICAgKiBhc3luY0Z1bmN0aW9uVGVzdHMueWFtbDoK
KyAgICAgICAgKiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24tY3JlYXRlLW9wdGltaXplZC5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChBc3luY0Z1bmN0aW9uUHJvdG90eXBl
LmFzeW5jKToKKyAgICAgICAgKHRlc3RBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAg
ICh0ZXN0QXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uLmFzeW5jLmFzeW5jRm4pOgorICAgICAgICAo
dGVzdEFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgICh0ZXN0QXN5bmNBcnJvd0Z1
bmN0aW9uKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lu
a2luZy1uby1kb3VibGUtYWxsb2NhdGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAoQXN5bmNGdW5jdGlvblByb3RvdHlwZS5hc3luYyk6CisgICAgICAgIChjYWxsKToK
KyAgICAgICAgKGFzeW5jLmYpOgorICAgICAgICAoc2luayk6CisgICAgICAgICogc3RyZXNzL2Fz
eW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctb3NyZXhpdC5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKEFzeW5j
RnVuY3Rpb25Qcm90b3R5cGUuYXN5bmMpOgorICAgICAgICAoYXN5bmMuZyk6CisgICAgICAgIChh
c3luYy5mKToKKyAgICAgICAgKHNpbmspOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1mdW5jdGlv
bi1kZWNsYXJhdGlvbi1zaW5raW5nLXB1dC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgIChzaG91bGRCZUFzeW5jKToKKyAgICAgICAgKEFzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuYXN5bmMpOgorICAgICAgICAoYXN5bmMuZyk6CisgICAgICAgIChhc3luYy5mKToKKyAgICAg
ICAgKHNpbmspOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNp
bmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuYXN5bmMpOgorICAgICAgICAoY2FsbCk6
CisgICAgICAgIChzaW5rKToKKyAgICAgICAgKiBzdHJlc3MvYXN5bmMtZnVuY3Rpb24tZXhwcmVz
c2lvbi1zaW5raW5nLW9zcmV4aXQuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAoc2hvdWxkQmVBc3luYyk6CisgICAgICAgIChBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmFz
eW5jKToKKyAgICAgICAgKHNpbmspOgorICAgICAgICAqIHN0cmVzcy9hc3luYy1mdW5jdGlvbi1l
eHByZXNzaW9uLXNpbmtpbmctcHV0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHNob3VsZEJlQXN5bmMpOgorICAgICAgICAoQXN5bmNGdW5jdGlvblByb3RvdHlwZS5h
c3luYyk6CisgICAgICAgIChzaW5rKToKKwogMjAxNi0xMC0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxj
YWl0cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIGltcGxlbWVudCBydW50aW1lIGZvciBh
c3luYyBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvYXN5bmNGdW5jdGlvblRlc3RzLnlh
bWwgYi9KU1Rlc3RzL2FzeW5jRnVuY3Rpb25UZXN0cy55YW1sCmluZGV4IDVmYjc4YmVkNzRiYzQ4
MDIxMjNiNjY2Yzc1NmIxNTI0ZjhiNTIxYTYuLjA4ZTQ3NDIzYjY3MDVkMWE5ZmYwMGJmYTJiYTI5
YTRkMDM3ZWIxNmEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvYXN5bmNGdW5jdGlvblRlc3RzLnlhbWwK
KysrIGIvSlNUZXN0cy9hc3luY0Z1bmN0aW9uVGVzdHMueWFtbApAQCAtNDQsNiArNDQsMjIgQEAK
IC0gcGF0aDogc3RyZXNzL2FzeW5jLWF3YWl0LXJlc2VydmVkLXdvcmQuanMKICAgY21kOiBydW5E
ZWZhdWx0CiAKKyMgRlRMSklUCistIHBhdGg6IHN0cmVzcy9hc3luYy1mdW5jdGlvbi1jcmVhdGUt
b3B0aW1pemVkLmpzCisgIGNtZDogcnVuRGVmYXVsdAorLSBwYXRoOiBzdHJlc3MvYXN5bmMtZnVu
Y3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKKyAgY21kOiBy
dW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5r
aW5nLW9zcmV4aXQuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1m
dW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5raW5nLXB1dC5qcworICBjbWQ6IHJ1bkRlZmF1bHQKKy0g
cGF0aDogc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1uby1kb3VibGUt
YWxsb2NhdGUuanMKKyAgY21kOiBydW5EZWZhdWx0CistIHBhdGg6IHN0cmVzcy9hc3luYy1mdW5j
dGlvbi1leHByZXNzaW9uLXNpbmtpbmctb3NyZXhpdC5qcworICBjbWQ6IHJ1bkRlZmF1bHQKKy0g
cGF0aDogc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1wdXQuanMKKyAg
Y21kOiBydW5EZWZhdWx0CisKICMgVGVzdDI2MgogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvYnVpbHQt
aW5zL0FzeW5jRnVuY3Rpb24vQXN5bmNGdW5jdGlvbi1jb25zdHJ1Y3QuanMKICAgY21kOiBydW5U
ZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgW10KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWNyZWF0ZS1vcHRpbWl6ZWQuanMgYi9KU1Rlc3RzL3N0cmVz
cy9hc3luYy1mdW5jdGlvbi1jcmVhdGUtb3B0aW1pemVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2ZjRlMDRi
ZGViNGU3ZDdhZDU1ZTFkYmM0YWQ3Zjc4Mjg4MWEzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1jcmVhdGUtb3B0aW1pemVkLmpzCkBAIC0wLDAgKzEs
NDcgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05f
U1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQor
Cit2YXIgQXN5bmNGdW5jdGlvblByb3RvdHlwZSA9IGFzeW5jIGZ1bmN0aW9uKCkge30uX19wcm90
b19fOworCitmdW5jdGlvbiB0ZXN0QXN5bmNGdW5jdGlvbkV4cHJlc3Npb24oKQoreworICAgIHJl
dHVybiBhc3luYyBmdW5jdGlvbigpCisgICAgeworICAgICAgICBhd2FpdCA0MjsKKyAgICAgICAg
cmV0dXJuIDE7CisgICAgfTsKK30KK25vSW5saW5lKHRlc3RBc3luY0Z1bmN0aW9uRXhwcmVzc2lv
bik7CisKK2Z1bmN0aW9uIHRlc3RBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oKQoreworICAgIGFz
eW5jIGZ1bmN0aW9uIGFzeW5jRm4oKQorICAgIHsKKyAgICAgICAgYXdhaXQgNDI7CisgICAgICAg
IHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiBhc3luY0ZuOworfQorbm9JbmxpbmUodGVz
dEFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbik7CisKK2Z1bmN0aW9uIHRlc3RBc3luY0Fycm93RnVu
Y3Rpb24oKQoreworICAgIHJldHVybiBhc3luYygpID0+CisgICAgeworICAgICAgICBhd2FpdCA0
MjsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfTsKK30KK25vSW5saW5lKHRlc3RBc3luY0Fycm93
RnVuY3Rpb24pOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgc2hvdWxk
QmUodGVzdEFzeW5jRnVuY3Rpb25FeHByZXNzaW9uKCkuX19wcm90b19fLCBBc3luY0Z1bmN0aW9u
UHJvdG90eXBlKTsKKyAgICBzaG91bGRCZSh0ZXN0QXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uKCku
X19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKKyAgICBzaG91bGRCZSh0ZXN0QXN5
bmNBcnJvd0Z1bmN0aW9uKCkuX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKK30K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNp
bmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rp
b24tZGVjbGFyYXRpb24tc2lua2luZy1uby1kb3VibGUtYWxsb2NhdGUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGQ4MmQxNDQyYjRjYjFmZWQ2MjQwMzBiNmEzYjgwYjU0ZGUzMjU0ZAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLXNpbmtpbmctbm8t
ZG91YmxlLWFsbG9jYXRlLmpzCkBAIC0wLDAgKzEsNDEgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJl
cyBFTkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVp
bGQgdGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWws
IG1zZyA9ICIiKSB7CisgICAgaWYgKG1zZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJi
YWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZCk7Cit9Cit2YXIgQXN5bmNGdW5jdGlvblByb3RvdHlwZSA9IGFzeW5jIGZ1bmN0aW9uKCl7fS5f
X3Byb3RvX187CisKK2Z1bmN0aW9uIGNhbGwobykgeyBvLnggPSAzOyB9Citub0lubGluZShjYWxs
KTsKKworZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIGFzeW5jIGZ1bmN0aW9uIGYoKSB7IH07
CisgICAgaWYgKHApIHsKKyAgICAgICAgY2FsbChmKTsgLy8gRm9yY2UgYWxsb2NhdGlvbiBvZiBm
CisgICAgICAgIGlmIChxKSB7CisgICAgICAgICAgICBPU1JFeGl0KCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGY7CisgICAgfQorICAgIHJldHVybiB7ICd4JzogMiB9OworfQorbm9Jbmxp
bmUoc2luayk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIg
byA9IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIHNob3VsZEJlKG8uX19wcm90b19fLCBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlKTsKKyAgICBpZiAoby54ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJv
cjogZXhwZWN0ZWQgby54IHRvIGJlIDIgYnV0IGlzICIgKyByZXN1bHQ7Cit9CisKKy8vIEF0IHRo
aXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRM
CisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlzIHByb3Blcmx5IGFsbG9jYXRlZCBvbiBP
U1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworc2hvdWxkQmUoZi5fX3Byb3RvX18s
IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworaWYgKGYueCAhPSAzKQorICAgIHRocm93ICJFcnJv
cjogZXhwZWN0ZWQgby54IHRvIGJlIDMgYnV0IGlzICIgKyByZXN1bHQ7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5raW5nLW9zcmV4aXQu
anMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5raW5nLW9z
cmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWExODBkZmZlMDQzNzcyMjViNjYwODU2OWUzNDk2ODU2MDM4
MTM3NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWRl
Y2xhcmF0aW9uLXNpbmtpbmctb3NyZXhpdC5qcwpAQCAtMCwwICsxLDQ1IEBACisvLyBUaGlzIHRl
c3QgcmVxdWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFi
bGVkIGF0IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShleHBlY3Rl
ZCwgYWN0dWFsLCBtc2cgPSAiIikgeworICAgIGlmIChtc2cpCisgICAgICAgIG1zZyA9ICIgZm9y
ICIgKyBtc2c7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIgKyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWQpOworfQorCitmdW5jdGlvbiBzaG91bGRCZUFzeW5jKGV4cGVjdGVkLCBwcm9t
aXNlLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOworICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOwor
ICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwg
PSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rhc2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3Ip
CisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWws
IG1zZyk7Cit9CisKK3ZhciBBc3luY0Z1bmN0aW9uUHJvdG90eXBlID0gYXN5bmMgZnVuY3Rpb24o
KXt9Ll9fcHJvdG9fXzsKKworZnVuY3Rpb24gc2luayAocCwgcSkgeworICAgIGFzeW5jIGZ1bmN0
aW9uIGcoeCkgeyByZXR1cm4geDsgfTsKKyAgICBpZiAocCkgeyBpZiAocSkgT1NSRXhpdCgpOyBy
ZXR1cm4gZzsgfQorICAgIGFzeW5jIGZ1bmN0aW9uIGYoeCkgeyByZXR1cm4geDsgfTsKKyAgICBy
ZXR1cm4gZjsKK30KK25vSW5saW5lKHNpbmspOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
OyArK2kpIHsKKyAgICB2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOworICAgIHNob3VsZEJlKGYu
X19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKKyAgICBzaG91bGRCZUFzeW5jKDQy
LCBmKDQyKSk7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUg
Y29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIENoZWNrIHRoYXQgdGhlIGZ1bmN0aW9uIGlz
IHByb3Blcmx5IGFsbG9jYXRlZCBvbiBPU1IgZXhpdAordmFyIGYgPSBzaW5rKHRydWUsIHRydWUp
Oworc2hvdWxkQmUoZi5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworc2hvdWxk
QmVBc3luYyg0MiwgZig0MikpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVu
Y3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1wdXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1m
dW5jdGlvbi1kZWNsYXJhdGlvbi1zaW5raW5nLXB1dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zY2YwMjgxNzVk
YmYyMjg5YjgwMGZiN2VmZTNmZDg5YTQ2MjNlMWY5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tZGVjbGFyYXRpb24tc2lua2luZy1wdXQuanMKQEAgLTAs
MCArMSw1MiBAQAorLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIEVOQUJMRV9FUzIwMTdfQVNZTkNGVU5D
VElPTl9TWU5UQVggdG8gYmUgZW5hYmxlZCBhdCBidWlsZCB0aW1lLgorLy9AIHNraXAKKworZnVu
Y3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnID0gIiIpIHsKKyAgICBpZiAobXNn
KQorICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsg
YWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
QmVBc3luYyhleHBlY3RlZCwgcHJvbWlzZSwgbXNnKSB7CisgICAgbGV0IGFjdHVhbDsKKyAgICB2
YXIgaGFkRXJyb3IgPSBmYWxzZTsKKyAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsg
YWN0dWFsID0gdmFsdWU7IH0sCisgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhh
ZEVycm9yID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOworICAgIGRyYWluTWljcm90YXNrcygp
OworCisgICAgaWYgKGhhZEVycm9yKQorICAgICAgICB0aHJvdyBhY3R1YWw7CisKKyAgICBzaG91
bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpOworfQorCit2YXIgQXN5bmNGdW5jdGlvblByb3Rv
dHlwZSA9IGFzeW5jIGZ1bmN0aW9uKCl7fS5fX3Byb3RvX187CisKK2Z1bmN0aW9uIHNpbmsgKHAs
IHEpIHsKKyAgICBhc3luYyBmdW5jdGlvbiBnKHgpIHsgcmV0dXJuIHg7IH07CisgICAgaWYgKHAp
IHsgaWYgKHEpIGcuaW5uZXIgPSA0MjsgcmV0dXJuIGc7IH0KKyAgICBhc3luYyBmdW5jdGlvbiBm
KHgpIHsgcmV0dXJuIHg7IH07CisgICAgcmV0dXJuIGY7Cit9Citub0lubGluZShzaW5rKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUs
IHRydWUpOworICAgIHNob3VsZEJlKGYuX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBl
KTsKKyAgICBzaG91bGRCZUFzeW5jKDQyLCBmKDQyKSk7Cit9CisKKy8vIEF0IHRoaXMgcG9pbnQs
IHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0byB0aGUgRlRMCisKKy8vIFRl
c3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVyIGVsc2UgYnJhbmNoCit2YXIg
ZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOworc2hvdWxkQmUoZi5fX3Byb3RvX18sIEFzeW5jRnVuY3Rp
b25Qcm90b3R5cGUpOworc2hvdWxkQmVBc3luYygxMiwgZigxMikpOworCisvLyBDaGVjayB0aGF0
IHRoZSBhbGxvY2F0aW9uIGRpZCBub3Qgc2luayBiZXlvbmQgdGhlIHByb3BlcnR5IGFzc2lnbm1l
bnQKK3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK3Nob3VsZEJlKGYuX19wcm90b19fLCBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlKTsKK3ZhciByZXN1bHQgPSBmLmlubmVyOworaWYgKHJlc3VsdCAh
PT0gNDIpCisgICAgdGhyb3cgIkVycm9yOiBpbm5lciBzaG91bGQgYmUgNDIgYnV0IGlzICIgKyBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNz
aW9uLXNpbmtpbmctbm8tZG91YmxlLWFsbG9jYXRlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMt
ZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5nLW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MzU3Njk1ZDgxNDQxOTA2Y2I1ZWY4NTEwMmQ4MzI0NmJhMDdmNWE0Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMtZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5n
LW5vLWRvdWJsZS1hbGxvY2F0ZS5qcwpAQCAtMCwwICsxLDM5IEBACisvLyBUaGlzIHRlc3QgcmVx
dWlyZXMgRU5BQkxFX0VTMjAxN19BU1lOQ0ZVTkNUSU9OX1NZTlRBWCB0byBiZSBlbmFibGVkIGF0
IGJ1aWxkIHRpbWUuCisvL0Agc2tpcAorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK3ZhciBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlID0gYXN5bmMgZnVuY3Rpb24oKXt9Ll9fcHJvdG9fXzsKKworZnVuY3Rpb24gY2FsbChvKSB7
IG8ueCA9IDM7IH0KK25vSW5saW5lKGNhbGwpOworCitmdW5jdGlvbiBzaW5rIChwLCBxKSB7Cisg
ICAgdmFyIGYgPSBhc3luYyBmdW5jdGlvbigpIHsgfTsKKyAgICBpZiAocCkgeworICAgICAgICBj
YWxsKGYpOyAvLyBGb3JjZSBhbGxvY2F0aW9uIG9mIGYKKyAgICAgICAgaWYgKHEpIHsKKyAgICAg
ICAgICAgIE9TUkV4aXQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZjsKKyAgICB9Cisg
ICAgcmV0dXJuIHsgJ3gnOiAyIH07Cit9Citub0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciBvID0gc2luayh0cnVlLCBmYWxzZSk7Cisg
ICAgc2hvdWxkQmUoby5fX3Byb3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworICAgIGlm
IChvLnggIT0gMykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMiBi
dXQgaXMgIiArIHJlc3VsdDsKK30KKworLy8gQXQgdGhpcyBwb2ludCwgdGhlIGZ1bmN0aW9uIHNo
b3VsZCBiZSBjb21waWxlZCBkb3duIHRvIHRoZSBGVEwKKworLy8gQ2hlY2sgdGhhdCB0aGUgZnVu
Y3Rpb24gaXMgcHJvcGVybHkgYWxsb2NhdGVkIG9uIE9TUiBleGl0Cit2YXIgZiA9IHNpbmsodHJ1
ZSwgdHJ1ZSk7CitzaG91bGRCZShmLl9fcHJvdG9fXywgQXN5bmNGdW5jdGlvblByb3RvdHlwZSk7
CitpZiAoZi54ICE9IDMpCisgICAgdGhyb3cgIkVycm9yOiBleHBlY3RlZCBvLnggdG8gYmUgMyBi
dXQgaXMgIiArIHJlc3VsdDsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0
aW9uLWV4cHJlc3Npb24tc2lua2luZy1vc3JleGl0LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXN5bmMt
ZnVuY3Rpb24tZXhwcmVzc2lvbi1zaW5raW5nLW9zcmV4aXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQ0MGRh
OGM4MmNiOWQxNzU1MGU5YmUzZDdjNWVjZmFmZmMxNDJiNwotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1vc3JleGl0Lmpz
CkBAIC0wLDAgKzEsNDMgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBFTkFCTEVfRVMyMDE3X0FT
WU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQgdGltZS4KKy8vQCBza2lw
CisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyA9ICIiKSB7CisgICAg
aWYgKG1zZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsg
IjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Cit9CitmdW5jdGlvbiBz
aG91bGRCZUFzeW5jKGV4cGVjdGVkLCBwcm9taXNlLCBtc2cpIHsKKyAgICBsZXQgYWN0dWFsOwor
ICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOworICAgIHByb21pc2UudGhlbihmdW5jdGlvbih2YWx1
ZSkgeyBhY3R1YWwgPSB2YWx1ZTsgfSwKKyAgICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3Ip
IHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7CisgICAgZHJhaW5NaWNyb3Rh
c2tzKCk7CisKKyAgICBpZiAoaGFkRXJyb3IpCisgICAgICAgIHRocm93IGFjdHVhbDsKKworICAg
IHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZyk7Cit9CisKK3ZhciBBc3luY0Z1bmN0aW9u
UHJvdG90eXBlID0gYXN5bmMgZnVuY3Rpb24oKXt9Ll9fcHJvdG9fXzsKKworZnVuY3Rpb24gc2lu
ayAocCwgcSkgeworICAgIHZhciBnID0gYXN5bmMgZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07
CisgICAgaWYgKHApIHsgaWYgKHEpIE9TUkV4aXQoKTsgcmV0dXJuIGc7IH0KKyAgICByZXR1cm4g
YXN5bmMgZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHg7IH07Cit9Citub0lubGluZShzaW5rKTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGYgPSBzaW5rKHRydWUs
IGZhbHNlKTsKKyAgICBzaG91bGRCZShmLl9fcHJvdG9fXywgQXN5bmNGdW5jdGlvblByb3RvdHlw
ZSk7CisgICAgc2hvdWxkQmVBc3luYyg0MiwgZig0MikpOworfQorCisvLyBBdCB0aGlzIHBvaW50
LCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIGNvbXBpbGVkIGRvd24gdG8gdGhlIEZUTAorCisvLyBD
aGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBwcm9wZXJseSBhbGxvY2F0ZWQgb24gT1NSIGV4aXQK
K3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK3Nob3VsZEJlKGYuX19wcm90b19fLCBBc3luY0Z1
bmN0aW9uUHJvdG90eXBlKTsKK3Nob3VsZEJlQXN5bmMoNDIsIGYoNDIpKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2FzeW5jLWZ1bmN0aW9uLWV4cHJlc3Npb24tc2lua2luZy1wdXQuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9uLXNpbmtpbmctcHV0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmY3NWNkZGQ0OWMxNDQwYzViMDYxZjY2MGU0OTZjZmJkMjgwOTQyMDYKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hc3luYy1mdW5jdGlvbi1leHByZXNzaW9u
LXNpbmtpbmctcHV0LmpzCkBAIC0wLDAgKzEsNDkgQEAKKy8vIFRoaXMgdGVzdCByZXF1aXJlcyBF
TkFCTEVfRVMyMDE3X0FTWU5DRlVOQ1RJT05fU1lOVEFYIHRvIGJlIGVuYWJsZWQgYXQgYnVpbGQg
dGltZS4KKy8vQCBza2lwCisKK2Z1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1z
ZyA9ICIiKSB7CisgICAgaWYgKG1zZykKKyAgICAgICAgbXNnID0gIiBmb3IgIiArIG1zZzsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQg
dmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVjdGVkICIgKyBleHBlY3RlZCk7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQsIHByb21pc2UsIG1zZykgewor
ICAgIGxldCBhY3R1YWw7CisgICAgdmFyIGhhZEVycm9yID0gZmFsc2U7CisgICAgcHJvbWlzZS50
aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAorICAgICAgICAgICAgICAg
ICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsK
KyAgICBkcmFpbk1pY3JvdGFza3MoKTsKKworICAgIGlmIChoYWRFcnJvcikKKyAgICAgICAgdGhy
b3cgYWN0dWFsOworCisgICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKK30KKwor
dmFyIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUgPSBhc3luYyBmdW5jdGlvbigpe30uX19wcm90b19f
OworCitmdW5jdGlvbiBzaW5rIChwLCBxKSB7CisgICAgdmFyIGcgPSBhc3luYyBmdW5jdGlvbih4
KSB7IHJldHVybiB4OyB9OworICAgIGlmIChwKSB7IGlmIChxKSBnLmlubmVyID0gNDI7IHJldHVy
biBnOyB9CisgICAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uKHgpIHsgcmV0dXJuIHg7IH07Cit9Citu
b0lubGluZShzaW5rKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAg
dmFyIGYgPSBzaW5rKHRydWUsIHRydWUpOworICAgIHNob3VsZEJlKGYuX19wcm90b19fLCBBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlKTsKKyAgICBzaG91bGRCZUFzeW5jKDQyLCBmKDQyKSk7Cit9CisK
Ky8vIEF0IHRoaXMgcG9pbnQsIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgY29tcGlsZWQgZG93biB0
byB0aGUgRlRMCisKKy8vIFRlc3QgdGhlIGFsbG9jYXRpb24gb24gdGhlIGltcGxpY2l0IGlubmVy
IGVsc2UgYnJhbmNoCit2YXIgZiA9IHNpbmsodHJ1ZSwgZmFsc2UpOworc2hvdWxkQmUoZi5fX3By
b3RvX18sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUpOworc2hvdWxkQmVBc3luYygxMiwgZigxMikp
OworCisvLyBDaGVjayB0aGF0IHRoZSBhbGxvY2F0aW9uIGRpZCBub3Qgc2luayBiZXlvbmQgdGhl
IHByb3BlcnR5IGFzc2lnbm1lbnQKK3ZhciBmID0gc2luayh0cnVlLCB0cnVlKTsKK3Nob3VsZEJl
KGYuX19wcm90b19fLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTsKK3Nob3VsZEJlKDQyLCBmLmlu
bmVyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>